Name: series-workflowl5zwq Phase: Failed StartedAt: 2026-07-02 08:12:49 +0000 UTC FinishedAt: 2026-07-02 08:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl5zwq[0] Phase: Succeeded StartedAt: 2026-07-02 08:12:49 +0000 UTC FinishedAt: 2026-07-02 08:22:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl5zwq[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 08:12:49 +0000 UTC FinishedAt: 2026-07-02 08:22:12 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY4MDJkMjYxZDczYzczYWYxZWM4NDllNjhlNDZiMTI2NTRjYjk2YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA4OjIxOjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcbmluZGV4IDZlZjkwOGFkZjNhNGE1Li5jOTU4OTAyNmRhOGQ2MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9idGYuY1xuQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRjYXNlIEJURl9LSU5EX1NUUlVDVDpcbiBcdGNhc2UgQlRGX0tJTkRfVU5JT046IHtcbiBcdFx0Y29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm0gPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpO1xuLVx0XHRfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xuIFxuIFx0XHRpZiAoanNvbl9vdXRwdXQpIHtcbiBcdFx0XHRqc29ud191aW50X2ZpZWxkKHcsIFwmIzM0O3NpemVcJiMzNDssIHQtXHUwMDNlc2l6ZSk7XG5AQCAtMTkzLDcgJiM0MzsxOTMsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdFx0XHRjb25zdCBjaGFyICpuYW1lID0gYnRmX3N0cihidGYsIG0tXHUwMDNlbmFtZV9vZmYpO1xuIFx0XHRcdF9fdTMyIGJpdF9vZmYsIGJpdF9zejtcbiBcbi1cdFx0XHRpZiAoQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKSkge1xuJiM0MztcdFx0XHRpZiAoYnRmX2tmbGFnKHQpKSB7XG4gXHRcdFx0XHRiaXRfb2ZmID0gQlRGX01FTUJFUl9CSVRfT0ZGU0VUKG0tXHUwMDNlb2Zmc2V0KTtcbiBcdFx0XHRcdGJpdF9zeiA9IEJURl9NRU1CRVJfQklURklFTERfU0laRShtLVx1MDAzZW9mZnNldCk7XG4gXHRcdFx0fSBlbHNlIHtcbkBAIC0yMjQsNyAmIzQzOzIyNCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9FTlVNOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfZW51bSAqdiA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4mIzQzO1x0XHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XG4gXHRcdGNvbnN0IGNoYXIgKmVuY29kaW5nO1xuIFxuIFx0XHRlbmNvZGluZyA9IGJ0Zl9rZmxhZyh0KSA/IFwmIzM0O1NJR05FRFwmIzM0OyA6IFwmIzM0O1VOU0lHTkVEXCYjMzQ7O1xuQEAgLTMwMCw4ICYjNDM7MzAwLDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GV0Q6IHtcbi1cdFx0Y29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LVx1MDAzZWluZm8pID8gXCYjMzQ7dW5pb25cJiMzNDtcbi1cdFx0XHRcdFx0XHRcdCAgICAgICA6IFwmIzM0O3N0cnVjdFwmIzM0OztcbiYjNDM7XHRcdGNvbnN0IGNoYXIgKmZ3ZF9raW5kID0gYnRmX2tmbGFnKHQpID8gXCYjMzQ7dW5pb25cJiMzNDsgOiBcJiMzNDtzdHJ1Y3RcJiMzNDs7XG4gXG4gXHRcdGlmIChqc29uX291dHB1dClcbiBcdFx0XHRqc29ud19zdHJpbmdfZmllbGQodywgXCYjMzQ7ZndkX2tpbmRcJiMzNDssIGZ3ZF9raW5kKTtcbkBAIC0zMjIsNyAmIzQzOzMyMSw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpO1xuLVx0XHRfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xuIFxuIFx0XHRpZiAoanNvbl9vdXRwdXQpIHtcbiBcdFx0XHRqc29ud191aW50X2ZpZWxkKHcsIFwmIzM0O3JldF90eXBlX2lkXCYjMzQ7LCB0LVx1MDAzZXR5cGUpO1xuQEAgLTM2NSw3ICYjNDM7MzY0LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRjYXNlIEJURl9LSU5EX0RBVEFTRUM6IHtcbiBcdFx0Y29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdiA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdnQ7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4mIzQzO1x0XHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XG4gXG4gXHRcdGlmIChqc29uX291dHB1dCkge1xuIFx0XHRcdGpzb253X3VpbnRfZmllbGQodywgXCYjMzQ7c2l6ZVwmIzM0OywgdC1cdTAwM2VzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmMgYi90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcbmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jXG5AQCAtNDc2LDggJiM0Mzs0NzYsOCBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfc3RydWN0KGNvbnN0IHN0cnVjdCBidGZfZHVtcGVyICpkLCBfX3UzMiB0eXBlX2lkLFxuIFx0aWYgKCF0KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdGtpbmRfZmxhZyA9IEJURl9JTkZPX0tGTEFHKHQtXHUwMDNlaW5mbyk7XG4tXHR2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdGtpbmRfZmxhZyA9IGJ0Zl9rZmxhZyh0KTtcbiYjNDM7XHR2bGVuID0gYnRmX3ZsZW4odCk7XG4gXHRqc29ud19zdGFydF9vYmplY3QoZC1cdTAwM2Vqdyk7XG4gXHRtID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgJiM0MzsgMSk7XG4gXG5AQCAtNTM1LDcgJiM0Mzs1MzUsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZGF0YXNlYyhjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcbiBcdGlmICghdClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHR2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdHZsZW4gPSBidGZfdmxlbih0KTtcbiBcdHZzaSA9IChzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICopKHQgJiM0MzsgMSk7XG4gXG4gXHRqc29ud19zdGFydF9vYmplY3QoZC1cdTAwM2Vqdyk7XG5AQCAtNTU3LDcgJiM0Mzs1NTcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZG9fdHlwZShjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQgPSBidGZfX3R5cGVfYnlfaWQoZC1cdTAwM2VidGYsIHR5cGVfaWQpO1xuIFxuLVx0c3dpdGNoIChCVEZfSU5GT19LSU5EKHQtXHUwMDNlaW5mbykpIHtcbiYjNDM7XHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XG4gXHRjYXNlIEJURl9LSU5EX0lOVDpcbiBcdFx0cmV0dXJuIGJ0Zl9kdW1wZXJfaW50KHQsIGJpdF9vZmZzZXQsIGRhdGEsIGQtXHUwMDNlancsXG4gXHRcdFx0XHQgICAgIGQtXHUwMDNlaXNfcGxhaW5fdGV4dCk7XG5AQCAtNjMxLDcgJiM0Mzs2MzEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxuIFxuIFx0dCA9IGJ0Zl9fdHlwZV9ieV9pZChidGYsIHR5cGVfaWQpO1xuIFxuLVx0c3dpdGNoIChCVEZfSU5GT19LSU5EKHQtXHUwMDNlaW5mbykpIHtcbiYjNDM7XHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XG4gXHRjYXNlIEJURl9LSU5EX0lOVDpcbiBcdGNhc2UgQlRGX0tJTkRfVFlQRURFRjpcbiBcdGNhc2UgQlRGX0tJTkRfRkxPQVQ6XG5AQCAtNjYxLDcgJiM0Mzs2NjEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0tJTkRfRldEOlxuIFx0XHRCVEZfUFJJTlRfQVJHKFwmIzM0OyVzICVzIFwmIzM0Oyxcbi1cdFx0XHQgICAgICBCVEZfSU5GT19LRkxBRyh0LVx1MDAzZWluZm8pID8gXCYjMzQ7dW5pb25cJiMzNDsgOiBcJiMzNDtzdHJ1Y3RcJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgIGJ0Zl9rZmxhZyh0KSA/IFwmIzM0O3VuaW9uXCYjMzQ7IDogXCYjMzQ7c3RydWN0XCYjMzQ7LFxuIFx0XHRcdCAgICAgIGJ0Zl9fbmFtZV9ieV9vZmZzZXQoYnRmLCB0LVx1MDAzZW5hbWVfb2ZmKSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVEZfS0lORF9WT0xBVElMRTpcbkBAIC03MTgsNyAmIzQzOzcxOCw3IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBfZnVuYyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNoYXIgKmZ1bmNfc2lnLFxuIFx0XHRCVEZfUFJJTlRfQVJHKFwmIzM0OyVzKFwmIzM0OywgYnRmX19uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpKTtcbiBcdGVsc2VcbiBcdFx0QlRGX1BSSU5UX0FSRyhcJiMzNDsoXCYjMzQ7KTtcbi1cdHZsZW4gPSBCVEZfSU5GT19WTEVOKGZ1bmNfcHJvdG8tXHUwMDNlaW5mbyk7XG4mIzQzO1x0dmxlbiA9IGJ0Zl92bGVuKGZ1bmNfcHJvdG8pO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmxlbjsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGJ0Zl9wYXJhbSAqYXJnID0gXHUwMDI2KChzdHJ1Y3QgYnRmX3BhcmFtICopKGZ1bmNfcHJvdG8gJiM0MzsgMSkpW2ldO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjgwMmQyNjFkNzNjNzNhZjFlYzg0OWU2OGU0NmIxMjY1NGNiOTZiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDg6MjE6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9idGYuYyBiL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jCmluZGV4IDZlZjkwOGFkZjNhNGE1Li5jOTU4OTAyNmRhOGQ2MiAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmMKQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsCiAJY2FzZSBCVEZfS0lORF9TVFJVQ1Q6CiAJY2FzZSBCVEZfS0lORF9VTklPTjogewogCQljb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbSA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7Ci0JCV9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pOwomIzQzOwkJX191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpOwogCiAJCWlmIChqc29uX291dHB1dCkgewogCQkJanNvbndfdWludF9maWVsZCh3LCAmIzM0O3NpemUmIzM0OywgdC0mZ3Q7c2l6ZSk7CkBAIC0xOTMsNyAmIzQzOzE5Myw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLAogCQkJY29uc3QgY2hhciAqbmFtZSA9IGJ0Zl9zdHIoYnRmLCBtLSZndDtuYW1lX29mZik7CiAJCQlfX3UzMiBiaXRfb2ZmLCBiaXRfc3o7CiAKLQkJCWlmIChCVEZfSU5GT19LRkxBRyh0LSZndDtpbmZvKSkgewomIzQzOwkJCWlmIChidGZfa2ZsYWcodCkpIHsKIAkJCQliaXRfb2ZmID0gQlRGX01FTUJFUl9CSVRfT0ZGU0VUKG0tJmd0O29mZnNldCk7CiAJCQkJYml0X3N6ID0gQlRGX01FTUJFUl9CSVRGSUVMRF9TSVpFKG0tJmd0O29mZnNldCk7CiAJCQl9IGVsc2UgewpAQCAtMjI0LDcgJiM0MzsyMjQsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCwKIAl9CiAJY2FzZSBCVEZfS0lORF9FTlVNOiB7CiAJCWNvbnN0IHN0cnVjdCBidGZfZW51bSAqdiA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7Ci0JCV9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pOwomIzQzOwkJX191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpOwogCQljb25zdCBjaGFyICplbmNvZGluZzsKIAogCQllbmNvZGluZyA9IGJ0Zl9rZmxhZyh0KSA/ICYjMzQ7U0lHTkVEJiMzNDsgOiAmIzM0O1VOU0lHTkVEJiMzNDs7CkBAIC0zMDAsOCAmIzQzOzMwMCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLAogCQlicmVhazsKIAl9CiAJY2FzZSBCVEZfS0lORF9GV0Q6IHsKLQkJY29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LSZndDtpbmZvKSA/ICYjMzQ7dW5pb24mIzM0OwotCQkJCQkJCSAgICAgICA6ICYjMzQ7c3RydWN0JiMzNDs7CiYjNDM7CQljb25zdCBjaGFyICpmd2Rfa2luZCA9IGJ0Zl9rZmxhZyh0KSA/ICYjMzQ7dW5pb24mIzM0OyA6ICYjMzQ7c3RydWN0JiMzNDs7CiAKIAkJaWYgKGpzb25fb3V0cHV0KQogCQkJanNvbndfc3RyaW5nX2ZpZWxkKHcsICYjMzQ7ZndkX2tpbmQmIzM0OywgZndkX2tpbmQpOwpAQCAtMzIyLDcgJiM0MzszMjEsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCwKIAl9CiAJY2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7CiAJCWNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpOwotCQlfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LSZndDtpbmZvKTsKJiM0MzsJCV9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTsKIAogCQlpZiAoanNvbl9vdXRwdXQpIHsKIAkJCWpzb253X3VpbnRfZmllbGQodywgJiMzNDtyZXRfdHlwZV9pZCYjMzQ7LCB0LSZndDt0eXBlKTsKQEAgLTM2NSw3ICYjNDM7MzY0LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsCiAJY2FzZSBCVEZfS0lORF9EQVRBU0VDOiB7CiAJCWNvbnN0IHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpOwogCQljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnZ0OwotCQlfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LSZndDtpbmZvKTsKJiM0MzsJCV9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTsKIAogCQlpZiAoanNvbl9vdXRwdXQpIHsKIAkJCWpzb253X3VpbnRfZmllbGQodywgJiMzNDtzaXplJiMzNDssIHQtJmd0O3NpemUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jCmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuYwpAQCAtNDc2LDggJiM0Mzs0NzYsOCBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfc3RydWN0KGNvbnN0IHN0cnVjdCBidGZfZHVtcGVyICpkLCBfX3UzMiB0eXBlX2lkLAogCWlmICghdCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlraW5kX2ZsYWcgPSBCVEZfSU5GT19LRkxBRyh0LSZndDtpbmZvKTsKLQl2bGVuID0gQlRGX0lORk9fVkxFTih0LSZndDtpbmZvKTsKJiM0MzsJa2luZF9mbGFnID0gYnRmX2tmbGFnKHQpOwomIzQzOwl2bGVuID0gYnRmX3ZsZW4odCk7CiAJanNvbndfc3RhcnRfb2JqZWN0KGQtJmd0O2p3KTsKIAltID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgJiM0MzsgMSk7CiAKQEAgLTUzNSw3ICYjNDM7NTM1LDcgQEAgc3RhdGljIGludCBidGZfZHVtcGVyX2RhdGFzZWMoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsCiAJaWYgKCF0KQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXZsZW4gPSBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pOwomIzQzOwl2bGVuID0gYnRmX3ZsZW4odCk7CiAJdnNpID0gKHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKikodCAmIzQzOyAxKTsKIAogCWpzb253X3N0YXJ0X29iamVjdChkLSZndDtqdyk7CkBAIC01NTcsNyAmIzQzOzU1Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBlcl9kb190eXBlKGNvbnN0IHN0cnVjdCBidGZfZHVtcGVyICpkLCBfX3UzMiB0eXBlX2lkLAogewogCWNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCA9IGJ0Zl9fdHlwZV9ieV9pZChkLSZndDtidGYsIHR5cGVfaWQpOwogCi0Jc3dpdGNoIChCVEZfSU5GT19LSU5EKHQtJmd0O2luZm8pKSB7CiYjNDM7CXN3aXRjaCAoYnRmX2tpbmQodCkpIHsKIAljYXNlIEJURl9LSU5EX0lOVDoKIAkJcmV0dXJuIGJ0Zl9kdW1wZXJfaW50KHQsIGJpdF9vZmZzZXQsIGRhdGEsIGQtJmd0O2p3LAogCQkJCSAgICAgZC0mZ3Q7aXNfcGxhaW5fdGV4dCk7CkBAIC02MzEsNyAmIzQzOzYzMSw3IEBAIHN0YXRpYyBpbnQgX19idGZfZHVtcGVyX3R5cGVfb25seShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIHR5cGVfaWQsCiAKIAl0ID0gYnRmX190eXBlX2J5X2lkKGJ0ZiwgdHlwZV9pZCk7CiAKLQlzd2l0Y2ggKEJURl9JTkZPX0tJTkQodC0mZ3Q7aW5mbykpIHsKJiM0MzsJc3dpdGNoIChidGZfa2luZCh0KSkgewogCWNhc2UgQlRGX0tJTkRfSU5UOgogCWNhc2UgQlRGX0tJTkRfVFlQRURFRjoKIAljYXNlIEJURl9LSU5EX0ZMT0FUOgpAQCAtNjYxLDcgJiM0Mzs2NjEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLAogCQlicmVhazsKIAljYXNlIEJURl9LSU5EX0ZXRDoKIAkJQlRGX1BSSU5UX0FSRygmIzM0OyVzICVzICYjMzQ7LAotCQkJICAgICAgQlRGX0lORk9fS0ZMQUcodC0mZ3Q7aW5mbykgPyAmIzM0O3VuaW9uJiMzNDsgOiAmIzM0O3N0cnVjdCYjMzQ7LAomIzQzOwkJCSAgICAgIGJ0Zl9rZmxhZyh0KSA/ICYjMzQ7dW5pb24mIzM0OyA6ICYjMzQ7c3RydWN0JiMzNDssCiAJCQkgICAgICBidGZfX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgdC0mZ3Q7bmFtZV9vZmYpKTsKIAkJYnJlYWs7CiAJY2FzZSBCVEZfS0lORF9WT0xBVElMRToKQEAgLTcxOCw3ICYjNDM7NzE4LDcgQEAgc3RhdGljIGludCBidGZfZHVtcF9mdW5jKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY2hhciAqZnVuY19zaWcsCiAJCUJURl9QUklOVF9BUkcoJiMzNDslcygmIzM0OywgYnRmX19uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtJmd0O25hbWVfb2ZmKSk7CiAJZWxzZQogCQlCVEZfUFJJTlRfQVJHKCYjMzQ7KCYjMzQ7KTsKLQl2bGVuID0gQlRGX0lORk9fVkxFTihmdW5jX3Byb3RvLSZndDtpbmZvKTsKJiM0MzsJdmxlbiA9IGJ0Zl92bGVuKGZ1bmNfcHJvdG8pOwogCWZvciAoaSA9IDA7IGkgJmx0OyB2bGVuOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgYnRmX3BhcmFtICphcmcgPSAmYW1wOygoc3RydWN0IGJ0Zl9wYXJhbSAqKShmdW5jX3Byb3RvICYjNDM7IDEpKVtpXTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzAxCgkJCQkJCQlvdXRwdXQ6IDc3CgkJCQkJCQl0aG91Z2h0czogNDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBObyoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcuIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNgIGFuZCBgdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyByZWZhY3RvcmluZyBhIGZldyBtYWNyb3MgbGlrZSBgQlRGX0lORk9fVkxFTmAgaW50byBoZWxwZXIgZnVuY3Rpb25zIHN1Y2ggYXMgYGJ0Zl92bGVuYC4gSXQmIzM5O3MgYWxsIHdpdGhpbiB0aGUgYHRvb2xzL2JwZi9icGZ0b29sL2AgZGlyZWN0b3J5LCB3aGljaCwgYXMgSSByZWNhbGwsIGhvdXNlcyB1c2VyLXNwYWNlIHV0aWxpdGllcy4gTm93LCB0aGUga2V5IGlzIHdoZXRoZXIgdGhpcyBpbXBhY3RzIGtlcm5lbCBsb2dpYy4gKmJwZnRvb2wqIGlzIHVzZXItc3BhY2UsIHNvIGl0JiMzOTtzIG5vdCBleGVjdXRpbmcgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLgoKVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgbW9kaWZpY2F0aW9ucyBsaWtlIHRoaXM6IERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2VzLCBvciBjaGFuZ2VzIHRvIG1hY3Jvcy9jb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uLiBBbHNvLCBjaGFuZ2VzIHRvIHVucmVhY2hhYmxlIGNvZGUgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLCB3aGljaCB0aGlzIGlzIG5vdCBhcyBpdCB3aWxsIGV4ZWN1dGUuCgpTaW5jZSB0aGlzIGlzIHN0cmljdGx5IGEgdXNlci1zcGFjZSB0b29sLCBhbmQgdGhlIHJlZmFjdG9yaW5nIGlzIGEgbm8tb3AgZnJvbSBhbiBleGVjdXRpb24gcGVyc3BlY3RpdmUsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgYnkga2VybmVsIGZ1enppbmcgbGlrZSBzeXprYWxsZXIuIFN5emthbGxlciBpcyBmb2N1c2VkIG9uIHRoZSBrZXJuZWwgaXRzZWxmLCBub3QgdG9vbHMgbGlrZSAqYnBmdG9vbCouIFRoaXMgaXNuJiMzOTt0IHJlYWNoYWJsZSBrZXJuZWwgbG9naWMsIGEgZHJpdmVyLCBvciBhcmNoaXRlY3R1cmUgY29kZS4gVGhlIHBhdGNoIGlzLCBlc3NlbnRpYWxseSwgYSBjb2RlIGNsZWFudXAuCgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgdGhlIGRpZmYgYWdhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBpdCYjMzk7cyAqb25seSogdGhvc2UgdHdvIGZpbGVzIGluIGB0b29scy9icGYvYnBmdG9vbC9gLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIHdpbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGF0IHZhbHVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIGNvZGUgaW4gdG9vbHMvYnBmL2JwZnRvb2wvIGFuZCBwZXJmb3JtcyBhIHNpbXBsZSByZWZhY3RvcmluZyAocmVwbGFjaW5nIG1hY3JvcyB3aXRoIGhlbHBlciBmdW5jdGlvbnMpLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgY29kZSBpbiB0b29scy9icGYvYnBmdG9vbC8gYW5kIHBlcmZvcm1zIGEgc2ltcGxlIHJlZmFjdG9yaW5nIChyZXBsYWNpbmcgbWFjcm9zIHdpdGggaGVscGVyIGZ1bmN0aW9ucykuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODoyMTo1MS43NDg4NDgxNzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg4NjU0MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgY29kZSBpbiB0b29scy9icGYvYnBmdG9vbC8gYW5kIHBlcmZvcm1zIGEgc2ltcGxlIHJlZmFjdG9yaW5nIChyZXBsYWNpbmcgbWFjcm9zIHdpdGggaGVscGVyIGZ1bmN0aW9ucykuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjIxOjUxLjc0ODg1MzQ5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1Njk0MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjgwMmQyNjFkNzNjNzNhZjFlYzg0OWU2OGU0NmIxMjY1NGNiOTZiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyIDA4OjIxOjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcXG5pbmRleCA2ZWY5MDhhZGYzYTRhNS4uYzk1ODkwMjZkYThkNjIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9idGYuY1xcbkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXFxuIFxcdGNhc2UgQlRGX0tJTkRfU1RSVUNUOlxcbiBcXHRjYXNlIEJURl9LSU5EX1VOSU9OOiB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptID0gKGNvbnN0IHZvaWQgKikodCArIDEpO1xcbi1cXHRcXHRfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LVxcdTAwM2VpbmZvKTtcXG4rXFx0XFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xcbiBcXG4gXFx0XFx0aWYgKGpzb25fb3V0cHV0KSB7XFxuIFxcdFxcdFxcdGpzb253X3VpbnRfZmllbGQodywgXFxcInNpemVcXFwiLCB0LVxcdTAwM2VzaXplKTtcXG5AQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxcbiBcXHRcXHRcXHRjb25zdCBjaGFyICpuYW1lID0gYnRmX3N0cihidGYsIG0tXFx1MDAzZW5hbWVfb2ZmKTtcXG4gXFx0XFx0XFx0X191MzIgYml0X29mZiwgYml0X3N6O1xcbiBcXG4tXFx0XFx0XFx0aWYgKEJURl9JTkZPX0tGTEFHKHQtXFx1MDAzZWluZm8pKSB7XFxuK1xcdFxcdFxcdGlmIChidGZfa2ZsYWcodCkpIHtcXG4gXFx0XFx0XFx0XFx0Yml0X29mZiA9IEJURl9NRU1CRVJfQklUX09GRlNFVChtLVxcdTAwM2VvZmZzZXQpO1xcbiBcXHRcXHRcXHRcXHRiaXRfc3ogPSBCVEZfTUVNQkVSX0JJVEZJRUxEX1NJWkUobS1cXHUwMDNlb2Zmc2V0KTtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG5AQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxcbiBcXHR9XFxuIFxcdGNhc2UgQlRGX0tJTkRfRU5VTToge1xcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgYnRmX2VudW0gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XFxuLVxcdFxcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXFx1MDAzZWluZm8pO1xcbitcXHRcXHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XFxuIFxcdFxcdGNvbnN0IGNoYXIgKmVuY29kaW5nO1xcbiBcXG4gXFx0XFx0ZW5jb2RpbmcgPSBidGZfa2ZsYWcodCkgPyBcXFwiU0lHTkVEXFxcIiA6IFxcXCJVTlNJR05FRFxcXCI7XFxuQEAgLTMwMCw4ICszMDAsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0Y2FzZSBCVEZfS0lORF9GV0Q6IHtcXG4tXFx0XFx0Y29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LVxcdTAwM2VpbmZvKSA/IFxcXCJ1bmlvblxcXCJcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIDogXFxcInN0cnVjdFxcXCI7XFxuK1xcdFxcdGNvbnN0IGNoYXIgKmZ3ZF9raW5kID0gYnRmX2tmbGFnKHQpID8gXFxcInVuaW9uXFxcIiA6IFxcXCJzdHJ1Y3RcXFwiO1xcbiBcXG4gXFx0XFx0aWYgKGpzb25fb3V0cHV0KVxcbiBcXHRcXHRcXHRqc29ud19zdHJpbmdfZmllbGQodywgXFxcImZ3ZF9raW5kXFxcIiwgZndkX2tpbmQpO1xcbkBAIC0zMjIsNyArMzIxLDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXFxuIFxcdH1cXG4gXFx0Y2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XFxuLVxcdFxcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXFx1MDAzZWluZm8pO1xcbitcXHRcXHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XFxuIFxcbiBcXHRcXHRpZiAoanNvbl9vdXRwdXQpIHtcXG4gXFx0XFx0XFx0anNvbndfdWludF9maWVsZCh3LCBcXFwicmV0X3R5cGVfaWRcXFwiLCB0LVxcdTAwM2V0eXBlKTtcXG5AQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxcbiBcXHRjYXNlIEJURl9LSU5EX0RBVEFTRUM6IHtcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdiA9IChjb25zdCB2b2lkICopKHQgKyAxKTtcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2dDtcXG4tXFx0XFx0X191MzIgaSwgdmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7XFxuK1xcdFxcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcXG4gXFxuIFxcdFxcdGlmIChqc29uX291dHB1dCkge1xcbiBcXHRcXHRcXHRqc29ud191aW50X2ZpZWxkKHcsIFxcXCJzaXplXFxcIiwgdC1cXHUwMDNlc2l6ZSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuYyBiL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuY1xcbmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDRcXG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcXG5AQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBlcl9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXFxuIFxcdGlmICghdClcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRraW5kX2ZsYWcgPSBCVEZfSU5GT19LRkxBRyh0LVxcdTAwM2VpbmZvKTtcXG4tXFx0dmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7XFxuK1xcdGtpbmRfZmxhZyA9IGJ0Zl9rZmxhZyh0KTtcXG4rXFx0dmxlbiA9IGJ0Zl92bGVuKHQpO1xcbiBcXHRqc29ud19zdGFydF9vYmplY3QoZC1cXHUwMDNlancpO1xcbiBcXHRtID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgKyAxKTtcXG4gXFxuQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZGF0YXNlYyhjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcXG4gXFx0aWYgKCF0KVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXFx1MDAzZWluZm8pO1xcbitcXHR2bGVuID0gYnRmX3ZsZW4odCk7XFxuIFxcdHZzaSA9IChzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICopKHQgKyAxKTtcXG4gXFxuIFxcdGpzb253X3N0YXJ0X29iamVjdChkLVxcdTAwM2Vqdyk7XFxuQEAgLTU1Nyw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZG9fdHlwZShjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQgPSBidGZfX3R5cGVfYnlfaWQoZC1cXHUwMDNlYnRmLCB0eXBlX2lkKTtcXG4gXFxuLVxcdHN3aXRjaCAoQlRGX0lORk9fS0lORCh0LVxcdTAwM2VpbmZvKSkge1xcbitcXHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XFxuIFxcdGNhc2UgQlRGX0tJTkRfSU5UOlxcbiBcXHRcXHRyZXR1cm4gYnRmX2R1bXBlcl9pbnQodCwgYml0X29mZnNldCwgZGF0YSwgZC1cXHUwMDNlancsXFxuIFxcdFxcdFxcdFxcdCAgICAgZC1cXHUwMDNlaXNfcGxhaW5fdGV4dCk7XFxuQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxcbiBcXG4gXFx0dCA9IGJ0Zl9fdHlwZV9ieV9pZChidGYsIHR5cGVfaWQpO1xcbiBcXG4tXFx0c3dpdGNoIChCVEZfSU5GT19LSU5EKHQtXFx1MDAzZWluZm8pKSB7XFxuK1xcdHN3aXRjaCAoYnRmX2tpbmQodCkpIHtcXG4gXFx0Y2FzZSBCVEZfS0lORF9JTlQ6XFxuIFxcdGNhc2UgQlRGX0tJTkRfVFlQRURFRjpcXG4gXFx0Y2FzZSBCVEZfS0lORF9GTE9BVDpcXG5AQCAtNjYxLDcgKzY2MSw3IEBAIHN0YXRpYyBpbnQgX19idGZfZHVtcGVyX3R5cGVfb25seShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIHR5cGVfaWQsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9LSU5EX0ZXRDpcXG4gXFx0XFx0QlRGX1BSSU5UX0FSRyhcXFwiJXMgJXMgXFxcIixcXG4tXFx0XFx0XFx0ICAgICAgQlRGX0lORk9fS0ZMQUcodC1cXHUwMDNlaW5mbykgPyBcXFwidW5pb25cXFwiIDogXFxcInN0cnVjdFxcXCIsXFxuK1xcdFxcdFxcdCAgICAgIGJ0Zl9rZmxhZyh0KSA/IFxcXCJ1bmlvblxcXCIgOiBcXFwic3RydWN0XFxcIixcXG4gXFx0XFx0XFx0ICAgICAgYnRmX19uYW1lX2J5X29mZnNldChidGYsIHQtXFx1MDAzZW5hbWVfb2ZmKSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9LSU5EX1ZPTEFUSUxFOlxcbkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIGludCBidGZfZHVtcF9mdW5jKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY2hhciAqZnVuY19zaWcsXFxuIFxcdFxcdEJURl9QUklOVF9BUkcoXFxcIiVzKFxcXCIsIGJ0Zl9fbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLVxcdTAwM2VuYW1lX29mZikpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdEJURl9QUklOVF9BUkcoXFxcIihcXFwiKTtcXG4tXFx0dmxlbiA9IEJURl9JTkZPX1ZMRU4oZnVuY19wcm90by1cXHUwMDNlaW5mbyk7XFxuK1xcdHZsZW4gPSBidGZfdmxlbihmdW5jX3Byb3RvKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZsZW47IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgYnRmX3BhcmFtICphcmcgPSBcXHUwMDI2KChzdHJ1Y3QgYnRmX3BhcmFtICopKGZ1bmNfcHJvdG8gKyAxKSlbaV07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODoyMTo1Mi4xOTUyODM2MTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDIyMTMxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmODAyZDI2MWQ3M2M3M2FmMWVjODQ5ZTY4ZTQ2YjEyNjU0Y2I5NmIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwODoyMTo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcbmluZGV4IDZlZjkwOGFkZjNhNGE1Li5jOTU4OTAyNmRhOGQ2MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9idGYuY1xuQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdGNhc2UgQlRGX0tJTkRfU1RSVUNUOlxuIFx0Y2FzZSBCVEZfS0lORF9VTklPTjoge1xuIFx0XHRjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbSA9IChjb25zdCB2b2lkICopKHQgKyAxKTtcbi1cdFx0X191MzIgaSwgdmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cdTAwM2VpbmZvKTtcbitcdFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xuIFxuIFx0XHRpZiAoanNvbl9vdXRwdXQpIHtcbiBcdFx0XHRqc29ud191aW50X2ZpZWxkKHcsIFwic2l6ZVwiLCB0LVx1MDAzZXNpemUpO1xuQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdFx0XHRjb25zdCBjaGFyICpuYW1lID0gYnRmX3N0cihidGYsIG0tXHUwMDNlbmFtZV9vZmYpO1xuIFx0XHRcdF9fdTMyIGJpdF9vZmYsIGJpdF9zejtcbiBcbi1cdFx0XHRpZiAoQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKSkge1xuK1x0XHRcdGlmIChidGZfa2ZsYWcodCkpIHtcbiBcdFx0XHRcdGJpdF9vZmYgPSBCVEZfTUVNQkVSX0JJVF9PRkZTRVQobS1cdTAwM2VvZmZzZXQpO1xuIFx0XHRcdFx0Yml0X3N6ID0gQlRGX01FTUJFUl9CSVRGSUVMRF9TSVpFKG0tXHUwMDNlb2Zmc2V0KTtcbiBcdFx0XHR9IGVsc2Uge1xuQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdH1cbiBcdGNhc2UgQlRGX0tJTkRfRU5VTToge1xuIFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2VudW0gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcbiBcdFx0Y29uc3QgY2hhciAqZW5jb2Rpbmc7XG4gXG4gXHRcdGVuY29kaW5nID0gYnRmX2tmbGFnKHQpID8gXCJTSUdORURcIiA6IFwiVU5TSUdORURcIjtcbkBAIC0zMDAsOCArMzAwLDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GV0Q6IHtcbi1cdFx0Y29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LVx1MDAzZWluZm8pID8gXCJ1bmlvblwiXG4tXHRcdFx0XHRcdFx0XHQgICAgICAgOiBcInN0cnVjdFwiO1xuK1x0XHRjb25zdCBjaGFyICpmd2Rfa2luZCA9IGJ0Zl9rZmxhZyh0KSA/IFwidW5pb25cIiA6IFwic3RydWN0XCI7XG4gXG4gXHRcdGlmIChqc29uX291dHB1dClcbiBcdFx0XHRqc29ud19zdHJpbmdfZmllbGQodywgXCJmd2Rfa2luZFwiLCBmd2Rfa2luZCk7XG5AQCAtMzIyLDcgKzMyMSw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcbiBcbiBcdFx0aWYgKGpzb25fb3V0cHV0KSB7XG4gXHRcdFx0anNvbndfdWludF9maWVsZCh3LCBcInJldF90eXBlX2lkXCIsIHQtXHUwMDNldHlwZSk7XG5AQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0Y2FzZSBCVEZfS0lORF9EQVRBU0VDOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdnQ7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcbiBcbiBcdFx0aWYgKGpzb25fb3V0cHV0KSB7XG4gXHRcdFx0anNvbndfdWludF9maWVsZCh3LCBcInNpemVcIiwgdC1cdTAwM2VzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmMgYi90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcbmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuY1xuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jXG5AQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBlcl9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXG4gXHRpZiAoIXQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0a2luZF9mbGFnID0gQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKTtcbi1cdHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRraW5kX2ZsYWcgPSBidGZfa2ZsYWcodCk7XG4rXHR2bGVuID0gYnRmX3ZsZW4odCk7XG4gXHRqc29ud19zdGFydF9vYmplY3QoZC1cdTAwM2Vqdyk7XG4gXHRtID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgKyAxKTtcbiBcbkBAIC01MzUsNyArNTM1LDcgQEAgc3RhdGljIGludCBidGZfZHVtcGVyX2RhdGFzZWMoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXG4gXHRpZiAoIXQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0dmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cdTAwM2VpbmZvKTtcbitcdHZsZW4gPSBidGZfdmxlbih0KTtcbiBcdHZzaSA9IChzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICopKHQgKyAxKTtcbiBcbiBcdGpzb253X3N0YXJ0X29iamVjdChkLVx1MDAzZWp3KTtcbkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGludCBidGZfZHVtcGVyX2RvX3R5cGUoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0ID0gYnRmX190eXBlX2J5X2lkKGQtXHUwMDNlYnRmLCB0eXBlX2lkKTtcbiBcbi1cdHN3aXRjaCAoQlRGX0lORk9fS0lORCh0LVx1MDAzZWluZm8pKSB7XG4rXHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XG4gXHRjYXNlIEJURl9LSU5EX0lOVDpcbiBcdFx0cmV0dXJuIGJ0Zl9kdW1wZXJfaW50KHQsIGJpdF9vZmZzZXQsIGRhdGEsIGQtXHUwMDNlancsXG4gXHRcdFx0XHQgICAgIGQtXHUwMDNlaXNfcGxhaW5fdGV4dCk7XG5AQCAtNjMxLDcgKzYzMSw3IEBAIHN0YXRpYyBpbnQgX19idGZfZHVtcGVyX3R5cGVfb25seShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIHR5cGVfaWQsXG4gXG4gXHR0ID0gYnRmX190eXBlX2J5X2lkKGJ0ZiwgdHlwZV9pZCk7XG4gXG4tXHRzd2l0Y2ggKEJURl9JTkZPX0tJTkQodC1cdTAwM2VpbmZvKSkge1xuK1x0c3dpdGNoIChidGZfa2luZCh0KSkge1xuIFx0Y2FzZSBCVEZfS0lORF9JTlQ6XG4gXHRjYXNlIEJURl9LSU5EX1RZUEVERUY6XG4gXHRjYXNlIEJURl9LSU5EX0ZMT0FUOlxuQEAgLTY2MSw3ICs2NjEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0tJTkRfRldEOlxuIFx0XHRCVEZfUFJJTlRfQVJHKFwiJXMgJXMgXCIsXG4tXHRcdFx0ICAgICAgQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKSA/IFwidW5pb25cIiA6IFwic3RydWN0XCIsXG4rXHRcdFx0ICAgICAgYnRmX2tmbGFnKHQpID8gXCJ1bmlvblwiIDogXCJzdHJ1Y3RcIixcbiBcdFx0XHQgICAgICBidGZfX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgdC1cdTAwM2VuYW1lX29mZikpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0tJTkRfVk9MQVRJTEU6XG5AQCAtNzE4LDcgKzcxOCw3IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBfZnVuYyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNoYXIgKmZ1bmNfc2lnLFxuIFx0XHRCVEZfUFJJTlRfQVJHKFwiJXMoXCIsIGJ0Zl9fbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLVx1MDAzZW5hbWVfb2ZmKSk7XG4gXHRlbHNlXG4gXHRcdEJURl9QUklOVF9BUkcoXCIoXCIpO1xuLVx0dmxlbiA9IEJURl9JTkZPX1ZMRU4oZnVuY19wcm90by1cdTAwM2VpbmZvKTtcbitcdHZsZW4gPSBidGZfdmxlbihmdW5jX3Byb3RvKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZsZW47IGkrKykge1xuIFx0XHRzdHJ1Y3QgYnRmX3BhcmFtICphcmcgPSBcdTAwMjYoKHN0cnVjdCBidGZfcGFyYW0gKikoZnVuY19wcm90byArIDEpKVtpXTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjIxOjUyLjE5NTI4NTA0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDIxODYzNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IE5vKipcblxuT2theSwgaGVyZSdzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcuIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGB0b29scy9icGYvYnBmdG9vbC9idGYuY2AgYW5kIGB0b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHJlZmFjdG9yaW5nIGEgZmV3IG1hY3JvcyBsaWtlIGBCVEZfSU5GT19WTEVOYCBpbnRvIGhlbHBlciBmdW5jdGlvbnMgc3VjaCBhcyBgYnRmX3ZsZW5gLiBJdCdzIGFsbCB3aXRoaW4gdGhlIGB0b29scy9icGYvYnBmdG9vbC9gIGRpcmVjdG9yeSwgd2hpY2gsIGFzIEkgcmVjYWxsLCBob3VzZXMgdXNlci1zcGFjZSB1dGlsaXRpZXMuIE5vdywgdGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgaW1wYWN0cyBrZXJuZWwgbG9naWMuICpicGZ0b29sKiBpcyB1c2VyLXNwYWNlLCBzbyBpdCdzIG5vdCBleGVjdXRpbmcgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgc3RhdGUgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBtb2RpZmljYXRpb25zIGxpa2UgdGhpczogRG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cywgcHVyZWx5IGNvc21ldGljIGNoYW5nZXMsIG9yIGNoYW5nZXMgdG8gbWFjcm9zL2NvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbi4gQWxzbywgY2hhbmdlcyB0byB1bnJlYWNoYWJsZSBjb2RlIGFyZSBub3Qgd29ydGggZnV6emluZywgd2hpY2ggdGhpcyBpcyBub3QgYXMgaXQgd2lsbCBleGVjdXRlLlxuXG5TaW5jZSB0aGlzIGlzIHN0cmljdGx5IGEgdXNlci1zcGFjZSB0b29sLCBhbmQgdGhlIHJlZmFjdG9yaW5nIGlzIGEgbm8tb3AgZnJvbSBhbiBleGVjdXRpb24gcGVyc3BlY3RpdmUsIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBieSBrZXJuZWwgZnV6emluZyBsaWtlIHN5emthbGxlci4gU3l6a2FsbGVyIGlzIGZvY3VzZWQgb24gdGhlIGtlcm5lbCBpdHNlbGYsIG5vdCB0b29scyBsaWtlICpicGZ0b29sKi4gVGhpcyBpc24ndCByZWFjaGFibGUga2VybmVsIGxvZ2ljLCBhIGRyaXZlciwgb3IgYXJjaGl0ZWN0dXJlIGNvZGUuIFRoZSBwYXRjaCBpcywgZXNzZW50aWFsbHksIGEgY29kZSBjbGVhbnVwLlxuXG5JIGp1c3QgZG91YmxlLWNoZWNrZWQgdGhlIGRpZmYgYWdhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBpdCdzICpvbmx5KiB0aG9zZSB0d28gZmlsZXMgaW4gYHRvb2xzL2JwZi9icGZ0b29sL2AuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIHdpbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGF0IHZhbHVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzAxLCJPdXRwdXRUb2tlbnMiOjc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6MjI6MDAuNDM3NDcyOTQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgY29kZSBpbiB0b29scy9icGYvYnBmdG9vbC8gYW5kIHBlcmZvcm1zIGEgc2ltcGxlIHJlZmFjdG9yaW5nIChyZXBsYWNpbmcgbWFjcm9zIHdpdGggaGVscGVyIGZ1bmN0aW9ucykuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl5zwq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 08:12:49 +0000 UTC FinishedAt: 2026-07-02 08:22:02 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY4MDJkMjYxZDczYzczYWYxZWM4NDllNjhlNDZiMTI2NTRjYjk2YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA4OjIxOjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcbmluZGV4IDZlZjkwOGFkZjNhNGE1Li5jOTU4OTAyNmRhOGQ2MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9idGYuY1xuQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRjYXNlIEJURl9LSU5EX1NUUlVDVDpcbiBcdGNhc2UgQlRGX0tJTkRfVU5JT046IHtcbiBcdFx0Y29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm0gPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpO1xuLVx0XHRfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xuIFxuIFx0XHRpZiAoanNvbl9vdXRwdXQpIHtcbiBcdFx0XHRqc29ud191aW50X2ZpZWxkKHcsIFwmIzM0O3NpemVcJiMzNDssIHQtXHUwMDNlc2l6ZSk7XG5AQCAtMTkzLDcgJiM0MzsxOTMsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdFx0XHRjb25zdCBjaGFyICpuYW1lID0gYnRmX3N0cihidGYsIG0tXHUwMDNlbmFtZV9vZmYpO1xuIFx0XHRcdF9fdTMyIGJpdF9vZmYsIGJpdF9zejtcbiBcbi1cdFx0XHRpZiAoQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKSkge1xuJiM0MztcdFx0XHRpZiAoYnRmX2tmbGFnKHQpKSB7XG4gXHRcdFx0XHRiaXRfb2ZmID0gQlRGX01FTUJFUl9CSVRfT0ZGU0VUKG0tXHUwMDNlb2Zmc2V0KTtcbiBcdFx0XHRcdGJpdF9zeiA9IEJURl9NRU1CRVJfQklURklFTERfU0laRShtLVx1MDAzZW9mZnNldCk7XG4gXHRcdFx0fSBlbHNlIHtcbkBAIC0yMjQsNyAmIzQzOzIyNCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9FTlVNOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfZW51bSAqdiA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4mIzQzO1x0XHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XG4gXHRcdGNvbnN0IGNoYXIgKmVuY29kaW5nO1xuIFxuIFx0XHRlbmNvZGluZyA9IGJ0Zl9rZmxhZyh0KSA/IFwmIzM0O1NJR05FRFwmIzM0OyA6IFwmIzM0O1VOU0lHTkVEXCYjMzQ7O1xuQEAgLTMwMCw4ICYjNDM7MzAwLDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GV0Q6IHtcbi1cdFx0Y29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LVx1MDAzZWluZm8pID8gXCYjMzQ7dW5pb25cJiMzNDtcbi1cdFx0XHRcdFx0XHRcdCAgICAgICA6IFwmIzM0O3N0cnVjdFwmIzM0OztcbiYjNDM7XHRcdGNvbnN0IGNoYXIgKmZ3ZF9raW5kID0gYnRmX2tmbGFnKHQpID8gXCYjMzQ7dW5pb25cJiMzNDsgOiBcJiMzNDtzdHJ1Y3RcJiMzNDs7XG4gXG4gXHRcdGlmIChqc29uX291dHB1dClcbiBcdFx0XHRqc29ud19zdHJpbmdfZmllbGQodywgXCYjMzQ7ZndkX2tpbmRcJiMzNDssIGZ3ZF9raW5kKTtcbkBAIC0zMjIsNyAmIzQzOzMyMSw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpO1xuLVx0XHRfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xuIFxuIFx0XHRpZiAoanNvbl9vdXRwdXQpIHtcbiBcdFx0XHRqc29ud191aW50X2ZpZWxkKHcsIFwmIzM0O3JldF90eXBlX2lkXCYjMzQ7LCB0LVx1MDAzZXR5cGUpO1xuQEAgLTM2NSw3ICYjNDM7MzY0LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRjYXNlIEJURl9LSU5EX0RBVEFTRUM6IHtcbiBcdFx0Y29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdiA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdnQ7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4mIzQzO1x0XHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XG4gXG4gXHRcdGlmIChqc29uX291dHB1dCkge1xuIFx0XHRcdGpzb253X3VpbnRfZmllbGQodywgXCYjMzQ7c2l6ZVwmIzM0OywgdC1cdTAwM2VzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmMgYi90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcbmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jXG5AQCAtNDc2LDggJiM0Mzs0NzYsOCBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfc3RydWN0KGNvbnN0IHN0cnVjdCBidGZfZHVtcGVyICpkLCBfX3UzMiB0eXBlX2lkLFxuIFx0aWYgKCF0KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdGtpbmRfZmxhZyA9IEJURl9JTkZPX0tGTEFHKHQtXHUwMDNlaW5mbyk7XG4tXHR2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdGtpbmRfZmxhZyA9IGJ0Zl9rZmxhZyh0KTtcbiYjNDM7XHR2bGVuID0gYnRmX3ZsZW4odCk7XG4gXHRqc29ud19zdGFydF9vYmplY3QoZC1cdTAwM2Vqdyk7XG4gXHRtID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgJiM0MzsgMSk7XG4gXG5AQCAtNTM1LDcgJiM0Mzs1MzUsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZGF0YXNlYyhjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcbiBcdGlmICghdClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHR2bGVuID0gQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pO1xuJiM0MztcdHZsZW4gPSBidGZfdmxlbih0KTtcbiBcdHZzaSA9IChzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICopKHQgJiM0MzsgMSk7XG4gXG4gXHRqc29ud19zdGFydF9vYmplY3QoZC1cdTAwM2Vqdyk7XG5AQCAtNTU3LDcgJiM0Mzs1NTcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZG9fdHlwZShjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQgPSBidGZfX3R5cGVfYnlfaWQoZC1cdTAwM2VidGYsIHR5cGVfaWQpO1xuIFxuLVx0c3dpdGNoIChCVEZfSU5GT19LSU5EKHQtXHUwMDNlaW5mbykpIHtcbiYjNDM7XHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XG4gXHRjYXNlIEJURl9LSU5EX0lOVDpcbiBcdFx0cmV0dXJuIGJ0Zl9kdW1wZXJfaW50KHQsIGJpdF9vZmZzZXQsIGRhdGEsIGQtXHUwMDNlancsXG4gXHRcdFx0XHQgICAgIGQtXHUwMDNlaXNfcGxhaW5fdGV4dCk7XG5AQCAtNjMxLDcgJiM0Mzs2MzEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxuIFxuIFx0dCA9IGJ0Zl9fdHlwZV9ieV9pZChidGYsIHR5cGVfaWQpO1xuIFxuLVx0c3dpdGNoIChCVEZfSU5GT19LSU5EKHQtXHUwMDNlaW5mbykpIHtcbiYjNDM7XHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XG4gXHRjYXNlIEJURl9LSU5EX0lOVDpcbiBcdGNhc2UgQlRGX0tJTkRfVFlQRURFRjpcbiBcdGNhc2UgQlRGX0tJTkRfRkxPQVQ6XG5AQCAtNjYxLDcgJiM0Mzs2NjEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0tJTkRfRldEOlxuIFx0XHRCVEZfUFJJTlRfQVJHKFwmIzM0OyVzICVzIFwmIzM0Oyxcbi1cdFx0XHQgICAgICBCVEZfSU5GT19LRkxBRyh0LVx1MDAzZWluZm8pID8gXCYjMzQ7dW5pb25cJiMzNDsgOiBcJiMzNDtzdHJ1Y3RcJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgIGJ0Zl9rZmxhZyh0KSA/IFwmIzM0O3VuaW9uXCYjMzQ7IDogXCYjMzQ7c3RydWN0XCYjMzQ7LFxuIFx0XHRcdCAgICAgIGJ0Zl9fbmFtZV9ieV9vZmZzZXQoYnRmLCB0LVx1MDAzZW5hbWVfb2ZmKSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVEZfS0lORF9WT0xBVElMRTpcbkBAIC03MTgsNyAmIzQzOzcxOCw3IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBfZnVuYyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNoYXIgKmZ1bmNfc2lnLFxuIFx0XHRCVEZfUFJJTlRfQVJHKFwmIzM0OyVzKFwmIzM0OywgYnRmX19uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpKTtcbiBcdGVsc2VcbiBcdFx0QlRGX1BSSU5UX0FSRyhcJiMzNDsoXCYjMzQ7KTtcbi1cdHZsZW4gPSBCVEZfSU5GT19WTEVOKGZ1bmNfcHJvdG8tXHUwMDNlaW5mbyk7XG4mIzQzO1x0dmxlbiA9IGJ0Zl92bGVuKGZ1bmNfcHJvdG8pO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmxlbjsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGJ0Zl9wYXJhbSAqYXJnID0gXHUwMDI2KChzdHJ1Y3QgYnRmX3BhcmFtICopKGZ1bmNfcHJvdG8gJiM0MzsgMSkpW2ldO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjgwMmQyNjFkNzNjNzNhZjFlYzg0OWU2OGU0NmIxMjY1NGNiOTZiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDg6MjE6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9idGYuYyBiL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jCmluZGV4IDZlZjkwOGFkZjNhNGE1Li5jOTU4OTAyNmRhOGQ2MiAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmMKQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsCiAJY2FzZSBCVEZfS0lORF9TVFJVQ1Q6CiAJY2FzZSBCVEZfS0lORF9VTklPTjogewogCQljb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbSA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7Ci0JCV9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pOwomIzQzOwkJX191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpOwogCiAJCWlmIChqc29uX291dHB1dCkgewogCQkJanNvbndfdWludF9maWVsZCh3LCAmIzM0O3NpemUmIzM0OywgdC0mZ3Q7c2l6ZSk7CkBAIC0xOTMsNyAmIzQzOzE5Myw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLAogCQkJY29uc3QgY2hhciAqbmFtZSA9IGJ0Zl9zdHIoYnRmLCBtLSZndDtuYW1lX29mZik7CiAJCQlfX3UzMiBiaXRfb2ZmLCBiaXRfc3o7CiAKLQkJCWlmIChCVEZfSU5GT19LRkxBRyh0LSZndDtpbmZvKSkgewomIzQzOwkJCWlmIChidGZfa2ZsYWcodCkpIHsKIAkJCQliaXRfb2ZmID0gQlRGX01FTUJFUl9CSVRfT0ZGU0VUKG0tJmd0O29mZnNldCk7CiAJCQkJYml0X3N6ID0gQlRGX01FTUJFUl9CSVRGSUVMRF9TSVpFKG0tJmd0O29mZnNldCk7CiAJCQl9IGVsc2UgewpAQCAtMjI0LDcgJiM0MzsyMjQsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCwKIAl9CiAJY2FzZSBCVEZfS0lORF9FTlVNOiB7CiAJCWNvbnN0IHN0cnVjdCBidGZfZW51bSAqdiA9IChjb25zdCB2b2lkICopKHQgJiM0MzsgMSk7Ci0JCV9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pOwomIzQzOwkJX191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpOwogCQljb25zdCBjaGFyICplbmNvZGluZzsKIAogCQllbmNvZGluZyA9IGJ0Zl9rZmxhZyh0KSA/ICYjMzQ7U0lHTkVEJiMzNDsgOiAmIzM0O1VOU0lHTkVEJiMzNDs7CkBAIC0zMDAsOCAmIzQzOzMwMCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLAogCQlicmVhazsKIAl9CiAJY2FzZSBCVEZfS0lORF9GV0Q6IHsKLQkJY29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LSZndDtpbmZvKSA/ICYjMzQ7dW5pb24mIzM0OwotCQkJCQkJCSAgICAgICA6ICYjMzQ7c3RydWN0JiMzNDs7CiYjNDM7CQljb25zdCBjaGFyICpmd2Rfa2luZCA9IGJ0Zl9rZmxhZyh0KSA/ICYjMzQ7dW5pb24mIzM0OyA6ICYjMzQ7c3RydWN0JiMzNDs7CiAKIAkJaWYgKGpzb25fb3V0cHV0KQogCQkJanNvbndfc3RyaW5nX2ZpZWxkKHcsICYjMzQ7ZndkX2tpbmQmIzM0OywgZndkX2tpbmQpOwpAQCAtMzIyLDcgJiM0MzszMjEsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCwKIAl9CiAJY2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7CiAJCWNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpOwotCQlfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LSZndDtpbmZvKTsKJiM0MzsJCV9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTsKIAogCQlpZiAoanNvbl9vdXRwdXQpIHsKIAkJCWpzb253X3VpbnRfZmllbGQodywgJiMzNDtyZXRfdHlwZV9pZCYjMzQ7LCB0LSZndDt0eXBlKTsKQEAgLTM2NSw3ICYjNDM7MzY0LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsCiAJY2FzZSBCVEZfS0lORF9EQVRBU0VDOiB7CiAJCWNvbnN0IHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICYjNDM7IDEpOwogCQljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnZ0OwotCQlfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LSZndDtpbmZvKTsKJiM0MzsJCV9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTsKIAogCQlpZiAoanNvbl9vdXRwdXQpIHsKIAkJCWpzb253X3VpbnRfZmllbGQodywgJiMzNDtzaXplJiMzNDssIHQtJmd0O3NpemUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jCmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuYwpAQCAtNDc2LDggJiM0Mzs0NzYsOCBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfc3RydWN0KGNvbnN0IHN0cnVjdCBidGZfZHVtcGVyICpkLCBfX3UzMiB0eXBlX2lkLAogCWlmICghdCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlraW5kX2ZsYWcgPSBCVEZfSU5GT19LRkxBRyh0LSZndDtpbmZvKTsKLQl2bGVuID0gQlRGX0lORk9fVkxFTih0LSZndDtpbmZvKTsKJiM0MzsJa2luZF9mbGFnID0gYnRmX2tmbGFnKHQpOwomIzQzOwl2bGVuID0gYnRmX3ZsZW4odCk7CiAJanNvbndfc3RhcnRfb2JqZWN0KGQtJmd0O2p3KTsKIAltID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgJiM0MzsgMSk7CiAKQEAgLTUzNSw3ICYjNDM7NTM1LDcgQEAgc3RhdGljIGludCBidGZfZHVtcGVyX2RhdGFzZWMoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsCiAJaWYgKCF0KQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXZsZW4gPSBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pOwomIzQzOwl2bGVuID0gYnRmX3ZsZW4odCk7CiAJdnNpID0gKHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKikodCAmIzQzOyAxKTsKIAogCWpzb253X3N0YXJ0X29iamVjdChkLSZndDtqdyk7CkBAIC01NTcsNyAmIzQzOzU1Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBlcl9kb190eXBlKGNvbnN0IHN0cnVjdCBidGZfZHVtcGVyICpkLCBfX3UzMiB0eXBlX2lkLAogewogCWNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCA9IGJ0Zl9fdHlwZV9ieV9pZChkLSZndDtidGYsIHR5cGVfaWQpOwogCi0Jc3dpdGNoIChCVEZfSU5GT19LSU5EKHQtJmd0O2luZm8pKSB7CiYjNDM7CXN3aXRjaCAoYnRmX2tpbmQodCkpIHsKIAljYXNlIEJURl9LSU5EX0lOVDoKIAkJcmV0dXJuIGJ0Zl9kdW1wZXJfaW50KHQsIGJpdF9vZmZzZXQsIGRhdGEsIGQtJmd0O2p3LAogCQkJCSAgICAgZC0mZ3Q7aXNfcGxhaW5fdGV4dCk7CkBAIC02MzEsNyAmIzQzOzYzMSw3IEBAIHN0YXRpYyBpbnQgX19idGZfZHVtcGVyX3R5cGVfb25seShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIHR5cGVfaWQsCiAKIAl0ID0gYnRmX190eXBlX2J5X2lkKGJ0ZiwgdHlwZV9pZCk7CiAKLQlzd2l0Y2ggKEJURl9JTkZPX0tJTkQodC0mZ3Q7aW5mbykpIHsKJiM0MzsJc3dpdGNoIChidGZfa2luZCh0KSkgewogCWNhc2UgQlRGX0tJTkRfSU5UOgogCWNhc2UgQlRGX0tJTkRfVFlQRURFRjoKIAljYXNlIEJURl9LSU5EX0ZMT0FUOgpAQCAtNjYxLDcgJiM0Mzs2NjEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLAogCQlicmVhazsKIAljYXNlIEJURl9LSU5EX0ZXRDoKIAkJQlRGX1BSSU5UX0FSRygmIzM0OyVzICVzICYjMzQ7LAotCQkJICAgICAgQlRGX0lORk9fS0ZMQUcodC0mZ3Q7aW5mbykgPyAmIzM0O3VuaW9uJiMzNDsgOiAmIzM0O3N0cnVjdCYjMzQ7LAomIzQzOwkJCSAgICAgIGJ0Zl9rZmxhZyh0KSA/ICYjMzQ7dW5pb24mIzM0OyA6ICYjMzQ7c3RydWN0JiMzNDssCiAJCQkgICAgICBidGZfX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgdC0mZ3Q7bmFtZV9vZmYpKTsKIAkJYnJlYWs7CiAJY2FzZSBCVEZfS0lORF9WT0xBVElMRToKQEAgLTcxOCw3ICYjNDM7NzE4LDcgQEAgc3RhdGljIGludCBidGZfZHVtcF9mdW5jKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY2hhciAqZnVuY19zaWcsCiAJCUJURl9QUklOVF9BUkcoJiMzNDslcygmIzM0OywgYnRmX19uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtJmd0O25hbWVfb2ZmKSk7CiAJZWxzZQogCQlCVEZfUFJJTlRfQVJHKCYjMzQ7KCYjMzQ7KTsKLQl2bGVuID0gQlRGX0lORk9fVkxFTihmdW5jX3Byb3RvLSZndDtpbmZvKTsKJiM0MzsJdmxlbiA9IGJ0Zl92bGVuKGZ1bmNfcHJvdG8pOwogCWZvciAoaSA9IDA7IGkgJmx0OyB2bGVuOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgYnRmX3BhcmFtICphcmcgPSAmYW1wOygoc3RydWN0IGJ0Zl9wYXJhbSAqKShmdW5jX3Byb3RvICYjNDM7IDEpKVtpXTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzAxCgkJCQkJCQlvdXRwdXQ6IDc3CgkJCQkJCQl0aG91Z2h0czogNDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBObyoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcuIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNgIGFuZCBgdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyByZWZhY3RvcmluZyBhIGZldyBtYWNyb3MgbGlrZSBgQlRGX0lORk9fVkxFTmAgaW50byBoZWxwZXIgZnVuY3Rpb25zIHN1Y2ggYXMgYGJ0Zl92bGVuYC4gSXQmIzM5O3MgYWxsIHdpdGhpbiB0aGUgYHRvb2xzL2JwZi9icGZ0b29sL2AgZGlyZWN0b3J5LCB3aGljaCwgYXMgSSByZWNhbGwsIGhvdXNlcyB1c2VyLXNwYWNlIHV0aWxpdGllcy4gTm93LCB0aGUga2V5IGlzIHdoZXRoZXIgdGhpcyBpbXBhY3RzIGtlcm5lbCBsb2dpYy4gKmJwZnRvb2wqIGlzIHVzZXItc3BhY2UsIHNvIGl0JiMzOTtzIG5vdCBleGVjdXRpbmcgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLgoKVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgbW9kaWZpY2F0aW9ucyBsaWtlIHRoaXM6IERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2VzLCBvciBjaGFuZ2VzIHRvIG1hY3Jvcy9jb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uLiBBbHNvLCBjaGFuZ2VzIHRvIHVucmVhY2hhYmxlIGNvZGUgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLCB3aGljaCB0aGlzIGlzIG5vdCBhcyBpdCB3aWxsIGV4ZWN1dGUuCgpTaW5jZSB0aGlzIGlzIHN0cmljdGx5IGEgdXNlci1zcGFjZSB0b29sLCBhbmQgdGhlIHJlZmFjdG9yaW5nIGlzIGEgbm8tb3AgZnJvbSBhbiBleGVjdXRpb24gcGVyc3BlY3RpdmUsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgYnkga2VybmVsIGZ1enppbmcgbGlrZSBzeXprYWxsZXIuIFN5emthbGxlciBpcyBmb2N1c2VkIG9uIHRoZSBrZXJuZWwgaXRzZWxmLCBub3QgdG9vbHMgbGlrZSAqYnBmdG9vbCouIFRoaXMgaXNuJiMzOTt0IHJlYWNoYWJsZSBrZXJuZWwgbG9naWMsIGEgZHJpdmVyLCBvciBhcmNoaXRlY3R1cmUgY29kZS4gVGhlIHBhdGNoIGlzLCBlc3NlbnRpYWxseSwgYSBjb2RlIGNsZWFudXAuCgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgdGhlIGRpZmYgYWdhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBpdCYjMzk7cyAqb25seSogdGhvc2UgdHdvIGZpbGVzIGluIGB0b29scy9icGYvYnBmdG9vbC9gLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIHdpbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGF0IHZhbHVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIGNvZGUgaW4gdG9vbHMvYnBmL2JwZnRvb2wvIGFuZCBwZXJmb3JtcyBhIHNpbXBsZSByZWZhY3RvcmluZyAocmVwbGFjaW5nIG1hY3JvcyB3aXRoIGhlbHBlciBmdW5jdGlvbnMpLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgY29kZSBpbiB0b29scy9icGYvYnBmdG9vbC8gYW5kIHBlcmZvcm1zIGEgc2ltcGxlIHJlZmFjdG9yaW5nIChyZXBsYWNpbmcgbWFjcm9zIHdpdGggaGVscGVyIGZ1bmN0aW9ucykuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODoyMTo1MS43NDg4NDgxNzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg4NjU0MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgY29kZSBpbiB0b29scy9icGYvYnBmdG9vbC8gYW5kIHBlcmZvcm1zIGEgc2ltcGxlIHJlZmFjdG9yaW5nIChyZXBsYWNpbmcgbWFjcm9zIHdpdGggaGVscGVyIGZ1bmN0aW9ucykuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjIxOjUxLjc0ODg1MzQ5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1Njk0MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjgwMmQyNjFkNzNjNzNhZjFlYzg0OWU2OGU0NmIxMjY1NGNiOTZiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyIDA4OjIxOjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcXG5pbmRleCA2ZWY5MDhhZGYzYTRhNS4uYzk1ODkwMjZkYThkNjIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9idGYuY1xcbkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXFxuIFxcdGNhc2UgQlRGX0tJTkRfU1RSVUNUOlxcbiBcXHRjYXNlIEJURl9LSU5EX1VOSU9OOiB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptID0gKGNvbnN0IHZvaWQgKikodCArIDEpO1xcbi1cXHRcXHRfX3UzMiBpLCB2bGVuID0gQlRGX0lORk9fVkxFTih0LVxcdTAwM2VpbmZvKTtcXG4rXFx0XFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xcbiBcXG4gXFx0XFx0aWYgKGpzb25fb3V0cHV0KSB7XFxuIFxcdFxcdFxcdGpzb253X3VpbnRfZmllbGQodywgXFxcInNpemVcXFwiLCB0LVxcdTAwM2VzaXplKTtcXG5AQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxcbiBcXHRcXHRcXHRjb25zdCBjaGFyICpuYW1lID0gYnRmX3N0cihidGYsIG0tXFx1MDAzZW5hbWVfb2ZmKTtcXG4gXFx0XFx0XFx0X191MzIgYml0X29mZiwgYml0X3N6O1xcbiBcXG4tXFx0XFx0XFx0aWYgKEJURl9JTkZPX0tGTEFHKHQtXFx1MDAzZWluZm8pKSB7XFxuK1xcdFxcdFxcdGlmIChidGZfa2ZsYWcodCkpIHtcXG4gXFx0XFx0XFx0XFx0Yml0X29mZiA9IEJURl9NRU1CRVJfQklUX09GRlNFVChtLVxcdTAwM2VvZmZzZXQpO1xcbiBcXHRcXHRcXHRcXHRiaXRfc3ogPSBCVEZfTUVNQkVSX0JJVEZJRUxEX1NJWkUobS1cXHUwMDNlb2Zmc2V0KTtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG5AQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxcbiBcXHR9XFxuIFxcdGNhc2UgQlRGX0tJTkRfRU5VTToge1xcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgYnRmX2VudW0gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XFxuLVxcdFxcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXFx1MDAzZWluZm8pO1xcbitcXHRcXHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XFxuIFxcdFxcdGNvbnN0IGNoYXIgKmVuY29kaW5nO1xcbiBcXG4gXFx0XFx0ZW5jb2RpbmcgPSBidGZfa2ZsYWcodCkgPyBcXFwiU0lHTkVEXFxcIiA6IFxcXCJVTlNJR05FRFxcXCI7XFxuQEAgLTMwMCw4ICszMDAsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0Y2FzZSBCVEZfS0lORF9GV0Q6IHtcXG4tXFx0XFx0Y29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LVxcdTAwM2VpbmZvKSA/IFxcXCJ1bmlvblxcXCJcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIDogXFxcInN0cnVjdFxcXCI7XFxuK1xcdFxcdGNvbnN0IGNoYXIgKmZ3ZF9raW5kID0gYnRmX2tmbGFnKHQpID8gXFxcInVuaW9uXFxcIiA6IFxcXCJzdHJ1Y3RcXFwiO1xcbiBcXG4gXFx0XFx0aWYgKGpzb25fb3V0cHV0KVxcbiBcXHRcXHRcXHRqc29ud19zdHJpbmdfZmllbGQodywgXFxcImZ3ZF9raW5kXFxcIiwgZndkX2tpbmQpO1xcbkBAIC0zMjIsNyArMzIxLDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXFxuIFxcdH1cXG4gXFx0Y2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XFxuLVxcdFxcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXFx1MDAzZWluZm8pO1xcbitcXHRcXHRfX3UzMiBpLCB2bGVuID0gYnRmX3ZsZW4odCk7XFxuIFxcbiBcXHRcXHRpZiAoanNvbl9vdXRwdXQpIHtcXG4gXFx0XFx0XFx0anNvbndfdWludF9maWVsZCh3LCBcXFwicmV0X3R5cGVfaWRcXFwiLCB0LVxcdTAwM2V0eXBlKTtcXG5AQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxcbiBcXHRjYXNlIEJURl9LSU5EX0RBVEFTRUM6IHtcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdiA9IChjb25zdCB2b2lkICopKHQgKyAxKTtcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2dDtcXG4tXFx0XFx0X191MzIgaSwgdmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7XFxuK1xcdFxcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcXG4gXFxuIFxcdFxcdGlmIChqc29uX291dHB1dCkge1xcbiBcXHRcXHRcXHRqc29ud191aW50X2ZpZWxkKHcsIFxcXCJzaXplXFxcIiwgdC1cXHUwMDNlc2l6ZSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuYyBiL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuY1xcbmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDRcXG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcXG5AQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBlcl9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXFxuIFxcdGlmICghdClcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRraW5kX2ZsYWcgPSBCVEZfSU5GT19LRkxBRyh0LVxcdTAwM2VpbmZvKTtcXG4tXFx0dmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7XFxuK1xcdGtpbmRfZmxhZyA9IGJ0Zl9rZmxhZyh0KTtcXG4rXFx0dmxlbiA9IGJ0Zl92bGVuKHQpO1xcbiBcXHRqc29ud19zdGFydF9vYmplY3QoZC1cXHUwMDNlancpO1xcbiBcXHRtID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgKyAxKTtcXG4gXFxuQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZGF0YXNlYyhjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcXG4gXFx0aWYgKCF0KVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXFx1MDAzZWluZm8pO1xcbitcXHR2bGVuID0gYnRmX3ZsZW4odCk7XFxuIFxcdHZzaSA9IChzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICopKHQgKyAxKTtcXG4gXFxuIFxcdGpzb253X3N0YXJ0X29iamVjdChkLVxcdTAwM2Vqdyk7XFxuQEAgLTU1Nyw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kdW1wZXJfZG9fdHlwZShjb25zdCBzdHJ1Y3QgYnRmX2R1bXBlciAqZCwgX191MzIgdHlwZV9pZCxcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQgPSBidGZfX3R5cGVfYnlfaWQoZC1cXHUwMDNlYnRmLCB0eXBlX2lkKTtcXG4gXFxuLVxcdHN3aXRjaCAoQlRGX0lORk9fS0lORCh0LVxcdTAwM2VpbmZvKSkge1xcbitcXHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XFxuIFxcdGNhc2UgQlRGX0tJTkRfSU5UOlxcbiBcXHRcXHRyZXR1cm4gYnRmX2R1bXBlcl9pbnQodCwgYml0X29mZnNldCwgZGF0YSwgZC1cXHUwMDNlancsXFxuIFxcdFxcdFxcdFxcdCAgICAgZC1cXHUwMDNlaXNfcGxhaW5fdGV4dCk7XFxuQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxcbiBcXG4gXFx0dCA9IGJ0Zl9fdHlwZV9ieV9pZChidGYsIHR5cGVfaWQpO1xcbiBcXG4tXFx0c3dpdGNoIChCVEZfSU5GT19LSU5EKHQtXFx1MDAzZWluZm8pKSB7XFxuK1xcdHN3aXRjaCAoYnRmX2tpbmQodCkpIHtcXG4gXFx0Y2FzZSBCVEZfS0lORF9JTlQ6XFxuIFxcdGNhc2UgQlRGX0tJTkRfVFlQRURFRjpcXG4gXFx0Y2FzZSBCVEZfS0lORF9GTE9BVDpcXG5AQCAtNjYxLDcgKzY2MSw3IEBAIHN0YXRpYyBpbnQgX19idGZfZHVtcGVyX3R5cGVfb25seShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIHR5cGVfaWQsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9LSU5EX0ZXRDpcXG4gXFx0XFx0QlRGX1BSSU5UX0FSRyhcXFwiJXMgJXMgXFxcIixcXG4tXFx0XFx0XFx0ICAgICAgQlRGX0lORk9fS0ZMQUcodC1cXHUwMDNlaW5mbykgPyBcXFwidW5pb25cXFwiIDogXFxcInN0cnVjdFxcXCIsXFxuK1xcdFxcdFxcdCAgICAgIGJ0Zl9rZmxhZyh0KSA/IFxcXCJ1bmlvblxcXCIgOiBcXFwic3RydWN0XFxcIixcXG4gXFx0XFx0XFx0ICAgICAgYnRmX19uYW1lX2J5X29mZnNldChidGYsIHQtXFx1MDAzZW5hbWVfb2ZmKSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9LSU5EX1ZPTEFUSUxFOlxcbkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIGludCBidGZfZHVtcF9mdW5jKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY2hhciAqZnVuY19zaWcsXFxuIFxcdFxcdEJURl9QUklOVF9BUkcoXFxcIiVzKFxcXCIsIGJ0Zl9fbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLVxcdTAwM2VuYW1lX29mZikpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdEJURl9QUklOVF9BUkcoXFxcIihcXFwiKTtcXG4tXFx0dmxlbiA9IEJURl9JTkZPX1ZMRU4oZnVuY19wcm90by1cXHUwMDNlaW5mbyk7XFxuK1xcdHZsZW4gPSBidGZfdmxlbihmdW5jX3Byb3RvKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZsZW47IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgYnRmX3BhcmFtICphcmcgPSBcXHUwMDI2KChzdHJ1Y3QgYnRmX3BhcmFtICopKGZ1bmNfcHJvdG8gKyAxKSlbaV07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODoyMTo1Mi4xOTUyODM2MTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDIyMTMxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmODAyZDI2MWQ3M2M3M2FmMWVjODQ5ZTY4ZTQ2YjEyNjU0Y2I5NmIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwODoyMTo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmLmNcbmluZGV4IDZlZjkwOGFkZjNhNGE1Li5jOTU4OTAyNmRhOGQ2MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zi5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9idGYuY1xuQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdGNhc2UgQlRGX0tJTkRfU1RSVUNUOlxuIFx0Y2FzZSBCVEZfS0lORF9VTklPTjoge1xuIFx0XHRjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbSA9IChjb25zdCB2b2lkICopKHQgKyAxKTtcbi1cdFx0X191MzIgaSwgdmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cdTAwM2VpbmZvKTtcbitcdFx0X191MzIgaSwgdmxlbiA9IGJ0Zl92bGVuKHQpO1xuIFxuIFx0XHRpZiAoanNvbl9vdXRwdXQpIHtcbiBcdFx0XHRqc29ud191aW50X2ZpZWxkKHcsIFwic2l6ZVwiLCB0LVx1MDAzZXNpemUpO1xuQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdFx0XHRjb25zdCBjaGFyICpuYW1lID0gYnRmX3N0cihidGYsIG0tXHUwMDNlbmFtZV9vZmYpO1xuIFx0XHRcdF9fdTMyIGJpdF9vZmYsIGJpdF9zejtcbiBcbi1cdFx0XHRpZiAoQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKSkge1xuK1x0XHRcdGlmIChidGZfa2ZsYWcodCkpIHtcbiBcdFx0XHRcdGJpdF9vZmYgPSBCVEZfTUVNQkVSX0JJVF9PRkZTRVQobS1cdTAwM2VvZmZzZXQpO1xuIFx0XHRcdFx0Yml0X3N6ID0gQlRGX01FTUJFUl9CSVRGSUVMRF9TSVpFKG0tXHUwMDNlb2Zmc2V0KTtcbiBcdFx0XHR9IGVsc2Uge1xuQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW50IGR1bXBfYnRmX3R5cGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiBpZCxcbiBcdH1cbiBcdGNhc2UgQlRGX0tJTkRfRU5VTToge1xuIFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2VudW0gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcbiBcdFx0Y29uc3QgY2hhciAqZW5jb2Rpbmc7XG4gXG4gXHRcdGVuY29kaW5nID0gYnRmX2tmbGFnKHQpID8gXCJTSUdORURcIiA6IFwiVU5TSUdORURcIjtcbkBAIC0zMDAsOCArMzAwLDcgQEAgc3RhdGljIGludCBkdW1wX2J0Zl90eXBlKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgX191MzIgaWQsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GV0Q6IHtcbi1cdFx0Y29uc3QgY2hhciAqZndkX2tpbmQgPSBCVEZfSU5GT19LRkxBRyh0LVx1MDAzZWluZm8pID8gXCJ1bmlvblwiXG4tXHRcdFx0XHRcdFx0XHQgICAgICAgOiBcInN0cnVjdFwiO1xuK1x0XHRjb25zdCBjaGFyICpmd2Rfa2luZCA9IGJ0Zl9rZmxhZyh0KSA/IFwidW5pb25cIiA6IFwic3RydWN0XCI7XG4gXG4gXHRcdGlmIChqc29uX291dHB1dClcbiBcdFx0XHRqc29ud19zdHJpbmdfZmllbGQodywgXCJmd2Rfa2luZFwiLCBmd2Rfa2luZCk7XG5AQCAtMzIyLDcgKzMyMSw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0fVxuIFx0Y2FzZSBCVEZfS0lORF9GVU5DX1BST1RPOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnAgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcbiBcbiBcdFx0aWYgKGpzb25fb3V0cHV0KSB7XG4gXHRcdFx0anNvbndfdWludF9maWVsZCh3LCBcInJldF90eXBlX2lkXCIsIHQtXHUwMDNldHlwZSk7XG5AQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9idGZfdHlwZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkLFxuIFx0Y2FzZSBCVEZfS0lORF9EQVRBU0VDOiB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKnYgPSAoY29uc3Qgdm9pZCAqKSh0ICsgMSk7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdnQ7XG4tXHRcdF9fdTMyIGksIHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRcdF9fdTMyIGksIHZsZW4gPSBidGZfdmxlbih0KTtcbiBcbiBcdFx0aWYgKGpzb25fb3V0cHV0KSB7XG4gXHRcdFx0anNvbndfdWludF9maWVsZCh3LCBcInNpemVcIiwgdC1cdTAwM2VzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmMgYi90b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNcbmluZGV4IDlkYzg0MjViMTc4OTkyLi5lNDA3NTgyNDM0M2ZkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2J0Zl9kdW1wZXIuY1xuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvYnRmX2R1bXBlci5jXG5AQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBlcl9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXG4gXHRpZiAoIXQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0a2luZF9mbGFnID0gQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKTtcbi1cdHZsZW4gPSBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7XG4rXHRraW5kX2ZsYWcgPSBidGZfa2ZsYWcodCk7XG4rXHR2bGVuID0gYnRmX3ZsZW4odCk7XG4gXHRqc29ud19zdGFydF9vYmplY3QoZC1cdTAwM2Vqdyk7XG4gXHRtID0gKHN0cnVjdCBidGZfbWVtYmVyICopKHQgKyAxKTtcbiBcbkBAIC01MzUsNyArNTM1LDcgQEAgc3RhdGljIGludCBidGZfZHVtcGVyX2RhdGFzZWMoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXG4gXHRpZiAoIXQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0dmxlbiA9IEJURl9JTkZPX1ZMRU4odC1cdTAwM2VpbmZvKTtcbitcdHZsZW4gPSBidGZfdmxlbih0KTtcbiBcdHZzaSA9IChzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICopKHQgKyAxKTtcbiBcbiBcdGpzb253X3N0YXJ0X29iamVjdChkLVx1MDAzZWp3KTtcbkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGludCBidGZfZHVtcGVyX2RvX3R5cGUoY29uc3Qgc3RydWN0IGJ0Zl9kdW1wZXIgKmQsIF9fdTMyIHR5cGVfaWQsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0ID0gYnRmX190eXBlX2J5X2lkKGQtXHUwMDNlYnRmLCB0eXBlX2lkKTtcbiBcbi1cdHN3aXRjaCAoQlRGX0lORk9fS0lORCh0LVx1MDAzZWluZm8pKSB7XG4rXHRzd2l0Y2ggKGJ0Zl9raW5kKHQpKSB7XG4gXHRjYXNlIEJURl9LSU5EX0lOVDpcbiBcdFx0cmV0dXJuIGJ0Zl9kdW1wZXJfaW50KHQsIGJpdF9vZmZzZXQsIGRhdGEsIGQtXHUwMDNlancsXG4gXHRcdFx0XHQgICAgIGQtXHUwMDNlaXNfcGxhaW5fdGV4dCk7XG5AQCAtNjMxLDcgKzYzMSw3IEBAIHN0YXRpYyBpbnQgX19idGZfZHVtcGVyX3R5cGVfb25seShjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIHR5cGVfaWQsXG4gXG4gXHR0ID0gYnRmX190eXBlX2J5X2lkKGJ0ZiwgdHlwZV9pZCk7XG4gXG4tXHRzd2l0Y2ggKEJURl9JTkZPX0tJTkQodC1cdTAwM2VpbmZvKSkge1xuK1x0c3dpdGNoIChidGZfa2luZCh0KSkge1xuIFx0Y2FzZSBCVEZfS0lORF9JTlQ6XG4gXHRjYXNlIEJURl9LSU5EX1RZUEVERUY6XG4gXHRjYXNlIEJURl9LSU5EX0ZMT0FUOlxuQEAgLTY2MSw3ICs2NjEsNyBAQCBzdGF0aWMgaW50IF9fYnRmX2R1bXBlcl90eXBlX29ubHkoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBfX3UzMiB0eXBlX2lkLFxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0tJTkRfRldEOlxuIFx0XHRCVEZfUFJJTlRfQVJHKFwiJXMgJXMgXCIsXG4tXHRcdFx0ICAgICAgQlRGX0lORk9fS0ZMQUcodC1cdTAwM2VpbmZvKSA/IFwidW5pb25cIiA6IFwic3RydWN0XCIsXG4rXHRcdFx0ICAgICAgYnRmX2tmbGFnKHQpID8gXCJ1bmlvblwiIDogXCJzdHJ1Y3RcIixcbiBcdFx0XHQgICAgICBidGZfX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgdC1cdTAwM2VuYW1lX29mZikpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0tJTkRfVk9MQVRJTEU6XG5AQCAtNzE4LDcgKzcxOCw3IEBAIHN0YXRpYyBpbnQgYnRmX2R1bXBfZnVuYyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNoYXIgKmZ1bmNfc2lnLFxuIFx0XHRCVEZfUFJJTlRfQVJHKFwiJXMoXCIsIGJ0Zl9fbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLVx1MDAzZW5hbWVfb2ZmKSk7XG4gXHRlbHNlXG4gXHRcdEJURl9QUklOVF9BUkcoXCIoXCIpO1xuLVx0dmxlbiA9IEJURl9JTkZPX1ZMRU4oZnVuY19wcm90by1cdTAwM2VpbmZvKTtcbitcdHZsZW4gPSBidGZfdmxlbihmdW5jX3Byb3RvKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZsZW47IGkrKykge1xuIFx0XHRzdHJ1Y3QgYnRmX3BhcmFtICphcmcgPSBcdTAwMjYoKHN0cnVjdCBidGZfcGFyYW0gKikoZnVuY19wcm90byArIDEpKVtpXTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjIxOjUyLjE5NTI4NTA0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDIxODYzNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IE5vKipcblxuT2theSwgaGVyZSdzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcuIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGB0b29scy9icGYvYnBmdG9vbC9idGYuY2AgYW5kIGB0b29scy9icGYvYnBmdG9vbC9idGZfZHVtcGVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHJlZmFjdG9yaW5nIGEgZmV3IG1hY3JvcyBsaWtlIGBCVEZfSU5GT19WTEVOYCBpbnRvIGhlbHBlciBmdW5jdGlvbnMgc3VjaCBhcyBgYnRmX3ZsZW5gLiBJdCdzIGFsbCB3aXRoaW4gdGhlIGB0b29scy9icGYvYnBmdG9vbC9gIGRpcmVjdG9yeSwgd2hpY2gsIGFzIEkgcmVjYWxsLCBob3VzZXMgdXNlci1zcGFjZSB1dGlsaXRpZXMuIE5vdywgdGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgaW1wYWN0cyBrZXJuZWwgbG9naWMuICpicGZ0b29sKiBpcyB1c2VyLXNwYWNlLCBzbyBpdCdzIG5vdCBleGVjdXRpbmcgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgc3RhdGUgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBtb2RpZmljYXRpb25zIGxpa2UgdGhpczogRG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cywgcHVyZWx5IGNvc21ldGljIGNoYW5nZXMsIG9yIGNoYW5nZXMgdG8gbWFjcm9zL2NvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbi4gQWxzbywgY2hhbmdlcyB0byB1bnJlYWNoYWJsZSBjb2RlIGFyZSBub3Qgd29ydGggZnV6emluZywgd2hpY2ggdGhpcyBpcyBub3QgYXMgaXQgd2lsbCBleGVjdXRlLlxuXG5TaW5jZSB0aGlzIGlzIHN0cmljdGx5IGEgdXNlci1zcGFjZSB0b29sLCBhbmQgdGhlIHJlZmFjdG9yaW5nIGlzIGEgbm8tb3AgZnJvbSBhbiBleGVjdXRpb24gcGVyc3BlY3RpdmUsIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBieSBrZXJuZWwgZnV6emluZyBsaWtlIHN5emthbGxlci4gU3l6a2FsbGVyIGlzIGZvY3VzZWQgb24gdGhlIGtlcm5lbCBpdHNlbGYsIG5vdCB0b29scyBsaWtlICpicGZ0b29sKi4gVGhpcyBpc24ndCByZWFjaGFibGUga2VybmVsIGxvZ2ljLCBhIGRyaXZlciwgb3IgYXJjaGl0ZWN0dXJlIGNvZGUuIFRoZSBwYXRjaCBpcywgZXNzZW50aWFsbHksIGEgY29kZSBjbGVhbnVwLlxuXG5JIGp1c3QgZG91YmxlLWNoZWNrZWQgdGhlIGRpZmYgYWdhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBpdCdzICpvbmx5KiB0aG9zZSB0d28gZmlsZXMgaW4gYHRvb2xzL2JwZi9icGZ0b29sL2AuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIHdpbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGF0IHZhbHVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzAxLCJPdXRwdXRUb2tlbnMiOjc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6MjI6MDAuNDM3NDcyOTQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgY29kZSBpbiB0b29scy9icGYvYnBmdG9vbC8gYW5kIHBlcmZvcm1zIGEgc2ltcGxlIHJlZmFjdG9yaW5nIChyZXBsYWNpbmcgbWFjcm9zIHdpdGggaGVscGVyIGZ1bmN0aW9ucykuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBjb2RlIGluIHRvb2xzL2JwZi9icGZ0b29sLyBhbmQgcGVyZm9ybXMgYSBzaW1wbGUgcmVmYWN0b3JpbmcgKHJlcGxhY2luZyBtYWNyb3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl5zwq[1] Phase: Running StartedAt: 2026-07-02 08:22:12 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl5zwq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-02 08:22:12 +0000 UTC FinishedAt: 2026-07-02 08:22:18 +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,}