Name: series-workflowbftqc Phase: Failed StartedAt: 2026-07-25 14:39:27 +0000 UTC FinishedAt: 2026-07-25 15:10:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbftqc[0] Phase: Succeeded StartedAt: 2026-07-25 14:39:27 +0000 UTC FinishedAt: 2026-07-25 15:10:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbftqc[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 14:39:27 +0000 UTC FinishedAt: 2026-07-25 15:10:17 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE1OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRkYTMwNWMxMWQxNjVjNDgzMWZlNzU1YTA3YjE5NjEzNmY4OGUzYzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxNTowOTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jXG5pbmRleCAwYzYyN2VhODlmZjdiMi4uYzFiODkyMGUyOTM0MjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcbkBAIC0xNzE4LDggJiM0MzsxNzE4LDEzIEBAIHN0YXRpYyB2b2lkIHJ1bl93aXRoX3RtcGZpbGUobm9uX2Fub25fdGVzdF9mbiBmbiwgY29uc3QgY2hhciAqZGVzYylcbiBcbiBcdC8qIEZpbGUgY29uc2lzdHMgb2YgYSBzaW5nbGUgcGFnZSBmaWxsZWQgd2l0aCB6ZXJvZXMuICovXG4gXHRpZiAoZmFsbG9jYXRlKGZkLCAwLCAwLCBwYWdlc2l6ZSkpIHtcbi1cdFx0a3NmdF9wZXJyb3IoXCYjMzQ7ZmFsbG9jYXRlKCkgZmFpbGVkXCYjMzQ7KTtcbi1cdFx0bG9nX3Rlc3RfcmVzdWx0KEtTRlRfRkFJTCk7XG4mIzQzO1x0XHRpZiAoZXJybm8gPT0gRU9QTk9UU1VQUCkge1xuJiM0MztcdFx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtmYWxsb2NhdGUoKSBub3Qgc3VwcG9ydGVkIGJ5IGZpbGVzeXN0ZW1cXG5cJiMzNDspO1xuJiM0MztcdFx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9TS0lQKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGtzZnRfcGVycm9yKFwmIzM0O2ZhbGxvY2F0ZSgpIGZhaWxlZFwmIzM0Oyk7XG4mIzQzO1x0XHRcdGxvZ190ZXN0X3Jlc3VsdChLU0ZUX0ZBSUwpO1xuJiM0MztcdFx0fVxuIFx0XHRnb3RvIGNsb3NlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuY1xuaW5kZXggYjIxZGYzMDQwYjFjN2MuLjVjOGVjM2NhNzVkN2QyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmNcbkBAIC0xOTEyLDcgJiM0MzsxOTEyLDcgQEAgVEVTVF9GKGd1YXJkX3JlZ2lvbnMsIGhvbGVfcHVuY2gpXG4ge1xuIFx0Y29uc3QgdW5zaWduZWQgbG9uZyBwYWdlX3NpemUgPSBzZWxmLVx1MDAzZXBhZ2Vfc2l6ZTtcbiBcdGNoYXIgKnB0cjtcbi1cdGludCBpO1xuJiM0MztcdGludCBpLCByZXQ7XG4gXG4gXHRpZiAodmFyaWFudC1cdTAwM2ViYWNraW5nID09IEFOT05fQkFDS0VEKVxuIFx0XHRTS0lQKHJldHVybiwgXCYjMzQ7VHJ1bmNhdGlvbiB0ZXN0IHNwZWNpZmljIHRvIGZpbGUtYmFja2VkXCYjMzQ7KTtcbkBAIC0xOTQ0LDggJiM0MzsxOTQ0LDEyIEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKVxuIFx0fVxuIFxuIFx0LyogTm93IGhvbGUgcHVuY2ggdGhlIGd1YXJkZWQgcmVnaW9uLiAqL1xuLVx0QVNTRVJUX0VRKG1hZHZpc2UoXHUwMDI2cHRyWzMgKiBwYWdlX3NpemVdLCA0ICogcGFnZV9zaXplLFxuLVx0XHRcdCAgTUFEVl9SRU1PVkUpLCAwKTtcbiYjNDM7XHRyZXQgPSBtYWR2aXNlKFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpO1xuJiM0MztcdGlmIChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVPUE5PVFNVUFApIHtcbiYjNDM7XHRcdEFTU0VSVF9FUShtdW5tYXAocHRyLCAxMCAqIHBhZ2Vfc2l6ZSksIDApO1xuJiM0MztcdFx0U0tJUChyZXR1cm4sIFwmIzM0O01BRFZfUkVNT1ZFIG5vdCBzdXBwb3J0ZWQgYnkgZmlsZXN5c3RlbVwmIzM0Oyk7XG4mIzQzO1x0fVxuJiM0MztcdEFTU0VSVF9FUShyZXQsIDApO1xuIFxuIFx0LyogRW5zdXJlIGd1YXJkIHJlZ2lvbnMgcmVtYWluLiAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jXG5pbmRleCAxMGU4ZGVkY2IwODdkYy4uNTRlODg4ZWI0OGJiY2IgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuY1xuQEAgLTEwMCw2ICYjNDM7MTAwLDI4IEBAIHN0YXRpYyB2b2lkIHNraXAoY29uc3QgY2hhciAqbXNnKVxuIFx0ZXhpdF9zdGF0dXMgPSBLU0ZUX1NLSVA7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBpc19zd2FwX2VuYWJsZWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGNoYXIgYnVmW01BWF9MSU5FX0xFTkdUSF07XG4mIzQzO1x0RklMRSAqZmlsZTtcbiYjNDM7XHRib29sIGVuYWJsZWQgPSBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0ZmlsZSA9IGZvcGVuKFwmIzM0Oy9wcm9jL3N3YXBzXCYjMzQ7LCBcJiMzNDtyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIWZpbGUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZmlsZSkpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0LyogQ2hlY2sgZm9yIGZpcnN0IGFjdGl2ZSBzd2FwIGVudHJ5LiAqL1xuJiM0MztcdGlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcbiYjNDM7XHRcdGVuYWJsZWQgPSB0cnVlO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGZjbG9zZShmaWxlKTtcbiYjNDM7XHRyZXR1cm4gZW5hYmxlZDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBzYXZlX3NldHRpbmdzKHZvaWQpXG4ge1xuIFx0a3NmdF9wcmludF9tc2coXCYjMzQ7U2F2ZSBUSFAgYW5kIGtodWdlcGFnZWQgc2V0dGluZ3MuLi5cJiMzNDspO1xuQEAgLTczNCwxMCAmIzQzOzc1NiwxNiBAQCBzdGF0aWMgdm9pZCBjb2xsYXBzZV9zd2FwaW5fc2luZ2xlX3B0ZShzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcFxuIHtcbiBcdHZvaWQgKnA7XG4gXG4mIzQzO1x0a3NmdF9wcmludF9tc2coXCYjMzQ7U3dhcG91dCBvbmUgcGFnZS4uLlwmIzM0Oyk7XG4mIzQzO1x0aWYgKCFpc19zd2FwX2VuYWJsZWQoKSkge1xuJiM0MztcdFx0c2tpcChcJiMzNDtObyBhY3RpdmUgc3dhcFwmIzM0Oyk7XG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXCYjMzQ7JXNcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cCA9IG9wcy1cdTAwM2VzZXR1cF9hcmVhKDEpO1xuIFx0b3BzLVx1MDAzZWZhdWx0KHAsIDAsIGhwYWdlX3BtZF9zaXplKTtcbiBcbi1cdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1N3YXBvdXQgb25lIHBhZ2UuLi5cJiMzNDspO1xuIFx0aWYgKG1hZHZpc2UocCwgcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXCYjMzQ7bWFkdmlzZShNQURWX1BBR0VPVVQpXCYjMzQ7KTtcbiBcdGlmIChjaGVja19zd2FwKHAsIHBhZ2Vfc2l6ZSkpIHtcbkBAIC03NjAsMTAgJiM0Mzs3ODgsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfbWF4X3B0ZXNfc3dhcChzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcHMgKm9cbiBcdGludCBtYXhfcHRlc19zd2FwID0gdGhwX3JlYWRfbnVtKFwmIzM0O2todWdlcGFnZWQvbWF4X3B0ZXNfc3dhcFwmIzM0Oyk7XG4gXHR2b2lkICpwO1xuIFxuJiM0MztcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1N3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi5cJiMzNDssIG1heF9wdGVzX3N3YXAgJiM0MzsgMSwgaHBhZ2VfcG1kX25yKTtcbiYjNDM7XHRpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7XG4mIzQzO1x0XHRza2lwKFwmIzM0O05vIGFjdGl2ZSBzd2FwXCYjMzQ7KTtcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfcmVwb3J0KGV4aXRfc3RhdHVzLCBcJiMzNDslc1xcblwmIzM0OywgX19mdW5jX18pO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwID0gb3BzLVx1MDAzZXNldHVwX2FyZWEoMSk7XG4gXHRvcHMtXHUwMDNlZmF1bHQocCwgMCwgaHBhZ2VfcG1kX3NpemUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCYjMzQ7U3dhcG91dCAlZCBvZiAlZCBwYWdlcy4uLlwmIzM0OywgbWF4X3B0ZXNfc3dhcCAmIzQzOyAxLCBocGFnZV9wbWRfbnIpO1xuIFx0aWYgKG1hZHZpc2UocCwgKG1heF9wdGVzX3N3YXAgJiM0MzsgMSkgKiBwYWdlX3NpemUsIE1BRFZfUEFHRU9VVCkpXG4gXHRcdGtzZnRfZXhpdF9mYWlsX3BlcnJvcihcJiMzNDttYWR2aXNlKE1BRFZfUEFHRU9VVClcJiMzNDspO1xuIFx0aWYgKGNoZWNrX3N3YXAocCwgKG1heF9wdGVzX3N3YXAgJiM0MzsgMSkgKiBwYWdlX3NpemUpKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmNcbmluZGV4IDAzMmVkOTUyMDU3YzYyLi4zYzcyMDg0ZjU3ZThiNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmNcbkBAIC0yODMsOCAmIzQzOzI4MywxMCBAQCBURVNUX0YobWVtb3J5X2ZhaWx1cmUsIGNsZWFuX3BhZ2VjYWNoZSlcbiBcdGlmIChmZCBcdTAwM2MgMClcbiBcdFx0U0tJUChyZXR1cm4sIFwmIzM0O2ZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cXG5cJiMzNDspO1xuIFx0ZnNfdHlwZSA9IGdldF9mc190eXBlKGZkKTtcbi1cdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKVxuJiM0MztcdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKSB7XG4mIzQzO1x0XHRjbG9zZShmZCk7XG4gXHRcdFNLSVAocmV0dXJuLCBcJiMzNDt1bnN1cHBvcnRlZCBmaWxlc3lzdGVtIDoleFxcblwmIzM0OywgZnNfdHlwZSk7XG4mIzQzO1x0fVxuIFxuIFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cdTAwM2VwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4gXHRcdCAgICBNQVBfU0hBUkVELCBmZCwgMCk7XG5AQCAtMzI1LDggJiM0MzszMjcsMTEgQEAgVEVTVF9GKG1lbW9yeV9mYWlsdXJlLCBkaXJ0eV9wYWdlY2FjaGUpXG4gXHRpZiAoZmQgXHUwMDNjIDApXG4gXHRcdFNLSVAocmV0dXJuLCBcJiMzNDtmYWlsZWQgdG8gb3BlbiB0ZXN0IGZpbGUuXFxuXCYjMzQ7KTtcbiBcdGZzX3R5cGUgPSBnZXRfZnNfdHlwZShmZCk7XG4tXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcbiYjNDM7XHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQyB8fFxuJiM0MztcdCAgICAoZnNfdHlwZSA9PSBORlNfU1VQRVJfTUFHSUMgXHUwMDI2XHUwMDI2IHZhcmlhbnQtXHUwMDNldHlwZSA9PSBNQURWX0hBUkQpKSB7XG4mIzQzO1x0XHRjbG9zZShmZCk7XG4gXHRcdFNLSVAocmV0dXJuLCBcJiMzNDt1bnN1cHBvcnRlZCBmaWxlc3lzdGVtIDoleFxcblwmIzM0OywgZnNfdHlwZSk7XG4mIzQzO1x0fVxuIFxuIFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cdTAwM2VwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4gXHRcdCAgICBNQVBfU0hBUkVELCBmZCwgMCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uY1xuaW5kZXggMjlmNzQ5MjQ1M2Q0MzkuLjRkNTVhNDI0MDU4YTljIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXG5AQCAtNyw3ICYjNDM7Nyw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7a3NlbGZ0ZXN0X2hhcm5lc3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2h1Z2VwYWdlX3NldHRpbmdzLmhcJiMzNDtcbiBcbi0jaW5jbHVkZSBcdTAwM2NzdHJpbmdzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NudW1hLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NudW1haWYuaFx1MDAzZVxuQEAgLTIwLDcgJiM0MzsyMCw2IEBAXG4gXG4gI2RlZmluZSBUV09NRUdcdFx0KDJcdTAwM2NcdTAwM2MyMClcbiAjZGVmaW5lIFJVTlRJTUVcdFx0KDIwKVxuLSNkZWZpbmUgTUFYX1JFVFJJRVNcdDEwMFxuICNkZWZpbmUgQUxJR04oeCwgYSlcdCgoKHgpICYjNDM7IChhIC0gMSkpIFx1MDAyNiAofigoYSkgLSAxKSkpXG4gXG4gSFVHRVRMQl9TRVRVUF9ERUZBVUxUX1BBR0VTKDEpXG5AQCAtMTEwLDcgJiM0MzsxMDksNyBAQCBpbnQgbWlncmF0ZSh1aW50NjRfdCAqcHRyLCBpbnQgbjEsIGludCBuMilcbiBcdGludCByZXQsIHRtcDtcbiBcdGludCBzdGF0dXMgPSAwO1xuIFx0c3RydWN0IHRpbWVzcGVjIHRzMSwgdHMyO1xuLVx0aW50IGZhaWx1cmVzID0gMDtcbiYjNDM7XHRpbnQgc3VjY2VzcyA9IDA7XG4gXG4gXHRpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnRzMSkpXG4gXHRcdHJldHVybiAtMTtcbkBAIC0xMTksMjkgJiM0MzsxMTgsMzMgQEAgaW50IG1pZ3JhdGUodWludDY0X3QgKnB0ciwgaW50IG4xLCBpbnQgbjIpXG4gXHRcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMyKSlcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcdTAwM2U9IFJVTlRJTUUpXG4tXHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHRpZiAodHMyLnR2X3NlYyAtIHRzMS50dl9zZWMgXHUwMDNlPSBSVU5USU1FKSB7XG4mIzQzO1x0XHRcdC8qIFJlYWNoaW5nIGJvdGggdGFyZ2V0cyB2ZXJpZmllcyBhIGNyb3NzLW5vZGUgbW92ZS4gKi9cbiYjNDM7XHRcdFx0aWYgKHN1Y2Nlc3MgXHUwMDNlPSAyKVxuJiM0MztcdFx0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC0yO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRyZXQgPSBtb3ZlX3BhZ2VzKDAsIDEsICh2b2lkICoqKSBcdTAwMjZwdHIsIFx1MDAyNm4yLCBcdTAwMjZzdGF0dXMsXG4gXHRcdFx0XHRNUE9MX01GX01PVkVfQUxMKTtcbi1cdFx0aWYgKHJldCkge1xuLVx0XHRcdGlmIChyZXQgXHUwMDNlIDApIHtcbi1cdFx0XHRcdC8qIE1pZ3JhdGlvbiBpcyBiZXN0IGVmZm9ydDsgdHJ5IGFnYWluICovXG4tXHRcdFx0XHRpZiAoJiM0MzsmIzQzO2ZhaWx1cmVzIFx1MDAzYyBNQVhfUkVUUklFUylcbi1cdFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0XHRwcmludGYoXCYjMzQ7RGlkbiYjMzk7dCBtaWdyYXRlICVkIHBhZ2VzXFxuXCYjMzQ7LCByZXQpO1xuLVx0XHRcdH1cbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRwZXJyb3IoXCYjMzQ7Q291bGRuJiMzOTt0IG1pZ3JhdGUgcGFnZXNcJiMzNDspO1xuLVx0XHRcdHJldHVybiAtMjtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0cGVycm9yKFwmIzM0O0NvdWxkbiYjMzk7dCBtaWdyYXRlIHBhZ2VzXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuLVx0XHRmYWlsdXJlcyA9IDA7XG4mIzQzO1x0XHQvKiBNaWdyYXRpb24gaXMgYmVzdCBlZmZvcnQuIFRyeSBhZ2FpbiAqL1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2UgMCB8fCBzdGF0dXMgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKHN0YXR1cyAhPSBuMikge1xuJiM0MztcdFx0XHRwcmludGYoXCYjMzQ7UGFnZSBpcyBvbiBub2RlICVkIGluc3RlYWQgb2YgdGFyZ2V0IG5vZGUgJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICBzdGF0dXMsIG4yKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHN0YXR1cztcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHN1Y2Nlc3MmIzQzOyYjNDM7O1xuIFx0XHR0bXAgPSBuMjtcbiBcdFx0bjIgPSBuMTtcbiBcdFx0bjEgPSB0bXA7XG4gXHR9XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gdm9pZCAqYWNjZXNzX21lbSh2b2lkICpwdHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTU6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRkYTMwNWMxMWQxNjVjNDgzMWZlNzU1YTA3YjE5NjEzNmY4OGUzYzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxNTowOTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmMKaW5kZXggMGM2MjdlYTg5ZmY3YjIuLmMxYjg5MjBlMjkzNDI0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYwpAQCAtMTcxOCw4ICYjNDM7MTcxOCwxMyBAQCBzdGF0aWMgdm9pZCBydW5fd2l0aF90bXBmaWxlKG5vbl9hbm9uX3Rlc3RfZm4gZm4sIGNvbnN0IGNoYXIgKmRlc2MpCiAKIAkvKiBGaWxlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHBhZ2UgZmlsbGVkIHdpdGggemVyb2VzLiAqLwogCWlmIChmYWxsb2NhdGUoZmQsIDAsIDAsIHBhZ2VzaXplKSkgewotCQlrc2Z0X3BlcnJvcigmIzM0O2ZhbGxvY2F0ZSgpIGZhaWxlZCYjMzQ7KTsKLQkJbG9nX3Rlc3RfcmVzdWx0KEtTRlRfRkFJTCk7CiYjNDM7CQlpZiAoZXJybm8gPT0gRU9QTk9UU1VQUCkgewomIzQzOwkJCWtzZnRfcHJpbnRfbXNnKCYjMzQ7ZmFsbG9jYXRlKCkgbm90IHN1cHBvcnRlZCBieSBmaWxlc3lzdGVtXG4mIzM0Oyk7CiYjNDM7CQkJbG9nX3Rlc3RfcmVzdWx0KEtTRlRfU0tJUCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWtzZnRfcGVycm9yKCYjMzQ7ZmFsbG9jYXRlKCkgZmFpbGVkJiMzNDspOwomIzQzOwkJCWxvZ190ZXN0X3Jlc3VsdChLU0ZUX0ZBSUwpOwomIzQzOwkJfQogCQlnb3RvIGNsb3NlOwogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jCmluZGV4IGIyMWRmMzA0MGIxYzdjLi41YzhlYzNjYTc1ZDdkMiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuYwpAQCAtMTkxMiw3ICYjNDM7MTkxMiw3IEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKQogewogCWNvbnN0IHVuc2lnbmVkIGxvbmcgcGFnZV9zaXplID0gc2VsZi0mZ3Q7cGFnZV9zaXplOwogCWNoYXIgKnB0cjsKLQlpbnQgaTsKJiM0MzsJaW50IGksIHJldDsKIAogCWlmICh2YXJpYW50LSZndDtiYWNraW5nID09IEFOT05fQkFDS0VEKQogCQlTS0lQKHJldHVybiwgJiMzNDtUcnVuY2F0aW9uIHRlc3Qgc3BlY2lmaWMgdG8gZmlsZS1iYWNrZWQmIzM0Oyk7CkBAIC0xOTQ0LDggJiM0MzsxOTQ0LDEyIEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKQogCX0KIAogCS8qIE5vdyBob2xlIHB1bmNoIHRoZSBndWFyZGVkIHJlZ2lvbi4gKi8KLQlBU1NFUlRfRVEobWFkdmlzZSgmYW1wO3B0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwKLQkJCSAgTUFEVl9SRU1PVkUpLCAwKTsKJiM0MzsJcmV0ID0gbWFkdmlzZSgmYW1wO3B0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpOwomIzQzOwlpZiAocmV0ID09IC0xICZhbXA7JmFtcDsgZXJybm8gPT0gRU9QTk9UU1VQUCkgewomIzQzOwkJQVNTRVJUX0VRKG11bm1hcChwdHIsIDEwICogcGFnZV9zaXplKSwgMCk7CiYjNDM7CQlTS0lQKHJldHVybiwgJiMzNDtNQURWX1JFTU9WRSBub3Qgc3VwcG9ydGVkIGJ5IGZpbGVzeXN0ZW0mIzM0Oyk7CiYjNDM7CX0KJiM0MzsJQVNTRVJUX0VRKHJldCwgMCk7CiAKIAkvKiBFbnN1cmUgZ3VhcmQgcmVnaW9ucyByZW1haW4uICovCiAJZm9yIChpID0gMDsgaSAmbHQ7IDEwOyBpJiM0MzsmIzQzOykgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jCmluZGV4IDEwZThkZWRjYjA4N2RjLi41NGU4ODhlYjQ4YmJjYiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuYwpAQCAtMTAwLDYgJiM0MzsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2tpcChjb25zdCBjaGFyICptc2cpCiAJZXhpdF9zdGF0dXMgPSBLU0ZUX1NLSVA7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBpc19zd2FwX2VuYWJsZWQodm9pZCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmW01BWF9MSU5FX0xFTkdUSF07CiYjNDM7CUZJTEUgKmZpbGU7CiYjNDM7CWJvb2wgZW5hYmxlZCA9IGZhbHNlOwomIzQzOwomIzQzOwlmaWxlID0gZm9wZW4oJiMzNDsvcHJvYy9zd2FwcyYjMzQ7LCAmIzM0O3ImIzM0Oyk7CiYjNDM7CWlmICghZmlsZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwkvKiBDaGVjayBmb3IgZmlyc3QgYWN0aXZlIHN3YXAgZW50cnkuICovCiYjNDM7CWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSkKJiM0MzsJCWVuYWJsZWQgPSB0cnVlOwomIzQzOwomIzQzO291dDoKJiM0MzsJZmNsb3NlKGZpbGUpOwomIzQzOwlyZXR1cm4gZW5hYmxlZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBzYXZlX3NldHRpbmdzKHZvaWQpCiB7CiAJa3NmdF9wcmludF9tc2coJiMzNDtTYXZlIFRIUCBhbmQga2h1Z2VwYWdlZCBzZXR0aW5ncy4uLiYjMzQ7KTsKQEAgLTczNCwxMCAmIzQzOzc1NiwxNiBAQCBzdGF0aWMgdm9pZCBjb2xsYXBzZV9zd2FwaW5fc2luZ2xlX3B0ZShzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcAogewogCXZvaWQgKnA7CiAKJiM0MzsJa3NmdF9wcmludF9tc2coJiMzNDtTd2Fwb3V0IG9uZSBwYWdlLi4uJiMzNDspOwomIzQzOwlpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7CiYjNDM7CQlza2lwKCYjMzQ7Tm8gYWN0aXZlIHN3YXAmIzM0Oyk7CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgJiMzNDslc1xuJiMzNDssIF9fZnVuY19fKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXAgPSBvcHMtJmd0O3NldHVwX2FyZWEoMSk7CiAJb3BzLSZndDtmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7CiAKLQlrc2Z0X3ByaW50X21zZygmIzM0O1N3YXBvdXQgb25lIHBhZ2UuLi4mIzM0Oyk7CiAJaWYgKG1hZHZpc2UocCwgcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKQogCQlrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoJiMzNDttYWR2aXNlKE1BRFZfUEFHRU9VVCkmIzM0Oyk7CiAJaWYgKGNoZWNrX3N3YXAocCwgcGFnZV9zaXplKSkgewpAQCAtNzYwLDEwICYjNDM7Nzg4LDE2IEBAIHN0YXRpYyB2b2lkIGNvbGxhcHNlX21heF9wdGVzX3N3YXAoc3RydWN0IGNvbGxhcHNlX2NvbnRleHQgKmMsIHN0cnVjdCBtZW1fb3BzICpvCiAJaW50IG1heF9wdGVzX3N3YXAgPSB0aHBfcmVhZF9udW0oJiMzNDtraHVnZXBhZ2VkL21heF9wdGVzX3N3YXAmIzM0Oyk7CiAJdm9pZCAqcDsKIAomIzQzOwlrc2Z0X3ByaW50X21zZygmIzM0O1N3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi4mIzM0OywgbWF4X3B0ZXNfc3dhcCAmIzQzOyAxLCBocGFnZV9wbWRfbnIpOwomIzQzOwlpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7CiYjNDM7CQlza2lwKCYjMzQ7Tm8gYWN0aXZlIHN3YXAmIzM0Oyk7CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgJiMzNDslc1xuJiMzNDssIF9fZnVuY19fKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXAgPSBvcHMtJmd0O3NldHVwX2FyZWEoMSk7CiAJb3BzLSZndDtmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7CiAKLQlrc2Z0X3ByaW50X21zZygmIzM0O1N3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi4mIzM0OywgbWF4X3B0ZXNfc3dhcCAmIzQzOyAxLCBocGFnZV9wbWRfbnIpOwogCWlmIChtYWR2aXNlKHAsIChtYXhfcHRlc19zd2FwICYjNDM7IDEpICogcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKQogCQlrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoJiMzNDttYWR2aXNlKE1BRFZfUEFHRU9VVCkmIzM0Oyk7CiAJaWYgKGNoZWNrX3N3YXAocCwgKG1heF9wdGVzX3N3YXAgJiM0MzsgMSkgKiBwYWdlX3NpemUpKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuYwppbmRleCAwMzJlZDk1MjA1N2M2Mi4uM2M3MjA4NGY1N2U4YjQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuYwpAQCAtMjgzLDggJiM0MzsyODMsMTAgQEAgVEVTVF9GKG1lbW9yeV9mYWlsdXJlLCBjbGVhbl9wYWdlY2FjaGUpCiAJaWYgKGZkICZsdDsgMCkKIAkJU0tJUChyZXR1cm4sICYjMzQ7ZmFpbGVkIHRvIG9wZW4gdGVzdCBmaWxlLlxuJiMzNDspOwogCWZzX3R5cGUgPSBnZXRfZnNfdHlwZShmZCk7Ci0JaWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMpCiYjNDM7CWlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKSB7CiYjNDM7CQljbG9zZShmZCk7CiAJCVNLSVAocmV0dXJuLCAmIzM0O3Vuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XG4mIzM0OywgZnNfdHlwZSk7CiYjNDM7CX0KIAogCWFkZHIgPSBtbWFwKDAsIHNlbGYtJmd0O3BhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKIAkJICAgIE1BUF9TSEFSRUQsIGZkLCAwKTsKQEAgLTMyNSw4ICYjNDM7MzI3LDExIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgZGlydHlfcGFnZWNhY2hlKQogCWlmIChmZCAmbHQ7IDApCiAJCVNLSVAocmV0dXJuLCAmIzM0O2ZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cbiYjMzQ7KTsKIAlmc190eXBlID0gZ2V0X2ZzX3R5cGUoZmQpOwotCWlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKQomIzQzOwlpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQyB8fAomIzQzOwkgICAgKGZzX3R5cGUgPT0gTkZTX1NVUEVSX01BR0lDICZhbXA7JmFtcDsgdmFyaWFudC0mZ3Q7dHlwZSA9PSBNQURWX0hBUkQpKSB7CiYjNDM7CQljbG9zZShmZCk7CiAJCVNLSVAocmV0dXJuLCAmIzM0O3Vuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XG4mIzM0OywgZnNfdHlwZSk7CiYjNDM7CX0KIAogCWFkZHIgPSBtbWFwKDAsIHNlbGYtJmd0O3BhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKIAkJICAgIE1BUF9TSEFSRUQsIGZkLCAwKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmMKaW5kZXggMjlmNzQ5MjQ1M2Q0MzkuLjRkNTVhNDI0MDU4YTljIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYwpAQCAtNyw3ICYjNDM7Nyw3IEBACiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdF9oYXJuZXNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtodWdlcGFnZV9zZXR0aW5ncy5oJiMzNDsKIAotI2luY2x1ZGUgJmx0O3N0cmluZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwogI2luY2x1ZGUgJmx0O251bWEuaCZndDsKICNpbmNsdWRlICZsdDtudW1haWYuaCZndDsKQEAgLTIwLDcgJiM0MzsyMCw2IEBACiAKICNkZWZpbmUgVFdPTUVHCQkoMiZsdDsmbHQ7MjApCiAjZGVmaW5lIFJVTlRJTUUJCSgyMCkKLSNkZWZpbmUgTUFYX1JFVFJJRVMJMTAwCiAjZGVmaW5lIEFMSUdOKHgsIGEpCSgoKHgpICYjNDM7IChhIC0gMSkpICZhbXA7ICh+KChhKSAtIDEpKSkKIAogSFVHRVRMQl9TRVRVUF9ERUZBVUxUX1BBR0VTKDEpCkBAIC0xMTAsNyAmIzQzOzEwOSw3IEBAIGludCBtaWdyYXRlKHVpbnQ2NF90ICpwdHIsIGludCBuMSwgaW50IG4yKQogCWludCByZXQsIHRtcDsKIAlpbnQgc3RhdHVzID0gMDsKIAlzdHJ1Y3QgdGltZXNwZWMgdHMxLCB0czI7Ci0JaW50IGZhaWx1cmVzID0gMDsKJiM0MzsJaW50IHN1Y2Nlc3MgPSAwOwogCiAJaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3RzMSkpCiAJCXJldHVybiAtMTsKQEAgLTExOSwyOSAmIzQzOzExOCwzMyBAQCBpbnQgbWlncmF0ZSh1aW50NjRfdCAqcHRyLCBpbnQgbjEsIGludCBuMikKIAkJaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3RzMikpCiAJCQlyZXR1cm4gLTE7CiAKLQkJaWYgKHRzMi50dl9zZWMgLSB0czEudHZfc2VjICZndDs9IFJVTlRJTUUpCi0JCQlyZXR1cm4gMDsKJiM0MzsJCWlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyAmZ3Q7PSBSVU5USU1FKSB7CiYjNDM7CQkJLyogUmVhY2hpbmcgYm90aCB0YXJnZXRzIHZlcmlmaWVzIGEgY3Jvc3Mtbm9kZSBtb3ZlLiAqLwomIzQzOwkJCWlmIChzdWNjZXNzICZndDs9IDIpCiYjNDM7CQkJCXJldHVybiAwOwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJcmV0dXJuIC0yOwomIzQzOwkJfQogCiAJCXJldCA9IG1vdmVfcGFnZXMoMCwgMSwgKHZvaWQgKiopICZhbXA7cHRyLCAmYW1wO24yLCAmYW1wO3N0YXR1cywKIAkJCQlNUE9MX01GX01PVkVfQUxMKTsKLQkJaWYgKHJldCkgewotCQkJaWYgKHJldCAmZ3Q7IDApIHsKLQkJCQkvKiBNaWdyYXRpb24gaXMgYmVzdCBlZmZvcnQ7IHRyeSBhZ2FpbiAqLwotCQkJCWlmICgmIzQzOyYjNDM7ZmFpbHVyZXMgJmx0OyBNQVhfUkVUUklFUykKLQkJCQkJY29udGludWU7Ci0JCQkJcHJpbnRmKCYjMzQ7RGlkbiYjMzk7dCBtaWdyYXRlICVkIHBhZ2VzXG4mIzM0OywgcmV0KTsKLQkJCX0KLQkJCWVsc2UKLQkJCQlwZXJyb3IoJiMzNDtDb3VsZG4mIzM5O3QgbWlncmF0ZSBwYWdlcyYjMzQ7KTsKLQkJCXJldHVybiAtMjsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQkJcGVycm9yKCYjMzQ7Q291bGRuJiMzOTt0IG1pZ3JhdGUgcGFnZXMmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIHJldDsKIAkJfQotCQlmYWlsdXJlcyA9IDA7CiYjNDM7CQkvKiBNaWdyYXRpb24gaXMgYmVzdCBlZmZvcnQuIFRyeSBhZ2FpbiAqLwomIzQzOwkJaWYgKHJldCAmZ3Q7IDAgfHwgc3RhdHVzICZsdDsgMCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCWlmIChzdGF0dXMgIT0gbjIpIHsKJiM0MzsJCQlwcmludGYoJiMzNDtQYWdlIGlzIG9uIG5vZGUgJWQgaW5zdGVhZCBvZiB0YXJnZXQgbm9kZSAlZFxuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0YXR1cywgbjIpOwomIzQzOwkJCXJldHVybiBzdGF0dXM7CiYjNDM7CQl9CiYjNDM7CQlzdWNjZXNzJiM0MzsmIzQzOzsKIAkJdG1wID0gbjI7CiAJCW4yID0gbjE7CiAJCW4xID0gdG1wOwogCX0KLQotCXJldHVybiAwOwogfQogCiB2b2lkICphY2Nlc3NfbWVtKHZvaWQgKnB0cikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0NQoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDU5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBSZXZpZXc6IFdvcnRoRnV6emluZyBEZXRlcm1pbmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCB0YXJnZXRzIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhlc2UgYXMgc2VsZi10ZXN0cyDigJMgdXNlcnNwYWNlIHRlc3QgcHJvZ3JhbXMgZGVzaWduZWQgdG8gZXhlcmNpc2Ugc3BlY2lmaWMga2VybmVsIHN1YnN5c3RlbXMsIGluIHRoaXMgY2FzZSwgbWVtb3J5IG1hbmFnZW1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IG1vZGlmeWluZyBzZWxmdGVzdHMgKnBlciBzZSogZG9lc24mIzM5O3QgZGlyZWN0bHkgaW1wYWN0IHRoZSBrZXJuZWwmIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyB3aGF0IHRoZSBwcm9tcHQgaXMgY29uY2VybmVkIGFib3V0LgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FudHMgbWUgdG8gZmxhZyBwYXRjaGVzIHRoYXQgaW50cm9kdWNlICpmdW5jdGlvbmFsIGNoYW5nZXMqIHRvIHRoZSBrZXJuZWwgdGhhdCB3YXJyYW50IGZ1enppbmcuIEl0IGxpc3RzIGEgc2VyaWVzIG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYFdvcnRoRnV6emluZz1mYWxzZWAgc2hvdWxkIGJlIHJldHVybmVkLiBDcnVjaWFsbHksIHRoZSBwcm9tcHQgc3RhdGVzOiAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsKCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGlzIGFueSBrZXJuZWwgY29kZSB0aGF0IGlzIG1vZGlmaWVkLiBMb29raW5nIG1vcmUgY2xvc2VseSwgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB0byB0aGUgc2VsZnRlc3QgZmlsZXM6IGBjb3cuY2AsIGBndWFyZC1yZWdpb25zLmNgLCBga2h1Z2VwYWdlZC5jYCwgYG1lbW9yeS1mYWlsdXJlLmNgLCBhbmQgYG1pZ3JhdGlvbi5jYC4gSSB3aWxsIGRvdWJsZSBjaGVjayBteSBhbmFseXNpcyB3aXRoIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjb2RlLgoKR2l2ZW4gdGhhdCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgKnNvbGVseSogd2l0aGluIHRoZXNlIHVzZXJzcGFjZSB0ZXN0IHByb2dyYW1zLCBpdCYjMzk7cyBzYWZlIHRvIGNvbmNsdWRlIHRoYXQgdGhlc2UgY2hhbmdlcyBkb24mIzM5O3QgY29uc3RpdHV0ZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBjb3JlIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUuIFRoaXMgaXMgcHVyZSB1c2Vyc3BhY2UgdGVzdCBjb2RlLgoKVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHBhdGNoIG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgb25seSwgYW5kIHRoZXNlIGRvIG5vdCBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE1OjA5OjU3LjY3ODQ0MTY5OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDIxNjM3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTU6MDk6NTcuNjc4NDU0OTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODEzMzIxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ZGEzMDVjMTFkMTY1YzQ4MzFmZTc1NWEwN2IxOTYxMzZmODhlM2M3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDE1OjA5OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcXG5pbmRleCAwYzYyN2VhODlmZjdiMi4uYzFiODkyMGUyOTM0MjQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuY1xcbkBAIC0xNzE4LDggKzE3MTgsMTMgQEAgc3RhdGljIHZvaWQgcnVuX3dpdGhfdG1wZmlsZShub25fYW5vbl90ZXN0X2ZuIGZuLCBjb25zdCBjaGFyICpkZXNjKVxcbiBcXG4gXFx0LyogRmlsZSBjb25zaXN0cyBvZiBhIHNpbmdsZSBwYWdlIGZpbGxlZCB3aXRoIHplcm9lcy4gKi9cXG4gXFx0aWYgKGZhbGxvY2F0ZShmZCwgMCwgMCwgcGFnZXNpemUpKSB7XFxuLVxcdFxcdGtzZnRfcGVycm9yKFxcXCJmYWxsb2NhdGUoKSBmYWlsZWRcXFwiKTtcXG4tXFx0XFx0bG9nX3Rlc3RfcmVzdWx0KEtTRlRfRkFJTCk7XFxuK1xcdFxcdGlmIChlcnJubyA9PSBFT1BOT1RTVVBQKSB7XFxuK1xcdFxcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJmYWxsb2NhdGUoKSBub3Qgc3VwcG9ydGVkIGJ5IGZpbGVzeXN0ZW1cXFxcblxcXCIpO1xcbitcXHRcXHRcXHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9TS0lQKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0a3NmdF9wZXJyb3IoXFxcImZhbGxvY2F0ZSgpIGZhaWxlZFxcXCIpO1xcbitcXHRcXHRcXHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9GQUlMKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRnb3RvIGNsb3NlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmNcXG5pbmRleCBiMjFkZjMwNDBiMWM3Yy4uNWM4ZWMzY2E3NWQ3ZDIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXFxuQEAgLTE5MTIsNyArMTkxMiw3IEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKVxcbiB7XFxuIFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcGFnZV9zaXplID0gc2VsZi1cXHUwMDNlcGFnZV9zaXplO1xcbiBcXHRjaGFyICpwdHI7XFxuLVxcdGludCBpO1xcbitcXHRpbnQgaSwgcmV0O1xcbiBcXG4gXFx0aWYgKHZhcmlhbnQtXFx1MDAzZWJhY2tpbmcgPT0gQU5PTl9CQUNLRUQpXFxuIFxcdFxcdFNLSVAocmV0dXJuLCBcXFwiVHJ1bmNhdGlvbiB0ZXN0IHNwZWNpZmljIHRvIGZpbGUtYmFja2VkXFxcIik7XFxuQEAgLTE5NDQsOCArMTk0NCwxMiBAQCBURVNUX0YoZ3VhcmRfcmVnaW9ucywgaG9sZV9wdW5jaClcXG4gXFx0fVxcbiBcXG4gXFx0LyogTm93IGhvbGUgcHVuY2ggdGhlIGd1YXJkZWQgcmVnaW9uLiAqL1xcbi1cXHRBU1NFUlRfRVEobWFkdmlzZShcXHUwMDI2cHRyWzMgKiBwYWdlX3NpemVdLCA0ICogcGFnZV9zaXplLFxcbi1cXHRcXHRcXHQgIE1BRFZfUkVNT1ZFKSwgMCk7XFxuK1xcdHJldCA9IG1hZHZpc2UoXFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpO1xcbitcXHRpZiAocmV0ID09IC0xIFxcdTAwMjZcXHUwMDI2IGVycm5vID09IEVPUE5PVFNVUFApIHtcXG4rXFx0XFx0QVNTRVJUX0VRKG11bm1hcChwdHIsIDEwICogcGFnZV9zaXplKSwgMCk7XFxuK1xcdFxcdFNLSVAocmV0dXJuLCBcXFwiTUFEVl9SRU1PVkUgbm90IHN1cHBvcnRlZCBieSBmaWxlc3lzdGVtXFxcIik7XFxuK1xcdH1cXG4rXFx0QVNTRVJUX0VRKHJldCwgMCk7XFxuIFxcbiBcXHQvKiBFbnN1cmUgZ3VhcmQgcmVnaW9ucyByZW1haW4uICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuY1xcbmluZGV4IDEwZThkZWRjYjA4N2RjLi41NGU4ODhlYjQ4YmJjYiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcXG5AQCAtMTAwLDYgKzEwMCwyOCBAQCBzdGF0aWMgdm9pZCBza2lwKGNvbnN0IGNoYXIgKm1zZylcXG4gXFx0ZXhpdF9zdGF0dXMgPSBLU0ZUX1NLSVA7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGlzX3N3YXBfZW5hYmxlZCh2b2lkKVxcbit7XFxuK1xcdGNoYXIgYnVmW01BWF9MSU5FX0xFTkdUSF07XFxuK1xcdEZJTEUgKmZpbGU7XFxuK1xcdGJvb2wgZW5hYmxlZCA9IGZhbHNlO1xcbitcXG4rXFx0ZmlsZSA9IGZvcGVuKFxcXCIvcHJvYy9zd2Fwc1xcXCIsIFxcXCJyXFxcIik7XFxuK1xcdGlmICghZmlsZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHQvKiBDaGVjayBmb3IgZmlyc3QgYWN0aXZlIHN3YXAgZW50cnkuICovXFxuK1xcdGlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcXG4rXFx0XFx0ZW5hYmxlZCA9IHRydWU7XFxuK1xcbitvdXQ6XFxuK1xcdGZjbG9zZShmaWxlKTtcXG4rXFx0cmV0dXJuIGVuYWJsZWQ7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHNhdmVfc2V0dGluZ3Modm9pZClcXG4ge1xcbiBcXHRrc2Z0X3ByaW50X21zZyhcXFwiU2F2ZSBUSFAgYW5kIGtodWdlcGFnZWQgc2V0dGluZ3MuLi5cXFwiKTtcXG5AQCAtNzM0LDEwICs3NTYsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2Vfc3dhcGluX3NpbmdsZV9wdGUoc3RydWN0IGNvbGxhcHNlX2NvbnRleHQgKmMsIHN0cnVjdCBtZW1fb3BcXG4ge1xcbiBcXHR2b2lkICpwO1xcbiBcXG4rXFx0a3NmdF9wcmludF9tc2coXFxcIlN3YXBvdXQgb25lIHBhZ2UuLi5cXFwiKTtcXG4rXFx0aWYgKCFpc19zd2FwX2VuYWJsZWQoKSkge1xcbitcXHRcXHRza2lwKFxcXCJObyBhY3RpdmUgc3dhcFxcXCIpO1xcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXFxcIiVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cCA9IG9wcy1cXHUwMDNlc2V0dXBfYXJlYSgxKTtcXG4gXFx0b3BzLVxcdTAwM2VmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7XFxuIFxcbi1cXHRrc2Z0X3ByaW50X21zZyhcXFwiU3dhcG91dCBvbmUgcGFnZS4uLlxcXCIpO1xcbiBcXHRpZiAobWFkdmlzZShwLCBwYWdlX3NpemUsIE1BRFZfUEFHRU9VVCkpXFxuIFxcdFxcdGtzZnRfZXhpdF9mYWlsX3BlcnJvcihcXFwibWFkdmlzZShNQURWX1BBR0VPVVQpXFxcIik7XFxuIFxcdGlmIChjaGVja19zd2FwKHAsIHBhZ2Vfc2l6ZSkpIHtcXG5AQCAtNzYwLDEwICs3ODgsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfbWF4X3B0ZXNfc3dhcChzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcHMgKm9cXG4gXFx0aW50IG1heF9wdGVzX3N3YXAgPSB0aHBfcmVhZF9udW0oXFxcImtodWdlcGFnZWQvbWF4X3B0ZXNfc3dhcFxcXCIpO1xcbiBcXHR2b2lkICpwO1xcbiBcXG4rXFx0a3NmdF9wcmludF9tc2coXFxcIlN3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi5cXFwiLCBtYXhfcHRlc19zd2FwICsgMSwgaHBhZ2VfcG1kX25yKTtcXG4rXFx0aWYgKCFpc19zd2FwX2VuYWJsZWQoKSkge1xcbitcXHRcXHRza2lwKFxcXCJObyBhY3RpdmUgc3dhcFxcXCIpO1xcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXFxcIiVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cCA9IG9wcy1cXHUwMDNlc2V0dXBfYXJlYSgxKTtcXG4gXFx0b3BzLVxcdTAwM2VmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7XFxuIFxcbi1cXHRrc2Z0X3ByaW50X21zZyhcXFwiU3dhcG91dCAlZCBvZiAlZCBwYWdlcy4uLlxcXCIsIG1heF9wdGVzX3N3YXAgKyAxLCBocGFnZV9wbWRfbnIpO1xcbiBcXHRpZiAobWFkdmlzZShwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxcbiBcXHRcXHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXFxcIm1hZHZpc2UoTUFEVl9QQUdFT1VUKVxcXCIpO1xcbiBcXHRpZiAoY2hlY2tfc3dhcChwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplKSkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuY1xcbmluZGV4IDAzMmVkOTUyMDU3YzYyLi4zYzcyMDg0ZjU3ZThiNCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuY1xcbkBAIC0yODMsOCArMjgzLDEwIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgY2xlYW5fcGFnZWNhY2hlKVxcbiBcXHRpZiAoZmQgXFx1MDAzYyAwKVxcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcImZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cXFxcblxcXCIpO1xcbiBcXHRmc190eXBlID0gZ2V0X2ZzX3R5cGUoZmQpO1xcbi1cXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcXG4rXFx0aWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMpIHtcXG4rXFx0XFx0Y2xvc2UoZmQpO1xcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcInVuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XFxcXG5cXFwiLCBmc190eXBlKTtcXG4rXFx0fVxcbiBcXG4gXFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cXHUwMDNlcGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLFxcbiBcXHRcXHQgICAgTUFQX1NIQVJFRCwgZmQsIDApO1xcbkBAIC0zMjUsOCArMzI3LDExIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgZGlydHlfcGFnZWNhY2hlKVxcbiBcXHRpZiAoZmQgXFx1MDAzYyAwKVxcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcImZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cXFxcblxcXCIpO1xcbiBcXHRmc190eXBlID0gZ2V0X2ZzX3R5cGUoZmQpO1xcbi1cXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcXG4rXFx0aWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMgfHxcXG4rXFx0ICAgIChmc190eXBlID09IE5GU19TVVBFUl9NQUdJQyBcXHUwMDI2XFx1MDAyNiB2YXJpYW50LVxcdTAwM2V0eXBlID09IE1BRFZfSEFSRCkpIHtcXG4rXFx0XFx0Y2xvc2UoZmQpO1xcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcInVuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XFxcXG5cXFwiLCBmc190eXBlKTtcXG4rXFx0fVxcbiBcXG4gXFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cXHUwMDNlcGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLFxcbiBcXHRcXHQgICAgTUFQX1NIQVJFRCwgZmQsIDApO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXFxuaW5kZXggMjlmNzQ5MjQ1M2Q0MzkuLjRkNTVhNDI0MDU4YTljIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmNcXG5AQCAtNyw3ICs3LDcgQEBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdF9oYXJuZXNzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJodWdlcGFnZV9zZXR0aW5ncy5oXFxcIlxcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY3N0cmluZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbnVtYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbnVtYWlmLmhcXHUwMDNlXFxuQEAgLTIwLDcgKzIwLDYgQEBcXG4gXFxuICNkZWZpbmUgVFdPTUVHXFx0XFx0KDJcXHUwMDNjXFx1MDAzYzIwKVxcbiAjZGVmaW5lIFJVTlRJTUVcXHRcXHQoMjApXFxuLSNkZWZpbmUgTUFYX1JFVFJJRVNcXHQxMDBcXG4gI2RlZmluZSBBTElHTih4LCBhKVxcdCgoKHgpICsgKGEgLSAxKSkgXFx1MDAyNiAofigoYSkgLSAxKSkpXFxuIFxcbiBIVUdFVExCX1NFVFVQX0RFRkFVTFRfUEFHRVMoMSlcXG5AQCAtMTEwLDcgKzEwOSw3IEBAIGludCBtaWdyYXRlKHVpbnQ2NF90ICpwdHIsIGludCBuMSwgaW50IG4yKVxcbiBcXHRpbnQgcmV0LCB0bXA7XFxuIFxcdGludCBzdGF0dXMgPSAwO1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWMgdHMxLCB0czI7XFxuLVxcdGludCBmYWlsdXJlcyA9IDA7XFxuK1xcdGludCBzdWNjZXNzID0gMDtcXG4gXFxuIFxcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnRzMSkpXFxuIFxcdFxcdHJldHVybiAtMTtcXG5AQCAtMTE5LDI5ICsxMTgsMzMgQEAgaW50IG1pZ3JhdGUodWludDY0X3QgKnB0ciwgaW50IG4xLCBpbnQgbjIpXFxuIFxcdFxcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnRzMikpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFxuLVxcdFxcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcXHUwMDNlPSBSVU5USU1FKVxcbi1cXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0aWYgKHRzMi50dl9zZWMgLSB0czEudHZfc2VjIFxcdTAwM2U9IFJVTlRJTUUpIHtcXG4rXFx0XFx0XFx0LyogUmVhY2hpbmcgYm90aCB0YXJnZXRzIHZlcmlmaWVzIGEgY3Jvc3Mtbm9kZSBtb3ZlLiAqL1xcbitcXHRcXHRcXHRpZiAoc3VjY2VzcyBcXHUwMDNlPSAyKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLTI7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJldCA9IG1vdmVfcGFnZXMoMCwgMSwgKHZvaWQgKiopIFxcdTAwMjZwdHIsIFxcdTAwMjZuMiwgXFx1MDAyNnN0YXR1cyxcXG4gXFx0XFx0XFx0XFx0TVBPTF9NRl9NT1ZFX0FMTCk7XFxuLVxcdFxcdGlmIChyZXQpIHtcXG4tXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNlIDApIHtcXG4tXFx0XFx0XFx0XFx0LyogTWlncmF0aW9uIGlzIGJlc3QgZWZmb3J0OyB0cnkgYWdhaW4gKi9cXG4tXFx0XFx0XFx0XFx0aWYgKCsrZmFpbHVyZXMgXFx1MDAzYyBNQVhfUkVUUklFUylcXG4tXFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdFxcdHByaW50ZihcXFwiRGlkbid0IG1pZ3JhdGUgJWQgcGFnZXNcXFxcblxcXCIsIHJldCk7XFxuLVxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRwZXJyb3IoXFxcIkNvdWxkbid0IG1pZ3JhdGUgcGFnZXNcXFwiKTtcXG4tXFx0XFx0XFx0cmV0dXJuIC0yO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRwZXJyb3IoXFxcIkNvdWxkbid0IG1pZ3JhdGUgcGFnZXNcXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbi1cXHRcXHRmYWlsdXJlcyA9IDA7XFxuK1xcdFxcdC8qIE1pZ3JhdGlvbiBpcyBiZXN0IGVmZm9ydC4gVHJ5IGFnYWluICovXFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzZSAwIHx8IHN0YXR1cyBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAoc3RhdHVzICE9IG4yKSB7XFxuK1xcdFxcdFxcdHByaW50ZihcXFwiUGFnZSBpcyBvbiBub2RlICVkIGluc3RlYWQgb2YgdGFyZ2V0IG5vZGUgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdGF0dXMsIG4yKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4rXFx0XFx0fVxcbitcXHRcXHRzdWNjZXNzKys7XFxuIFxcdFxcdHRtcCA9IG4yO1xcbiBcXHRcXHRuMiA9IG4xO1xcbiBcXHRcXHRuMSA9IHRtcDtcXG4gXFx0fVxcbi1cXG4tXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHZvaWQgKmFjY2Vzc19tZW0odm9pZCAqcHRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNTowOTo1OC40NjA1ODY2MzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjYwMDEzMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRkYTMwNWMxMWQxNjVjNDgzMWZlNzU1YTA3YjE5NjEzNmY4OGUzYzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxNTowOTo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcbmluZGV4IDBjNjI3ZWE4OWZmN2IyLi5jMWI4OTIwZTI5MzQyNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuY1xuQEAgLTE3MTgsOCArMTcxOCwxMyBAQCBzdGF0aWMgdm9pZCBydW5fd2l0aF90bXBmaWxlKG5vbl9hbm9uX3Rlc3RfZm4gZm4sIGNvbnN0IGNoYXIgKmRlc2MpXG4gXG4gXHQvKiBGaWxlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHBhZ2UgZmlsbGVkIHdpdGggemVyb2VzLiAqL1xuIFx0aWYgKGZhbGxvY2F0ZShmZCwgMCwgMCwgcGFnZXNpemUpKSB7XG4tXHRcdGtzZnRfcGVycm9yKFwiZmFsbG9jYXRlKCkgZmFpbGVkXCIpO1xuLVx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9GQUlMKTtcbitcdFx0aWYgKGVycm5vID09IEVPUE5PVFNVUFApIHtcbitcdFx0XHRrc2Z0X3ByaW50X21zZyhcImZhbGxvY2F0ZSgpIG5vdCBzdXBwb3J0ZWQgYnkgZmlsZXN5c3RlbVxcblwiKTtcbitcdFx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9TS0lQKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRrc2Z0X3BlcnJvcihcImZhbGxvY2F0ZSgpIGZhaWxlZFwiKTtcbitcdFx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9GQUlMKTtcbitcdFx0fVxuIFx0XHRnb3RvIGNsb3NlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuY1xuaW5kZXggYjIxZGYzMDQwYjFjN2MuLjVjOGVjM2NhNzVkN2QyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmNcbkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBURVNUX0YoZ3VhcmRfcmVnaW9ucywgaG9sZV9wdW5jaClcbiB7XG4gXHRjb25zdCB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSA9IHNlbGYtXHUwMDNlcGFnZV9zaXplO1xuIFx0Y2hhciAqcHRyO1xuLVx0aW50IGk7XG4rXHRpbnQgaSwgcmV0O1xuIFxuIFx0aWYgKHZhcmlhbnQtXHUwMDNlYmFja2luZyA9PSBBTk9OX0JBQ0tFRClcbiBcdFx0U0tJUChyZXR1cm4sIFwiVHJ1bmNhdGlvbiB0ZXN0IHNwZWNpZmljIHRvIGZpbGUtYmFja2VkXCIpO1xuQEAgLTE5NDQsOCArMTk0NCwxMiBAQCBURVNUX0YoZ3VhcmRfcmVnaW9ucywgaG9sZV9wdW5jaClcbiBcdH1cbiBcbiBcdC8qIE5vdyBob2xlIHB1bmNoIHRoZSBndWFyZGVkIHJlZ2lvbi4gKi9cbi1cdEFTU0VSVF9FUShtYWR2aXNlKFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSxcbi1cdFx0XHQgIE1BRFZfUkVNT1ZFKSwgMCk7XG4rXHRyZXQgPSBtYWR2aXNlKFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpO1xuK1x0aWYgKHJldCA9PSAtMSBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRU9QTk9UU1VQUCkge1xuK1x0XHRBU1NFUlRfRVEobXVubWFwKHB0ciwgMTAgKiBwYWdlX3NpemUpLCAwKTtcbitcdFx0U0tJUChyZXR1cm4sIFwiTUFEVl9SRU1PVkUgbm90IHN1cHBvcnRlZCBieSBmaWxlc3lzdGVtXCIpO1xuK1x0fVxuK1x0QVNTRVJUX0VRKHJldCwgMCk7XG4gXG4gXHQvKiBFbnN1cmUgZ3VhcmQgcmVnaW9ucyByZW1haW4uICovXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAxMDsgaSsrKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jXG5pbmRleCAxMGU4ZGVkY2IwODdkYy4uNTRlODg4ZWI0OGJiY2IgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuY1xuQEAgLTEwMCw2ICsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2tpcChjb25zdCBjaGFyICptc2cpXG4gXHRleGl0X3N0YXR1cyA9IEtTRlRfU0tJUDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgaXNfc3dhcF9lbmFibGVkKHZvaWQpXG4re1xuK1x0Y2hhciBidWZbTUFYX0xJTkVfTEVOR1RIXTtcbitcdEZJTEUgKmZpbGU7XG4rXHRib29sIGVuYWJsZWQgPSBmYWxzZTtcbitcbitcdGZpbGUgPSBmb3BlbihcIi9wcm9jL3N3YXBzXCIsIFwiclwiKTtcbitcdGlmICghZmlsZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHQvKiBDaGVjayBmb3IgZmlyc3QgYWN0aXZlIHN3YXAgZW50cnkuICovXG4rXHRpZiAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZmlsZSkpXG4rXHRcdGVuYWJsZWQgPSB0cnVlO1xuK1xuK291dDpcbitcdGZjbG9zZShmaWxlKTtcbitcdHJldHVybiBlbmFibGVkO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzYXZlX3NldHRpbmdzKHZvaWQpXG4ge1xuIFx0a3NmdF9wcmludF9tc2coXCJTYXZlIFRIUCBhbmQga2h1Z2VwYWdlZCBzZXR0aW5ncy4uLlwiKTtcbkBAIC03MzQsMTAgKzc1NiwxNiBAQCBzdGF0aWMgdm9pZCBjb2xsYXBzZV9zd2FwaW5fc2luZ2xlX3B0ZShzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcFxuIHtcbiBcdHZvaWQgKnA7XG4gXG4rXHRrc2Z0X3ByaW50X21zZyhcIlN3YXBvdXQgb25lIHBhZ2UuLi5cIik7XG4rXHRpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7XG4rXHRcdHNraXAoXCJObyBhY3RpdmUgc3dhcFwiKTtcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9yZXBvcnQoZXhpdF9zdGF0dXMsIFwiJXNcXG5cIiwgX19mdW5jX18pO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4gXHRwID0gb3BzLVx1MDAzZXNldHVwX2FyZWEoMSk7XG4gXHRvcHMtXHUwMDNlZmF1bHQocCwgMCwgaHBhZ2VfcG1kX3NpemUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCJTd2Fwb3V0IG9uZSBwYWdlLi4uXCIpO1xuIFx0aWYgKG1hZHZpc2UocCwgcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXCJtYWR2aXNlKE1BRFZfUEFHRU9VVClcIik7XG4gXHRpZiAoY2hlY2tfc3dhcChwLCBwYWdlX3NpemUpKSB7XG5AQCAtNzYwLDEwICs3ODgsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfbWF4X3B0ZXNfc3dhcChzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcHMgKm9cbiBcdGludCBtYXhfcHRlc19zd2FwID0gdGhwX3JlYWRfbnVtKFwia2h1Z2VwYWdlZC9tYXhfcHRlc19zd2FwXCIpO1xuIFx0dm9pZCAqcDtcbiBcbitcdGtzZnRfcHJpbnRfbXNnKFwiU3dhcG91dCAlZCBvZiAlZCBwYWdlcy4uLlwiLCBtYXhfcHRlc19zd2FwICsgMSwgaHBhZ2VfcG1kX25yKTtcbitcdGlmICghaXNfc3dhcF9lbmFibGVkKCkpIHtcbitcdFx0c2tpcChcIk5vIGFjdGl2ZSBzd2FwXCIpO1xuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXCIlc1xcblwiLCBfX2Z1bmNfXyk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHAgPSBvcHMtXHUwMDNlc2V0dXBfYXJlYSgxKTtcbiBcdG9wcy1cdTAwM2VmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7XG4gXG4tXHRrc2Z0X3ByaW50X21zZyhcIlN3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi5cIiwgbWF4X3B0ZXNfc3dhcCArIDEsIGhwYWdlX3BtZF9ucik7XG4gXHRpZiAobWFkdmlzZShwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXCJtYWR2aXNlKE1BRFZfUEFHRU9VVClcIik7XG4gXHRpZiAoY2hlY2tfc3dhcChwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplKSkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXG5pbmRleCAwMzJlZDk1MjA1N2M2Mi4uM2M3MjA4NGY1N2U4YjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXG5AQCAtMjgzLDggKzI4MywxMCBAQCBURVNUX0YobWVtb3J5X2ZhaWx1cmUsIGNsZWFuX3BhZ2VjYWNoZSlcbiBcdGlmIChmZCBcdTAwM2MgMClcbiBcdFx0U0tJUChyZXR1cm4sIFwiZmFpbGVkIHRvIG9wZW4gdGVzdCBmaWxlLlxcblwiKTtcbiBcdGZzX3R5cGUgPSBnZXRfZnNfdHlwZShmZCk7XG4tXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcbitcdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKSB7XG4rXHRcdGNsb3NlKGZkKTtcbiBcdFx0U0tJUChyZXR1cm4sIFwidW5zdXBwb3J0ZWQgZmlsZXN5c3RlbSA6JXhcXG5cIiwgZnNfdHlwZSk7XG4rXHR9XG4gXG4gXHRhZGRyID0gbW1hcCgwLCBzZWxmLVx1MDAzZXBhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcbiBcdFx0ICAgIE1BUF9TSEFSRUQsIGZkLCAwKTtcbkBAIC0zMjUsOCArMzI3LDExIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgZGlydHlfcGFnZWNhY2hlKVxuIFx0aWYgKGZkIFx1MDAzYyAwKVxuIFx0XHRTS0lQKHJldHVybiwgXCJmYWlsZWQgdG8gb3BlbiB0ZXN0IGZpbGUuXFxuXCIpO1xuIFx0ZnNfdHlwZSA9IGdldF9mc190eXBlKGZkKTtcbi1cdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKVxuK1x0aWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMgfHxcbitcdCAgICAoZnNfdHlwZSA9PSBORlNfU1VQRVJfTUFHSUMgXHUwMDI2XHUwMDI2IHZhcmlhbnQtXHUwMDNldHlwZSA9PSBNQURWX0hBUkQpKSB7XG4rXHRcdGNsb3NlKGZkKTtcbiBcdFx0U0tJUChyZXR1cm4sIFwidW5zdXBwb3J0ZWQgZmlsZXN5c3RlbSA6JXhcXG5cIiwgZnNfdHlwZSk7XG4rXHR9XG4gXG4gXHRhZGRyID0gbW1hcCgwLCBzZWxmLVx1MDAzZXBhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcbiBcdFx0ICAgIE1BUF9TSEFSRUQsIGZkLCAwKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXG5pbmRleCAyOWY3NDkyNDUzZDQzOS4uNGQ1NWE0MjQwNThhOWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmNcbkBAIC03LDcgKzcsNyBAQFxuICNpbmNsdWRlIFwia3NlbGZ0ZXN0X2hhcm5lc3MuaFwiXG4gI2luY2x1ZGUgXCJodWdlcGFnZV9zZXR0aW5ncy5oXCJcbiBcbi0jaW5jbHVkZSBcdTAwM2NzdHJpbmdzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3B0aHJlYWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY251bWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY251bWFpZi5oXHUwMDNlXG5AQCAtMjAsNyArMjAsNiBAQFxuIFxuICNkZWZpbmUgVFdPTUVHXHRcdCgyXHUwMDNjXHUwMDNjMjApXG4gI2RlZmluZSBSVU5USU1FXHRcdCgyMClcbi0jZGVmaW5lIE1BWF9SRVRSSUVTXHQxMDBcbiAjZGVmaW5lIEFMSUdOKHgsIGEpXHQoKCh4KSArIChhIC0gMSkpIFx1MDAyNiAofigoYSkgLSAxKSkpXG4gXG4gSFVHRVRMQl9TRVRVUF9ERUZBVUxUX1BBR0VTKDEpXG5AQCAtMTEwLDcgKzEwOSw3IEBAIGludCBtaWdyYXRlKHVpbnQ2NF90ICpwdHIsIGludCBuMSwgaW50IG4yKVxuIFx0aW50IHJldCwgdG1wO1xuIFx0aW50IHN0YXR1cyA9IDA7XG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHMxLCB0czI7XG4tXHRpbnQgZmFpbHVyZXMgPSAwO1xuK1x0aW50IHN1Y2Nlc3MgPSAwO1xuIFxuIFx0aWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZ0czEpKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtMTE5LDI5ICsxMTgsMzMgQEAgaW50IG1pZ3JhdGUodWludDY0X3QgKnB0ciwgaW50IG4xLCBpbnQgbjIpXG4gXHRcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMyKSlcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcdTAwM2U9IFJVTlRJTUUpXG4tXHRcdFx0cmV0dXJuIDA7XG4rXHRcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcdTAwM2U9IFJVTlRJTUUpIHtcbitcdFx0XHQvKiBSZWFjaGluZyBib3RoIHRhcmdldHMgdmVyaWZpZXMgYSBjcm9zcy1ub2RlIG1vdmUuICovXG4rXHRcdFx0aWYgKHN1Y2Nlc3MgXHUwMDNlPSAyKVxuK1x0XHRcdFx0cmV0dXJuIDA7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0cmV0dXJuIC0yO1xuK1x0XHR9XG4gXG4gXHRcdHJldCA9IG1vdmVfcGFnZXMoMCwgMSwgKHZvaWQgKiopIFx1MDAyNnB0ciwgXHUwMDI2bjIsIFx1MDAyNnN0YXR1cyxcbiBcdFx0XHRcdE1QT0xfTUZfTU9WRV9BTEwpO1xuLVx0XHRpZiAocmV0KSB7XG4tXHRcdFx0aWYgKHJldCBcdTAwM2UgMCkge1xuLVx0XHRcdFx0LyogTWlncmF0aW9uIGlzIGJlc3QgZWZmb3J0OyB0cnkgYWdhaW4gKi9cbi1cdFx0XHRcdGlmICgrK2ZhaWx1cmVzIFx1MDAzYyBNQVhfUkVUUklFUylcbi1cdFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0XHRwcmludGYoXCJEaWRuJ3QgbWlncmF0ZSAlZCBwYWdlc1xcblwiLCByZXQpO1xuLVx0XHRcdH1cbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRwZXJyb3IoXCJDb3VsZG4ndCBtaWdyYXRlIHBhZ2VzXCIpO1xuLVx0XHRcdHJldHVybiAtMjtcbitcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdHBlcnJvcihcIkNvdWxkbid0IG1pZ3JhdGUgcGFnZXNcIik7XG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuLVx0XHRmYWlsdXJlcyA9IDA7XG4rXHRcdC8qIE1pZ3JhdGlvbiBpcyBiZXN0IGVmZm9ydC4gVHJ5IGFnYWluICovXG4rXHRcdGlmIChyZXQgXHUwMDNlIDAgfHwgc3RhdHVzIFx1MDAzYyAwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRpZiAoc3RhdHVzICE9IG4yKSB7XG4rXHRcdFx0cHJpbnRmKFwiUGFnZSBpcyBvbiBub2RlICVkIGluc3RlYWQgb2YgdGFyZ2V0IG5vZGUgJWRcXG5cIixcbitcdFx0XHQgICAgICAgc3RhdHVzLCBuMik7XG4rXHRcdFx0cmV0dXJuIHN0YXR1cztcbitcdFx0fVxuK1x0XHRzdWNjZXNzKys7XG4gXHRcdHRtcCA9IG4yO1xuIFx0XHRuMiA9IG4xO1xuIFx0XHRuMSA9IHRtcDtcbiBcdH1cbi1cbi1cdHJldHVybiAwO1xuIH1cbiBcbiB2b2lkICphY2Nlc3NfbWVtKHZvaWQgKnB0cilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE1OjA5OjU4LjQ2MDU4ODU1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NTk5ODc1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggUmV2aWV3OiBXb3J0aEZ1enppbmcgRGV0ZXJtaW5hdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIHRhcmdldHMgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9gLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGVzZSBhcyBzZWxmLXRlc3RzIOKAkyB1c2Vyc3BhY2UgdGVzdCBwcm9ncmFtcyBkZXNpZ25lZCB0byBleGVyY2lzZSBzcGVjaWZpYyBrZXJuZWwgc3Vic3lzdGVtcywgaW4gdGhpcyBjYXNlLCBtZW1vcnkgbWFuYWdlbWVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgbW9kaWZ5aW5nIHNlbGZ0ZXN0cyAqcGVyIHNlKiBkb2Vzbid0IGRpcmVjdGx5IGltcGFjdCB0aGUga2VybmVsJ3MgY29yZSBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyB3aGF0IHRoZSBwcm9tcHQgaXMgY29uY2VybmVkIGFib3V0LlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBtZSB0byBmbGFnIHBhdGNoZXMgdGhhdCBpbnRyb2R1Y2UgKmZ1bmN0aW9uYWwgY2hhbmdlcyogdG8gdGhlIGtlcm5lbCB0aGF0IHdhcnJhbnQgZnV6emluZy4gSXQgbGlzdHMgYSBzZXJpZXMgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBgV29ydGhGdXp6aW5nPWZhbHNlYCBzaG91bGQgYmUgcmV0dXJuZWQuIENydWNpYWxseSwgdGhlIHByb21wdCBzdGF0ZXM6IFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyBhbnkga2VybmVsIGNvZGUgdGhhdCBpcyBtb2RpZmllZC4gTG9va2luZyBtb3JlIGNsb3NlbHksIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHNlbGZ0ZXN0IGZpbGVzOiBgY293LmNgLCBgZ3VhcmQtcmVnaW9ucy5jYCwgYGtodWdlcGFnZWQuY2AsIGBtZW1vcnktZmFpbHVyZS5jYCwgYW5kIGBtaWdyYXRpb24uY2AuIEkgd2lsbCBkb3VibGUgY2hlY2sgbXkgYW5hbHlzaXMgd2l0aCBhIHRob3JvdWdoIHJldmlldyBvZiB0aGUgY29kZS5cblxuR2l2ZW4gdGhhdCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgKnNvbGVseSogd2l0aGluIHRoZXNlIHVzZXJzcGFjZSB0ZXN0IHByb2dyYW1zLCBpdCdzIHNhZmUgdG8gY29uY2x1ZGUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbid0IGNvbnN0aXR1dGUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwncyBjb3JlIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUuIFRoaXMgaXMgcHVyZSB1c2Vyc3BhY2UgdGVzdCBjb2RlLlxuXG5UaGVyZWZvcmUsIG15IGFzc2Vzc21lbnQgaXM6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyBvbmx5LCBhbmQgdGhlc2UgZG8gbm90IG1ha2UgYW55IGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0NSwiT3V0cHV0VG9rZW5zIjo2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE1OjEwOjA2LjEyMDU3ODY1N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowbftqc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 14:39:27 +0000 UTC FinishedAt: 2026-07-25 15:10:07 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE1OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRkYTMwNWMxMWQxNjVjNDgzMWZlNzU1YTA3YjE5NjEzNmY4OGUzYzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxNTowOTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jXG5pbmRleCAwYzYyN2VhODlmZjdiMi4uYzFiODkyMGUyOTM0MjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcbkBAIC0xNzE4LDggJiM0MzsxNzE4LDEzIEBAIHN0YXRpYyB2b2lkIHJ1bl93aXRoX3RtcGZpbGUobm9uX2Fub25fdGVzdF9mbiBmbiwgY29uc3QgY2hhciAqZGVzYylcbiBcbiBcdC8qIEZpbGUgY29uc2lzdHMgb2YgYSBzaW5nbGUgcGFnZSBmaWxsZWQgd2l0aCB6ZXJvZXMuICovXG4gXHRpZiAoZmFsbG9jYXRlKGZkLCAwLCAwLCBwYWdlc2l6ZSkpIHtcbi1cdFx0a3NmdF9wZXJyb3IoXCYjMzQ7ZmFsbG9jYXRlKCkgZmFpbGVkXCYjMzQ7KTtcbi1cdFx0bG9nX3Rlc3RfcmVzdWx0KEtTRlRfRkFJTCk7XG4mIzQzO1x0XHRpZiAoZXJybm8gPT0gRU9QTk9UU1VQUCkge1xuJiM0MztcdFx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtmYWxsb2NhdGUoKSBub3Qgc3VwcG9ydGVkIGJ5IGZpbGVzeXN0ZW1cXG5cJiMzNDspO1xuJiM0MztcdFx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9TS0lQKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGtzZnRfcGVycm9yKFwmIzM0O2ZhbGxvY2F0ZSgpIGZhaWxlZFwmIzM0Oyk7XG4mIzQzO1x0XHRcdGxvZ190ZXN0X3Jlc3VsdChLU0ZUX0ZBSUwpO1xuJiM0MztcdFx0fVxuIFx0XHRnb3RvIGNsb3NlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuY1xuaW5kZXggYjIxZGYzMDQwYjFjN2MuLjVjOGVjM2NhNzVkN2QyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmNcbkBAIC0xOTEyLDcgJiM0MzsxOTEyLDcgQEAgVEVTVF9GKGd1YXJkX3JlZ2lvbnMsIGhvbGVfcHVuY2gpXG4ge1xuIFx0Y29uc3QgdW5zaWduZWQgbG9uZyBwYWdlX3NpemUgPSBzZWxmLVx1MDAzZXBhZ2Vfc2l6ZTtcbiBcdGNoYXIgKnB0cjtcbi1cdGludCBpO1xuJiM0MztcdGludCBpLCByZXQ7XG4gXG4gXHRpZiAodmFyaWFudC1cdTAwM2ViYWNraW5nID09IEFOT05fQkFDS0VEKVxuIFx0XHRTS0lQKHJldHVybiwgXCYjMzQ7VHJ1bmNhdGlvbiB0ZXN0IHNwZWNpZmljIHRvIGZpbGUtYmFja2VkXCYjMzQ7KTtcbkBAIC0xOTQ0LDggJiM0MzsxOTQ0LDEyIEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKVxuIFx0fVxuIFxuIFx0LyogTm93IGhvbGUgcHVuY2ggdGhlIGd1YXJkZWQgcmVnaW9uLiAqL1xuLVx0QVNTRVJUX0VRKG1hZHZpc2UoXHUwMDI2cHRyWzMgKiBwYWdlX3NpemVdLCA0ICogcGFnZV9zaXplLFxuLVx0XHRcdCAgTUFEVl9SRU1PVkUpLCAwKTtcbiYjNDM7XHRyZXQgPSBtYWR2aXNlKFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpO1xuJiM0MztcdGlmIChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVPUE5PVFNVUFApIHtcbiYjNDM7XHRcdEFTU0VSVF9FUShtdW5tYXAocHRyLCAxMCAqIHBhZ2Vfc2l6ZSksIDApO1xuJiM0MztcdFx0U0tJUChyZXR1cm4sIFwmIzM0O01BRFZfUkVNT1ZFIG5vdCBzdXBwb3J0ZWQgYnkgZmlsZXN5c3RlbVwmIzM0Oyk7XG4mIzQzO1x0fVxuJiM0MztcdEFTU0VSVF9FUShyZXQsIDApO1xuIFxuIFx0LyogRW5zdXJlIGd1YXJkIHJlZ2lvbnMgcmVtYWluLiAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jXG5pbmRleCAxMGU4ZGVkY2IwODdkYy4uNTRlODg4ZWI0OGJiY2IgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuY1xuQEAgLTEwMCw2ICYjNDM7MTAwLDI4IEBAIHN0YXRpYyB2b2lkIHNraXAoY29uc3QgY2hhciAqbXNnKVxuIFx0ZXhpdF9zdGF0dXMgPSBLU0ZUX1NLSVA7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBpc19zd2FwX2VuYWJsZWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGNoYXIgYnVmW01BWF9MSU5FX0xFTkdUSF07XG4mIzQzO1x0RklMRSAqZmlsZTtcbiYjNDM7XHRib29sIGVuYWJsZWQgPSBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0ZmlsZSA9IGZvcGVuKFwmIzM0Oy9wcm9jL3N3YXBzXCYjMzQ7LCBcJiMzNDtyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIWZpbGUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZmlsZSkpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0LyogQ2hlY2sgZm9yIGZpcnN0IGFjdGl2ZSBzd2FwIGVudHJ5LiAqL1xuJiM0MztcdGlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcbiYjNDM7XHRcdGVuYWJsZWQgPSB0cnVlO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGZjbG9zZShmaWxlKTtcbiYjNDM7XHRyZXR1cm4gZW5hYmxlZDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBzYXZlX3NldHRpbmdzKHZvaWQpXG4ge1xuIFx0a3NmdF9wcmludF9tc2coXCYjMzQ7U2F2ZSBUSFAgYW5kIGtodWdlcGFnZWQgc2V0dGluZ3MuLi5cJiMzNDspO1xuQEAgLTczNCwxMCAmIzQzOzc1NiwxNiBAQCBzdGF0aWMgdm9pZCBjb2xsYXBzZV9zd2FwaW5fc2luZ2xlX3B0ZShzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcFxuIHtcbiBcdHZvaWQgKnA7XG4gXG4mIzQzO1x0a3NmdF9wcmludF9tc2coXCYjMzQ7U3dhcG91dCBvbmUgcGFnZS4uLlwmIzM0Oyk7XG4mIzQzO1x0aWYgKCFpc19zd2FwX2VuYWJsZWQoKSkge1xuJiM0MztcdFx0c2tpcChcJiMzNDtObyBhY3RpdmUgc3dhcFwmIzM0Oyk7XG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXCYjMzQ7JXNcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cCA9IG9wcy1cdTAwM2VzZXR1cF9hcmVhKDEpO1xuIFx0b3BzLVx1MDAzZWZhdWx0KHAsIDAsIGhwYWdlX3BtZF9zaXplKTtcbiBcbi1cdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1N3YXBvdXQgb25lIHBhZ2UuLi5cJiMzNDspO1xuIFx0aWYgKG1hZHZpc2UocCwgcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXCYjMzQ7bWFkdmlzZShNQURWX1BBR0VPVVQpXCYjMzQ7KTtcbiBcdGlmIChjaGVja19zd2FwKHAsIHBhZ2Vfc2l6ZSkpIHtcbkBAIC03NjAsMTAgJiM0Mzs3ODgsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfbWF4X3B0ZXNfc3dhcChzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcHMgKm9cbiBcdGludCBtYXhfcHRlc19zd2FwID0gdGhwX3JlYWRfbnVtKFwmIzM0O2todWdlcGFnZWQvbWF4X3B0ZXNfc3dhcFwmIzM0Oyk7XG4gXHR2b2lkICpwO1xuIFxuJiM0MztcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1N3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi5cJiMzNDssIG1heF9wdGVzX3N3YXAgJiM0MzsgMSwgaHBhZ2VfcG1kX25yKTtcbiYjNDM7XHRpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7XG4mIzQzO1x0XHRza2lwKFwmIzM0O05vIGFjdGl2ZSBzd2FwXCYjMzQ7KTtcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfcmVwb3J0KGV4aXRfc3RhdHVzLCBcJiMzNDslc1xcblwmIzM0OywgX19mdW5jX18pO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRwID0gb3BzLVx1MDAzZXNldHVwX2FyZWEoMSk7XG4gXHRvcHMtXHUwMDNlZmF1bHQocCwgMCwgaHBhZ2VfcG1kX3NpemUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCYjMzQ7U3dhcG91dCAlZCBvZiAlZCBwYWdlcy4uLlwmIzM0OywgbWF4X3B0ZXNfc3dhcCAmIzQzOyAxLCBocGFnZV9wbWRfbnIpO1xuIFx0aWYgKG1hZHZpc2UocCwgKG1heF9wdGVzX3N3YXAgJiM0MzsgMSkgKiBwYWdlX3NpemUsIE1BRFZfUEFHRU9VVCkpXG4gXHRcdGtzZnRfZXhpdF9mYWlsX3BlcnJvcihcJiMzNDttYWR2aXNlKE1BRFZfUEFHRU9VVClcJiMzNDspO1xuIFx0aWYgKGNoZWNrX3N3YXAocCwgKG1heF9wdGVzX3N3YXAgJiM0MzsgMSkgKiBwYWdlX3NpemUpKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmNcbmluZGV4IDAzMmVkOTUyMDU3YzYyLi4zYzcyMDg0ZjU3ZThiNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmNcbkBAIC0yODMsOCAmIzQzOzI4MywxMCBAQCBURVNUX0YobWVtb3J5X2ZhaWx1cmUsIGNsZWFuX3BhZ2VjYWNoZSlcbiBcdGlmIChmZCBcdTAwM2MgMClcbiBcdFx0U0tJUChyZXR1cm4sIFwmIzM0O2ZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cXG5cJiMzNDspO1xuIFx0ZnNfdHlwZSA9IGdldF9mc190eXBlKGZkKTtcbi1cdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKVxuJiM0MztcdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKSB7XG4mIzQzO1x0XHRjbG9zZShmZCk7XG4gXHRcdFNLSVAocmV0dXJuLCBcJiMzNDt1bnN1cHBvcnRlZCBmaWxlc3lzdGVtIDoleFxcblwmIzM0OywgZnNfdHlwZSk7XG4mIzQzO1x0fVxuIFxuIFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cdTAwM2VwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4gXHRcdCAgICBNQVBfU0hBUkVELCBmZCwgMCk7XG5AQCAtMzI1LDggJiM0MzszMjcsMTEgQEAgVEVTVF9GKG1lbW9yeV9mYWlsdXJlLCBkaXJ0eV9wYWdlY2FjaGUpXG4gXHRpZiAoZmQgXHUwMDNjIDApXG4gXHRcdFNLSVAocmV0dXJuLCBcJiMzNDtmYWlsZWQgdG8gb3BlbiB0ZXN0IGZpbGUuXFxuXCYjMzQ7KTtcbiBcdGZzX3R5cGUgPSBnZXRfZnNfdHlwZShmZCk7XG4tXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcbiYjNDM7XHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQyB8fFxuJiM0MztcdCAgICAoZnNfdHlwZSA9PSBORlNfU1VQRVJfTUFHSUMgXHUwMDI2XHUwMDI2IHZhcmlhbnQtXHUwMDNldHlwZSA9PSBNQURWX0hBUkQpKSB7XG4mIzQzO1x0XHRjbG9zZShmZCk7XG4gXHRcdFNLSVAocmV0dXJuLCBcJiMzNDt1bnN1cHBvcnRlZCBmaWxlc3lzdGVtIDoleFxcblwmIzM0OywgZnNfdHlwZSk7XG4mIzQzO1x0fVxuIFxuIFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cdTAwM2VwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4gXHRcdCAgICBNQVBfU0hBUkVELCBmZCwgMCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uY1xuaW5kZXggMjlmNzQ5MjQ1M2Q0MzkuLjRkNTVhNDI0MDU4YTljIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXG5AQCAtNyw3ICYjNDM7Nyw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7a3NlbGZ0ZXN0X2hhcm5lc3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2h1Z2VwYWdlX3NldHRpbmdzLmhcJiMzNDtcbiBcbi0jaW5jbHVkZSBcdTAwM2NzdHJpbmdzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NudW1hLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NudW1haWYuaFx1MDAzZVxuQEAgLTIwLDcgJiM0MzsyMCw2IEBAXG4gXG4gI2RlZmluZSBUV09NRUdcdFx0KDJcdTAwM2NcdTAwM2MyMClcbiAjZGVmaW5lIFJVTlRJTUVcdFx0KDIwKVxuLSNkZWZpbmUgTUFYX1JFVFJJRVNcdDEwMFxuICNkZWZpbmUgQUxJR04oeCwgYSlcdCgoKHgpICYjNDM7IChhIC0gMSkpIFx1MDAyNiAofigoYSkgLSAxKSkpXG4gXG4gSFVHRVRMQl9TRVRVUF9ERUZBVUxUX1BBR0VTKDEpXG5AQCAtMTEwLDcgJiM0MzsxMDksNyBAQCBpbnQgbWlncmF0ZSh1aW50NjRfdCAqcHRyLCBpbnQgbjEsIGludCBuMilcbiBcdGludCByZXQsIHRtcDtcbiBcdGludCBzdGF0dXMgPSAwO1xuIFx0c3RydWN0IHRpbWVzcGVjIHRzMSwgdHMyO1xuLVx0aW50IGZhaWx1cmVzID0gMDtcbiYjNDM7XHRpbnQgc3VjY2VzcyA9IDA7XG4gXG4gXHRpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnRzMSkpXG4gXHRcdHJldHVybiAtMTtcbkBAIC0xMTksMjkgJiM0MzsxMTgsMzMgQEAgaW50IG1pZ3JhdGUodWludDY0X3QgKnB0ciwgaW50IG4xLCBpbnQgbjIpXG4gXHRcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMyKSlcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcdTAwM2U9IFJVTlRJTUUpXG4tXHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHRpZiAodHMyLnR2X3NlYyAtIHRzMS50dl9zZWMgXHUwMDNlPSBSVU5USU1FKSB7XG4mIzQzO1x0XHRcdC8qIFJlYWNoaW5nIGJvdGggdGFyZ2V0cyB2ZXJpZmllcyBhIGNyb3NzLW5vZGUgbW92ZS4gKi9cbiYjNDM7XHRcdFx0aWYgKHN1Y2Nlc3MgXHUwMDNlPSAyKVxuJiM0MztcdFx0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC0yO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRyZXQgPSBtb3ZlX3BhZ2VzKDAsIDEsICh2b2lkICoqKSBcdTAwMjZwdHIsIFx1MDAyNm4yLCBcdTAwMjZzdGF0dXMsXG4gXHRcdFx0XHRNUE9MX01GX01PVkVfQUxMKTtcbi1cdFx0aWYgKHJldCkge1xuLVx0XHRcdGlmIChyZXQgXHUwMDNlIDApIHtcbi1cdFx0XHRcdC8qIE1pZ3JhdGlvbiBpcyBiZXN0IGVmZm9ydDsgdHJ5IGFnYWluICovXG4tXHRcdFx0XHRpZiAoJiM0MzsmIzQzO2ZhaWx1cmVzIFx1MDAzYyBNQVhfUkVUUklFUylcbi1cdFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0XHRwcmludGYoXCYjMzQ7RGlkbiYjMzk7dCBtaWdyYXRlICVkIHBhZ2VzXFxuXCYjMzQ7LCByZXQpO1xuLVx0XHRcdH1cbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRwZXJyb3IoXCYjMzQ7Q291bGRuJiMzOTt0IG1pZ3JhdGUgcGFnZXNcJiMzNDspO1xuLVx0XHRcdHJldHVybiAtMjtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0cGVycm9yKFwmIzM0O0NvdWxkbiYjMzk7dCBtaWdyYXRlIHBhZ2VzXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuLVx0XHRmYWlsdXJlcyA9IDA7XG4mIzQzO1x0XHQvKiBNaWdyYXRpb24gaXMgYmVzdCBlZmZvcnQuIFRyeSBhZ2FpbiAqL1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2UgMCB8fCBzdGF0dXMgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKHN0YXR1cyAhPSBuMikge1xuJiM0MztcdFx0XHRwcmludGYoXCYjMzQ7UGFnZSBpcyBvbiBub2RlICVkIGluc3RlYWQgb2YgdGFyZ2V0IG5vZGUgJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICBzdGF0dXMsIG4yKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHN0YXR1cztcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHN1Y2Nlc3MmIzQzOyYjNDM7O1xuIFx0XHR0bXAgPSBuMjtcbiBcdFx0bjIgPSBuMTtcbiBcdFx0bjEgPSB0bXA7XG4gXHR9XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gdm9pZCAqYWNjZXNzX21lbSh2b2lkICpwdHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTU6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRkYTMwNWMxMWQxNjVjNDgzMWZlNzU1YTA3YjE5NjEzNmY4OGUzYzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxNTowOTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmMKaW5kZXggMGM2MjdlYTg5ZmY3YjIuLmMxYjg5MjBlMjkzNDI0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYwpAQCAtMTcxOCw4ICYjNDM7MTcxOCwxMyBAQCBzdGF0aWMgdm9pZCBydW5fd2l0aF90bXBmaWxlKG5vbl9hbm9uX3Rlc3RfZm4gZm4sIGNvbnN0IGNoYXIgKmRlc2MpCiAKIAkvKiBGaWxlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHBhZ2UgZmlsbGVkIHdpdGggemVyb2VzLiAqLwogCWlmIChmYWxsb2NhdGUoZmQsIDAsIDAsIHBhZ2VzaXplKSkgewotCQlrc2Z0X3BlcnJvcigmIzM0O2ZhbGxvY2F0ZSgpIGZhaWxlZCYjMzQ7KTsKLQkJbG9nX3Rlc3RfcmVzdWx0KEtTRlRfRkFJTCk7CiYjNDM7CQlpZiAoZXJybm8gPT0gRU9QTk9UU1VQUCkgewomIzQzOwkJCWtzZnRfcHJpbnRfbXNnKCYjMzQ7ZmFsbG9jYXRlKCkgbm90IHN1cHBvcnRlZCBieSBmaWxlc3lzdGVtXG4mIzM0Oyk7CiYjNDM7CQkJbG9nX3Rlc3RfcmVzdWx0KEtTRlRfU0tJUCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWtzZnRfcGVycm9yKCYjMzQ7ZmFsbG9jYXRlKCkgZmFpbGVkJiMzNDspOwomIzQzOwkJCWxvZ190ZXN0X3Jlc3VsdChLU0ZUX0ZBSUwpOwomIzQzOwkJfQogCQlnb3RvIGNsb3NlOwogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jCmluZGV4IGIyMWRmMzA0MGIxYzdjLi41YzhlYzNjYTc1ZDdkMiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuYwpAQCAtMTkxMiw3ICYjNDM7MTkxMiw3IEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKQogewogCWNvbnN0IHVuc2lnbmVkIGxvbmcgcGFnZV9zaXplID0gc2VsZi0mZ3Q7cGFnZV9zaXplOwogCWNoYXIgKnB0cjsKLQlpbnQgaTsKJiM0MzsJaW50IGksIHJldDsKIAogCWlmICh2YXJpYW50LSZndDtiYWNraW5nID09IEFOT05fQkFDS0VEKQogCQlTS0lQKHJldHVybiwgJiMzNDtUcnVuY2F0aW9uIHRlc3Qgc3BlY2lmaWMgdG8gZmlsZS1iYWNrZWQmIzM0Oyk7CkBAIC0xOTQ0LDggJiM0MzsxOTQ0LDEyIEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKQogCX0KIAogCS8qIE5vdyBob2xlIHB1bmNoIHRoZSBndWFyZGVkIHJlZ2lvbi4gKi8KLQlBU1NFUlRfRVEobWFkdmlzZSgmYW1wO3B0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwKLQkJCSAgTUFEVl9SRU1PVkUpLCAwKTsKJiM0MzsJcmV0ID0gbWFkdmlzZSgmYW1wO3B0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpOwomIzQzOwlpZiAocmV0ID09IC0xICZhbXA7JmFtcDsgZXJybm8gPT0gRU9QTk9UU1VQUCkgewomIzQzOwkJQVNTRVJUX0VRKG11bm1hcChwdHIsIDEwICogcGFnZV9zaXplKSwgMCk7CiYjNDM7CQlTS0lQKHJldHVybiwgJiMzNDtNQURWX1JFTU9WRSBub3Qgc3VwcG9ydGVkIGJ5IGZpbGVzeXN0ZW0mIzM0Oyk7CiYjNDM7CX0KJiM0MzsJQVNTRVJUX0VRKHJldCwgMCk7CiAKIAkvKiBFbnN1cmUgZ3VhcmQgcmVnaW9ucyByZW1haW4uICovCiAJZm9yIChpID0gMDsgaSAmbHQ7IDEwOyBpJiM0MzsmIzQzOykgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jCmluZGV4IDEwZThkZWRjYjA4N2RjLi41NGU4ODhlYjQ4YmJjYiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuYwpAQCAtMTAwLDYgJiM0MzsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2tpcChjb25zdCBjaGFyICptc2cpCiAJZXhpdF9zdGF0dXMgPSBLU0ZUX1NLSVA7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBpc19zd2FwX2VuYWJsZWQodm9pZCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmW01BWF9MSU5FX0xFTkdUSF07CiYjNDM7CUZJTEUgKmZpbGU7CiYjNDM7CWJvb2wgZW5hYmxlZCA9IGZhbHNlOwomIzQzOwomIzQzOwlmaWxlID0gZm9wZW4oJiMzNDsvcHJvYy9zd2FwcyYjMzQ7LCAmIzM0O3ImIzM0Oyk7CiYjNDM7CWlmICghZmlsZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwkvKiBDaGVjayBmb3IgZmlyc3QgYWN0aXZlIHN3YXAgZW50cnkuICovCiYjNDM7CWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSkKJiM0MzsJCWVuYWJsZWQgPSB0cnVlOwomIzQzOwomIzQzO291dDoKJiM0MzsJZmNsb3NlKGZpbGUpOwomIzQzOwlyZXR1cm4gZW5hYmxlZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBzYXZlX3NldHRpbmdzKHZvaWQpCiB7CiAJa3NmdF9wcmludF9tc2coJiMzNDtTYXZlIFRIUCBhbmQga2h1Z2VwYWdlZCBzZXR0aW5ncy4uLiYjMzQ7KTsKQEAgLTczNCwxMCAmIzQzOzc1NiwxNiBAQCBzdGF0aWMgdm9pZCBjb2xsYXBzZV9zd2FwaW5fc2luZ2xlX3B0ZShzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcAogewogCXZvaWQgKnA7CiAKJiM0MzsJa3NmdF9wcmludF9tc2coJiMzNDtTd2Fwb3V0IG9uZSBwYWdlLi4uJiMzNDspOwomIzQzOwlpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7CiYjNDM7CQlza2lwKCYjMzQ7Tm8gYWN0aXZlIHN3YXAmIzM0Oyk7CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgJiMzNDslc1xuJiMzNDssIF9fZnVuY19fKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXAgPSBvcHMtJmd0O3NldHVwX2FyZWEoMSk7CiAJb3BzLSZndDtmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7CiAKLQlrc2Z0X3ByaW50X21zZygmIzM0O1N3YXBvdXQgb25lIHBhZ2UuLi4mIzM0Oyk7CiAJaWYgKG1hZHZpc2UocCwgcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKQogCQlrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoJiMzNDttYWR2aXNlKE1BRFZfUEFHRU9VVCkmIzM0Oyk7CiAJaWYgKGNoZWNrX3N3YXAocCwgcGFnZV9zaXplKSkgewpAQCAtNzYwLDEwICYjNDM7Nzg4LDE2IEBAIHN0YXRpYyB2b2lkIGNvbGxhcHNlX21heF9wdGVzX3N3YXAoc3RydWN0IGNvbGxhcHNlX2NvbnRleHQgKmMsIHN0cnVjdCBtZW1fb3BzICpvCiAJaW50IG1heF9wdGVzX3N3YXAgPSB0aHBfcmVhZF9udW0oJiMzNDtraHVnZXBhZ2VkL21heF9wdGVzX3N3YXAmIzM0Oyk7CiAJdm9pZCAqcDsKIAomIzQzOwlrc2Z0X3ByaW50X21zZygmIzM0O1N3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi4mIzM0OywgbWF4X3B0ZXNfc3dhcCAmIzQzOyAxLCBocGFnZV9wbWRfbnIpOwomIzQzOwlpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7CiYjNDM7CQlza2lwKCYjMzQ7Tm8gYWN0aXZlIHN3YXAmIzM0Oyk7CiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgJiMzNDslc1xuJiMzNDssIF9fZnVuY19fKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXAgPSBvcHMtJmd0O3NldHVwX2FyZWEoMSk7CiAJb3BzLSZndDtmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7CiAKLQlrc2Z0X3ByaW50X21zZygmIzM0O1N3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi4mIzM0OywgbWF4X3B0ZXNfc3dhcCAmIzQzOyAxLCBocGFnZV9wbWRfbnIpOwogCWlmIChtYWR2aXNlKHAsIChtYXhfcHRlc19zd2FwICYjNDM7IDEpICogcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKQogCQlrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoJiMzNDttYWR2aXNlKE1BRFZfUEFHRU9VVCkmIzM0Oyk7CiAJaWYgKGNoZWNrX3N3YXAocCwgKG1heF9wdGVzX3N3YXAgJiM0MzsgMSkgKiBwYWdlX3NpemUpKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuYwppbmRleCAwMzJlZDk1MjA1N2M2Mi4uM2M3MjA4NGY1N2U4YjQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuYwpAQCAtMjgzLDggJiM0MzsyODMsMTAgQEAgVEVTVF9GKG1lbW9yeV9mYWlsdXJlLCBjbGVhbl9wYWdlY2FjaGUpCiAJaWYgKGZkICZsdDsgMCkKIAkJU0tJUChyZXR1cm4sICYjMzQ7ZmFpbGVkIHRvIG9wZW4gdGVzdCBmaWxlLlxuJiMzNDspOwogCWZzX3R5cGUgPSBnZXRfZnNfdHlwZShmZCk7Ci0JaWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMpCiYjNDM7CWlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKSB7CiYjNDM7CQljbG9zZShmZCk7CiAJCVNLSVAocmV0dXJuLCAmIzM0O3Vuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XG4mIzM0OywgZnNfdHlwZSk7CiYjNDM7CX0KIAogCWFkZHIgPSBtbWFwKDAsIHNlbGYtJmd0O3BhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKIAkJICAgIE1BUF9TSEFSRUQsIGZkLCAwKTsKQEAgLTMyNSw4ICYjNDM7MzI3LDExIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgZGlydHlfcGFnZWNhY2hlKQogCWlmIChmZCAmbHQ7IDApCiAJCVNLSVAocmV0dXJuLCAmIzM0O2ZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cbiYjMzQ7KTsKIAlmc190eXBlID0gZ2V0X2ZzX3R5cGUoZmQpOwotCWlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKQomIzQzOwlpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQyB8fAomIzQzOwkgICAgKGZzX3R5cGUgPT0gTkZTX1NVUEVSX01BR0lDICZhbXA7JmFtcDsgdmFyaWFudC0mZ3Q7dHlwZSA9PSBNQURWX0hBUkQpKSB7CiYjNDM7CQljbG9zZShmZCk7CiAJCVNLSVAocmV0dXJuLCAmIzM0O3Vuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XG4mIzM0OywgZnNfdHlwZSk7CiYjNDM7CX0KIAogCWFkZHIgPSBtbWFwKDAsIHNlbGYtJmd0O3BhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKIAkJICAgIE1BUF9TSEFSRUQsIGZkLCAwKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmMKaW5kZXggMjlmNzQ5MjQ1M2Q0MzkuLjRkNTVhNDI0MDU4YTljIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYwpAQCAtNyw3ICYjNDM7Nyw3IEBACiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdF9oYXJuZXNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtodWdlcGFnZV9zZXR0aW5ncy5oJiMzNDsKIAotI2luY2x1ZGUgJmx0O3N0cmluZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwogI2luY2x1ZGUgJmx0O251bWEuaCZndDsKICNpbmNsdWRlICZsdDtudW1haWYuaCZndDsKQEAgLTIwLDcgJiM0MzsyMCw2IEBACiAKICNkZWZpbmUgVFdPTUVHCQkoMiZsdDsmbHQ7MjApCiAjZGVmaW5lIFJVTlRJTUUJCSgyMCkKLSNkZWZpbmUgTUFYX1JFVFJJRVMJMTAwCiAjZGVmaW5lIEFMSUdOKHgsIGEpCSgoKHgpICYjNDM7IChhIC0gMSkpICZhbXA7ICh+KChhKSAtIDEpKSkKIAogSFVHRVRMQl9TRVRVUF9ERUZBVUxUX1BBR0VTKDEpCkBAIC0xMTAsNyAmIzQzOzEwOSw3IEBAIGludCBtaWdyYXRlKHVpbnQ2NF90ICpwdHIsIGludCBuMSwgaW50IG4yKQogCWludCByZXQsIHRtcDsKIAlpbnQgc3RhdHVzID0gMDsKIAlzdHJ1Y3QgdGltZXNwZWMgdHMxLCB0czI7Ci0JaW50IGZhaWx1cmVzID0gMDsKJiM0MzsJaW50IHN1Y2Nlc3MgPSAwOwogCiAJaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3RzMSkpCiAJCXJldHVybiAtMTsKQEAgLTExOSwyOSAmIzQzOzExOCwzMyBAQCBpbnQgbWlncmF0ZSh1aW50NjRfdCAqcHRyLCBpbnQgbjEsIGludCBuMikKIAkJaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3RzMikpCiAJCQlyZXR1cm4gLTE7CiAKLQkJaWYgKHRzMi50dl9zZWMgLSB0czEudHZfc2VjICZndDs9IFJVTlRJTUUpCi0JCQlyZXR1cm4gMDsKJiM0MzsJCWlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyAmZ3Q7PSBSVU5USU1FKSB7CiYjNDM7CQkJLyogUmVhY2hpbmcgYm90aCB0YXJnZXRzIHZlcmlmaWVzIGEgY3Jvc3Mtbm9kZSBtb3ZlLiAqLwomIzQzOwkJCWlmIChzdWNjZXNzICZndDs9IDIpCiYjNDM7CQkJCXJldHVybiAwOwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJcmV0dXJuIC0yOwomIzQzOwkJfQogCiAJCXJldCA9IG1vdmVfcGFnZXMoMCwgMSwgKHZvaWQgKiopICZhbXA7cHRyLCAmYW1wO24yLCAmYW1wO3N0YXR1cywKIAkJCQlNUE9MX01GX01PVkVfQUxMKTsKLQkJaWYgKHJldCkgewotCQkJaWYgKHJldCAmZ3Q7IDApIHsKLQkJCQkvKiBNaWdyYXRpb24gaXMgYmVzdCBlZmZvcnQ7IHRyeSBhZ2FpbiAqLwotCQkJCWlmICgmIzQzOyYjNDM7ZmFpbHVyZXMgJmx0OyBNQVhfUkVUUklFUykKLQkJCQkJY29udGludWU7Ci0JCQkJcHJpbnRmKCYjMzQ7RGlkbiYjMzk7dCBtaWdyYXRlICVkIHBhZ2VzXG4mIzM0OywgcmV0KTsKLQkJCX0KLQkJCWVsc2UKLQkJCQlwZXJyb3IoJiMzNDtDb3VsZG4mIzM5O3QgbWlncmF0ZSBwYWdlcyYjMzQ7KTsKLQkJCXJldHVybiAtMjsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQkJcGVycm9yKCYjMzQ7Q291bGRuJiMzOTt0IG1pZ3JhdGUgcGFnZXMmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIHJldDsKIAkJfQotCQlmYWlsdXJlcyA9IDA7CiYjNDM7CQkvKiBNaWdyYXRpb24gaXMgYmVzdCBlZmZvcnQuIFRyeSBhZ2FpbiAqLwomIzQzOwkJaWYgKHJldCAmZ3Q7IDAgfHwgc3RhdHVzICZsdDsgMCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCWlmIChzdGF0dXMgIT0gbjIpIHsKJiM0MzsJCQlwcmludGYoJiMzNDtQYWdlIGlzIG9uIG5vZGUgJWQgaW5zdGVhZCBvZiB0YXJnZXQgbm9kZSAlZFxuJiMzNDssCiYjNDM7CQkJICAgICAgIHN0YXR1cywgbjIpOwomIzQzOwkJCXJldHVybiBzdGF0dXM7CiYjNDM7CQl9CiYjNDM7CQlzdWNjZXNzJiM0MzsmIzQzOzsKIAkJdG1wID0gbjI7CiAJCW4yID0gbjE7CiAJCW4xID0gdG1wOwogCX0KLQotCXJldHVybiAwOwogfQogCiB2b2lkICphY2Nlc3NfbWVtKHZvaWQgKnB0cikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0NQoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDU5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBSZXZpZXc6IFdvcnRoRnV6emluZyBEZXRlcm1pbmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCB0YXJnZXRzIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhlc2UgYXMgc2VsZi10ZXN0cyDigJMgdXNlcnNwYWNlIHRlc3QgcHJvZ3JhbXMgZGVzaWduZWQgdG8gZXhlcmNpc2Ugc3BlY2lmaWMga2VybmVsIHN1YnN5c3RlbXMsIGluIHRoaXMgY2FzZSwgbWVtb3J5IG1hbmFnZW1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IG1vZGlmeWluZyBzZWxmdGVzdHMgKnBlciBzZSogZG9lc24mIzM5O3QgZGlyZWN0bHkgaW1wYWN0IHRoZSBrZXJuZWwmIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyB3aGF0IHRoZSBwcm9tcHQgaXMgY29uY2VybmVkIGFib3V0LgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FudHMgbWUgdG8gZmxhZyBwYXRjaGVzIHRoYXQgaW50cm9kdWNlICpmdW5jdGlvbmFsIGNoYW5nZXMqIHRvIHRoZSBrZXJuZWwgdGhhdCB3YXJyYW50IGZ1enppbmcuIEl0IGxpc3RzIGEgc2VyaWVzIG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYFdvcnRoRnV6emluZz1mYWxzZWAgc2hvdWxkIGJlIHJldHVybmVkLiBDcnVjaWFsbHksIHRoZSBwcm9tcHQgc3RhdGVzOiAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsKCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGlzIGFueSBrZXJuZWwgY29kZSB0aGF0IGlzIG1vZGlmaWVkLiBMb29raW5nIG1vcmUgY2xvc2VseSwgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB0byB0aGUgc2VsZnRlc3QgZmlsZXM6IGBjb3cuY2AsIGBndWFyZC1yZWdpb25zLmNgLCBga2h1Z2VwYWdlZC5jYCwgYG1lbW9yeS1mYWlsdXJlLmNgLCBhbmQgYG1pZ3JhdGlvbi5jYC4gSSB3aWxsIGRvdWJsZSBjaGVjayBteSBhbmFseXNpcyB3aXRoIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjb2RlLgoKR2l2ZW4gdGhhdCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgKnNvbGVseSogd2l0aGluIHRoZXNlIHVzZXJzcGFjZSB0ZXN0IHByb2dyYW1zLCBpdCYjMzk7cyBzYWZlIHRvIGNvbmNsdWRlIHRoYXQgdGhlc2UgY2hhbmdlcyBkb24mIzM5O3QgY29uc3RpdHV0ZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBjb3JlIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUuIFRoaXMgaXMgcHVyZSB1c2Vyc3BhY2UgdGVzdCBjb2RlLgoKVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHBhdGNoIG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgb25seSwgYW5kIHRoZXNlIGRvIG5vdCBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE1OjA5OjU3LjY3ODQ0MTY5OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDIxNjM3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTU6MDk6NTcuNjc4NDU0OTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODEzMzIxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ZGEzMDVjMTFkMTY1YzQ4MzFmZTc1NWEwN2IxOTYxMzZmODhlM2M3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDE1OjA5OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcXG5pbmRleCAwYzYyN2VhODlmZjdiMi4uYzFiODkyMGUyOTM0MjQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuY1xcbkBAIC0xNzE4LDggKzE3MTgsMTMgQEAgc3RhdGljIHZvaWQgcnVuX3dpdGhfdG1wZmlsZShub25fYW5vbl90ZXN0X2ZuIGZuLCBjb25zdCBjaGFyICpkZXNjKVxcbiBcXG4gXFx0LyogRmlsZSBjb25zaXN0cyBvZiBhIHNpbmdsZSBwYWdlIGZpbGxlZCB3aXRoIHplcm9lcy4gKi9cXG4gXFx0aWYgKGZhbGxvY2F0ZShmZCwgMCwgMCwgcGFnZXNpemUpKSB7XFxuLVxcdFxcdGtzZnRfcGVycm9yKFxcXCJmYWxsb2NhdGUoKSBmYWlsZWRcXFwiKTtcXG4tXFx0XFx0bG9nX3Rlc3RfcmVzdWx0KEtTRlRfRkFJTCk7XFxuK1xcdFxcdGlmIChlcnJubyA9PSBFT1BOT1RTVVBQKSB7XFxuK1xcdFxcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJmYWxsb2NhdGUoKSBub3Qgc3VwcG9ydGVkIGJ5IGZpbGVzeXN0ZW1cXFxcblxcXCIpO1xcbitcXHRcXHRcXHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9TS0lQKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0a3NmdF9wZXJyb3IoXFxcImZhbGxvY2F0ZSgpIGZhaWxlZFxcXCIpO1xcbitcXHRcXHRcXHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9GQUlMKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRnb3RvIGNsb3NlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmNcXG5pbmRleCBiMjFkZjMwNDBiMWM3Yy4uNWM4ZWMzY2E3NWQ3ZDIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXFxuQEAgLTE5MTIsNyArMTkxMiw3IEBAIFRFU1RfRihndWFyZF9yZWdpb25zLCBob2xlX3B1bmNoKVxcbiB7XFxuIFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcGFnZV9zaXplID0gc2VsZi1cXHUwMDNlcGFnZV9zaXplO1xcbiBcXHRjaGFyICpwdHI7XFxuLVxcdGludCBpO1xcbitcXHRpbnQgaSwgcmV0O1xcbiBcXG4gXFx0aWYgKHZhcmlhbnQtXFx1MDAzZWJhY2tpbmcgPT0gQU5PTl9CQUNLRUQpXFxuIFxcdFxcdFNLSVAocmV0dXJuLCBcXFwiVHJ1bmNhdGlvbiB0ZXN0IHNwZWNpZmljIHRvIGZpbGUtYmFja2VkXFxcIik7XFxuQEAgLTE5NDQsOCArMTk0NCwxMiBAQCBURVNUX0YoZ3VhcmRfcmVnaW9ucywgaG9sZV9wdW5jaClcXG4gXFx0fVxcbiBcXG4gXFx0LyogTm93IGhvbGUgcHVuY2ggdGhlIGd1YXJkZWQgcmVnaW9uLiAqL1xcbi1cXHRBU1NFUlRfRVEobWFkdmlzZShcXHUwMDI2cHRyWzMgKiBwYWdlX3NpemVdLCA0ICogcGFnZV9zaXplLFxcbi1cXHRcXHRcXHQgIE1BRFZfUkVNT1ZFKSwgMCk7XFxuK1xcdHJldCA9IG1hZHZpc2UoXFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpO1xcbitcXHRpZiAocmV0ID09IC0xIFxcdTAwMjZcXHUwMDI2IGVycm5vID09IEVPUE5PVFNVUFApIHtcXG4rXFx0XFx0QVNTRVJUX0VRKG11bm1hcChwdHIsIDEwICogcGFnZV9zaXplKSwgMCk7XFxuK1xcdFxcdFNLSVAocmV0dXJuLCBcXFwiTUFEVl9SRU1PVkUgbm90IHN1cHBvcnRlZCBieSBmaWxlc3lzdGVtXFxcIik7XFxuK1xcdH1cXG4rXFx0QVNTRVJUX0VRKHJldCwgMCk7XFxuIFxcbiBcXHQvKiBFbnN1cmUgZ3VhcmQgcmVnaW9ucyByZW1haW4uICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuY1xcbmluZGV4IDEwZThkZWRjYjA4N2RjLi41NGU4ODhlYjQ4YmJjYiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcXG5AQCAtMTAwLDYgKzEwMCwyOCBAQCBzdGF0aWMgdm9pZCBza2lwKGNvbnN0IGNoYXIgKm1zZylcXG4gXFx0ZXhpdF9zdGF0dXMgPSBLU0ZUX1NLSVA7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGlzX3N3YXBfZW5hYmxlZCh2b2lkKVxcbit7XFxuK1xcdGNoYXIgYnVmW01BWF9MSU5FX0xFTkdUSF07XFxuK1xcdEZJTEUgKmZpbGU7XFxuK1xcdGJvb2wgZW5hYmxlZCA9IGZhbHNlO1xcbitcXG4rXFx0ZmlsZSA9IGZvcGVuKFxcXCIvcHJvYy9zd2Fwc1xcXCIsIFxcXCJyXFxcIik7XFxuK1xcdGlmICghZmlsZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHQvKiBDaGVjayBmb3IgZmlyc3QgYWN0aXZlIHN3YXAgZW50cnkuICovXFxuK1xcdGlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcXG4rXFx0XFx0ZW5hYmxlZCA9IHRydWU7XFxuK1xcbitvdXQ6XFxuK1xcdGZjbG9zZShmaWxlKTtcXG4rXFx0cmV0dXJuIGVuYWJsZWQ7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHNhdmVfc2V0dGluZ3Modm9pZClcXG4ge1xcbiBcXHRrc2Z0X3ByaW50X21zZyhcXFwiU2F2ZSBUSFAgYW5kIGtodWdlcGFnZWQgc2V0dGluZ3MuLi5cXFwiKTtcXG5AQCAtNzM0LDEwICs3NTYsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2Vfc3dhcGluX3NpbmdsZV9wdGUoc3RydWN0IGNvbGxhcHNlX2NvbnRleHQgKmMsIHN0cnVjdCBtZW1fb3BcXG4ge1xcbiBcXHR2b2lkICpwO1xcbiBcXG4rXFx0a3NmdF9wcmludF9tc2coXFxcIlN3YXBvdXQgb25lIHBhZ2UuLi5cXFwiKTtcXG4rXFx0aWYgKCFpc19zd2FwX2VuYWJsZWQoKSkge1xcbitcXHRcXHRza2lwKFxcXCJObyBhY3RpdmUgc3dhcFxcXCIpO1xcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXFxcIiVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cCA9IG9wcy1cXHUwMDNlc2V0dXBfYXJlYSgxKTtcXG4gXFx0b3BzLVxcdTAwM2VmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7XFxuIFxcbi1cXHRrc2Z0X3ByaW50X21zZyhcXFwiU3dhcG91dCBvbmUgcGFnZS4uLlxcXCIpO1xcbiBcXHRpZiAobWFkdmlzZShwLCBwYWdlX3NpemUsIE1BRFZfUEFHRU9VVCkpXFxuIFxcdFxcdGtzZnRfZXhpdF9mYWlsX3BlcnJvcihcXFwibWFkdmlzZShNQURWX1BBR0VPVVQpXFxcIik7XFxuIFxcdGlmIChjaGVja19zd2FwKHAsIHBhZ2Vfc2l6ZSkpIHtcXG5AQCAtNzYwLDEwICs3ODgsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfbWF4X3B0ZXNfc3dhcChzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcHMgKm9cXG4gXFx0aW50IG1heF9wdGVzX3N3YXAgPSB0aHBfcmVhZF9udW0oXFxcImtodWdlcGFnZWQvbWF4X3B0ZXNfc3dhcFxcXCIpO1xcbiBcXHR2b2lkICpwO1xcbiBcXG4rXFx0a3NmdF9wcmludF9tc2coXFxcIlN3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi5cXFwiLCBtYXhfcHRlc19zd2FwICsgMSwgaHBhZ2VfcG1kX25yKTtcXG4rXFx0aWYgKCFpc19zd2FwX2VuYWJsZWQoKSkge1xcbitcXHRcXHRza2lwKFxcXCJObyBhY3RpdmUgc3dhcFxcXCIpO1xcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXFxcIiVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cCA9IG9wcy1cXHUwMDNlc2V0dXBfYXJlYSgxKTtcXG4gXFx0b3BzLVxcdTAwM2VmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7XFxuIFxcbi1cXHRrc2Z0X3ByaW50X21zZyhcXFwiU3dhcG91dCAlZCBvZiAlZCBwYWdlcy4uLlxcXCIsIG1heF9wdGVzX3N3YXAgKyAxLCBocGFnZV9wbWRfbnIpO1xcbiBcXHRpZiAobWFkdmlzZShwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxcbiBcXHRcXHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXFxcIm1hZHZpc2UoTUFEVl9QQUdFT1VUKVxcXCIpO1xcbiBcXHRpZiAoY2hlY2tfc3dhcChwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplKSkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuY1xcbmluZGV4IDAzMmVkOTUyMDU3YzYyLi4zYzcyMDg0ZjU3ZThiNCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWVtb3J5LWZhaWx1cmUuY1xcbkBAIC0yODMsOCArMjgzLDEwIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgY2xlYW5fcGFnZWNhY2hlKVxcbiBcXHRpZiAoZmQgXFx1MDAzYyAwKVxcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcImZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cXFxcblxcXCIpO1xcbiBcXHRmc190eXBlID0gZ2V0X2ZzX3R5cGUoZmQpO1xcbi1cXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcXG4rXFx0aWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMpIHtcXG4rXFx0XFx0Y2xvc2UoZmQpO1xcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcInVuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XFxcXG5cXFwiLCBmc190eXBlKTtcXG4rXFx0fVxcbiBcXG4gXFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cXHUwMDNlcGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLFxcbiBcXHRcXHQgICAgTUFQX1NIQVJFRCwgZmQsIDApO1xcbkBAIC0zMjUsOCArMzI3LDExIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgZGlydHlfcGFnZWNhY2hlKVxcbiBcXHRpZiAoZmQgXFx1MDAzYyAwKVxcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcImZhaWxlZCB0byBvcGVuIHRlc3QgZmlsZS5cXFxcblxcXCIpO1xcbiBcXHRmc190eXBlID0gZ2V0X2ZzX3R5cGUoZmQpO1xcbi1cXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcXG4rXFx0aWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMgfHxcXG4rXFx0ICAgIChmc190eXBlID09IE5GU19TVVBFUl9NQUdJQyBcXHUwMDI2XFx1MDAyNiB2YXJpYW50LVxcdTAwM2V0eXBlID09IE1BRFZfSEFSRCkpIHtcXG4rXFx0XFx0Y2xvc2UoZmQpO1xcbiBcXHRcXHRTS0lQKHJldHVybiwgXFxcInVuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gOiV4XFxcXG5cXFwiLCBmc190eXBlKTtcXG4rXFx0fVxcbiBcXG4gXFx0YWRkciA9IG1tYXAoMCwgc2VsZi1cXHUwMDNlcGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLFxcbiBcXHRcXHQgICAgTUFQX1NIQVJFRCwgZmQsIDApO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXFxuaW5kZXggMjlmNzQ5MjQ1M2Q0MzkuLjRkNTVhNDI0MDU4YTljIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmNcXG5AQCAtNyw3ICs3LDcgQEBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdF9oYXJuZXNzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJodWdlcGFnZV9zZXR0aW5ncy5oXFxcIlxcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY3N0cmluZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbnVtYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbnVtYWlmLmhcXHUwMDNlXFxuQEAgLTIwLDcgKzIwLDYgQEBcXG4gXFxuICNkZWZpbmUgVFdPTUVHXFx0XFx0KDJcXHUwMDNjXFx1MDAzYzIwKVxcbiAjZGVmaW5lIFJVTlRJTUVcXHRcXHQoMjApXFxuLSNkZWZpbmUgTUFYX1JFVFJJRVNcXHQxMDBcXG4gI2RlZmluZSBBTElHTih4LCBhKVxcdCgoKHgpICsgKGEgLSAxKSkgXFx1MDAyNiAofigoYSkgLSAxKSkpXFxuIFxcbiBIVUdFVExCX1NFVFVQX0RFRkFVTFRfUEFHRVMoMSlcXG5AQCAtMTEwLDcgKzEwOSw3IEBAIGludCBtaWdyYXRlKHVpbnQ2NF90ICpwdHIsIGludCBuMSwgaW50IG4yKVxcbiBcXHRpbnQgcmV0LCB0bXA7XFxuIFxcdGludCBzdGF0dXMgPSAwO1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWMgdHMxLCB0czI7XFxuLVxcdGludCBmYWlsdXJlcyA9IDA7XFxuK1xcdGludCBzdWNjZXNzID0gMDtcXG4gXFxuIFxcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnRzMSkpXFxuIFxcdFxcdHJldHVybiAtMTtcXG5AQCAtMTE5LDI5ICsxMTgsMzMgQEAgaW50IG1pZ3JhdGUodWludDY0X3QgKnB0ciwgaW50IG4xLCBpbnQgbjIpXFxuIFxcdFxcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnRzMikpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFxuLVxcdFxcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcXHUwMDNlPSBSVU5USU1FKVxcbi1cXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0aWYgKHRzMi50dl9zZWMgLSB0czEudHZfc2VjIFxcdTAwM2U9IFJVTlRJTUUpIHtcXG4rXFx0XFx0XFx0LyogUmVhY2hpbmcgYm90aCB0YXJnZXRzIHZlcmlmaWVzIGEgY3Jvc3Mtbm9kZSBtb3ZlLiAqL1xcbitcXHRcXHRcXHRpZiAoc3VjY2VzcyBcXHUwMDNlPSAyKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLTI7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJldCA9IG1vdmVfcGFnZXMoMCwgMSwgKHZvaWQgKiopIFxcdTAwMjZwdHIsIFxcdTAwMjZuMiwgXFx1MDAyNnN0YXR1cyxcXG4gXFx0XFx0XFx0XFx0TVBPTF9NRl9NT1ZFX0FMTCk7XFxuLVxcdFxcdGlmIChyZXQpIHtcXG4tXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNlIDApIHtcXG4tXFx0XFx0XFx0XFx0LyogTWlncmF0aW9uIGlzIGJlc3QgZWZmb3J0OyB0cnkgYWdhaW4gKi9cXG4tXFx0XFx0XFx0XFx0aWYgKCsrZmFpbHVyZXMgXFx1MDAzYyBNQVhfUkVUUklFUylcXG4tXFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdFxcdHByaW50ZihcXFwiRGlkbid0IG1pZ3JhdGUgJWQgcGFnZXNcXFxcblxcXCIsIHJldCk7XFxuLVxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRwZXJyb3IoXFxcIkNvdWxkbid0IG1pZ3JhdGUgcGFnZXNcXFwiKTtcXG4tXFx0XFx0XFx0cmV0dXJuIC0yO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRwZXJyb3IoXFxcIkNvdWxkbid0IG1pZ3JhdGUgcGFnZXNcXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbi1cXHRcXHRmYWlsdXJlcyA9IDA7XFxuK1xcdFxcdC8qIE1pZ3JhdGlvbiBpcyBiZXN0IGVmZm9ydC4gVHJ5IGFnYWluICovXFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzZSAwIHx8IHN0YXR1cyBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAoc3RhdHVzICE9IG4yKSB7XFxuK1xcdFxcdFxcdHByaW50ZihcXFwiUGFnZSBpcyBvbiBub2RlICVkIGluc3RlYWQgb2YgdGFyZ2V0IG5vZGUgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBzdGF0dXMsIG4yKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4rXFx0XFx0fVxcbitcXHRcXHRzdWNjZXNzKys7XFxuIFxcdFxcdHRtcCA9IG4yO1xcbiBcXHRcXHRuMiA9IG4xO1xcbiBcXHRcXHRuMSA9IHRtcDtcXG4gXFx0fVxcbi1cXG4tXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHZvaWQgKmFjY2Vzc19tZW0odm9pZCAqcHRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNTowOTo1OC40NjA1ODY2MzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjYwMDEzMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRkYTMwNWMxMWQxNjVjNDgzMWZlNzU1YTA3YjE5NjEzNmY4OGUzYzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxNTowOTo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY293LmNcbmluZGV4IDBjNjI3ZWE4OWZmN2IyLi5jMWI4OTIwZTI5MzQyNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuY1xuQEAgLTE3MTgsOCArMTcxOCwxMyBAQCBzdGF0aWMgdm9pZCBydW5fd2l0aF90bXBmaWxlKG5vbl9hbm9uX3Rlc3RfZm4gZm4sIGNvbnN0IGNoYXIgKmRlc2MpXG4gXG4gXHQvKiBGaWxlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHBhZ2UgZmlsbGVkIHdpdGggemVyb2VzLiAqL1xuIFx0aWYgKGZhbGxvY2F0ZShmZCwgMCwgMCwgcGFnZXNpemUpKSB7XG4tXHRcdGtzZnRfcGVycm9yKFwiZmFsbG9jYXRlKCkgZmFpbGVkXCIpO1xuLVx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9GQUlMKTtcbitcdFx0aWYgKGVycm5vID09IEVPUE5PVFNVUFApIHtcbitcdFx0XHRrc2Z0X3ByaW50X21zZyhcImZhbGxvY2F0ZSgpIG5vdCBzdXBwb3J0ZWQgYnkgZmlsZXN5c3RlbVxcblwiKTtcbitcdFx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9TS0lQKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRrc2Z0X3BlcnJvcihcImZhbGxvY2F0ZSgpIGZhaWxlZFwiKTtcbitcdFx0XHRsb2dfdGVzdF9yZXN1bHQoS1NGVF9GQUlMKTtcbitcdFx0fVxuIFx0XHRnb3RvIGNsb3NlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2d1YXJkLXJlZ2lvbnMuY1xuaW5kZXggYjIxZGYzMDQwYjFjN2MuLjVjOGVjM2NhNzVkN2QyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZ3VhcmQtcmVnaW9ucy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ndWFyZC1yZWdpb25zLmNcbkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBURVNUX0YoZ3VhcmRfcmVnaW9ucywgaG9sZV9wdW5jaClcbiB7XG4gXHRjb25zdCB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSA9IHNlbGYtXHUwMDNlcGFnZV9zaXplO1xuIFx0Y2hhciAqcHRyO1xuLVx0aW50IGk7XG4rXHRpbnQgaSwgcmV0O1xuIFxuIFx0aWYgKHZhcmlhbnQtXHUwMDNlYmFja2luZyA9PSBBTk9OX0JBQ0tFRClcbiBcdFx0U0tJUChyZXR1cm4sIFwiVHJ1bmNhdGlvbiB0ZXN0IHNwZWNpZmljIHRvIGZpbGUtYmFja2VkXCIpO1xuQEAgLTE5NDQsOCArMTk0NCwxMiBAQCBURVNUX0YoZ3VhcmRfcmVnaW9ucywgaG9sZV9wdW5jaClcbiBcdH1cbiBcbiBcdC8qIE5vdyBob2xlIHB1bmNoIHRoZSBndWFyZGVkIHJlZ2lvbi4gKi9cbi1cdEFTU0VSVF9FUShtYWR2aXNlKFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSxcbi1cdFx0XHQgIE1BRFZfUkVNT1ZFKSwgMCk7XG4rXHRyZXQgPSBtYWR2aXNlKFx1MDAyNnB0clszICogcGFnZV9zaXplXSwgNCAqIHBhZ2Vfc2l6ZSwgTUFEVl9SRU1PVkUpO1xuK1x0aWYgKHJldCA9PSAtMSBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRU9QTk9UU1VQUCkge1xuK1x0XHRBU1NFUlRfRVEobXVubWFwKHB0ciwgMTAgKiBwYWdlX3NpemUpLCAwKTtcbitcdFx0U0tJUChyZXR1cm4sIFwiTUFEVl9SRU1PVkUgbm90IHN1cHBvcnRlZCBieSBmaWxlc3lzdGVtXCIpO1xuK1x0fVxuK1x0QVNTRVJUX0VRKHJldCwgMCk7XG4gXG4gXHQvKiBFbnN1cmUgZ3VhcmQgcmVnaW9ucyByZW1haW4uICovXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAxMDsgaSsrKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va2h1Z2VwYWdlZC5jXG5pbmRleCAxMGU4ZGVkY2IwODdkYy4uNTRlODg4ZWI0OGJiY2IgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9raHVnZXBhZ2VkLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuY1xuQEAgLTEwMCw2ICsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2tpcChjb25zdCBjaGFyICptc2cpXG4gXHRleGl0X3N0YXR1cyA9IEtTRlRfU0tJUDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgaXNfc3dhcF9lbmFibGVkKHZvaWQpXG4re1xuK1x0Y2hhciBidWZbTUFYX0xJTkVfTEVOR1RIXTtcbitcdEZJTEUgKmZpbGU7XG4rXHRib29sIGVuYWJsZWQgPSBmYWxzZTtcbitcbitcdGZpbGUgPSBmb3BlbihcIi9wcm9jL3N3YXBzXCIsIFwiclwiKTtcbitcdGlmICghZmlsZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHQvKiBDaGVjayBmb3IgZmlyc3QgYWN0aXZlIHN3YXAgZW50cnkuICovXG4rXHRpZiAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZmlsZSkpXG4rXHRcdGVuYWJsZWQgPSB0cnVlO1xuK1xuK291dDpcbitcdGZjbG9zZShmaWxlKTtcbitcdHJldHVybiBlbmFibGVkO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzYXZlX3NldHRpbmdzKHZvaWQpXG4ge1xuIFx0a3NmdF9wcmludF9tc2coXCJTYXZlIFRIUCBhbmQga2h1Z2VwYWdlZCBzZXR0aW5ncy4uLlwiKTtcbkBAIC03MzQsMTAgKzc1NiwxNiBAQCBzdGF0aWMgdm9pZCBjb2xsYXBzZV9zd2FwaW5fc2luZ2xlX3B0ZShzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcFxuIHtcbiBcdHZvaWQgKnA7XG4gXG4rXHRrc2Z0X3ByaW50X21zZyhcIlN3YXBvdXQgb25lIHBhZ2UuLi5cIik7XG4rXHRpZiAoIWlzX3N3YXBfZW5hYmxlZCgpKSB7XG4rXHRcdHNraXAoXCJObyBhY3RpdmUgc3dhcFwiKTtcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9yZXBvcnQoZXhpdF9zdGF0dXMsIFwiJXNcXG5cIiwgX19mdW5jX18pO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4gXHRwID0gb3BzLVx1MDAzZXNldHVwX2FyZWEoMSk7XG4gXHRvcHMtXHUwMDNlZmF1bHQocCwgMCwgaHBhZ2VfcG1kX3NpemUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCJTd2Fwb3V0IG9uZSBwYWdlLi4uXCIpO1xuIFx0aWYgKG1hZHZpc2UocCwgcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXCJtYWR2aXNlKE1BRFZfUEFHRU9VVClcIik7XG4gXHRpZiAoY2hlY2tfc3dhcChwLCBwYWdlX3NpemUpKSB7XG5AQCAtNzYwLDEwICs3ODgsMTYgQEAgc3RhdGljIHZvaWQgY29sbGFwc2VfbWF4X3B0ZXNfc3dhcChzdHJ1Y3QgY29sbGFwc2VfY29udGV4dCAqYywgc3RydWN0IG1lbV9vcHMgKm9cbiBcdGludCBtYXhfcHRlc19zd2FwID0gdGhwX3JlYWRfbnVtKFwia2h1Z2VwYWdlZC9tYXhfcHRlc19zd2FwXCIpO1xuIFx0dm9pZCAqcDtcbiBcbitcdGtzZnRfcHJpbnRfbXNnKFwiU3dhcG91dCAlZCBvZiAlZCBwYWdlcy4uLlwiLCBtYXhfcHRlc19zd2FwICsgMSwgaHBhZ2VfcG1kX25yKTtcbitcdGlmICghaXNfc3dhcF9lbmFibGVkKCkpIHtcbitcdFx0c2tpcChcIk5vIGFjdGl2ZSBzd2FwXCIpO1xuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3JlcG9ydChleGl0X3N0YXR1cywgXCIlc1xcblwiLCBfX2Z1bmNfXyk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHAgPSBvcHMtXHUwMDNlc2V0dXBfYXJlYSgxKTtcbiBcdG9wcy1cdTAwM2VmYXVsdChwLCAwLCBocGFnZV9wbWRfc2l6ZSk7XG4gXG4tXHRrc2Z0X3ByaW50X21zZyhcIlN3YXBvdXQgJWQgb2YgJWQgcGFnZXMuLi5cIiwgbWF4X3B0ZXNfc3dhcCArIDEsIGhwYWdlX3BtZF9ucik7XG4gXHRpZiAobWFkdmlzZShwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplLCBNQURWX1BBR0VPVVQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoXCJtYWR2aXNlKE1BRFZfUEFHRU9VVClcIik7XG4gXHRpZiAoY2hlY2tfc3dhcChwLCAobWF4X3B0ZXNfc3dhcCArIDEpICogcGFnZV9zaXplKSkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21lbW9yeS1mYWlsdXJlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXG5pbmRleCAwMzJlZDk1MjA1N2M2Mi4uM2M3MjA4NGY1N2U4YjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tZW1vcnktZmFpbHVyZS5jXG5AQCAtMjgzLDggKzI4MywxMCBAQCBURVNUX0YobWVtb3J5X2ZhaWx1cmUsIGNsZWFuX3BhZ2VjYWNoZSlcbiBcdGlmIChmZCBcdTAwM2MgMClcbiBcdFx0U0tJUChyZXR1cm4sIFwiZmFpbGVkIHRvIG9wZW4gdGVzdCBmaWxlLlxcblwiKTtcbiBcdGZzX3R5cGUgPSBnZXRfZnNfdHlwZShmZCk7XG4tXHRpZiAoIWZzX3R5cGUgfHwgZnNfdHlwZSA9PSBUTVBGU19NQUdJQylcbitcdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKSB7XG4rXHRcdGNsb3NlKGZkKTtcbiBcdFx0U0tJUChyZXR1cm4sIFwidW5zdXBwb3J0ZWQgZmlsZXN5c3RlbSA6JXhcXG5cIiwgZnNfdHlwZSk7XG4rXHR9XG4gXG4gXHRhZGRyID0gbW1hcCgwLCBzZWxmLVx1MDAzZXBhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcbiBcdFx0ICAgIE1BUF9TSEFSRUQsIGZkLCAwKTtcbkBAIC0zMjUsOCArMzI3LDExIEBAIFRFU1RfRihtZW1vcnlfZmFpbHVyZSwgZGlydHlfcGFnZWNhY2hlKVxuIFx0aWYgKGZkIFx1MDAzYyAwKVxuIFx0XHRTS0lQKHJldHVybiwgXCJmYWlsZWQgdG8gb3BlbiB0ZXN0IGZpbGUuXFxuXCIpO1xuIFx0ZnNfdHlwZSA9IGdldF9mc190eXBlKGZkKTtcbi1cdGlmICghZnNfdHlwZSB8fCBmc190eXBlID09IFRNUEZTX01BR0lDKVxuK1x0aWYgKCFmc190eXBlIHx8IGZzX3R5cGUgPT0gVE1QRlNfTUFHSUMgfHxcbitcdCAgICAoZnNfdHlwZSA9PSBORlNfU1VQRVJfTUFHSUMgXHUwMDI2XHUwMDI2IHZhcmlhbnQtXHUwMDNldHlwZSA9PSBNQURWX0hBUkQpKSB7XG4rXHRcdGNsb3NlKGZkKTtcbiBcdFx0U0tJUChyZXR1cm4sIFwidW5zdXBwb3J0ZWQgZmlsZXN5c3RlbSA6JXhcXG5cIiwgZnNfdHlwZSk7XG4rXHR9XG4gXG4gXHRhZGRyID0gbW1hcCgwLCBzZWxmLVx1MDAzZXBhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcbiBcdFx0ICAgIE1BUF9TSEFSRUQsIGZkLCAwKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21pZ3JhdGlvbi5jXG5pbmRleCAyOWY3NDkyNDUzZDQzOS4uNGQ1NWE0MjQwNThhOWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9taWdyYXRpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbWlncmF0aW9uLmNcbkBAIC03LDcgKzcsNyBAQFxuICNpbmNsdWRlIFwia3NlbGZ0ZXN0X2hhcm5lc3MuaFwiXG4gI2luY2x1ZGUgXCJodWdlcGFnZV9zZXR0aW5ncy5oXCJcbiBcbi0jaW5jbHVkZSBcdTAwM2NzdHJpbmdzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3B0aHJlYWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY251bWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY251bWFpZi5oXHUwMDNlXG5AQCAtMjAsNyArMjAsNiBAQFxuIFxuICNkZWZpbmUgVFdPTUVHXHRcdCgyXHUwMDNjXHUwMDNjMjApXG4gI2RlZmluZSBSVU5USU1FXHRcdCgyMClcbi0jZGVmaW5lIE1BWF9SRVRSSUVTXHQxMDBcbiAjZGVmaW5lIEFMSUdOKHgsIGEpXHQoKCh4KSArIChhIC0gMSkpIFx1MDAyNiAofigoYSkgLSAxKSkpXG4gXG4gSFVHRVRMQl9TRVRVUF9ERUZBVUxUX1BBR0VTKDEpXG5AQCAtMTEwLDcgKzEwOSw3IEBAIGludCBtaWdyYXRlKHVpbnQ2NF90ICpwdHIsIGludCBuMSwgaW50IG4yKVxuIFx0aW50IHJldCwgdG1wO1xuIFx0aW50IHN0YXR1cyA9IDA7XG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHMxLCB0czI7XG4tXHRpbnQgZmFpbHVyZXMgPSAwO1xuK1x0aW50IHN1Y2Nlc3MgPSAwO1xuIFxuIFx0aWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZ0czEpKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtMTE5LDI5ICsxMTgsMzMgQEAgaW50IG1pZ3JhdGUodWludDY0X3QgKnB0ciwgaW50IG4xLCBpbnQgbjIpXG4gXHRcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMyKSlcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcdTAwM2U9IFJVTlRJTUUpXG4tXHRcdFx0cmV0dXJuIDA7XG4rXHRcdGlmICh0czIudHZfc2VjIC0gdHMxLnR2X3NlYyBcdTAwM2U9IFJVTlRJTUUpIHtcbitcdFx0XHQvKiBSZWFjaGluZyBib3RoIHRhcmdldHMgdmVyaWZpZXMgYSBjcm9zcy1ub2RlIG1vdmUuICovXG4rXHRcdFx0aWYgKHN1Y2Nlc3MgXHUwMDNlPSAyKVxuK1x0XHRcdFx0cmV0dXJuIDA7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0cmV0dXJuIC0yO1xuK1x0XHR9XG4gXG4gXHRcdHJldCA9IG1vdmVfcGFnZXMoMCwgMSwgKHZvaWQgKiopIFx1MDAyNnB0ciwgXHUwMDI2bjIsIFx1MDAyNnN0YXR1cyxcbiBcdFx0XHRcdE1QT0xfTUZfTU9WRV9BTEwpO1xuLVx0XHRpZiAocmV0KSB7XG4tXHRcdFx0aWYgKHJldCBcdTAwM2UgMCkge1xuLVx0XHRcdFx0LyogTWlncmF0aW9uIGlzIGJlc3QgZWZmb3J0OyB0cnkgYWdhaW4gKi9cbi1cdFx0XHRcdGlmICgrK2ZhaWx1cmVzIFx1MDAzYyBNQVhfUkVUUklFUylcbi1cdFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0XHRwcmludGYoXCJEaWRuJ3QgbWlncmF0ZSAlZCBwYWdlc1xcblwiLCByZXQpO1xuLVx0XHRcdH1cbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRwZXJyb3IoXCJDb3VsZG4ndCBtaWdyYXRlIHBhZ2VzXCIpO1xuLVx0XHRcdHJldHVybiAtMjtcbitcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdHBlcnJvcihcIkNvdWxkbid0IG1pZ3JhdGUgcGFnZXNcIik7XG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuLVx0XHRmYWlsdXJlcyA9IDA7XG4rXHRcdC8qIE1pZ3JhdGlvbiBpcyBiZXN0IGVmZm9ydC4gVHJ5IGFnYWluICovXG4rXHRcdGlmIChyZXQgXHUwMDNlIDAgfHwgc3RhdHVzIFx1MDAzYyAwKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRpZiAoc3RhdHVzICE9IG4yKSB7XG4rXHRcdFx0cHJpbnRmKFwiUGFnZSBpcyBvbiBub2RlICVkIGluc3RlYWQgb2YgdGFyZ2V0IG5vZGUgJWRcXG5cIixcbitcdFx0XHQgICAgICAgc3RhdHVzLCBuMik7XG4rXHRcdFx0cmV0dXJuIHN0YXR1cztcbitcdFx0fVxuK1x0XHRzdWNjZXNzKys7XG4gXHRcdHRtcCA9IG4yO1xuIFx0XHRuMiA9IG4xO1xuIFx0XHRuMSA9IHRtcDtcbiBcdH1cbi1cbi1cdHJldHVybiAwO1xuIH1cbiBcbiB2b2lkICphY2Nlc3NfbWVtKHZvaWQgKnB0cilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE1OjA5OjU4LjQ2MDU4ODU1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NTk5ODc1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggUmV2aWV3OiBXb3J0aEZ1enppbmcgRGV0ZXJtaW5hdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIHRhcmdldHMgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9gLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGVzZSBhcyBzZWxmLXRlc3RzIOKAkyB1c2Vyc3BhY2UgdGVzdCBwcm9ncmFtcyBkZXNpZ25lZCB0byBleGVyY2lzZSBzcGVjaWZpYyBrZXJuZWwgc3Vic3lzdGVtcywgaW4gdGhpcyBjYXNlLCBtZW1vcnkgbWFuYWdlbWVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgbW9kaWZ5aW5nIHNlbGZ0ZXN0cyAqcGVyIHNlKiBkb2Vzbid0IGRpcmVjdGx5IGltcGFjdCB0aGUga2VybmVsJ3MgY29yZSBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyB3aGF0IHRoZSBwcm9tcHQgaXMgY29uY2VybmVkIGFib3V0LlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBtZSB0byBmbGFnIHBhdGNoZXMgdGhhdCBpbnRyb2R1Y2UgKmZ1bmN0aW9uYWwgY2hhbmdlcyogdG8gdGhlIGtlcm5lbCB0aGF0IHdhcnJhbnQgZnV6emluZy4gSXQgbGlzdHMgYSBzZXJpZXMgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBgV29ydGhGdXp6aW5nPWZhbHNlYCBzaG91bGQgYmUgcmV0dXJuZWQuIENydWNpYWxseSwgdGhlIHByb21wdCBzdGF0ZXM6IFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyBhbnkga2VybmVsIGNvZGUgdGhhdCBpcyBtb2RpZmllZC4gTG9va2luZyBtb3JlIGNsb3NlbHksIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHNlbGZ0ZXN0IGZpbGVzOiBgY293LmNgLCBgZ3VhcmQtcmVnaW9ucy5jYCwgYGtodWdlcGFnZWQuY2AsIGBtZW1vcnktZmFpbHVyZS5jYCwgYW5kIGBtaWdyYXRpb24uY2AuIEkgd2lsbCBkb3VibGUgY2hlY2sgbXkgYW5hbHlzaXMgd2l0aCBhIHRob3JvdWdoIHJldmlldyBvZiB0aGUgY29kZS5cblxuR2l2ZW4gdGhhdCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgKnNvbGVseSogd2l0aGluIHRoZXNlIHVzZXJzcGFjZSB0ZXN0IHByb2dyYW1zLCBpdCdzIHNhZmUgdG8gY29uY2x1ZGUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbid0IGNvbnN0aXR1dGUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwncyBjb3JlIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUuIFRoaXMgaXMgcHVyZSB1c2Vyc3BhY2UgdGVzdCBjb2RlLlxuXG5UaGVyZWZvcmUsIG15IGFzc2Vzc21lbnQgaXM6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0cyBvbmx5LCBhbmQgdGhlc2UgZG8gbm90IG1ha2UgYW55IGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0NSwiT3V0cHV0VG9rZW5zIjo2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE1OjEwOjA2LjEyMDU3ODY1N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowbftqc[1] Phase: Running StartedAt: 2026-07-25 15:10:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbftqc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 15:10:17 +0000 UTC FinishedAt: 2026-07-25 15:10:23 +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,}