Name: series-workflow2rzsd Phase: Failed StartedAt: 2026-07-11 22:38:29 +0000 UTC FinishedAt: 2026-07-11 23:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2rzsd[0] Phase: Succeeded StartedAt: 2026-07-11 22:38:29 +0000 UTC FinishedAt: 2026-07-11 23:08:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2rzsd[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 22:38:29 +0000 UTC FinishedAt: 2026-07-11 23:08:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDIzOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZyAoYHJlZl90cmFjZV9maW5hbF9wdXRgKSBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGludHJvZHVjZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMjM6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNjFjYmY0YjBlMDg2NGRlOGQyYmQyZTFlMzhkMDI0NzA3ZmI3NTQ0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMjM6MDc6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggMTBlODI1MzE4MWQzMjEuLjJkYmI3NDQxOTA2ZTAyIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtNDIxMCw3ICYjNDM7NDIxMCwxMCBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxuIEY6XHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXG4gRjpcdGluY2x1ZGUvKi9hdG9taWMqLmhcbiYjNDM7RjpcdGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiBGOlx0aW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4mIzQzO0Y6XHRsaWIvcmVmX3RyYWNlLmNcbiYjNDM7RjpcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuIEY6XHRzY3JpcHRzL2F0b21pYy9cbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi5mODcwYWMwZThjMDY3NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICYjNDM7NTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgcGVyY3B1X3JlZjtcbiB0eXBlZGVmIHZvaWQgKHBlcmNwdV9yZWZfZnVuY190KShzdHJ1Y3QgcGVyY3B1X3JlZiAqKTtcbkBAIC0zMzEsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxuIFxuIFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFx1MDAyNnBlcmNwdV9jb3VudCkpXG4gXHRcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XG4tXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpXG4mIzQzO1x0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKSB7XG4mIzQzO1x0XHRkb190cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7XG4gXHRcdHJlZi1cdTAwM2VkYXRhLVx1MDAzZXJlbGVhc2UocmVmKTtcbiYjNDM7XHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNmM2NjAwOTM4YTQ3NjBcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDI2IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXG4mIzQzOyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbiYjNDM7XG4mIzQzOy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cbiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xuJiM0MzsvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqL1xuJiM0MztleHRlcm4gdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXHRcdFx0XFxcbiYjNDM7XHRcdFx0ZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7XHRcXFxuJiM0MztcdH0gd2hpbGUgKDApXG4mIzQzO1xuJiM0MzsjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSB7IH1cbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43MGQwN2E0NjJkYTFkYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgJiM0MzsxMDcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgbXV0ZXg7XG4gXG5AQCAtMzkzLDYgJiM0MzszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXG4gXG4gXHRpZiAob2xkIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBvbGQgPT0gaSkge1xuIFx0XHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcbiYjNDM7XHRcdGRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uM2JmMWIxZDM5MGI4YjNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXG5AQCAtMCwwICYjNDM7MSw0NiBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNXG4mIzQzOyNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJlZl90cmFjZVxuJiM0MztcbiYjNDM7I2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcbiYjNDM7I2RlZmluZSBfVFJBQ0VfUkVGX1RSQUNFX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHJlZl90cmFjZV9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xuJiM0MzsgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4mIzQzOyAqXG4mIzQzOyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MzsgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4mIzQzOyAqL1xuJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4mIzQzO1xuJiM0MztcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfU1RSVUNUX19lbnRyeShcbiYjNDM7XHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbiYjNDM7XHRfX3N0cmluZyhmbiwgZm4pXG4mIzQzO1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbiYjNDM7XHRfX2Fzc2lnbl9zdHIoZm4pO1xuJiM0MztcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuJiM0MztcdCksXG4mIzQzO1xuJiM0MztcdFRQX3ByaW50ayhcJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwmIzM0OywgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4mIzQzOyk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4mIzQzO1xuJiM0MzsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uN2UyNzQ2YmU2ZDE2OWUgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0Ym9vbCBcJiMzNDtyZWZfdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgVFJBQ0VQT0lOVFNcbiYjNDM7XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiM0MztcdGhlbHBcbiYjNDM7XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XG4mIzQzO1x0ICB0cmFjZXBvaW50LlxuJiM0MztcbiYjNDM7XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzQzO1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICYjNDM7PSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeVxuJiM0MztcbiYjNDM7b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSAmIzQzOz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDY2NjQ3NzcyY2UxNzJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCAmIzQzOzEsMTMgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2VfY2FsbF9fcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvcmVmY291bnQuYyBiL2xpYi9yZWZjb3VudC5jXG5pbmRleCBhMjA3YThmMjJiM2NhMy4uY2Q3ZTMyZGYzOTE5MDMgMTAwNjQ0XG4tLS0gYS9saWIvcmVmY291bnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZmNvdW50LmNcbkBAIC03LDYgJiM0Mzs3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2J1Zy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cilcdFdBUk5fT05DRSgxLCBcJiMzNDtyZWZjb3VudF90OiBcJiMzNDsgc3RyIFwmIzM0Oy5cXG5cJiMzNDspXG4gXG5AQCAtNTYsNyAmIzQzOzU3LDEyIEBAIGJvb2wgcmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKVxuIHtcbiBcdGludCB2YWwgPSAxO1xuIFxuLVx0cmV0dXJuIGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbiYjNDM7XHRib29sIHJldCA9IGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XG4gXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgJiM0Mzs1Nyw2IEBAIG9iai0kKENPTkZJR19VU0VSQ09QWV9LVU5JVF9URVNUKSAmIzQzOz0gdXNlcmNvcHlfa3VuaXQub1xuIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgJiM0Mzs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vXG4gb2JqLSQoQ09ORklHX1VVSURfS1VOSVRfVEVTVCkgJiM0Mzs9IHV1aWRfa3VuaXQub1xuJiM0MztvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICYjNDM7PSByZWZfdHJhY2Vfa3VuaXQub1xuIFxuIG9iai0kKENPTkZJR19URVNUX1JVTlRJTUVfTU9EVUxFKVx0XHQmIzQzOz0gbW9kdWxlL1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44Zjg5NmFkYzk2ZDEyZVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5AQCAtMCwwICYjNDM7MSwxNDEgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0X2JpdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rYWxsc3ltcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbiYjNDM7XG4mIzQzO3N0cnVjdCBkYXRhIHtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcbiYjNDM7XHRjb25zdCBjaGFyICpmbjtcbiYjNDM7XHRjb25zdCB2b2lkICpvYmo7XG4mIzQzO1x0YXRvbWljX3QgY291bnQ7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZGF0YSBjYXB0dXJlO1xuJiM0MztcbiYjNDM7Y29uc3Qgdm9pZCAqY2hrX29iajtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGVzdF9pbml0KClcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRjaGtfb2JqID0gXHUwMDI2b2JqO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGVzdF9leGl0KGZ1bmNfbmFtZSlcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQvKiB3YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uICovXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRpbnQgbm90aW1lb3V0ID0gd2FpdF92YXJfZXZlbnRfdGltZW91dChcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx1MDAyNmNhcHR1cmUuY291bnQsXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0YXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSxcdFx0XHRcXFxuJiM0MztcdFx0XHQxMFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1x0XHRcXFxuJiM0MztcdFx0dHJhY2Vwb2ludF9zeW5jaHJvbml6ZV91bnJlZ2lzdGVyKCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgYXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSwgMSk7XHRcXFxuJiM0MztcdFx0LypcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAqIGNhbGxlciB0ZXN0aW5nIG1heSBiZSBmbGFreVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICogZHVlIHRvIGNvbXBpbGUgb3B0aW1pc2F0aW9ucyBzbyBvbWl0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICovXHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgY2FwdHVyZS5mbiwgI2Z1bmNfbmFtZSk7XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCBcdTAwMjZvYmopO1x0XHRcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHByb2JlKFxuJiM0MztcdCAgdm9pZCAqaWdub3JlLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0ICBjb25zdCBjaGFyICpmbixcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdC8vcHJldmVudCBub24gdGVzdCBmdW5jIGZpbmFsX3B1dHMgZnJvbSBjaGFuZ2luZyBjYXB0dXJlZCB2YWx1ZXNcbiYjNDM7XHRpZiAoY2hrX29iaiAhPSBvYmopXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xuJiM0MztcdGNhcHR1cmUuZm4gPSBmbjtcbiYjNDM7XHRjYXB0dXJlLm9iaiA9IG9iajtcbiYjNDM7XG4mIzQzO1x0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcdTAwMjZjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRyZWZjb3VudF90IG9iajtcbiYjNDM7XG4mIzQzO1x0dGVzdF9pbml0KCk7XG4mIzQzO1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2b2JqKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2V4aXQoX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X2RlY19pZl9vbmUoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0cmVmY291bnRfdCBvYmo7XG4mIzQzO1xuJiM0MztcdHRlc3RfaW5pdCgpO1xuJiM0MztcdHJlZmNvdW50X3NldChcdTAwMjZvYmosIDIpO1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19pZl9vbmUoXHUwMDI2b2JqKSk7XG4mIzQzO1xuJiM0MztcdHRlc3RfZXhpdChyZWZjb3VudF9kZWNfaWZfb25lKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBlcmNwdV9yZWYgb2JqO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2luaXQoKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2b2JqKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2dldChcdTAwMjZvYmopO1xuJiM0MztcbiYjNDM7XHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHRlc3RfZXhpdChwZXJjcHVfcmVmX3B1dF9tYW55KTtcbiYjNDM7XHRwZXJjcHVfcmVmX2V4aXQoXHUwMDI2b2JqKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIF9fcmVmZGF0YSByZWZfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1X3JlZl9wdXRfbWFueSksXG4mIzQzO1x0e31cbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtyZWYtdHJhY2VcJiMzNDssXG4mIzQzO1x0LnRlc3RfY2FzZXMgPSByZWZfdHJhY2VfdGVzdF9jYXNlc1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDIzOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZyAoYHJlZl90cmFjZV9maW5hbF9wdXRgKSBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGludHJvZHVjZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI2MWNiZjRiMGUwODY0ZGU4ZDJiZDJlMWUzOGQwMjQ3MDdmYjc1NDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAyMzowNzo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMTBlODI1MzE4MWQzMjEuLjJkYmI3NDQxOTA2ZTAyIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtNDIxMCw3ICYjNDM7NDIxMCwxMCBAQCBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dAogRjoJYXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaAogRjoJaW5jbHVkZS8qL2F0b21pYyouaAomIzQzO0Y6CWluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmgKIEY6CWluY2x1ZGUvbGludXgvcmVmY291bnQuaAomIzQzO0Y6CWxpYi9yZWZfdHJhY2UuYwomIzQzO0Y6CWxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYwogRjoJc2NyaXB0cy9hdG9taWMvCiBGOglydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5ycwogRjoJcnVzdC9rZXJuZWwvc3luYy9hdG9taWMvCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAppbmRleCBkNzNhMWMwOGMzZTNjMC4uZjg3MGFjMGU4YzA2NzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaApAQCAtNTUsNiAmIzQzOzU1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9yY3VwZGF0ZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ2ZwLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZl90cmFjZS5oJmd0OwogCiBzdHJ1Y3QgcGVyY3B1X3JlZjsKIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopOwpAQCAtMzMxLDggJiM0MzszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucikKIAogCWlmIChfX3JlZl9pc19wZXJjcHUocmVmLCAmYW1wO3BlcmNwdV9jb3VudCkpCiAJCXRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7Ci0JZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCAmYW1wO3JlZi0mZ3Q7ZGF0YS0mZ3Q7Y291bnQpKSkKJiM0MzsJZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCAmYW1wO3JlZi0mZ3Q7ZGF0YS0mZ3Q7Y291bnQpKSkgewomIzQzOwkJZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpOwogCQlyZWYtJmd0O2RhdGEtJmd0O3JlbGVhc2UocmVmKTsKJiM0MzsJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNmM2NjAwOTM4YTQ3NjAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCkBAIC0wLDAgJiM0MzsxLDI2IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsjaWZuZGVmIF9MSU5VWF9SRUZfVFJBQ0VfSAomIzQzOyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7CiYjNDM7LyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqLwomIzQzO0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZfdHJhY2VfZmluYWxfcHV0KTsKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTCiYjNDM7LyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi8KJiM0MztleHRlcm4gdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKTsKJiM0MzsKJiM0MzsjZGVmaW5lIGRvX3RyYWNlX3JlZl9maW5hbF9wdXQob2JqKQkJCQkJCVwKJiM0MzsJZG8gewkJCQkJCQkJCVwKJiM0MzsJCWlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpCQkJXAomIzQzOwkJCWRvX3JlZl90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9fZnVuY19fLCBvYmopOwlcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7I2Vsc2UgLyogIUNPTkZJR19UUkFDRVBPSU5UUyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSB7IH0KJiM0MzsjZGVmaW5lIGRvX3RyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCmluZGV4IGJhNzY1N2NlZDI4MTdmLi43MGQwN2E0NjJkYTFkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaApAQCAtMTA3LDYgJiM0MzsxMDcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50X3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3BpbmxvY2tfdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmX3RyYWNlLmgmZ3Q7CiAKIHN0cnVjdCBtdXRleDsKIApAQCAtMzkzLDYgJiM0MzszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApCiAKIAlpZiAob2xkICZndDsgMCAmYW1wOyZhbXA7IG9sZCA9PSBpKSB7CiAJCXNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpOwomIzQzOwkJZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYmYxYjFkMzkwYjhiMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oCkBAIC0wLDAgJiM0MzsxLDQ2IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNCiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlCiYjNDM7CiYjNDM7I2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRCkKJiM0MzsjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90cmFjZXBvaW50LmgmZ3Q7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvCiYjNDM7ICogQGNhbGxlcjogcmV0dXJuIGFkZHJlc3Mgb2YgcmVmY291bnQKJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpCiYjNDM7ICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpCiYjNDM7ICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KQomIzQzOyAqCiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSwKJiM0MzsgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWQKJiM0MzsgKi8KJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksCiYjNDM7CiYjNDM7CVRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSwKJiM0MzsKJiM0MzsJVFBfU1RSVUNUX19lbnRyeSgKJiM0MzsJX19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpCiYjNDM7CV9fc3RyaW5nKGZuLCBmbikKJiM0MzsJX19maWVsZChjb25zdCB2b2lkICosIG9iaikKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CV9fZW50cnktJmd0O2NhbGxlciA9IGNhbGxlcjsKJiM0MzsJX19hc3NpZ25fc3RyKGZuKTsKJiM0MzsJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcCYjMzQ7LCAodm9pZCAqKV9fZW50cnktJmd0O2NhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS0mZ3Q7b2JqKQomIzQzOyk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxODcuLjdlMjc0NmJlNmQxNjllIDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9saWIvS2NvbmZpZwpAQCAtNTIsNiAmIzQzOzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1QKIAogCSAgV2hlbiBpbiBkb3VidCwgc2F5IE4uCiAKJiM0Mztjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1QKJiM0MzsJYm9vbCAmIzM0O3JlZl90cmFjZSBrdW5pdCB0ZXN0JiMzNDsgaWYgIUtVTklUX0FMTF9URVNUUwomIzQzOwlkZXBlbmRzIG9uIEtVTklUICZhbXA7JmFtcDsgVFJBQ0VQT0lOVFMKJiM0MzsJZGVmYXVsdCBLVU5JVF9BTExfVEVTVFMKJiM0MzsJaGVscAomIzQzOwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7CSAgdHJhY2Vwb2ludC4KJiM0MzsKJiM0MzsJICBJZiB1bnN1cmUsIHNheSBOLgomIzQzOwogY29uZmlnIEJJVFJFVkVSU0UKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlCkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geQogb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vCiAKIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeQomIzQzOwomIzQzO29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHJlZl90cmFjZS5vCmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ2NjY0Nzc3MmNlMTcyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZl90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDEzIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKJiM0MzsKJiM0MzsvL1dyYXBwZXIgZnVuY3Rpb24gZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGVudGlyZWx5IGluIGhlYWRlciBmaWxlcwomIzQzO3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikKJiM0Mzt7CiYjNDM7CXRyYWNlX2NhbGxfX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCk7CiYjNDM7CiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTsKZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmMKaW5kZXggYTIwN2E4ZjIyYjNjYTMuLmNkN2UzMmRmMzkxOTAzIDEwMDY0NAotLS0gYS9saWIvcmVmY291bnQuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvcmVmY291bnQuYwpAQCAtNyw2ICYjNDM7Nyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2J1Zy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKIAogI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cikJV0FSTl9PTkNFKDEsICYjMzQ7cmVmY291bnRfdDogJiMzNDsgc3RyICYjMzQ7LlxuJiMzNDspCiAKQEAgLTU2LDcgJiM0Mzs1NywxMiBAQCBib29sIHJlZmNvdW50X2RlY19pZl9vbmUocmVmY291bnRfdCAqcikKIHsKIAlpbnQgdmFsID0gMTsKIAotCXJldHVybiBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsJYm9vbCByZXQgPSBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MKHJlZmNvdW50X2RlY19pZl9vbmUpOwogCmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGUKaW5kZXggN2U5YzJmYTUyZTM1YTQuLjgyOGEwMzBhZDhjNzEwIDEwMDY0NAotLS0gYS9saWIvdGVzdHMvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL01ha2VmaWxlCkBAIC01Nyw1ICYjNDM7NTcsNiBAQCBvYmotJChDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCkgJiM0Mzs9IHVzZXJjb3B5X2t1bml0Lm8KIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgJiM0Mzs9IHV0aWxfbWFjcm9zX2t1bml0Lm8KIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgJiM0Mzs9IHRlc3RfcmF0ZWxpbWl0Lm8KIG9iai0kKENPTkZJR19VVUlEX0tVTklUX1RFU1QpICYjNDM7PSB1dWlkX2t1bml0Lm8KJiM0MztvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICYjNDM7PSByZWZfdHJhY2Vfa3VuaXQubwogCiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSkJCSYjNDM7PSBtb2R1bGUvCmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhmODk2YWRjOTZkMTJlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCkBAIC0wLDAgJiM0MzsxLDE0MSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtrdW5pdC90ZXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvd2FpdF9iaXQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rYWxsc3ltcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtcmVmY291bnQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYXRvbWljLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaCZndDsKJiM0MzsKJiM0MztzdHJ1Y3QgZGF0YSB7CiYjNDM7CXVuc2lnbmVkIGxvbmcgY2FsbGVyOwomIzQzOwljb25zdCBjaGFyICpmbjsKJiM0MzsJY29uc3Qgdm9pZCAqb2JqOwomIzQzOwlhdG9taWNfdCBjb3VudDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBkYXRhIGNhcHR1cmU7CiYjNDM7CiYjNDM7Y29uc3Qgdm9pZCAqY2hrX29iajsKJiM0MzsKJiM0MzsjZGVmaW5lIHRlc3RfaW5pdCgpCQkJCQkJCQlcCiYjNDM7CWRvIHsJCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfRkFMU0UoCQkJCQkJXAomIzQzOwkJCXRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTsJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQlhdG9taWNfc2V0X3JlbGVhc2UoJmFtcDtjYXB0dXJlLmNvdW50LCAwKTsJCQkJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQljaGtfb2JqID0gJmFtcDtvYmo7CQkJCQkJCVwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsKJiM0MzsjZGVmaW5lIHRlc3RfZXhpdChmdW5jX25hbWUpCQkJCQkJCVwKJiM0MzsJZG8gewkJCQkJCQkJCVwKJiM0MzsJCS8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi8JCQkJCVwKJiM0MzsJCWludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KAkJCQlcCiYjNDM7CQkJJmFtcDtjYXB0dXJlLmNvdW50LAkJCQkJCVwKJiM0MzsJCQlhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksCQkJXAomIzQzOwkJCTEwCQkJCQkJCVwKJiM0MzsJCSk7CQkJCQkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7CQkJCVwKJiM0MzsJCQkJCQkJCQkJXAomIzQzOwkJdW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTsJCVwKJiM0MzsJCXRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpOwkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksIDEpOwlcCiYjNDM7CQkvKgkJCQkJCQkJXAomIzQzOwkJICogY2FsbGVyIHRlc3RpbmcgbWF5IGJlIGZsYWt5CQkJCQlcCiYjNDM7CQkgKiBkdWUgdG8gY29tcGlsZSBvcHRpbWlzYXRpb25zIHNvIG9taXQJCQkJXAomIzQzOwkJICovCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgY2FwdHVyZS5mbiwgI2Z1bmNfbmFtZSk7CQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCAmYW1wO29iaik7CQkJXAomIzQzOwl9IHdoaWxlICgwKQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHByb2JlKAomIzQzOwkgIHZvaWQgKmlnbm9yZSwKJiM0MzsJICB1bnNpZ25lZCBsb25nIGNhbGxlciwKJiM0MzsJICBjb25zdCBjaGFyICpmbiwKJiM0MzsJICBjb25zdCB2b2lkICpvYmopCiYjNDM7ewomIzQzOwkvL3ByZXZlbnQgbm9uIHRlc3QgZnVuYyBmaW5hbF9wdXRzIGZyb20gY2hhbmdpbmcgY2FwdHVyZWQgdmFsdWVzCiYjNDM7CWlmIChjaGtfb2JqICE9IG9iaikKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJY2FwdHVyZS5jYWxsZXIgPSBjYWxsZXI7CiYjNDM7CWNhcHR1cmUuZm4gPSBmbjsKJiM0MzsJY2FwdHVyZS5vYmogPSBvYmo7CiYjNDM7CiYjNDM7CWF0b21pY19pbmNfcmV0dXJuX3JlbGVhc2UoJmFtcDtjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudAomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlyZWZjb3VudF90IG9iajsKJiM0MzsKJiM0MzsJdGVzdF9pbml0KCk7CiYjNDM7CXJlZmNvdW50X3NldCgmYW1wO29iaiwgMik7CiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtvYmopKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7b2JqKSk7CiYjNDM7CiYjNDM7CXRlc3RfZXhpdChfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnRfZGVjX2lmX29uZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlyZWZjb3VudF90IG9iajsKJiM0MzsKJiM0MzsJdGVzdF9pbml0KCk7CiYjNDM7CXJlZmNvdW50X3NldCgmYW1wO29iaiwgMik7CiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtvYmopKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2lmX29uZSgmYW1wO29iaikpOwomIzQzOwomIzQzOwl0ZXN0X2V4aXQocmVmY291bnRfZGVjX2lmX29uZSk7CiYjNDM7fQomIzQzO3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBlcmNwdV9yZWYgb2JqOwomIzQzOwomIzQzOwl0ZXN0X2luaXQoKTsKJiM0MzsKJiM0MzsJS1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdCgmYW1wO29iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX2dldCgmYW1wO29iaik7CiYjNDM7CXBlcmNwdV9yZWZfZ2V0KCZhbXA7b2JqKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtvYmopOwomIzQzOwlwZXJjcHVfcmVmX3B1dCgmYW1wO29iaik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKCZhbXA7b2JqKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtvYmopOwomIzQzOwomIzQzOwl0ZXN0X2V4aXQocGVyY3B1X3JlZl9wdXRfbWFueSk7CiYjNDM7CXBlcmNwdV9yZWZfZXhpdCgmYW1wO29iaik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHsKJiM0MzsJS1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdCksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSwKJiM0MzsJS1VOSVRfQ0FTRSh0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkpLAomIzQzOwl7fQomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZi10cmFjZSYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzCiYjNDM7fTsKJiM0MzsKJiM0MztrdW5pdF90ZXN0X3N1aXRlcygmYW1wO3JlZl90cmFjZV90ZXN0X3N1aXRlKTsKJiM0MzsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7RXVnZW5lIE1hdmljayAmbHQ7bUBtYXZpY2suZGV2Jmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2UmIzM0Oyk7CiYjNDM7TU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDIzOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTMKCQkJCQkJCW91dHB1dDogNzIKCQkJCQkJCXRob3VnaHRzOiA3NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIGEgYHJlZl90cmFjZV9maW5hbF9wdXRgIHRyYWNlcG9pbnQgdG8gYHJlZmNvdW50YCBhbmQgYHBlcmNwdS1yZWZjb3VudGAuIEl0IGFsc28gaW5jbHVkZXMgYSBLVW5pdCB0ZXN0IGZvciB0aGlzIHRyYWNlcG9pbnQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nLgoKTG9va2luZyBhdCB0aGUgY29kZSBtb2RpZmljYXRpb25zLCBpdCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaGAsIGBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oYCwgYGluY2x1ZGUvbGludXgvcmVmY291bnQuaGAsIGBpbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaGAsIGBsaWIvS2NvbmZpZ2AsIGBsaWIvTWFrZWZpbGVgLCBgbGliL3JlZl90cmFjZS5jYCwgYGxpYi9yZWZjb3VudC5jYCwgYGxpYi90ZXN0cy9NYWtlZmlsZWAsIGFuZCBgbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jYC4gQnV0IGFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgc29sZWx5IGZvY3VzZWQgb24gaW50cm9kdWNpbmcgdGhpcyBuZXcgdHJhY2Vwb2ludCBhbmQgaXRzIGFzc29jaWF0ZWQgdGVzdC4gTm8gZnVuY3Rpb25hbCBsb2dpYyBpcyBiZWluZyBtb2RpZmllZC4KCkFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGluY2x1ZGVzOiAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzJiMzNDsgYW5kIEtVbml0IHRlc3RzIGFyZSBub3QgZnV6emVkLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgYSB0cmFjZXBvaW50IGFuZCBhIEtVbml0IHRlc3QgZm9yIGl0LCBhbmQgYmVjYXVzZSB0cmFjZXBvaW50cyBhcmUgY29uc2lkZXJlZCBub24tZnVuY3Rpb25hbCwgaXQgc2hvdWxkIGFic29sdXRlbHkgYmUgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwdXJwb3NlIG9mIGEgdHJhY2Vwb2ludCBpcyBwdXJlbHkgZm9yIG9ic2VydmFiaWxpdHksIG5vdCB0byBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbSwgYW5kIEtVbml0IHRlc3RzIGFyZSBub3QgZnV6emVkLgoKSSYjMzk7dmUganVzdCBkb3VibGUtY2hlY2tlZCB0aGUgY2hhbmdlcyBpbiBgaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaGAsIGBpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhgLCBhbmQgYGxpYi9yZWZjb3VudC5jYCBhbmQgY2FuIGNvbmZpcm0gdGhhdCBhbGwgdGhlIGNoYW5nZXMgc2ltcGx5IGFkZCBgZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dGAsIHdoaWNoIGlzIGp1c3QgdGhlIHRyYWNlcG9pbnQgaXRzZWxmLiBUaGUgcmVzdCBvZiB0aGUgZmlsZXMgYXJlIGp1c3QgZGVmaW5pbmcgdGhlIHRyYWNlcG9pbnQgYW5kIGFkZGluZyB0aGUgdGVzdCwgYXMgSSBleHBlY3RlZC4KClNvLCBpbiBjb25jbHVzaW9uOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCAqb25seSogYWRkcyBhIHRyYWNlcG9pbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsIGxvZ2ljIHdoaWNoIHdvdWxkIG5lY2Vzc2l0YXRlIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMjM6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MDAuMzg3MTM2NDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk1ODUzMDgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdHJhY2Vwb2ludCBmb3IgcmVmZXJlbmNlIGNvdW50aW5nIChgcmVmX3RyYWNlX2ZpbmFsX3B1dGApIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljIHRoYXQgcmVxdWlyZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MDAuMzg3MTQ0MTA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDkxNzQ5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNjFjYmY0YjBlMDg2NGRlOGQyYmQyZTFlMzhkMDI0NzA3ZmI3NTQ0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDIzOjA3OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uMmRiYjc0NDE5MDZlMDIgMTAwNjQ0XFxuLS0tIGEvTUFJTlRBSU5FUlNcXG4rKysgYi9NQUlOVEFJTkVSU1xcbkBAIC00MjEwLDcgKzQyMTAsMTAgQEAgUzpcXHRNYWludGFpbmVkXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHRcXG4gRjpcXHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXFxuIEY6XFx0aW5jbHVkZS8qL2F0b21pYyouaFxcbitGOlxcdGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rRjpcXHRsaWIvcmVmX3RyYWNlLmNcXG4rRjpcXHRsaWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG4gRjpcXHRzY3JpcHRzL2F0b21pYy9cXG4gRjpcXHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xcbiBGOlxcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi5mODcwYWMwZThjMDY3NiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxcbkBAIC01NSw2ICs1NSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yY3VwZGF0ZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcXHUwMDNlXFxuIFxcbiBzdHJ1Y3QgcGVyY3B1X3JlZjtcXG4gdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7XFxuQEAgLTMzMSw4ICszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucilcXG4gXFxuIFxcdGlmIChfX3JlZl9pc19wZXJjcHUocmVmLCBcXHUwMDI2cGVyY3B1X2NvdW50KSlcXG4gXFx0XFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcXG4tXFx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcXHUwMDI2cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2Vjb3VudCkpKVxcbitcXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFxcdTAwMjZyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZWNvdW50KSkpIHtcXG4rXFx0XFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpO1xcbiBcXHRcXHRyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZXJlbGVhc2UocmVmKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi42YzY2MDA5MzhhNDc2MFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXFxuQEAgLTAsMCArMSwyNiBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbisjaWZuZGVmIF9MSU5VWF9SRUZfVFJBQ0VfSFxcbisjZGVmaW5lIF9MSU5VWF9SRUZfVFJBQ0VfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXFx1MDAzZVxcbitcXG4rLyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqL1xcbitERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuK1xcbisjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTXFxuKy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXFxuK2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xcbitcXG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iailcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcXHRcXFxcXFxuK1xcdH0gd2hpbGUgKDApXFxuK1xcbisjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSB7IH1cXG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxcbisjZW5kaWZcXG4rXFxuKyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjcwZDA3YTQ2MmRhMWRjIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbkBAIC0xMDcsNiArMTA3LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBtdXRleDtcXG4gXFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXFxuIFxcbiBcXHRpZiAob2xkIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBvbGQgPT0gaSkge1xcbiBcXHRcXHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcXG4rXFx0XFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYmYxYjFkMzkwYjhiM1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcbkBAIC0wLDAgKzEsNDYgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI3VuZGVmIFRSQUNFX1NZU1RFTVxcbisjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2VcXG4rXFxuKyNpZiAhZGVmaW5lZChfVFJBQ0VfUkVGX1RSQUNFX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuKyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXFx1MDAzZVxcbitcXG4rLyoqXFxuKyAqIHJlZl90cmFjZV9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xcbisgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxcbisgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXFxuKyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXFxuKyAqXFxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dFxcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG4rICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcXG4rICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXFxuKyAqL1xcbitUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxcbitcXG4rXFx0VFBfUFJPVE8odW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopLFxcbitcXG4rXFx0VFBfQVJHUyhjYWxsZXIsIGZuLCBvYmopLFxcbitcXG4rXFx0VFBfU1RSVUNUX19lbnRyeShcXG4rXFx0X19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpXFxuK1xcdF9fc3RyaW5nKGZuLCBmbilcXG4rXFx0X19maWVsZChjb25zdCB2b2lkICosIG9iailcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX2Zhc3RfYXNzaWduKFxcbitcXHRfX2VudHJ5LVxcdTAwM2VjYWxsZXIgPSBjYWxsZXI7XFxuK1xcdF9fYXNzaWduX3N0cihmbik7XFxuK1xcdF9fZW50cnktXFx1MDAzZW9iaiA9IG9iajtcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX3ByaW50ayhcXFwiY2FsbGVyPSVwUyBmbj0lcyBvYmo9JXBcXFwiLCAodm9pZCAqKV9fZW50cnktXFx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cXHUwMDNlb2JqKVxcbispO1xcbitcXG4rI2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqL1xcbitcXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXFxuKyNpbmNsdWRlIFxcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xcbmluZGV4IDAwYTk1MDk2MzZjMTg3Li43ZTI3NDZiZTZkMTY5ZSAxMDA2NDRcXG4tLS0gYS9saWIvS2NvbmZpZ1xcbisrKyBiL2xpYi9LY29uZmlnXFxuQEAgLTUyLDYgKzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcXG4gXFxuIFxcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXFxuIFxcbitjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1RcXG4rXFx0Ym9vbCBcXFwicmVmX3RyYWNlIGt1bml0IHRlc3RcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4rXFx0ZGVwZW5kcyBvbiBLVU5JVCBcXHUwMDI2XFx1MDAyNiBUUkFDRVBPSU5UU1xcbitcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbitcXHRoZWxwXFxuK1xcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZl90cmFjZV9maW5hbF9wdXRcXG4rXFx0ICB0cmFjZXBvaW50LlxcbitcXG4rXFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbitcXG4gY29uZmlnIEJJVFJFVkVSU0VcXG4gXFx0dHJpc3RhdGVcXG4gXFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxcbmluZGV4IGYzM2EyNGJmMWMxOWFkLi40MTczNzA5MGE5NWRiOSAxMDA2NDRcXG4tLS0gYS9saWIvTWFrZWZpbGVcXG4rKysgYi9saWIvTWFrZWZpbGVcXG5AQCAtMzM1LDMgKzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xcbiBcXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSArPSB0ZXN0X2ZvcnRpZnlcXG4rXFxuK29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgKz0gcmVmX3RyYWNlLm9cXG5kaWZmIC0tZ2l0IGEvbGliL3JlZl90cmFjZS5jIGIvbGliL3JlZl90cmFjZS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDY2NjQ3NzcyY2UxNzJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbGliL3JlZl90cmFjZS5jXFxuQEAgLTAsMCArMSwxMyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbitcXG4rLy9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcXG4rdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxcbit7XFxuK1xcdHRyYWNlX2NhbGxfX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTtcXG4rXFxuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmNcXG5pbmRleCBhMjA3YThmMjJiM2NhMy4uY2Q3ZTMyZGYzOTE5MDMgMTAwNjQ0XFxuLS0tIGEvbGliL3JlZmNvdW50LmNcXG4rKysgYi9saWIvcmVmY291bnQuY1xcbkBAIC03LDYgKzcsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9idWcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cilcXHRXQVJOX09OQ0UoMSwgXFxcInJlZmNvdW50X3Q6IFxcXCIgc3RyIFxcXCIuXFxcXG5cXFwiKVxcbiBcXG5AQCAtNTYsNyArNTcsMTIgQEAgYm9vbCByZWZjb3VudF9kZWNfaWZfb25lKHJlZmNvdW50X3QgKnIpXFxuIHtcXG4gXFx0aW50IHZhbCA9IDE7XFxuIFxcbi1cXHRyZXR1cm4gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXFx1MDAyNnItXFx1MDAzZXJlZnMsIFxcdTAwMjZ2YWwsIDApO1xcbitcXHRib29sIHJldCA9IGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFxcdTAwMjZyLVxcdTAwM2VyZWZzLCBcXHUwMDI2dmFsLCAwKTtcXG4rXFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXFxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXFxuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xcbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cXG4rb2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSArPSByZWZfdHJhY2Vfa3VuaXQub1xcbiBcXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXFx0XFx0Kz0gbW9kdWxlL1xcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44Zjg5NmFkYzk2ZDEyZVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5AQCAtMCwwICsxLDE0MSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NrdW5pdC90ZXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21waWxlcl9hdHRyaWJ1dGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0X2JpdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2FsbHN5bXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdG9taWMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkYXRhIHtcXG4rXFx0dW5zaWduZWQgbG9uZyBjYWxsZXI7XFxuK1xcdGNvbnN0IGNoYXIgKmZuO1xcbitcXHRjb25zdCB2b2lkICpvYmo7XFxuK1xcdGF0b21pY190IGNvdW50O1xcbit9O1xcbitcXG4rc3RydWN0IGRhdGEgY2FwdHVyZTtcXG4rXFxuK2NvbnN0IHZvaWQgKmNoa19vYmo7XFxuK1xcbisjZGVmaW5lIHRlc3RfaW5pdCgpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRkFMU0UoXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGF0b21pY19zZXRfcmVsZWFzZShcXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNoa19vYmogPSBcXHUwMDI2b2JqO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuK1xcbisjZGVmaW5lIHRlc3RfZXhpdChmdW5jX25hbWUpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQvKiB3YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uICovXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRpbnQgbm90aW1lb3V0ID0gd2FpdF92YXJfZXZlbnRfdGltZW91dChcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdTAwMjZjYXB0dXJlLmNvdW50LFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0YXRvbWljX3JlYWRfYWNxdWlyZShcXHUwMDI2Y2FwdHVyZS5jb3VudCksXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQxMFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0KTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgbm90aW1lb3V0KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgYXRvbWljX3JlYWRfYWNxdWlyZShcXHUwMDI2Y2FwdHVyZS5jb3VudCksIDEpO1xcdFxcXFxcXG4rXFx0XFx0LypcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAqIGNhbGxlciB0ZXN0aW5nIG1heSBiZSBmbGFreVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICogZHVlIHRvIGNvbXBpbGUgb3B0aW1pc2F0aW9ucyBzbyBvbWl0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgKi9cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBjYXB0dXJlLmZuLCAjZnVuY19uYW1lKTtcXHRcXHRcXFxcXFxuK1xcdFxcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgY2FwdHVyZS5vYmosIFxcdTAwMjZvYmopO1xcdFxcdFxcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuK3N0YXRpYyB2b2lkIHByb2JlKFxcbitcXHQgIHZvaWQgKmlnbm9yZSxcXG4rXFx0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcXG4rXFx0ICBjb25zdCBjaGFyICpmbixcXG4rXFx0ICBjb25zdCB2b2lkICpvYmopXFxuK3tcXG4rXFx0Ly9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlc1xcbitcXHRpZiAoY2hrX29iaiAhPSBvYmopXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xcbitcXHRjYXB0dXJlLmZuID0gZm47XFxuK1xcdGNhcHR1cmUub2JqID0gb2JqO1xcbitcXG4rXFx0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcXHUwMDI2Y2FwdHVyZS5jb3VudCk7IC8vaW5jcmVhc2UgY291bnRcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHJlZmNvdW50X3Qgb2JqO1xcbitcXG4rXFx0dGVzdF9pbml0KCk7XFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2b2JqLCAyKTtcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXG4rXFx0dGVzdF9leGl0KF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRyZWZjb3VudF90IG9iajtcXG4rXFxuK1xcdHRlc3RfaW5pdCgpO1xcbitcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm9iaiwgMik7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZvYmopKTtcXG4rXFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2lmX29uZShcXHUwMDI2b2JqKSk7XFxuK1xcbitcXHR0ZXN0X2V4aXQocmVmY291bnRfZGVjX2lmX29uZSk7XFxuK31cXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRzdHJ1Y3QgcGVyY3B1X3JlZiBvYmo7XFxuK1xcbitcXHR0ZXN0X2luaXQoKTtcXG4rXFxuK1xcdEtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNm9iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9wdXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXFx1MDAyNm9iaik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2b2JqKTtcXG4rXFxuK1xcdHRlc3RfZXhpdChwZXJjcHVfcmVmX3B1dF9tYW55KTtcXG4rXFx0cGVyY3B1X3JlZl9leGl0KFxcdTAwMjZvYmopO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XFxuK1xcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfZGVjX2lmX29uZSksXFxuK1xcdEtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSxcXG4rXFx0e31cXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XFxuK1xcdC5uYW1lID0gXFxcInJlZi10cmFjZVxcXCIsXFxuK1xcdC50ZXN0X2Nhc2VzID0gcmVmX3RyYWNlX3Rlc3RfY2FzZXNcXG4rfTtcXG4rXFxuK2t1bml0X3Rlc3Rfc3VpdGVzKFxcdTAwMjZyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7XFxuK1xcbitNT0RVTEVfQVVUSE9SKFxcXCJFdWdlbmUgTWF2aWNrIFxcdTAwM2NtQG1hdmljay5kZXZcXHUwMDNlXFxcIik7XFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiS1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MDEuMjM3OTAwOTI0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTA3NzUyMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2MWNiZjRiMGUwODY0ZGU4ZDJiZDJlMWUzOGQwMjQ3MDdmYjc1NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAyMzowNzo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIxLi4yZGJiNzQ0MTkwNmUwMiAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTQyMTAsNyArNDIxMCwxMCBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxuIEY6XHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXG4gRjpcdGluY2x1ZGUvKi9hdG9taWMqLmhcbitGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbitGOlx0bGliL3JlZl90cmFjZS5jXG4rRjpcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuIEY6XHRzY3JpcHRzL2F0b21pYy9cbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi5mODcwYWMwZThjMDY3NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IHBlcmNwdV9yZWY7XG4gdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7XG5AQCAtMzMxLDggKzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxuIFxuIFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFx1MDAyNnBlcmNwdV9jb3VudCkpXG4gXHRcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XG4tXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpXG4rXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbitcdFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4rXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNmM2NjAwOTM4YTQ3NjBcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsMjYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXG4rI2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuK1xuKy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cbitERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4rXG4rI2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xuKy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4rZXh0ZXJuIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaik7XG4rXG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXHRcdFx0XFxcbitcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuKyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbitzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikgeyB9XG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuKyNlbmRpZlxuK1xuKyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43MGQwN2E0NjJkYTFkYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgKzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IG11dGV4O1xuIFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXG4gXG4gXHRpZiAob2xkIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBvbGQgPT0gaSkge1xuIFx0XHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcbitcdFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYmYxYjFkMzkwYjhiM1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsNDYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyN1bmRlZiBUUkFDRV9TWVNURU1cbisjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2VcbitcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuKyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4rXG4rLyoqXG4rICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4rICogQGNhbGxlcjogcmV0dXJuIGFkZHJlc3Mgb2YgcmVmY291bnRcbisgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4rICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpXG4rICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KVxuKyAqXG4rICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZfdHJhY2VfZmluYWxfcHV0XG4rICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXG4rICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbisgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWRcbisgKi9cbitUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuK1xuK1x0VFBfUFJPVE8odW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopLFxuK1xuK1x0VFBfQVJHUyhjYWxsZXIsIGZuLCBvYmopLFxuK1xuK1x0VFBfU1RSVUNUX19lbnRyeShcbitcdF9fZmllbGQodW5zaWduZWQgbG9uZywgY2FsbGVyKVxuK1x0X19zdHJpbmcoZm4sIGZuKVxuK1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbitcdCksXG4rXG4rXHRUUF9mYXN0X2Fzc2lnbihcbitcdF9fZW50cnktXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xuK1x0X19hc3NpZ25fc3RyKGZuKTtcbitcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuK1x0KSxcbitcbitcdFRQX3ByaW50ayhcImNhbGxlcj0lcFMgZm49JXMgb2JqPSVwXCIsICh2b2lkICopX19lbnRyeS1cdTAwM2VjYWxsZXIsIF9fZ2V0X3N0cihmbiksIF9fZW50cnktXHUwMDNlb2JqKVxuKyk7XG4rXG4rI2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqL1xuK1xuKy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqL1xuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2RlZmluZV90cmFjZS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xuaW5kZXggMDBhOTUwOTYzNmMxODcuLjdlMjc0NmJlNmQxNjllIDEwMDY0NFxuLS0tIGEvbGliL0tjb25maWdcbisrKyBiL2xpYi9LY29uZmlnXG5AQCAtNTIsNiArNTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbitjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1RcbitcdGJvb2wgXCJyZWZfdHJhY2Uga3VuaXQgdGVzdFwiIGlmICFLVU5JVF9BTExfVEVTVFNcbitcdGRlcGVuZHMgb24gS1VOSVQgXHUwMDI2XHUwMDI2IFRSQUNFUE9JTlRTXG4rXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuK1x0aGVscFxuK1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuK1x0ICB0cmFjZXBvaW50LlxuK1xuK1x0ICBJZiB1bnN1cmUsIHNheSBOLlxuK1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4rKysgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyArMzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XG4gb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgKz0gdGVzdF9jb250ZXh0LWFuYWx5c2lzLm9cbiBcbiBzdWJkaXItJChDT05GSUdfRk9SVElGWV9TT1VSQ0UpICs9IHRlc3RfZm9ydGlmeVxuK1xuK29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgKz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDY2NjQ3NzcyY2UxNzJcbi0tLSAvZGV2L251bGxcbisrKyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCArMSwxMyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4rI2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbitcbisvL1dyYXBwZXIgZnVuY3Rpb24gZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGVudGlyZWx5IGluIGhlYWRlciBmaWxlc1xuK3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHR0cmFjZV9jYWxsX19yZWZfdHJhY2VfZmluYWxfcHV0KGNhbGxlciwgZm4sIG9iaik7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuK1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG5kaWZmIC0tZ2l0IGEvbGliL3JlZmNvdW50LmMgYi9saWIvcmVmY291bnQuY1xuaW5kZXggYTIwN2E4ZjIyYjNjYTMuLmNkN2UzMmRmMzkxOTAzIDEwMDY0NFxuLS0tIGEvbGliL3JlZmNvdW50LmNcbisrKyBiL2xpYi9yZWZjb3VudC5jXG5AQCAtNyw2ICs3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2J1Zy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbiBcbiAjZGVmaW5lIFJFRkNPVU5UX1dBUk4oc3RyKVx0V0FSTl9PTkNFKDEsIFwicmVmY291bnRfdDogXCIgc3RyIFwiLlxcblwiKVxuIFxuQEAgLTU2LDcgKzU3LDEyIEBAIGJvb2wgcmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKVxuIHtcbiBcdGludCB2YWwgPSAxO1xuIFxuLVx0cmV0dXJuIGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbitcdGJvb2wgcmV0ID0gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXHUwMDI2ci1cdTAwM2VyZWZzLCBcdTAwMjZ2YWwsIDApO1xuK1xuK1x0aWYgKHJldClcbitcdFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbitcbitcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XG4gXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbisrKyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cbiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cbitvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCs9IG1vZHVsZS9cbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOGY4OTZhZGM5NmQxMmVcbi0tLSAvZGV2L251bGxcbisrKyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuQEAgLTAsMCArMSwxNDEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbitcbitzdHJ1Y3QgZGF0YSB7XG4rXHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcbitcdGNvbnN0IGNoYXIgKmZuO1xuK1x0Y29uc3Qgdm9pZCAqb2JqO1xuK1x0YXRvbWljX3QgY291bnQ7XG4rfTtcbitcbitzdHJ1Y3QgZGF0YSBjYXB0dXJlO1xuK1xuK2NvbnN0IHZvaWQgKmNoa19vYmo7XG4rXG4rI2RlZmluZSB0ZXN0X2luaXQoKVx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0VYUEVDVF9GQUxTRShcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Y2hrX29iaiA9IFx1MDAyNm9iajtcdFx0XHRcdFx0XHRcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK1xuKyNkZWZpbmUgdGVzdF9leGl0KGZ1bmNfbmFtZSlcdFx0XHRcdFx0XHRcdFxcXG4rXHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Lyogd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvbiAqL1x0XHRcdFx0XHRcXFxuK1x0XHRpbnQgbm90aW1lb3V0ID0gd2FpdF92YXJfZXZlbnRfdGltZW91dChcdFx0XHRcdFxcXG4rXHRcdFx0XHUwMDI2Y2FwdHVyZS5jb3VudCxcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdGF0b21pY19yZWFkX2FjcXVpcmUoXHUwMDI2Y2FwdHVyZS5jb3VudCksXHRcdFx0XFxcbitcdFx0XHQxMFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0KTtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcdFx0XFxcbitcdFx0dHJhY2Vwb2ludF9zeW5jaHJvbml6ZV91bnJlZ2lzdGVyKCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGF0b21pY19yZWFkX2FjcXVpcmUoXHUwMDI2Y2FwdHVyZS5jb3VudCksIDEpO1x0XFxcbitcdFx0LypcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ICogY2FsbGVyIHRlc3RpbmcgbWF5IGJlIGZsYWt5XHRcdFx0XHRcdFxcXG4rXHRcdCAqIGR1ZSB0byBjb21waWxlIG9wdGltaXNhdGlvbnMgc28gb21pdFx0XHRcdFx0XFxcbitcdFx0ICovXHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBjYXB0dXJlLmZuLCAjZnVuY19uYW1lKTtcdFx0XFxcbitcdFx0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBjYXB0dXJlLm9iaiwgXHUwMDI2b2JqKTtcdFx0XHRcXFxuK1x0fSB3aGlsZSAoMClcbitcbitzdGF0aWMgdm9pZCBwcm9iZShcbitcdCAgdm9pZCAqaWdub3JlLFxuK1x0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcbitcdCAgY29uc3QgY2hhciAqZm4sXG4rXHQgIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHQvL3ByZXZlbnQgbm9uIHRlc3QgZnVuYyBmaW5hbF9wdXRzIGZyb20gY2hhbmdpbmcgY2FwdHVyZWQgdmFsdWVzXG4rXHRpZiAoY2hrX29iaiAhPSBvYmopXG4rXHRcdHJldHVybjtcbitcbitcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xuK1x0Y2FwdHVyZS5mbiA9IGZuO1xuK1x0Y2FwdHVyZS5vYmogPSBvYmo7XG4rXG4rXHRhdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKFx1MDAyNmNhcHR1cmUuY291bnQpOyAvL2luY3JlYXNlIGNvdW50XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnRfc3ViX2FuZF90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRyZWZjb3VudF90IG9iajtcbitcbitcdHRlc3RfaW5pdCgpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuK1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuK1xuK1x0dGVzdF9leGl0KF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRyZWZjb3VudF90IG9iajtcbitcbitcdHRlc3RfaW5pdCgpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuK1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2lmX29uZShcdTAwMjZvYmopKTtcbitcbitcdHRlc3RfZXhpdChyZWZjb3VudF9kZWNfaWZfb25lKTtcbit9XG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0c3RydWN0IHBlcmNwdV9yZWYgb2JqO1xuK1xuK1x0dGVzdF9pbml0KCk7XG4rXG4rXHRLVU5JVF9BU1NFUlRfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KFx1MDAyNm9iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xuK1xuK1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2b2JqKTtcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNm9iaik7XG4rXG4rXHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2b2JqKTtcbitcbitcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNm9iaik7XG4rXG4rXHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuK1xuK1x0dGVzdF9leGl0KHBlcmNwdV9yZWZfcHV0X21hbnkpO1xuK1x0cGVyY3B1X3JlZl9leGl0KFx1MDAyNm9iaik7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxuK1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50X2RlY19pZl9vbmUpLFxuK1x0S1VOSVRfQ0FTRSh0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkpLFxuK1x0e31cbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4rXHQubmFtZSA9IFwicmVmLXRyYWNlXCIsXG4rXHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzXG4rfTtcbitcbitrdW5pdF90ZXN0X3N1aXRlcyhcdTAwMjZyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7XG4rXG4rTU9EVUxFX0FVVEhPUihcIkV1Z2VuZSBNYXZpY2sgXHUwMDNjbUBtYXZpY2suZGV2XHUwMDNlXCIpO1xuK01PRFVMRV9ERVNDUklQVElPTihcIktVbml0IHRlc3QgZm9yIHJlZl90cmFjZVwiKTtcbitNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDIzOjA4OjAxLjIzNzkwODU5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxMDc3MTQ5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBhIGByZWZfdHJhY2VfZmluYWxfcHV0YCB0cmFjZXBvaW50IHRvIGByZWZjb3VudGAgYW5kIGBwZXJjcHUtcmVmY291bnRgLiBJdCBhbHNvIGluY2x1ZGVzIGEgS1VuaXQgdGVzdCBmb3IgdGhpcyB0cmFjZXBvaW50LiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZy5cblxuTG9va2luZyBhdCB0aGUgY29kZSBtb2RpZmljYXRpb25zLCBpdCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaGAsIGBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oYCwgYGluY2x1ZGUvbGludXgvcmVmY291bnQuaGAsIGBpbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaGAsIGBsaWIvS2NvbmZpZ2AsIGBsaWIvTWFrZWZpbGVgLCBgbGliL3JlZl90cmFjZS5jYCwgYGxpYi9yZWZjb3VudC5jYCwgYGxpYi90ZXN0cy9NYWtlZmlsZWAsIGFuZCBgbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jYC4gQnV0IGFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgc29sZWx5IGZvY3VzZWQgb24gaW50cm9kdWNpbmcgdGhpcyBuZXcgdHJhY2Vwb2ludCBhbmQgaXRzIGFzc29jaWF0ZWQgdGVzdC4gTm8gZnVuY3Rpb25hbCBsb2dpYyBpcyBiZWluZyBtb2RpZmllZC5cblxuQWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIEkgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXM6IFwiUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHNcIiBhbmQgS1VuaXQgdGVzdHMgYXJlIG5vdCBmdXp6ZWQuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIHBhdGNoICpvbmx5KiBpbnRyb2R1Y2VzIGEgdHJhY2Vwb2ludCBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdCwgYW5kIGJlY2F1c2UgdHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgbm9uLWZ1bmN0aW9uYWwsIGl0IHNob3VsZCBhYnNvbHV0ZWx5IGJlIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcHVycG9zZSBvZiBhIHRyYWNlcG9pbnQgaXMgcHVyZWx5IGZvciBvYnNlcnZhYmlsaXR5LCBub3QgdG8gYWx0ZXIgdGhlIGJlaGF2aW9yIG9mIHRoZSBzeXN0ZW0sIGFuZCBLVW5pdCB0ZXN0cyBhcmUgbm90IGZ1enplZC5cblxuSSd2ZSBqdXN0IGRvdWJsZS1jaGVja2VkIHRoZSBjaGFuZ2VzIGluIGBpbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oYCwgYGluY2x1ZGUvbGludXgvcmVmY291bnQuaGAsIGFuZCBgbGliL3JlZmNvdW50LmNgIGFuZCBjYW4gY29uZmlybSB0aGF0IGFsbCB0aGUgY2hhbmdlcyBzaW1wbHkgYWRkIGBkb190cmFjZV9yZWZfZmluYWxfcHV0YCwgd2hpY2ggaXMganVzdCB0aGUgdHJhY2Vwb2ludCBpdHNlbGYuIFRoZSByZXN0IG9mIHRoZSBmaWxlcyBhcmUganVzdCBkZWZpbmluZyB0aGUgdHJhY2Vwb2ludCBhbmQgYWRkaW5nIHRoZSB0ZXN0LCBhcyBJIGV4cGVjdGVkLlxuXG5TbywgaW4gY29uY2x1c2lvbjogYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgYW5kIGl0cyBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgKm5vdCogaW50cm9kdWNlIGFueSBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCBsb2dpYyB3aGljaCB3b3VsZCBuZWNlc3NpdGF0ZSBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDUzLCJPdXRwdXRUb2tlbnMiOjcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MTAuMzQ1NjI1NzUzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2rzsd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 22:38:29 +0000 UTC FinishedAt: 2026-07-11 23:08:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDIzOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZyAoYHJlZl90cmFjZV9maW5hbF9wdXRgKSBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGludHJvZHVjZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMjM6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNjFjYmY0YjBlMDg2NGRlOGQyYmQyZTFlMzhkMDI0NzA3ZmI3NTQ0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMjM6MDc6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggMTBlODI1MzE4MWQzMjEuLjJkYmI3NDQxOTA2ZTAyIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtNDIxMCw3ICYjNDM7NDIxMCwxMCBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxuIEY6XHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXG4gRjpcdGluY2x1ZGUvKi9hdG9taWMqLmhcbiYjNDM7RjpcdGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiBGOlx0aW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4mIzQzO0Y6XHRsaWIvcmVmX3RyYWNlLmNcbiYjNDM7RjpcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuIEY6XHRzY3JpcHRzL2F0b21pYy9cbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi5mODcwYWMwZThjMDY3NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICYjNDM7NTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgcGVyY3B1X3JlZjtcbiB0eXBlZGVmIHZvaWQgKHBlcmNwdV9yZWZfZnVuY190KShzdHJ1Y3QgcGVyY3B1X3JlZiAqKTtcbkBAIC0zMzEsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxuIFxuIFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFx1MDAyNnBlcmNwdV9jb3VudCkpXG4gXHRcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XG4tXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpXG4mIzQzO1x0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKSB7XG4mIzQzO1x0XHRkb190cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7XG4gXHRcdHJlZi1cdTAwM2VkYXRhLVx1MDAzZXJlbGVhc2UocmVmKTtcbiYjNDM7XHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNmM2NjAwOTM4YTQ3NjBcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDI2IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXG4mIzQzOyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbiYjNDM7XG4mIzQzOy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cbiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xuJiM0MzsvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqL1xuJiM0MztleHRlcm4gdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXHRcdFx0XFxcbiYjNDM7XHRcdFx0ZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7XHRcXFxuJiM0MztcdH0gd2hpbGUgKDApXG4mIzQzO1xuJiM0MzsjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSB7IH1cbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43MGQwN2E0NjJkYTFkYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgJiM0MzsxMDcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgbXV0ZXg7XG4gXG5AQCAtMzkzLDYgJiM0MzszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXG4gXG4gXHRpZiAob2xkIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBvbGQgPT0gaSkge1xuIFx0XHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcbiYjNDM7XHRcdGRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uM2JmMWIxZDM5MGI4YjNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXG5AQCAtMCwwICYjNDM7MSw0NiBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNXG4mIzQzOyNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJlZl90cmFjZVxuJiM0MztcbiYjNDM7I2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcbiYjNDM7I2RlZmluZSBfVFJBQ0VfUkVGX1RSQUNFX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHJlZl90cmFjZV9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xuJiM0MzsgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4mIzQzOyAqXG4mIzQzOyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MzsgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4mIzQzOyAqL1xuJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4mIzQzO1xuJiM0MztcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfU1RSVUNUX19lbnRyeShcbiYjNDM7XHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbiYjNDM7XHRfX3N0cmluZyhmbiwgZm4pXG4mIzQzO1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbiYjNDM7XHRfX2Fzc2lnbl9zdHIoZm4pO1xuJiM0MztcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuJiM0MztcdCksXG4mIzQzO1xuJiM0MztcdFRQX3ByaW50ayhcJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwmIzM0OywgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4mIzQzOyk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4mIzQzO1xuJiM0MzsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uN2UyNzQ2YmU2ZDE2OWUgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0Ym9vbCBcJiMzNDtyZWZfdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgVFJBQ0VQT0lOVFNcbiYjNDM7XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiM0MztcdGhlbHBcbiYjNDM7XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XG4mIzQzO1x0ICB0cmFjZXBvaW50LlxuJiM0MztcbiYjNDM7XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzQzO1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICYjNDM7PSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeVxuJiM0MztcbiYjNDM7b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSAmIzQzOz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDY2NjQ3NzcyY2UxNzJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCAmIzQzOzEsMTMgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2VfY2FsbF9fcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvcmVmY291bnQuYyBiL2xpYi9yZWZjb3VudC5jXG5pbmRleCBhMjA3YThmMjJiM2NhMy4uY2Q3ZTMyZGYzOTE5MDMgMTAwNjQ0XG4tLS0gYS9saWIvcmVmY291bnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZmNvdW50LmNcbkBAIC03LDYgJiM0Mzs3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2J1Zy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cilcdFdBUk5fT05DRSgxLCBcJiMzNDtyZWZjb3VudF90OiBcJiMzNDsgc3RyIFwmIzM0Oy5cXG5cJiMzNDspXG4gXG5AQCAtNTYsNyAmIzQzOzU3LDEyIEBAIGJvb2wgcmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKVxuIHtcbiBcdGludCB2YWwgPSAxO1xuIFxuLVx0cmV0dXJuIGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbiYjNDM7XHRib29sIHJldCA9IGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XG4gXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgJiM0Mzs1Nyw2IEBAIG9iai0kKENPTkZJR19VU0VSQ09QWV9LVU5JVF9URVNUKSAmIzQzOz0gdXNlcmNvcHlfa3VuaXQub1xuIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgJiM0Mzs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vXG4gb2JqLSQoQ09ORklHX1VVSURfS1VOSVRfVEVTVCkgJiM0Mzs9IHV1aWRfa3VuaXQub1xuJiM0MztvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICYjNDM7PSByZWZfdHJhY2Vfa3VuaXQub1xuIFxuIG9iai0kKENPTkZJR19URVNUX1JVTlRJTUVfTU9EVUxFKVx0XHQmIzQzOz0gbW9kdWxlL1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44Zjg5NmFkYzk2ZDEyZVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5AQCAtMCwwICYjNDM7MSwxNDEgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0X2JpdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rYWxsc3ltcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbiYjNDM7XG4mIzQzO3N0cnVjdCBkYXRhIHtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcbiYjNDM7XHRjb25zdCBjaGFyICpmbjtcbiYjNDM7XHRjb25zdCB2b2lkICpvYmo7XG4mIzQzO1x0YXRvbWljX3QgY291bnQ7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZGF0YSBjYXB0dXJlO1xuJiM0MztcbiYjNDM7Y29uc3Qgdm9pZCAqY2hrX29iajtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGVzdF9pbml0KClcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRjaGtfb2JqID0gXHUwMDI2b2JqO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGVzdF9leGl0KGZ1bmNfbmFtZSlcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQvKiB3YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uICovXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRpbnQgbm90aW1lb3V0ID0gd2FpdF92YXJfZXZlbnRfdGltZW91dChcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx1MDAyNmNhcHR1cmUuY291bnQsXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0YXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSxcdFx0XHRcXFxuJiM0MztcdFx0XHQxMFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1x0XHRcXFxuJiM0MztcdFx0dHJhY2Vwb2ludF9zeW5jaHJvbml6ZV91bnJlZ2lzdGVyKCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgYXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSwgMSk7XHRcXFxuJiM0MztcdFx0LypcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAqIGNhbGxlciB0ZXN0aW5nIG1heSBiZSBmbGFreVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICogZHVlIHRvIGNvbXBpbGUgb3B0aW1pc2F0aW9ucyBzbyBvbWl0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICovXHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgY2FwdHVyZS5mbiwgI2Z1bmNfbmFtZSk7XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCBcdTAwMjZvYmopO1x0XHRcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHByb2JlKFxuJiM0MztcdCAgdm9pZCAqaWdub3JlLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0ICBjb25zdCBjaGFyICpmbixcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdC8vcHJldmVudCBub24gdGVzdCBmdW5jIGZpbmFsX3B1dHMgZnJvbSBjaGFuZ2luZyBjYXB0dXJlZCB2YWx1ZXNcbiYjNDM7XHRpZiAoY2hrX29iaiAhPSBvYmopXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xuJiM0MztcdGNhcHR1cmUuZm4gPSBmbjtcbiYjNDM7XHRjYXB0dXJlLm9iaiA9IG9iajtcbiYjNDM7XG4mIzQzO1x0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcdTAwMjZjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRyZWZjb3VudF90IG9iajtcbiYjNDM7XG4mIzQzO1x0dGVzdF9pbml0KCk7XG4mIzQzO1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2b2JqKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2V4aXQoX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X2RlY19pZl9vbmUoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0cmVmY291bnRfdCBvYmo7XG4mIzQzO1xuJiM0MztcdHRlc3RfaW5pdCgpO1xuJiM0MztcdHJlZmNvdW50X3NldChcdTAwMjZvYmosIDIpO1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19pZl9vbmUoXHUwMDI2b2JqKSk7XG4mIzQzO1xuJiM0MztcdHRlc3RfZXhpdChyZWZjb3VudF9kZWNfaWZfb25lKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBlcmNwdV9yZWYgb2JqO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2luaXQoKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2b2JqKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2dldChcdTAwMjZvYmopO1xuJiM0MztcbiYjNDM7XHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHRlc3RfZXhpdChwZXJjcHVfcmVmX3B1dF9tYW55KTtcbiYjNDM7XHRwZXJjcHVfcmVmX2V4aXQoXHUwMDI2b2JqKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIF9fcmVmZGF0YSByZWZfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1X3JlZl9wdXRfbWFueSksXG4mIzQzO1x0e31cbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtyZWYtdHJhY2VcJiMzNDssXG4mIzQzO1x0LnRlc3RfY2FzZXMgPSByZWZfdHJhY2VfdGVzdF9jYXNlc1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDIzOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZyAoYHJlZl90cmFjZV9maW5hbF9wdXRgKSBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGludHJvZHVjZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI2MWNiZjRiMGUwODY0ZGU4ZDJiZDJlMWUzOGQwMjQ3MDdmYjc1NDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAyMzowNzo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMTBlODI1MzE4MWQzMjEuLjJkYmI3NDQxOTA2ZTAyIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtNDIxMCw3ICYjNDM7NDIxMCwxMCBAQCBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dAogRjoJYXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaAogRjoJaW5jbHVkZS8qL2F0b21pYyouaAomIzQzO0Y6CWluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmgKIEY6CWluY2x1ZGUvbGludXgvcmVmY291bnQuaAomIzQzO0Y6CWxpYi9yZWZfdHJhY2UuYwomIzQzO0Y6CWxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYwogRjoJc2NyaXB0cy9hdG9taWMvCiBGOglydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5ycwogRjoJcnVzdC9rZXJuZWwvc3luYy9hdG9taWMvCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAppbmRleCBkNzNhMWMwOGMzZTNjMC4uZjg3MGFjMGU4YzA2NzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaApAQCAtNTUsNiAmIzQzOzU1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9yY3VwZGF0ZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ2ZwLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZl90cmFjZS5oJmd0OwogCiBzdHJ1Y3QgcGVyY3B1X3JlZjsKIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopOwpAQCAtMzMxLDggJiM0MzszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucikKIAogCWlmIChfX3JlZl9pc19wZXJjcHUocmVmLCAmYW1wO3BlcmNwdV9jb3VudCkpCiAJCXRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7Ci0JZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCAmYW1wO3JlZi0mZ3Q7ZGF0YS0mZ3Q7Y291bnQpKSkKJiM0MzsJZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCAmYW1wO3JlZi0mZ3Q7ZGF0YS0mZ3Q7Y291bnQpKSkgewomIzQzOwkJZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpOwogCQlyZWYtJmd0O2RhdGEtJmd0O3JlbGVhc2UocmVmKTsKJiM0MzsJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNmM2NjAwOTM4YTQ3NjAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCkBAIC0wLDAgJiM0MzsxLDI2IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsjaWZuZGVmIF9MSU5VWF9SRUZfVFJBQ0VfSAomIzQzOyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7CiYjNDM7LyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqLwomIzQzO0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZfdHJhY2VfZmluYWxfcHV0KTsKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTCiYjNDM7LyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi8KJiM0MztleHRlcm4gdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKTsKJiM0MzsKJiM0MzsjZGVmaW5lIGRvX3RyYWNlX3JlZl9maW5hbF9wdXQob2JqKQkJCQkJCVwKJiM0MzsJZG8gewkJCQkJCQkJCVwKJiM0MzsJCWlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpCQkJXAomIzQzOwkJCWRvX3JlZl90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9fZnVuY19fLCBvYmopOwlcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7I2Vsc2UgLyogIUNPTkZJR19UUkFDRVBPSU5UUyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSB7IH0KJiM0MzsjZGVmaW5lIGRvX3RyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCmluZGV4IGJhNzY1N2NlZDI4MTdmLi43MGQwN2E0NjJkYTFkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaApAQCAtMTA3LDYgJiM0MzsxMDcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50X3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3BpbmxvY2tfdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmX3RyYWNlLmgmZ3Q7CiAKIHN0cnVjdCBtdXRleDsKIApAQCAtMzkzLDYgJiM0MzszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApCiAKIAlpZiAob2xkICZndDsgMCAmYW1wOyZhbXA7IG9sZCA9PSBpKSB7CiAJCXNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpOwomIzQzOwkJZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYmYxYjFkMzkwYjhiMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oCkBAIC0wLDAgJiM0MzsxLDQ2IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNCiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlCiYjNDM7CiYjNDM7I2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRCkKJiM0MzsjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90cmFjZXBvaW50LmgmZ3Q7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvCiYjNDM7ICogQGNhbGxlcjogcmV0dXJuIGFkZHJlc3Mgb2YgcmVmY291bnQKJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpCiYjNDM7ICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpCiYjNDM7ICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KQomIzQzOyAqCiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSwKJiM0MzsgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWQKJiM0MzsgKi8KJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksCiYjNDM7CiYjNDM7CVRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSwKJiM0MzsKJiM0MzsJVFBfU1RSVUNUX19lbnRyeSgKJiM0MzsJX19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpCiYjNDM7CV9fc3RyaW5nKGZuLCBmbikKJiM0MzsJX19maWVsZChjb25zdCB2b2lkICosIG9iaikKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CV9fZW50cnktJmd0O2NhbGxlciA9IGNhbGxlcjsKJiM0MzsJX19hc3NpZ25fc3RyKGZuKTsKJiM0MzsJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcCYjMzQ7LCAodm9pZCAqKV9fZW50cnktJmd0O2NhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS0mZ3Q7b2JqKQomIzQzOyk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxODcuLjdlMjc0NmJlNmQxNjllIDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9saWIvS2NvbmZpZwpAQCAtNTIsNiAmIzQzOzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1QKIAogCSAgV2hlbiBpbiBkb3VidCwgc2F5IE4uCiAKJiM0Mztjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1QKJiM0MzsJYm9vbCAmIzM0O3JlZl90cmFjZSBrdW5pdCB0ZXN0JiMzNDsgaWYgIUtVTklUX0FMTF9URVNUUwomIzQzOwlkZXBlbmRzIG9uIEtVTklUICZhbXA7JmFtcDsgVFJBQ0VQT0lOVFMKJiM0MzsJZGVmYXVsdCBLVU5JVF9BTExfVEVTVFMKJiM0MzsJaGVscAomIzQzOwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7CSAgdHJhY2Vwb2ludC4KJiM0MzsKJiM0MzsJICBJZiB1bnN1cmUsIHNheSBOLgomIzQzOwogY29uZmlnIEJJVFJFVkVSU0UKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlCkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geQogb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vCiAKIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeQomIzQzOwomIzQzO29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHJlZl90cmFjZS5vCmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ2NjY0Nzc3MmNlMTcyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZl90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDEzIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKJiM0MzsKJiM0MzsvL1dyYXBwZXIgZnVuY3Rpb24gZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGVudGlyZWx5IGluIGhlYWRlciBmaWxlcwomIzQzO3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikKJiM0Mzt7CiYjNDM7CXRyYWNlX2NhbGxfX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCk7CiYjNDM7CiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTsKZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmMKaW5kZXggYTIwN2E4ZjIyYjNjYTMuLmNkN2UzMmRmMzkxOTAzIDEwMDY0NAotLS0gYS9saWIvcmVmY291bnQuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvcmVmY291bnQuYwpAQCAtNyw2ICYjNDM7Nyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2J1Zy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKIAogI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cikJV0FSTl9PTkNFKDEsICYjMzQ7cmVmY291bnRfdDogJiMzNDsgc3RyICYjMzQ7LlxuJiMzNDspCiAKQEAgLTU2LDcgJiM0Mzs1NywxMiBAQCBib29sIHJlZmNvdW50X2RlY19pZl9vbmUocmVmY291bnRfdCAqcikKIHsKIAlpbnQgdmFsID0gMTsKIAotCXJldHVybiBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsJYm9vbCByZXQgPSBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MKHJlZmNvdW50X2RlY19pZl9vbmUpOwogCmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGUKaW5kZXggN2U5YzJmYTUyZTM1YTQuLjgyOGEwMzBhZDhjNzEwIDEwMDY0NAotLS0gYS9saWIvdGVzdHMvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL01ha2VmaWxlCkBAIC01Nyw1ICYjNDM7NTcsNiBAQCBvYmotJChDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCkgJiM0Mzs9IHVzZXJjb3B5X2t1bml0Lm8KIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgJiM0Mzs9IHV0aWxfbWFjcm9zX2t1bml0Lm8KIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgJiM0Mzs9IHRlc3RfcmF0ZWxpbWl0Lm8KIG9iai0kKENPTkZJR19VVUlEX0tVTklUX1RFU1QpICYjNDM7PSB1dWlkX2t1bml0Lm8KJiM0MztvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICYjNDM7PSByZWZfdHJhY2Vfa3VuaXQubwogCiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSkJCSYjNDM7PSBtb2R1bGUvCmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhmODk2YWRjOTZkMTJlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCkBAIC0wLDAgJiM0MzsxLDE0MSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtrdW5pdC90ZXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvd2FpdF9iaXQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rYWxsc3ltcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtcmVmY291bnQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYXRvbWljLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaCZndDsKJiM0MzsKJiM0MztzdHJ1Y3QgZGF0YSB7CiYjNDM7CXVuc2lnbmVkIGxvbmcgY2FsbGVyOwomIzQzOwljb25zdCBjaGFyICpmbjsKJiM0MzsJY29uc3Qgdm9pZCAqb2JqOwomIzQzOwlhdG9taWNfdCBjb3VudDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBkYXRhIGNhcHR1cmU7CiYjNDM7CiYjNDM7Y29uc3Qgdm9pZCAqY2hrX29iajsKJiM0MzsKJiM0MzsjZGVmaW5lIHRlc3RfaW5pdCgpCQkJCQkJCQlcCiYjNDM7CWRvIHsJCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfRkFMU0UoCQkJCQkJXAomIzQzOwkJCXRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTsJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQlhdG9taWNfc2V0X3JlbGVhc2UoJmFtcDtjYXB0dXJlLmNvdW50LCAwKTsJCQkJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQljaGtfb2JqID0gJmFtcDtvYmo7CQkJCQkJCVwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsKJiM0MzsjZGVmaW5lIHRlc3RfZXhpdChmdW5jX25hbWUpCQkJCQkJCVwKJiM0MzsJZG8gewkJCQkJCQkJCVwKJiM0MzsJCS8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi8JCQkJCVwKJiM0MzsJCWludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KAkJCQlcCiYjNDM7CQkJJmFtcDtjYXB0dXJlLmNvdW50LAkJCQkJCVwKJiM0MzsJCQlhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksCQkJXAomIzQzOwkJCTEwCQkJCQkJCVwKJiM0MzsJCSk7CQkJCQkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7CQkJCVwKJiM0MzsJCQkJCQkJCQkJXAomIzQzOwkJdW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTsJCVwKJiM0MzsJCXRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpOwkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksIDEpOwlcCiYjNDM7CQkvKgkJCQkJCQkJXAomIzQzOwkJICogY2FsbGVyIHRlc3RpbmcgbWF5IGJlIGZsYWt5CQkJCQlcCiYjNDM7CQkgKiBkdWUgdG8gY29tcGlsZSBvcHRpbWlzYXRpb25zIHNvIG9taXQJCQkJXAomIzQzOwkJICovCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgY2FwdHVyZS5mbiwgI2Z1bmNfbmFtZSk7CQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCAmYW1wO29iaik7CQkJXAomIzQzOwl9IHdoaWxlICgwKQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHByb2JlKAomIzQzOwkgIHZvaWQgKmlnbm9yZSwKJiM0MzsJICB1bnNpZ25lZCBsb25nIGNhbGxlciwKJiM0MzsJICBjb25zdCBjaGFyICpmbiwKJiM0MzsJICBjb25zdCB2b2lkICpvYmopCiYjNDM7ewomIzQzOwkvL3ByZXZlbnQgbm9uIHRlc3QgZnVuYyBmaW5hbF9wdXRzIGZyb20gY2hhbmdpbmcgY2FwdHVyZWQgdmFsdWVzCiYjNDM7CWlmIChjaGtfb2JqICE9IG9iaikKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJY2FwdHVyZS5jYWxsZXIgPSBjYWxsZXI7CiYjNDM7CWNhcHR1cmUuZm4gPSBmbjsKJiM0MzsJY2FwdHVyZS5vYmogPSBvYmo7CiYjNDM7CiYjNDM7CWF0b21pY19pbmNfcmV0dXJuX3JlbGVhc2UoJmFtcDtjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudAomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlyZWZjb3VudF90IG9iajsKJiM0MzsKJiM0MzsJdGVzdF9pbml0KCk7CiYjNDM7CXJlZmNvdW50X3NldCgmYW1wO29iaiwgMik7CiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtvYmopKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7b2JqKSk7CiYjNDM7CiYjNDM7CXRlc3RfZXhpdChfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnRfZGVjX2lmX29uZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlyZWZjb3VudF90IG9iajsKJiM0MzsKJiM0MzsJdGVzdF9pbml0KCk7CiYjNDM7CXJlZmNvdW50X3NldCgmYW1wO29iaiwgMik7CiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtvYmopKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2lmX29uZSgmYW1wO29iaikpOwomIzQzOwomIzQzOwl0ZXN0X2V4aXQocmVmY291bnRfZGVjX2lmX29uZSk7CiYjNDM7fQomIzQzO3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBlcmNwdV9yZWYgb2JqOwomIzQzOwomIzQzOwl0ZXN0X2luaXQoKTsKJiM0MzsKJiM0MzsJS1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdCgmYW1wO29iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX2dldCgmYW1wO29iaik7CiYjNDM7CXBlcmNwdV9yZWZfZ2V0KCZhbXA7b2JqKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtvYmopOwomIzQzOwlwZXJjcHVfcmVmX3B1dCgmYW1wO29iaik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKCZhbXA7b2JqKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtvYmopOwomIzQzOwomIzQzOwl0ZXN0X2V4aXQocGVyY3B1X3JlZl9wdXRfbWFueSk7CiYjNDM7CXBlcmNwdV9yZWZfZXhpdCgmYW1wO29iaik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHsKJiM0MzsJS1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdCksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSwKJiM0MzsJS1VOSVRfQ0FTRSh0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkpLAomIzQzOwl7fQomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZi10cmFjZSYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzCiYjNDM7fTsKJiM0MzsKJiM0MztrdW5pdF90ZXN0X3N1aXRlcygmYW1wO3JlZl90cmFjZV90ZXN0X3N1aXRlKTsKJiM0MzsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7RXVnZW5lIE1hdmljayAmbHQ7bUBtYXZpY2suZGV2Jmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2UmIzM0Oyk7CiYjNDM7TU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDIzOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTMKCQkJCQkJCW91dHB1dDogNzIKCQkJCQkJCXRob3VnaHRzOiA3NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIGEgYHJlZl90cmFjZV9maW5hbF9wdXRgIHRyYWNlcG9pbnQgdG8gYHJlZmNvdW50YCBhbmQgYHBlcmNwdS1yZWZjb3VudGAuIEl0IGFsc28gaW5jbHVkZXMgYSBLVW5pdCB0ZXN0IGZvciB0aGlzIHRyYWNlcG9pbnQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nLgoKTG9va2luZyBhdCB0aGUgY29kZSBtb2RpZmljYXRpb25zLCBpdCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaGAsIGBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oYCwgYGluY2x1ZGUvbGludXgvcmVmY291bnQuaGAsIGBpbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaGAsIGBsaWIvS2NvbmZpZ2AsIGBsaWIvTWFrZWZpbGVgLCBgbGliL3JlZl90cmFjZS5jYCwgYGxpYi9yZWZjb3VudC5jYCwgYGxpYi90ZXN0cy9NYWtlZmlsZWAsIGFuZCBgbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jYC4gQnV0IGFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgc29sZWx5IGZvY3VzZWQgb24gaW50cm9kdWNpbmcgdGhpcyBuZXcgdHJhY2Vwb2ludCBhbmQgaXRzIGFzc29jaWF0ZWQgdGVzdC4gTm8gZnVuY3Rpb25hbCBsb2dpYyBpcyBiZWluZyBtb2RpZmllZC4KCkFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGluY2x1ZGVzOiAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzJiMzNDsgYW5kIEtVbml0IHRlc3RzIGFyZSBub3QgZnV6emVkLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgYSB0cmFjZXBvaW50IGFuZCBhIEtVbml0IHRlc3QgZm9yIGl0LCBhbmQgYmVjYXVzZSB0cmFjZXBvaW50cyBhcmUgY29uc2lkZXJlZCBub24tZnVuY3Rpb25hbCwgaXQgc2hvdWxkIGFic29sdXRlbHkgYmUgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwdXJwb3NlIG9mIGEgdHJhY2Vwb2ludCBpcyBwdXJlbHkgZm9yIG9ic2VydmFiaWxpdHksIG5vdCB0byBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbSwgYW5kIEtVbml0IHRlc3RzIGFyZSBub3QgZnV6emVkLgoKSSYjMzk7dmUganVzdCBkb3VibGUtY2hlY2tlZCB0aGUgY2hhbmdlcyBpbiBgaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaGAsIGBpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhgLCBhbmQgYGxpYi9yZWZjb3VudC5jYCBhbmQgY2FuIGNvbmZpcm0gdGhhdCBhbGwgdGhlIGNoYW5nZXMgc2ltcGx5IGFkZCBgZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dGAsIHdoaWNoIGlzIGp1c3QgdGhlIHRyYWNlcG9pbnQgaXRzZWxmLiBUaGUgcmVzdCBvZiB0aGUgZmlsZXMgYXJlIGp1c3QgZGVmaW5pbmcgdGhlIHRyYWNlcG9pbnQgYW5kIGFkZGluZyB0aGUgdGVzdCwgYXMgSSBleHBlY3RlZC4KClNvLCBpbiBjb25jbHVzaW9uOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCAqb25seSogYWRkcyBhIHRyYWNlcG9pbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsIGxvZ2ljIHdoaWNoIHdvdWxkIG5lY2Vzc2l0YXRlIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMjM6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MDAuMzg3MTM2NDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk1ODUzMDgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdHJhY2Vwb2ludCBmb3IgcmVmZXJlbmNlIGNvdW50aW5nIChgcmVmX3RyYWNlX2ZpbmFsX3B1dGApIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljIHRoYXQgcmVxdWlyZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MDAuMzg3MTQ0MTA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDkxNzQ5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNjFjYmY0YjBlMDg2NGRlOGQyYmQyZTFlMzhkMDI0NzA3ZmI3NTQ0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDIzOjA3OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uMmRiYjc0NDE5MDZlMDIgMTAwNjQ0XFxuLS0tIGEvTUFJTlRBSU5FUlNcXG4rKysgYi9NQUlOVEFJTkVSU1xcbkBAIC00MjEwLDcgKzQyMTAsMTAgQEAgUzpcXHRNYWludGFpbmVkXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHRcXG4gRjpcXHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXFxuIEY6XFx0aW5jbHVkZS8qL2F0b21pYyouaFxcbitGOlxcdGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rRjpcXHRsaWIvcmVmX3RyYWNlLmNcXG4rRjpcXHRsaWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG4gRjpcXHRzY3JpcHRzL2F0b21pYy9cXG4gRjpcXHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xcbiBGOlxcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi5mODcwYWMwZThjMDY3NiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxcbkBAIC01NSw2ICs1NSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yY3VwZGF0ZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcXHUwMDNlXFxuIFxcbiBzdHJ1Y3QgcGVyY3B1X3JlZjtcXG4gdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7XFxuQEAgLTMzMSw4ICszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucilcXG4gXFxuIFxcdGlmIChfX3JlZl9pc19wZXJjcHUocmVmLCBcXHUwMDI2cGVyY3B1X2NvdW50KSlcXG4gXFx0XFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcXG4tXFx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcXHUwMDI2cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2Vjb3VudCkpKVxcbitcXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFxcdTAwMjZyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZWNvdW50KSkpIHtcXG4rXFx0XFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpO1xcbiBcXHRcXHRyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZXJlbGVhc2UocmVmKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi42YzY2MDA5MzhhNDc2MFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXFxuQEAgLTAsMCArMSwyNiBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbisjaWZuZGVmIF9MSU5VWF9SRUZfVFJBQ0VfSFxcbisjZGVmaW5lIF9MSU5VWF9SRUZfVFJBQ0VfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXFx1MDAzZVxcbitcXG4rLyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqL1xcbitERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuK1xcbisjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTXFxuKy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXFxuK2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xcbitcXG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iailcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcXHRcXFxcXFxuK1xcdH0gd2hpbGUgKDApXFxuK1xcbisjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSB7IH1cXG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxcbisjZW5kaWZcXG4rXFxuKyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjcwZDA3YTQ2MmRhMWRjIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbkBAIC0xMDcsNiArMTA3LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBtdXRleDtcXG4gXFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXFxuIFxcbiBcXHRpZiAob2xkIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBvbGQgPT0gaSkge1xcbiBcXHRcXHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcXG4rXFx0XFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYmYxYjFkMzkwYjhiM1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcbkBAIC0wLDAgKzEsNDYgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI3VuZGVmIFRSQUNFX1NZU1RFTVxcbisjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2VcXG4rXFxuKyNpZiAhZGVmaW5lZChfVFJBQ0VfUkVGX1RSQUNFX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuKyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXFx1MDAzZVxcbitcXG4rLyoqXFxuKyAqIHJlZl90cmFjZV9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xcbisgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxcbisgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXFxuKyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXFxuKyAqXFxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dFxcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG4rICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcXG4rICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXFxuKyAqL1xcbitUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxcbitcXG4rXFx0VFBfUFJPVE8odW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopLFxcbitcXG4rXFx0VFBfQVJHUyhjYWxsZXIsIGZuLCBvYmopLFxcbitcXG4rXFx0VFBfU1RSVUNUX19lbnRyeShcXG4rXFx0X19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpXFxuK1xcdF9fc3RyaW5nKGZuLCBmbilcXG4rXFx0X19maWVsZChjb25zdCB2b2lkICosIG9iailcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX2Zhc3RfYXNzaWduKFxcbitcXHRfX2VudHJ5LVxcdTAwM2VjYWxsZXIgPSBjYWxsZXI7XFxuK1xcdF9fYXNzaWduX3N0cihmbik7XFxuK1xcdF9fZW50cnktXFx1MDAzZW9iaiA9IG9iajtcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX3ByaW50ayhcXFwiY2FsbGVyPSVwUyBmbj0lcyBvYmo9JXBcXFwiLCAodm9pZCAqKV9fZW50cnktXFx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cXHUwMDNlb2JqKVxcbispO1xcbitcXG4rI2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqL1xcbitcXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXFxuKyNpbmNsdWRlIFxcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xcbmluZGV4IDAwYTk1MDk2MzZjMTg3Li43ZTI3NDZiZTZkMTY5ZSAxMDA2NDRcXG4tLS0gYS9saWIvS2NvbmZpZ1xcbisrKyBiL2xpYi9LY29uZmlnXFxuQEAgLTUyLDYgKzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcXG4gXFxuIFxcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXFxuIFxcbitjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1RcXG4rXFx0Ym9vbCBcXFwicmVmX3RyYWNlIGt1bml0IHRlc3RcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4rXFx0ZGVwZW5kcyBvbiBLVU5JVCBcXHUwMDI2XFx1MDAyNiBUUkFDRVBPSU5UU1xcbitcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbitcXHRoZWxwXFxuK1xcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZl90cmFjZV9maW5hbF9wdXRcXG4rXFx0ICB0cmFjZXBvaW50LlxcbitcXG4rXFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbitcXG4gY29uZmlnIEJJVFJFVkVSU0VcXG4gXFx0dHJpc3RhdGVcXG4gXFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxcbmluZGV4IGYzM2EyNGJmMWMxOWFkLi40MTczNzA5MGE5NWRiOSAxMDA2NDRcXG4tLS0gYS9saWIvTWFrZWZpbGVcXG4rKysgYi9saWIvTWFrZWZpbGVcXG5AQCAtMzM1LDMgKzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xcbiBcXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSArPSB0ZXN0X2ZvcnRpZnlcXG4rXFxuK29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgKz0gcmVmX3RyYWNlLm9cXG5kaWZmIC0tZ2l0IGEvbGliL3JlZl90cmFjZS5jIGIvbGliL3JlZl90cmFjZS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDY2NjQ3NzcyY2UxNzJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbGliL3JlZl90cmFjZS5jXFxuQEAgLTAsMCArMSwxMyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbitcXG4rLy9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcXG4rdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxcbit7XFxuK1xcdHRyYWNlX2NhbGxfX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTtcXG4rXFxuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmNcXG5pbmRleCBhMjA3YThmMjJiM2NhMy4uY2Q3ZTMyZGYzOTE5MDMgMTAwNjQ0XFxuLS0tIGEvbGliL3JlZmNvdW50LmNcXG4rKysgYi9saWIvcmVmY291bnQuY1xcbkBAIC03LDYgKzcsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9idWcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cilcXHRXQVJOX09OQ0UoMSwgXFxcInJlZmNvdW50X3Q6IFxcXCIgc3RyIFxcXCIuXFxcXG5cXFwiKVxcbiBcXG5AQCAtNTYsNyArNTcsMTIgQEAgYm9vbCByZWZjb3VudF9kZWNfaWZfb25lKHJlZmNvdW50X3QgKnIpXFxuIHtcXG4gXFx0aW50IHZhbCA9IDE7XFxuIFxcbi1cXHRyZXR1cm4gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXFx1MDAyNnItXFx1MDAzZXJlZnMsIFxcdTAwMjZ2YWwsIDApO1xcbitcXHRib29sIHJldCA9IGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFxcdTAwMjZyLVxcdTAwM2VyZWZzLCBcXHUwMDI2dmFsLCAwKTtcXG4rXFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRvX3RyYWNlX3JlZl9maW5hbF9wdXQocik7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXFxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXFxuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xcbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cXG4rb2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSArPSByZWZfdHJhY2Vfa3VuaXQub1xcbiBcXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXFx0XFx0Kz0gbW9kdWxlL1xcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44Zjg5NmFkYzk2ZDEyZVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5AQCAtMCwwICsxLDE0MSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NrdW5pdC90ZXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21waWxlcl9hdHRyaWJ1dGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0X2JpdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2FsbHN5bXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdG9taWMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkYXRhIHtcXG4rXFx0dW5zaWduZWQgbG9uZyBjYWxsZXI7XFxuK1xcdGNvbnN0IGNoYXIgKmZuO1xcbitcXHRjb25zdCB2b2lkICpvYmo7XFxuK1xcdGF0b21pY190IGNvdW50O1xcbit9O1xcbitcXG4rc3RydWN0IGRhdGEgY2FwdHVyZTtcXG4rXFxuK2NvbnN0IHZvaWQgKmNoa19vYmo7XFxuK1xcbisjZGVmaW5lIHRlc3RfaW5pdCgpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRkFMU0UoXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGF0b21pY19zZXRfcmVsZWFzZShcXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNoa19vYmogPSBcXHUwMDI2b2JqO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuK1xcbisjZGVmaW5lIHRlc3RfZXhpdChmdW5jX25hbWUpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQvKiB3YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uICovXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRpbnQgbm90aW1lb3V0ID0gd2FpdF92YXJfZXZlbnRfdGltZW91dChcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdTAwMjZjYXB0dXJlLmNvdW50LFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0YXRvbWljX3JlYWRfYWNxdWlyZShcXHUwMDI2Y2FwdHVyZS5jb3VudCksXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQxMFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0KTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgbm90aW1lb3V0KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgYXRvbWljX3JlYWRfYWNxdWlyZShcXHUwMDI2Y2FwdHVyZS5jb3VudCksIDEpO1xcdFxcXFxcXG4rXFx0XFx0LypcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAqIGNhbGxlciB0ZXN0aW5nIG1heSBiZSBmbGFreVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICogZHVlIHRvIGNvbXBpbGUgb3B0aW1pc2F0aW9ucyBzbyBvbWl0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgKi9cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBjYXB0dXJlLmZuLCAjZnVuY19uYW1lKTtcXHRcXHRcXFxcXFxuK1xcdFxcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgY2FwdHVyZS5vYmosIFxcdTAwMjZvYmopO1xcdFxcdFxcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuK3N0YXRpYyB2b2lkIHByb2JlKFxcbitcXHQgIHZvaWQgKmlnbm9yZSxcXG4rXFx0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcXG4rXFx0ICBjb25zdCBjaGFyICpmbixcXG4rXFx0ICBjb25zdCB2b2lkICpvYmopXFxuK3tcXG4rXFx0Ly9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlc1xcbitcXHRpZiAoY2hrX29iaiAhPSBvYmopXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xcbitcXHRjYXB0dXJlLmZuID0gZm47XFxuK1xcdGNhcHR1cmUub2JqID0gb2JqO1xcbitcXG4rXFx0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcXHUwMDI2Y2FwdHVyZS5jb3VudCk7IC8vaW5jcmVhc2UgY291bnRcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHJlZmNvdW50X3Qgb2JqO1xcbitcXG4rXFx0dGVzdF9pbml0KCk7XFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2b2JqLCAyKTtcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXG4rXFx0dGVzdF9leGl0KF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRyZWZjb3VudF90IG9iajtcXG4rXFxuK1xcdHRlc3RfaW5pdCgpO1xcbitcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm9iaiwgMik7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZvYmopKTtcXG4rXFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2lmX29uZShcXHUwMDI2b2JqKSk7XFxuK1xcbitcXHR0ZXN0X2V4aXQocmVmY291bnRfZGVjX2lmX29uZSk7XFxuK31cXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRzdHJ1Y3QgcGVyY3B1X3JlZiBvYmo7XFxuK1xcbitcXHR0ZXN0X2luaXQoKTtcXG4rXFxuK1xcdEtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNm9iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9wdXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXFx1MDAyNm9iaik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2b2JqKTtcXG4rXFxuK1xcdHRlc3RfZXhpdChwZXJjcHVfcmVmX3B1dF9tYW55KTtcXG4rXFx0cGVyY3B1X3JlZl9leGl0KFxcdTAwMjZvYmopO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XFxuK1xcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfZGVjX2lmX29uZSksXFxuK1xcdEtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSxcXG4rXFx0e31cXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XFxuK1xcdC5uYW1lID0gXFxcInJlZi10cmFjZVxcXCIsXFxuK1xcdC50ZXN0X2Nhc2VzID0gcmVmX3RyYWNlX3Rlc3RfY2FzZXNcXG4rfTtcXG4rXFxuK2t1bml0X3Rlc3Rfc3VpdGVzKFxcdTAwMjZyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7XFxuK1xcbitNT0RVTEVfQVVUSE9SKFxcXCJFdWdlbmUgTWF2aWNrIFxcdTAwM2NtQG1hdmljay5kZXZcXHUwMDNlXFxcIik7XFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiS1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MDEuMjM3OTAwOTI0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTA3NzUyMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2MWNiZjRiMGUwODY0ZGU4ZDJiZDJlMWUzOGQwMjQ3MDdmYjc1NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAyMzowNzo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIxLi4yZGJiNzQ0MTkwNmUwMiAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTQyMTAsNyArNDIxMCwxMCBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxuIEY6XHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXG4gRjpcdGluY2x1ZGUvKi9hdG9taWMqLmhcbitGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbitGOlx0bGliL3JlZl90cmFjZS5jXG4rRjpcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuIEY6XHRzY3JpcHRzL2F0b21pYy9cbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi5mODcwYWMwZThjMDY3NiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IHBlcmNwdV9yZWY7XG4gdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7XG5AQCAtMzMxLDggKzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxuIFxuIFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFx1MDAyNnBlcmNwdV9jb3VudCkpXG4gXHRcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XG4tXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpXG4rXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbitcdFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4rXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNmM2NjAwOTM4YTQ3NjBcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsMjYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXG4rI2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuK1xuKy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cbitERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4rXG4rI2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xuKy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4rZXh0ZXJuIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaik7XG4rXG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXHRcdFx0XFxcbitcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuKyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbitzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikgeyB9XG4rI2RlZmluZSBkb190cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuKyNlbmRpZlxuK1xuKyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43MGQwN2E0NjJkYTFkYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgKzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IG11dGV4O1xuIFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXG4gXG4gXHRpZiAob2xkIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBvbGQgPT0gaSkge1xuIFx0XHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcbitcdFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYmYxYjFkMzkwYjhiM1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsNDYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyN1bmRlZiBUUkFDRV9TWVNURU1cbisjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2VcbitcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuKyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4rXG4rLyoqXG4rICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4rICogQGNhbGxlcjogcmV0dXJuIGFkZHJlc3Mgb2YgcmVmY291bnRcbisgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4rICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpXG4rICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KVxuKyAqXG4rICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZfdHJhY2VfZmluYWxfcHV0XG4rICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXG4rICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbisgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWRcbisgKi9cbitUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuK1xuK1x0VFBfUFJPVE8odW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopLFxuK1xuK1x0VFBfQVJHUyhjYWxsZXIsIGZuLCBvYmopLFxuK1xuK1x0VFBfU1RSVUNUX19lbnRyeShcbitcdF9fZmllbGQodW5zaWduZWQgbG9uZywgY2FsbGVyKVxuK1x0X19zdHJpbmcoZm4sIGZuKVxuK1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbitcdCksXG4rXG4rXHRUUF9mYXN0X2Fzc2lnbihcbitcdF9fZW50cnktXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xuK1x0X19hc3NpZ25fc3RyKGZuKTtcbitcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuK1x0KSxcbitcbitcdFRQX3ByaW50ayhcImNhbGxlcj0lcFMgZm49JXMgb2JqPSVwXCIsICh2b2lkICopX19lbnRyeS1cdTAwM2VjYWxsZXIsIF9fZ2V0X3N0cihmbiksIF9fZW50cnktXHUwMDNlb2JqKVxuKyk7XG4rXG4rI2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqL1xuK1xuKy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqL1xuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2RlZmluZV90cmFjZS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xuaW5kZXggMDBhOTUwOTYzNmMxODcuLjdlMjc0NmJlNmQxNjllIDEwMDY0NFxuLS0tIGEvbGliL0tjb25maWdcbisrKyBiL2xpYi9LY29uZmlnXG5AQCAtNTIsNiArNTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbitjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1RcbitcdGJvb2wgXCJyZWZfdHJhY2Uga3VuaXQgdGVzdFwiIGlmICFLVU5JVF9BTExfVEVTVFNcbitcdGRlcGVuZHMgb24gS1VOSVQgXHUwMDI2XHUwMDI2IFRSQUNFUE9JTlRTXG4rXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuK1x0aGVscFxuK1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuK1x0ICB0cmFjZXBvaW50LlxuK1xuK1x0ICBJZiB1bnN1cmUsIHNheSBOLlxuK1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4rKysgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyArMzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XG4gb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgKz0gdGVzdF9jb250ZXh0LWFuYWx5c2lzLm9cbiBcbiBzdWJkaXItJChDT05GSUdfRk9SVElGWV9TT1VSQ0UpICs9IHRlc3RfZm9ydGlmeVxuK1xuK29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgKz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDY2NjQ3NzcyY2UxNzJcbi0tLSAvZGV2L251bGxcbisrKyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCArMSwxMyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4rI2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbitcbisvL1dyYXBwZXIgZnVuY3Rpb24gZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGVudGlyZWx5IGluIGhlYWRlciBmaWxlc1xuK3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHR0cmFjZV9jYWxsX19yZWZfdHJhY2VfZmluYWxfcHV0KGNhbGxlciwgZm4sIG9iaik7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuK1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG5kaWZmIC0tZ2l0IGEvbGliL3JlZmNvdW50LmMgYi9saWIvcmVmY291bnQuY1xuaW5kZXggYTIwN2E4ZjIyYjNjYTMuLmNkN2UzMmRmMzkxOTAzIDEwMDY0NFxuLS0tIGEvbGliL3JlZmNvdW50LmNcbisrKyBiL2xpYi9yZWZjb3VudC5jXG5AQCAtNyw2ICs3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2J1Zy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcdTAwM2VcbiBcbiAjZGVmaW5lIFJFRkNPVU5UX1dBUk4oc3RyKVx0V0FSTl9PTkNFKDEsIFwicmVmY291bnRfdDogXCIgc3RyIFwiLlxcblwiKVxuIFxuQEAgLTU2LDcgKzU3LDEyIEBAIGJvb2wgcmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKVxuIHtcbiBcdGludCB2YWwgPSAxO1xuIFxuLVx0cmV0dXJuIGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbitcdGJvb2wgcmV0ID0gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXHUwMDI2ci1cdTAwM2VyZWZzLCBcdTAwMjZ2YWwsIDApO1xuK1xuK1x0aWYgKHJldClcbitcdFx0ZG9fdHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbitcbitcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XG4gXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbisrKyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cbiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cbitvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCs9IG1vZHVsZS9cbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOGY4OTZhZGM5NmQxMmVcbi0tLSAvZGV2L251bGxcbisrKyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuQEAgLTAsMCArMSwxNDEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbitcbitzdHJ1Y3QgZGF0YSB7XG4rXHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcbitcdGNvbnN0IGNoYXIgKmZuO1xuK1x0Y29uc3Qgdm9pZCAqb2JqO1xuK1x0YXRvbWljX3QgY291bnQ7XG4rfTtcbitcbitzdHJ1Y3QgZGF0YSBjYXB0dXJlO1xuK1xuK2NvbnN0IHZvaWQgKmNoa19vYmo7XG4rXG4rI2RlZmluZSB0ZXN0X2luaXQoKVx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0VYUEVDVF9GQUxTRShcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Y2hrX29iaiA9IFx1MDAyNm9iajtcdFx0XHRcdFx0XHRcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK1xuKyNkZWZpbmUgdGVzdF9leGl0KGZ1bmNfbmFtZSlcdFx0XHRcdFx0XHRcdFxcXG4rXHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Lyogd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvbiAqL1x0XHRcdFx0XHRcXFxuK1x0XHRpbnQgbm90aW1lb3V0ID0gd2FpdF92YXJfZXZlbnRfdGltZW91dChcdFx0XHRcdFxcXG4rXHRcdFx0XHUwMDI2Y2FwdHVyZS5jb3VudCxcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdGF0b21pY19yZWFkX2FjcXVpcmUoXHUwMDI2Y2FwdHVyZS5jb3VudCksXHRcdFx0XFxcbitcdFx0XHQxMFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0KTtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcdFx0XFxcbitcdFx0dHJhY2Vwb2ludF9zeW5jaHJvbml6ZV91bnJlZ2lzdGVyKCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGF0b21pY19yZWFkX2FjcXVpcmUoXHUwMDI2Y2FwdHVyZS5jb3VudCksIDEpO1x0XFxcbitcdFx0LypcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ICogY2FsbGVyIHRlc3RpbmcgbWF5IGJlIGZsYWt5XHRcdFx0XHRcdFxcXG4rXHRcdCAqIGR1ZSB0byBjb21waWxlIG9wdGltaXNhdGlvbnMgc28gb21pdFx0XHRcdFx0XFxcbitcdFx0ICovXHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBjYXB0dXJlLmZuLCAjZnVuY19uYW1lKTtcdFx0XFxcbitcdFx0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBjYXB0dXJlLm9iaiwgXHUwMDI2b2JqKTtcdFx0XHRcXFxuK1x0fSB3aGlsZSAoMClcbitcbitzdGF0aWMgdm9pZCBwcm9iZShcbitcdCAgdm9pZCAqaWdub3JlLFxuK1x0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcbitcdCAgY29uc3QgY2hhciAqZm4sXG4rXHQgIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHQvL3ByZXZlbnQgbm9uIHRlc3QgZnVuYyBmaW5hbF9wdXRzIGZyb20gY2hhbmdpbmcgY2FwdHVyZWQgdmFsdWVzXG4rXHRpZiAoY2hrX29iaiAhPSBvYmopXG4rXHRcdHJldHVybjtcbitcbitcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xuK1x0Y2FwdHVyZS5mbiA9IGZuO1xuK1x0Y2FwdHVyZS5vYmogPSBvYmo7XG4rXG4rXHRhdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKFx1MDAyNmNhcHR1cmUuY291bnQpOyAvL2luY3JlYXNlIGNvdW50XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnRfc3ViX2FuZF90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRyZWZjb3VudF90IG9iajtcbitcbitcdHRlc3RfaW5pdCgpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuK1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuK1xuK1x0dGVzdF9leGl0KF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRyZWZjb3VudF90IG9iajtcbitcbitcdHRlc3RfaW5pdCgpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuK1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2lmX29uZShcdTAwMjZvYmopKTtcbitcbitcdHRlc3RfZXhpdChyZWZjb3VudF9kZWNfaWZfb25lKTtcbit9XG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0c3RydWN0IHBlcmNwdV9yZWYgb2JqO1xuK1xuK1x0dGVzdF9pbml0KCk7XG4rXG4rXHRLVU5JVF9BU1NFUlRfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KFx1MDAyNm9iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xuK1xuK1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2b2JqKTtcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNm9iaik7XG4rXG4rXHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2b2JqKTtcbitcbitcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNm9iaik7XG4rXG4rXHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuK1xuK1x0dGVzdF9leGl0KHBlcmNwdV9yZWZfcHV0X21hbnkpO1xuK1x0cGVyY3B1X3JlZl9leGl0KFx1MDAyNm9iaik7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxuK1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50X2RlY19pZl9vbmUpLFxuK1x0S1VOSVRfQ0FTRSh0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkpLFxuK1x0e31cbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4rXHQubmFtZSA9IFwicmVmLXRyYWNlXCIsXG4rXHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzXG4rfTtcbitcbitrdW5pdF90ZXN0X3N1aXRlcyhcdTAwMjZyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7XG4rXG4rTU9EVUxFX0FVVEhPUihcIkV1Z2VuZSBNYXZpY2sgXHUwMDNjbUBtYXZpY2suZGV2XHUwMDNlXCIpO1xuK01PRFVMRV9ERVNDUklQVElPTihcIktVbml0IHRlc3QgZm9yIHJlZl90cmFjZVwiKTtcbitNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDIzOjA4OjAxLjIzNzkwODU5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxMDc3MTQ5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBhIGByZWZfdHJhY2VfZmluYWxfcHV0YCB0cmFjZXBvaW50IHRvIGByZWZjb3VudGAgYW5kIGBwZXJjcHUtcmVmY291bnRgLiBJdCBhbHNvIGluY2x1ZGVzIGEgS1VuaXQgdGVzdCBmb3IgdGhpcyB0cmFjZXBvaW50LiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZy5cblxuTG9va2luZyBhdCB0aGUgY29kZSBtb2RpZmljYXRpb25zLCBpdCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaGAsIGBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oYCwgYGluY2x1ZGUvbGludXgvcmVmY291bnQuaGAsIGBpbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaGAsIGBsaWIvS2NvbmZpZ2AsIGBsaWIvTWFrZWZpbGVgLCBgbGliL3JlZl90cmFjZS5jYCwgYGxpYi9yZWZjb3VudC5jYCwgYGxpYi90ZXN0cy9NYWtlZmlsZWAsIGFuZCBgbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jYC4gQnV0IGFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgc29sZWx5IGZvY3VzZWQgb24gaW50cm9kdWNpbmcgdGhpcyBuZXcgdHJhY2Vwb2ludCBhbmQgaXRzIGFzc29jaWF0ZWQgdGVzdC4gTm8gZnVuY3Rpb25hbCBsb2dpYyBpcyBiZWluZyBtb2RpZmllZC5cblxuQWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIEkgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXM6IFwiUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHNcIiBhbmQgS1VuaXQgdGVzdHMgYXJlIG5vdCBmdXp6ZWQuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIHBhdGNoICpvbmx5KiBpbnRyb2R1Y2VzIGEgdHJhY2Vwb2ludCBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdCwgYW5kIGJlY2F1c2UgdHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgbm9uLWZ1bmN0aW9uYWwsIGl0IHNob3VsZCBhYnNvbHV0ZWx5IGJlIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcHVycG9zZSBvZiBhIHRyYWNlcG9pbnQgaXMgcHVyZWx5IGZvciBvYnNlcnZhYmlsaXR5LCBub3QgdG8gYWx0ZXIgdGhlIGJlaGF2aW9yIG9mIHRoZSBzeXN0ZW0sIGFuZCBLVW5pdCB0ZXN0cyBhcmUgbm90IGZ1enplZC5cblxuSSd2ZSBqdXN0IGRvdWJsZS1jaGVja2VkIHRoZSBjaGFuZ2VzIGluIGBpbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oYCwgYGluY2x1ZGUvbGludXgvcmVmY291bnQuaGAsIGFuZCBgbGliL3JlZmNvdW50LmNgIGFuZCBjYW4gY29uZmlybSB0aGF0IGFsbCB0aGUgY2hhbmdlcyBzaW1wbHkgYWRkIGBkb190cmFjZV9yZWZfZmluYWxfcHV0YCwgd2hpY2ggaXMganVzdCB0aGUgdHJhY2Vwb2ludCBpdHNlbGYuIFRoZSByZXN0IG9mIHRoZSBmaWxlcyBhcmUganVzdCBkZWZpbmluZyB0aGUgdHJhY2Vwb2ludCBhbmQgYWRkaW5nIHRoZSB0ZXN0LCBhcyBJIGV4cGVjdGVkLlxuXG5TbywgaW4gY29uY2x1c2lvbjogYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgYW5kIGl0cyBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgKm5vdCogaW50cm9kdWNlIGFueSBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCBsb2dpYyB3aGljaCB3b3VsZCBuZWNlc3NpdGF0ZSBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDUzLCJPdXRwdXRUb2tlbnMiOjcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMjM6MDg6MTAuMzQ1NjI1NzUzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IGZvciByZWZlcmVuY2UgY291bnRpbmcgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2rzsd[1] Phase: Running StartedAt: 2026-07-11 23:08:22 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2rzsd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-11 23:08:22 +0000 UTC FinishedAt: 2026-07-11 23:09:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}