Name: series-workflowkdvzf Phase: Failed StartedAt: 2026-06-30 03:58:36 +0000 UTC FinishedAt: 2026-06-30 04:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdvzf[0] Phase: Succeeded StartedAt: 2026-06-30 03:58:36 +0000 UTC FinishedAt: 2026-06-30 04:13:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdvzf[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 03:58:36 +0000 UTC FinishedAt: 2026-06-30 04:13:23 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDA0OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyAodG9vbHMvc2NoZWRfZXh0KSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGtlcm5lbCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNDoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3OGViYzljZDVjMzFjYmY0ZDMwY2M5OTYwZDY2MTc1MzVhNmQ0NzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwNDoxMjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmggYi90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhcbmluZGV4IDAzOTg1NGM0OTBkNWUxLi5kZjVjYTFjZTIwZjY1MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXG5AQCAtNDIsNyAmIzQzOzQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3JlYWRfZW51bShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgKnZcbiBcdGlmIChidGZfaXNfZW51bSh0KSkge1xuIFx0XHRzdHJ1Y3QgYnRmX2VudW0gKmUgPSBidGZfZW51bSh0KTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdFx0biA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIGVbaV0ubmFtZV9vZmYpO1xuIFx0XHRcdFNDWF9CVUdfT04oIW4sIFwmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKVwmIzM0Oyk7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcbkBAIC01Myw3ICYjNDM7NTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxuIFx0fSBlbHNlIGlmIChidGZfaXNfZW51bTY0KHQpKSB7XG4gXHRcdHN0cnVjdCBidGZfZW51bTY0ICplID0gYnRmX2VudW02NCh0KTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdFx0biA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIGVbaV0ubmFtZV9vZmYpO1xuIFx0XHRcdFNDWF9CVUdfT04oIW4sIFwmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKVwmIzM0Oyk7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcbkBAIC05Nyw3ICYjNDM7OTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfc3RydWN0X2hhc19maWVsZChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZFxuIFxuIFx0bSA9IGJ0Zl9tZW1iZXJzKHQpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJ0Zl92bGVuKHQpOyBpJiM0MzsmIzQzOykge1xuIFx0XHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgbVtpXS5uYW1lX29mZik7XG4gXHRcdFNDWF9CVUdfT04oIW4sIFwmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKVwmIzM0Oyk7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgZmllbGQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA0OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyAodG9vbHMvc2NoZWRfZXh0KSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGtlcm5lbCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc4ZWJjOWNkNWMzMWNiZjRkMzBjYzk5NjBkNjYxNzUzNWE2ZDQ3MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDA0OjEyOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oIGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oCmluZGV4IDAzOTg1NGM0OTBkNWUxLi5kZjVjYTFjZTIwZjY1MyAxMDA2NDQKLS0tIGEvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaApAQCAtNDIsNyAmIzQzOzQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3JlYWRfZW51bShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgKnYKIAlpZiAoYnRmX2lzX2VudW0odCkpIHsKIAkJc3RydWN0IGJ0Zl9lbnVtICplID0gYnRmX2VudW0odCk7CiAKLQkJZm9yIChpID0gMDsgaSAmbHQ7IEJURl9JTkZPX1ZMRU4odC0mZ3Q7aW5mbyk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7CiAJCQluID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7CiAJCQlTQ1hfQlVHX09OKCFuLCAmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKSYjMzQ7KTsKIAkJCWlmICghc3RyY21wKG4sIG5hbWUpKSB7CkBAIC01Myw3ICYjNDM7NTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdgogCX0gZWxzZSBpZiAoYnRmX2lzX2VudW02NCh0KSkgewogCQlzdHJ1Y3QgYnRmX2VudW02NCAqZSA9IGJ0Zl9lbnVtNjQodCk7CiAKLQkJZm9yIChpID0gMDsgaSAmbHQ7IEJURl9JTkZPX1ZMRU4odC0mZ3Q7aW5mbyk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7CiAJCQluID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7CiAJCQlTQ1hfQlVHX09OKCFuLCAmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKSYjMzQ7KTsKIAkJCWlmICghc3RyY21wKG4sIG5hbWUpKSB7CkBAIC05Nyw3ICYjNDM7OTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfc3RydWN0X2hhc19maWVsZChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZAogCiAJbSA9IGJ0Zl9tZW1iZXJzKHQpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IEJURl9JTkZPX1ZMRU4odC0mZ3Q7aW5mbyk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBidGZfdmxlbih0KTsgaSYjNDM7JiM0MzspIHsKIAkJbiA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIG1baV0ubmFtZV9vZmYpOwogCQlTQ1hfQlVHX09OKCFuLCAmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKSYjMzQ7KTsKIAkJCWlmICghc3RyY21wKG4sIGZpZWxkKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVc2VyLVNwYWNlIENoYW5nZSBpbiBgc2NoZWRfZXh0YCBUb29scyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB0b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IGBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pYCBmb3IgYGJ0Zl92bGVuKHQpYC4mIzM0OyBUaGF0JiMzOTtzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBBbmQgaXQmIzM5O3MgaW4gdGhlIHVzZXItc3BhY2UgdG9vbHMgZm9yIGBzY2hlZF9leHRgLCBub3QgdGhlIGtlcm5lbCBpdHNlbGYuIFRoaXMgaXMgaW1wb3J0YW50IOKAkyB1c2VyLXNwYWNlIHRvb2xzIG9wZXJhdGUgaW4gcmluZyAzLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBpbXBhY3QuCgpSaWdodCwgdGhlIGB0b29scy9gIGRpcmVjdG9yeSAqaXNuJiMzOTt0KiBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgcnVucyBpbiByaW5nIDAuIFNvLCBJIHNob3VsZG4mIzM5O3QgZXhwZWN0IHRoaXMgdG8gYWZmZWN0IGtlcm5lbCBmdXp6aW5nIG9yIGFueSBsb3ctbGV2ZWwga2VybmVsIGJlaGF2aW9yLiBNeSBmb2N1cyBpcyBvbiB0aGUgdG9vbHMsIG5vdCB0aGUga2VybmVsJiMzOTtzIGludGVncml0eS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oYCBpc24mIzM5O3QgKnNvbWVob3cqIGluY2x1ZGVkIGluIGtlcm5lbC1zcGFjZSBjb2RlLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBgLiBBbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21wYXQuaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oPTI4PXR5cGVkZWYgaW50NjRfdCBzNjQ7XG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oLTc0LSNpbmNsdWRlIFwmIzM0O3VzZXJfZXhpdF9pbmZvLmhcJiMzNDtcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uaDo3NTojaW5jbHVkZSBcJiMzNDtjb21wYXQuaFwmIzM0O1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oLTc2LSNpbmNsdWRlIFwmIzM0O2VudW1zLmhcJiMzNDtcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oPTIyOT1zdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19DT01QQVRfc2N4X2JwZl9jcHVfY3VycihpbnQgY3B1KVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmgtMjQ5LSAqIFRoZSBrZXJuZWwgd2lsbCBjYXJyeSB0aGUgY29tcGF0IHZhcmlhbnRzIHVudGlsIHY2LjIzIHRvIG1haW50YWluIGJpbmFyeVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaDoyNTA6ICogY29tcGF0aWJpbGl0eS4gQWZ0ZXIgdjYuMjMgcmVsZWFzZSwgcmVtb3ZlIHRoZSBjb21wYXQgaGFuZGxpbmcgYW5kIG1vdmUgdGhlXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oLTI1MS0gKiB3cmFwcGVycyB0byBjb21tb24uYnBmLmguXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaD0zMDc9c2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGRzcV9pZCwgdTY0IHNsaWNlLCB1NjQgdnRpbWUsXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0zMzEtICogdjYuMTk6IHNjeF9icGZfZHNxX2luc2VydCgpIG5vdyByZXR1cm5zIGJvb2wgaW5zdGVhZCBvZiB2b2lkLiBNb3ZlXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oOjMzMjogKiBzY3hfYnBmX2RzcV9pbnNlcnQoKSBkZWNsIHRvIGNvbW1vbi5icGYuaCBhbmQgZHJvcCBjb21wYXQgaGVscGVyIGFmdGVyIHY2LjIyLlxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0zMzMtICogVGhlIGV4dHJhIF9fX2NvbXBhdCBzdWZmaXggaXMgdG8gd29yayBhcm91bmQgbGliYnBmIG5vdCBpZ25vcmluZyBfX1NVRkZJWCBvblxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg9NDE1PXN0YXRpYyBpbmxpbmUgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MpXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC00MjYtICogRGVmaW5lIHNjaGVkX2V4dF9vcHMuIFRoaXMgbWF5IGJlIGV4cGFuZGVkIHRvIGRlZmluZSBtdWx0aXBsZSB2YXJpYW50cyBmb3JcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg6NDI3OiAqIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNlZSBjb21wYXQuaDo6U0NYX09QU19MT0FEL0FUVEFDSCgpLlxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC00MjgtICovXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oPTEyNj1zdGF0aWMgaW5saW5lIGxvbmcgc2N4X2hvdHBsdWdfc2VxKHZvaWQpXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oLTE1Mi0gKiBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyBjYW4gY2hhbmdlIG92ZXIgdGltZS4gSWYgY29tcGF0LmJwZi5oOjpTQ1hfT1BTX0RFRklORSgpXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0Lmg6MTUzOiAqIGlzIHVzZWQgdG8gZGVmaW5lIG9wcyBhbmQgY29tcGF0Lmg6OlNDWF9PUFNfTE9BRC9BVFRBQ0goKSBhcmUgdXNlZCB0byBsb2FkXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmgtMTU0LSAqIGFuZCBhdHRhY2ggaXQsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgYXV0b21hdGljYWxseSBtYWludGFpbmVkIHdoZXJlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMgoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgbW9kaWZ5aW5nIGB0b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhgLiBSaWdodCwgdGhhdCYjMzk7cyBhIGhlYWRlciBmaWxlLCBhbmQgYSB1c2VyLXNwYWNlIHRvb2wgaGVhZGVyIGF0IHRoYXQuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgcmlnaHQgYXdheSB0aGF0IHRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGdvaW5nIHRvIGJlIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgY29yZSBrZXJuZWwgZXhlY3V0aW9uIHBhdGguIEZ1enppbmcgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgd291bGQgYmUgYSB3YXN0ZSBvZiByZXNvdXJjZXM7IGl0JiMzOTtzIG5vdCBnb2luZyB0byByZXZlYWwgYW55IGV4cGxvaXRhYmxlIGtlcm5lbCB2dWxuZXJhYmlsaXRpZXMuIFNvLCBhZnRlciBhIHF1aWNrIG1lbnRhbCBzY2FuLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBzZXQgdG8gYGZhbHNlYC4gTm8gbmVlZCB0byBleHBlbmQgY3ljbGVzIG9uIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA0OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzICh0b29scy9zY2hlZF9leHQpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgKHRvb2xzL3NjaGVkX2V4dCkgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo0NS45NjUzODg4MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTU3ODE2MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgKHRvb2xzL3NjaGVkX2V4dCkgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA0OjEyOjQ1Ljk2NTM5NTAwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MzE1OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjc4ZWJjOWNkNWMzMWNiZjRkMzBjYzk5NjBkNjYxNzUzNWE2ZDQ3MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAwNDoxMjo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmggYi90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhcXG5pbmRleCAwMzk4NTRjNDkwZDVlMS4uZGY1Y2ExY2UyMGY2NTMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXFxuKysrIGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXFxuQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3JlYWRfZW51bShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgKnZcXG4gXFx0aWYgKGJ0Zl9pc19lbnVtKHQpKSB7XFxuIFxcdFxcdHN0cnVjdCBidGZfZW51bSAqZSA9IGJ0Zl9lbnVtKHQpO1xcbiBcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7IGkrKykge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xcbiBcXHRcXHRcXHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7XFxuIFxcdFxcdFxcdFNDWF9CVUdfT04oIW4sIFxcXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcXFwiKTtcXG4gXFx0XFx0XFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcXG5AQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxcbiBcXHR9IGVsc2UgaWYgKGJ0Zl9pc19lbnVtNjQodCkpIHtcXG4gXFx0XFx0c3RydWN0IGJ0Zl9lbnVtNjQgKmUgPSBidGZfZW51bTY0KHQpO1xcbiBcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7IGkrKykge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xcbiBcXHRcXHRcXHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7XFxuIFxcdFxcdFxcdFNDWF9CVUdfT04oIW4sIFxcXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcXFwiKTtcXG4gXFx0XFx0XFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcXG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfc3RydWN0X2hhc19maWVsZChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZFxcbiBcXG4gXFx0bSA9IGJ0Zl9tZW1iZXJzKHQpO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xcbiBcXHRcXHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgbVtpXS5uYW1lX29mZik7XFxuIFxcdFxcdFNDWF9CVUdfT04oIW4sIFxcXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcXFwiKTtcXG4gXFx0XFx0XFx0aWYgKCFzdHJjbXAobiwgZmllbGQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo0Ni40NzMzODE2MDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NDk4MTUzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyAodG9vbHMvc2NoZWRfZXh0KSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGtlcm5lbCBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNzhlYmM5Y2Q1YzMxY2JmNGQzMGNjOTk2MGQ2NjE3NTM1YTZkNDcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDQ6MTI6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmggYi90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhcbmluZGV4IDAzOTg1NGM0OTBkNWUxLi5kZjVjYTFjZTIwZjY1MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaFxuKysrIGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXG5AQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxuIFx0aWYgKGJ0Zl9pc19lbnVtKHQpKSB7XG4gXHRcdHN0cnVjdCBidGZfZW51bSAqZSA9IGJ0Zl9lbnVtKHQpO1xuIFxuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7IGkrKykge1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBidGZfdmxlbih0KTsgaSsrKSB7XG4gXHRcdFx0biA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIGVbaV0ubmFtZV9vZmYpO1xuIFx0XHRcdFNDWF9CVUdfT04oIW4sIFwiYnRmX19uYW1lX2J5X29mZnNldCgpXCIpO1xuIFx0XHRcdGlmICghc3RyY21wKG4sIG5hbWUpKSB7XG5AQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxuIFx0fSBlbHNlIGlmIChidGZfaXNfZW51bTY0KHQpKSB7XG4gXHRcdHN0cnVjdCBidGZfZW51bTY0ICplID0gYnRmX2VudW02NCh0KTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpKyspIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xuIFx0XHRcdG4gPSBidGZfX25hbWVfYnlfb2Zmc2V0KF9fQ09NUEFUX3ZtbGludXhfYnRmLCBlW2ldLm5hbWVfb2ZmKTtcbiBcdFx0XHRTQ1hfQlVHX09OKCFuLCBcImJ0Zl9fbmFtZV9ieV9vZmZzZXQoKVwiKTtcbiBcdFx0XHRpZiAoIXN0cmNtcChuLCBuYW1lKSkge1xuQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3N0cnVjdF9oYXNfZmllbGQoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZmllbGRcbiBcbiBcdG0gPSBidGZfbWVtYmVycyh0KTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cdTAwM2VpbmZvKTsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBidGZfdmxlbih0KTsgaSsrKSB7XG4gXHRcdG4gPSBidGZfX25hbWVfYnlfb2Zmc2V0KF9fQ09NUEFUX3ZtbGludXhfYnRmLCBtW2ldLm5hbWVfb2ZmKTtcbiBcdFx0U0NYX0JVR19PTighbiwgXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcIik7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgZmllbGQpKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDQ6MTI6NDYuNDczMzgzMDg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MzI2NzAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVc2VyLVNwYWNlIENoYW5nZSBpbiBgc2NoZWRfZXh0YCBUb29scyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGV5J3JlIHN3YXBwaW5nIG91dCBgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pYCBmb3IgYGJ0Zl92bGVuKHQpYC5cIiBUaGF0J3MgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIEFuZCBpdCdzIGluIHRoZSB1c2VyLXNwYWNlIHRvb2xzIGZvciBgc2NoZWRfZXh0YCwgbm90IHRoZSBrZXJuZWwgaXRzZWxmLiBUaGlzIGlzIGltcG9ydGFudCDigJMgdXNlci1zcGFjZSB0b29scyBvcGVyYXRlIGluIHJpbmcgMywgYW5kIEkgbmVlZCB0byBjb25zaWRlciB0aGUgaW1wYWN0LlxuXG5SaWdodCwgdGhlIGB0b29scy9gIGRpcmVjdG9yeSAqaXNuJ3QqIHBhcnQgb2YgdGhlIGNvcmUga2VybmVsIGNvZGUgdGhhdCBydW5zIGluIHJpbmcgMC4gU28sIEkgc2hvdWxkbid0IGV4cGVjdCB0aGlzIHRvIGFmZmVjdCBrZXJuZWwgZnV6emluZyBvciBhbnkgbG93LWxldmVsIGtlcm5lbCBiZWhhdmlvci4gTXkgZm9jdXMgaXMgb24gdGhlIHRvb2xzLCBub3QgdGhlIGtlcm5lbCdzIGludGVncml0eS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGB0b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhgIGlzbid0ICpzb21laG93KiBpbmNsdWRlZCBpbiBrZXJuZWwtc3BhY2UgY29kZS4gVGltZSB0byBmaXJlIHVwIGBncmVwYC4gQWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo1MC43MTY2NTI1NTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxODAxMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbXBhdC5oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oPTI4PXR5cGVkZWYgaW50NjRfdCBzNjQ7XFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmgtNzQtI2luY2x1ZGUgXFxcInVzZXJfZXhpdF9pbmZvLmhcXFwiXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oOjc1OiNpbmNsdWRlIFxcXCJjb21wYXQuaFxcXCJcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmgtNzYtI2luY2x1ZGUgXFxcImVudW1zLmhcXFwiXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oPTIyOT1zdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19DT01QQVRfc2N4X2JwZl9jcHVfY3VycihpbnQgY3B1KVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0yNDktICogVGhlIGtlcm5lbCB3aWxsIGNhcnJ5IHRoZSBjb21wYXQgdmFyaWFudHMgdW50aWwgdjYuMjMgdG8gbWFpbnRhaW4gYmluYXJ5XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaDoyNTA6ICogY29tcGF0aWJpbGl0eS4gQWZ0ZXIgdjYuMjMgcmVsZWFzZSwgcmVtb3ZlIHRoZSBjb21wYXQgaGFuZGxpbmcgYW5kIG1vdmUgdGhlXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0yNTEtICogd3JhcHBlcnMgdG8gY29tbW9uLmJwZi5oLlxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaD0zMDc9c2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGRzcV9pZCwgdTY0IHNsaWNlLCB1NjQgdnRpbWUsXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oLTMzMS0gKiB2Ni4xOTogc2N4X2JwZl9kc3FfaW5zZXJ0KCkgbm93IHJldHVybnMgYm9vbCBpbnN0ZWFkIG9mIHZvaWQuIE1vdmVcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oOjMzMjogKiBzY3hfYnBmX2RzcV9pbnNlcnQoKSBkZWNsIHRvIGNvbW1vbi5icGYuaCBhbmQgZHJvcCBjb21wYXQgaGVscGVyIGFmdGVyIHY2LjIyLlxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmgtMzMzLSAqIFRoZSBleHRyYSBfX19jb21wYXQgc3VmZml4IGlzIHRvIHdvcmsgYXJvdW5kIGxpYmJwZiBub3QgaWdub3JpbmcgX19TVUZGSVggb25cXG4tLVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg9NDE1PXN0YXRpYyBpbmxpbmUgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MpXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oLTQyNi0gKiBEZWZpbmUgc2NoZWRfZXh0X29wcy4gVGhpcyBtYXkgYmUgZXhwYW5kZWQgdG8gZGVmaW5lIG11bHRpcGxlIHZhcmlhbnRzIGZvclxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg6NDI3OiAqIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNlZSBjb21wYXQuaDo6U0NYX09QU19MT0FEL0FUVEFDSCgpLlxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmgtNDI4LSAqL1xcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oPTEyNj1zdGF0aWMgaW5saW5lIGxvbmcgc2N4X2hvdHBsdWdfc2VxKHZvaWQpXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmgtMTUyLSAqIHN0cnVjdCBzY2hlZF9leHRfb3BzIGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLiBJZiBjb21wYXQuYnBmLmg6OlNDWF9PUFNfREVGSU5FKClcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0Lmg6MTUzOiAqIGlzIHVzZWQgdG8gZGVmaW5lIG9wcyBhbmQgY29tcGF0Lmg6OlNDWF9PUFNfTE9BRC9BVFRBQ0goKSBhcmUgdXNlZCB0byBsb2FkXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oLTE1NC0gKiBhbmQgYXR0YWNoIGl0LCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzIGF1dG9tYXRpY2FsbHkgbWFpbnRhaW5lZCB3aGVyZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo1MC44NTg0NjMyNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjQ3MDA1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYHRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaGAuIFJpZ2h0LCB0aGF0J3MgYSBoZWFkZXIgZmlsZSwgYW5kIGEgdXNlci1zcGFjZSB0b29sIGhlYWRlciBhdCB0aGF0LiBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHJpZ2h0IGF3YXkgdGhhdCB0aGlzIGlzbid0IHNvbWV0aGluZyB0aGF0J3MgZ29pbmcgdG8gYmUgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aC4gRnV6emluZyB0aGlzIHBhcnRpY3VsYXIgZmlsZSB3b3VsZCBiZSBhIHdhc3RlIG9mIHJlc291cmNlczsgaXQncyBub3QgZ29pbmcgdG8gcmV2ZWFsIGFueSBleHBsb2l0YWJsZSBrZXJuZWwgdnVsbmVyYWJpbGl0aWVzLiBTbywgYWZ0ZXIgYSBxdWljayBtZW50YWwgc2NhbiwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuIE5vIG5lZWQgdG8gZXhwZW5kIGN5Y2xlcyBvbiB0aGlzIG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzMiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA0OjEyOjU0LjEyMzE2ODE2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzICh0b29scy9zY2hlZF9leHQpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgKHRvb2xzL3NjaGVkX2V4dCkgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdvzf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 03:58:37 +0000 UTC FinishedAt: 2026-06-30 04:12:55 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDA0OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyAodG9vbHMvc2NoZWRfZXh0KSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGtlcm5lbCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNDoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3OGViYzljZDVjMzFjYmY0ZDMwY2M5OTYwZDY2MTc1MzVhNmQ0NzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwNDoxMjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmggYi90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhcbmluZGV4IDAzOTg1NGM0OTBkNWUxLi5kZjVjYTFjZTIwZjY1MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXG5AQCAtNDIsNyAmIzQzOzQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3JlYWRfZW51bShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgKnZcbiBcdGlmIChidGZfaXNfZW51bSh0KSkge1xuIFx0XHRzdHJ1Y3QgYnRmX2VudW0gKmUgPSBidGZfZW51bSh0KTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdFx0biA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIGVbaV0ubmFtZV9vZmYpO1xuIFx0XHRcdFNDWF9CVUdfT04oIW4sIFwmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKVwmIzM0Oyk7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcbkBAIC01Myw3ICYjNDM7NTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxuIFx0fSBlbHNlIGlmIChidGZfaXNfZW51bTY0KHQpKSB7XG4gXHRcdHN0cnVjdCBidGZfZW51bTY0ICplID0gYnRmX2VudW02NCh0KTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdFx0biA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIGVbaV0ubmFtZV9vZmYpO1xuIFx0XHRcdFNDWF9CVUdfT04oIW4sIFwmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKVwmIzM0Oyk7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcbkBAIC05Nyw3ICYjNDM7OTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfc3RydWN0X2hhc19maWVsZChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZFxuIFxuIFx0bSA9IGJ0Zl9tZW1iZXJzKHQpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJ0Zl92bGVuKHQpOyBpJiM0MzsmIzQzOykge1xuIFx0XHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgbVtpXS5uYW1lX29mZik7XG4gXHRcdFNDWF9CVUdfT04oIW4sIFwmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKVwmIzM0Oyk7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgZmllbGQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA0OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyAodG9vbHMvc2NoZWRfZXh0KSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGtlcm5lbCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc4ZWJjOWNkNWMzMWNiZjRkMzBjYzk5NjBkNjYxNzUzNWE2ZDQ3MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDA0OjEyOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oIGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oCmluZGV4IDAzOTg1NGM0OTBkNWUxLi5kZjVjYTFjZTIwZjY1MyAxMDA2NDQKLS0tIGEvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaApAQCAtNDIsNyAmIzQzOzQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3JlYWRfZW51bShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgKnYKIAlpZiAoYnRmX2lzX2VudW0odCkpIHsKIAkJc3RydWN0IGJ0Zl9lbnVtICplID0gYnRmX2VudW0odCk7CiAKLQkJZm9yIChpID0gMDsgaSAmbHQ7IEJURl9JTkZPX1ZMRU4odC0mZ3Q7aW5mbyk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7CiAJCQluID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7CiAJCQlTQ1hfQlVHX09OKCFuLCAmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKSYjMzQ7KTsKIAkJCWlmICghc3RyY21wKG4sIG5hbWUpKSB7CkBAIC01Myw3ICYjNDM7NTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdgogCX0gZWxzZSBpZiAoYnRmX2lzX2VudW02NCh0KSkgewogCQlzdHJ1Y3QgYnRmX2VudW02NCAqZSA9IGJ0Zl9lbnVtNjQodCk7CiAKLQkJZm9yIChpID0gMDsgaSAmbHQ7IEJURl9JTkZPX1ZMRU4odC0mZ3Q7aW5mbyk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgYnRmX3ZsZW4odCk7IGkmIzQzOyYjNDM7KSB7CiAJCQluID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7CiAJCQlTQ1hfQlVHX09OKCFuLCAmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKSYjMzQ7KTsKIAkJCWlmICghc3RyY21wKG4sIG5hbWUpKSB7CkBAIC05Nyw3ICYjNDM7OTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfc3RydWN0X2hhc19maWVsZChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZAogCiAJbSA9IGJ0Zl9tZW1iZXJzKHQpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IEJURl9JTkZPX1ZMRU4odC0mZ3Q7aW5mbyk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBidGZfdmxlbih0KTsgaSYjNDM7JiM0MzspIHsKIAkJbiA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIG1baV0ubmFtZV9vZmYpOwogCQlTQ1hfQlVHX09OKCFuLCAmIzM0O2J0Zl9fbmFtZV9ieV9vZmZzZXQoKSYjMzQ7KTsKIAkJCWlmICghc3RyY21wKG4sIGZpZWxkKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVc2VyLVNwYWNlIENoYW5nZSBpbiBgc2NoZWRfZXh0YCBUb29scyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB0b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IGBCVEZfSU5GT19WTEVOKHQtJmd0O2luZm8pYCBmb3IgYGJ0Zl92bGVuKHQpYC4mIzM0OyBUaGF0JiMzOTtzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBBbmQgaXQmIzM5O3MgaW4gdGhlIHVzZXItc3BhY2UgdG9vbHMgZm9yIGBzY2hlZF9leHRgLCBub3QgdGhlIGtlcm5lbCBpdHNlbGYuIFRoaXMgaXMgaW1wb3J0YW50IOKAkyB1c2VyLXNwYWNlIHRvb2xzIG9wZXJhdGUgaW4gcmluZyAzLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBpbXBhY3QuCgpSaWdodCwgdGhlIGB0b29scy9gIGRpcmVjdG9yeSAqaXNuJiMzOTt0KiBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgcnVucyBpbiByaW5nIDAuIFNvLCBJIHNob3VsZG4mIzM5O3QgZXhwZWN0IHRoaXMgdG8gYWZmZWN0IGtlcm5lbCBmdXp6aW5nIG9yIGFueSBsb3ctbGV2ZWwga2VybmVsIGJlaGF2aW9yLiBNeSBmb2N1cyBpcyBvbiB0aGUgdG9vbHMsIG5vdCB0aGUga2VybmVsJiMzOTtzIGludGVncml0eS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oYCBpc24mIzM5O3QgKnNvbWVob3cqIGluY2x1ZGVkIGluIGtlcm5lbC1zcGFjZSBjb2RlLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBgLiBBbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwNDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21wYXQuaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oPTI4PXR5cGVkZWYgaW50NjRfdCBzNjQ7XG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oLTc0LSNpbmNsdWRlIFwmIzM0O3VzZXJfZXhpdF9pbmZvLmhcJiMzNDtcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uaDo3NTojaW5jbHVkZSBcJiMzNDtjb21wYXQuaFwmIzM0O1xudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oLTc2LSNpbmNsdWRlIFwmIzM0O2VudW1zLmhcJiMzNDtcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oPTIyOT1zdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19DT01QQVRfc2N4X2JwZl9jcHVfY3VycihpbnQgY3B1KVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmgtMjQ5LSAqIFRoZSBrZXJuZWwgd2lsbCBjYXJyeSB0aGUgY29tcGF0IHZhcmlhbnRzIHVudGlsIHY2LjIzIHRvIG1haW50YWluIGJpbmFyeVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaDoyNTA6ICogY29tcGF0aWJpbGl0eS4gQWZ0ZXIgdjYuMjMgcmVsZWFzZSwgcmVtb3ZlIHRoZSBjb21wYXQgaGFuZGxpbmcgYW5kIG1vdmUgdGhlXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oLTI1MS0gKiB3cmFwcGVycyB0byBjb21tb24uYnBmLmguXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaD0zMDc9c2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGRzcV9pZCwgdTY0IHNsaWNlLCB1NjQgdnRpbWUsXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0zMzEtICogdjYuMTk6IHNjeF9icGZfZHNxX2luc2VydCgpIG5vdyByZXR1cm5zIGJvb2wgaW5zdGVhZCBvZiB2b2lkLiBNb3ZlXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oOjMzMjogKiBzY3hfYnBmX2RzcV9pbnNlcnQoKSBkZWNsIHRvIGNvbW1vbi5icGYuaCBhbmQgZHJvcCBjb21wYXQgaGVscGVyIGFmdGVyIHY2LjIyLlxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0zMzMtICogVGhlIGV4dHJhIF9fX2NvbXBhdCBzdWZmaXggaXMgdG8gd29yayBhcm91bmQgbGliYnBmIG5vdCBpZ25vcmluZyBfX1NVRkZJWCBvblxuLS1cbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg9NDE1PXN0YXRpYyBpbmxpbmUgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MpXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC00MjYtICogRGVmaW5lIHNjaGVkX2V4dF9vcHMuIFRoaXMgbWF5IGJlIGV4cGFuZGVkIHRvIGRlZmluZSBtdWx0aXBsZSB2YXJpYW50cyBmb3JcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg6NDI3OiAqIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNlZSBjb21wYXQuaDo6U0NYX09QU19MT0FEL0FUVEFDSCgpLlxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC00MjgtICovXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oPTEyNj1zdGF0aWMgaW5saW5lIGxvbmcgc2N4X2hvdHBsdWdfc2VxKHZvaWQpXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oLTE1Mi0gKiBzdHJ1Y3Qgc2NoZWRfZXh0X29wcyBjYW4gY2hhbmdlIG92ZXIgdGltZS4gSWYgY29tcGF0LmJwZi5oOjpTQ1hfT1BTX0RFRklORSgpXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0Lmg6MTUzOiAqIGlzIHVzZWQgdG8gZGVmaW5lIG9wcyBhbmQgY29tcGF0Lmg6OlNDWF9PUFNfTE9BRC9BVFRBQ0goKSBhcmUgdXNlZCB0byBsb2FkXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmgtMTU0LSAqIGFuZCBhdHRhY2ggaXQsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgYXV0b21hdGljYWxseSBtYWludGFpbmVkIHdoZXJlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDQ6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMgoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgbW9kaWZ5aW5nIGB0b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhgLiBSaWdodCwgdGhhdCYjMzk7cyBhIGhlYWRlciBmaWxlLCBhbmQgYSB1c2VyLXNwYWNlIHRvb2wgaGVhZGVyIGF0IHRoYXQuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgcmlnaHQgYXdheSB0aGF0IHRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGdvaW5nIHRvIGJlIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgY29yZSBrZXJuZWwgZXhlY3V0aW9uIHBhdGguIEZ1enppbmcgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgd291bGQgYmUgYSB3YXN0ZSBvZiByZXNvdXJjZXM7IGl0JiMzOTtzIG5vdCBnb2luZyB0byByZXZlYWwgYW55IGV4cGxvaXRhYmxlIGtlcm5lbCB2dWxuZXJhYmlsaXRpZXMuIFNvLCBhZnRlciBhIHF1aWNrIG1lbnRhbCBzY2FuLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBzZXQgdG8gYGZhbHNlYC4gTm8gbmVlZCB0byBleHBlbmQgY3ljbGVzIG9uIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA0OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzICh0b29scy9zY2hlZF9leHQpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgKHRvb2xzL3NjaGVkX2V4dCkgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo0NS45NjUzODg4MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTU3ODE2MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgKHRvb2xzL3NjaGVkX2V4dCkgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA0OjEyOjQ1Ljk2NTM5NTAwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MzE1OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjc4ZWJjOWNkNWMzMWNiZjRkMzBjYzk5NjBkNjYxNzUzNWE2ZDQ3MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAwNDoxMjo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmggYi90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhcXG5pbmRleCAwMzk4NTRjNDkwZDVlMS4uZGY1Y2ExY2UyMGY2NTMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXFxuKysrIGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXFxuQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3JlYWRfZW51bShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgKnZcXG4gXFx0aWYgKGJ0Zl9pc19lbnVtKHQpKSB7XFxuIFxcdFxcdHN0cnVjdCBidGZfZW51bSAqZSA9IGJ0Zl9lbnVtKHQpO1xcbiBcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7IGkrKykge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xcbiBcXHRcXHRcXHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7XFxuIFxcdFxcdFxcdFNDWF9CVUdfT04oIW4sIFxcXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcXFwiKTtcXG4gXFx0XFx0XFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcXG5AQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxcbiBcXHR9IGVsc2UgaWYgKGJ0Zl9pc19lbnVtNjQodCkpIHtcXG4gXFx0XFx0c3RydWN0IGJ0Zl9lbnVtNjQgKmUgPSBidGZfZW51bTY0KHQpO1xcbiBcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7IGkrKykge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xcbiBcXHRcXHRcXHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgZVtpXS5uYW1lX29mZik7XFxuIFxcdFxcdFxcdFNDWF9CVUdfT04oIW4sIFxcXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcXFwiKTtcXG4gXFx0XFx0XFx0aWYgKCFzdHJjbXAobiwgbmFtZSkpIHtcXG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfc3RydWN0X2hhc19maWVsZChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZFxcbiBcXG4gXFx0bSA9IGJ0Zl9tZW1iZXJzKHQpO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cXHUwMDNlaW5mbyk7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xcbiBcXHRcXHRuID0gYnRmX19uYW1lX2J5X29mZnNldChfX0NPTVBBVF92bWxpbnV4X2J0ZiwgbVtpXS5uYW1lX29mZik7XFxuIFxcdFxcdFNDWF9CVUdfT04oIW4sIFxcXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcXFwiKTtcXG4gXFx0XFx0XFx0aWYgKCFzdHJjbXAobiwgZmllbGQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo0Ni40NzMzODE2MDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NDk4MTUzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyAodG9vbHMvc2NoZWRfZXh0KSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGtlcm5lbCBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNzhlYmM5Y2Q1YzMxY2JmNGQzMGNjOTk2MGQ2NjE3NTM1YTZkNDcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDQ6MTI6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmggYi90b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhcbmluZGV4IDAzOTg1NGM0OTBkNWUxLi5kZjVjYTFjZTIwZjY1MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaFxuKysrIGIvdG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oXG5AQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxuIFx0aWYgKGJ0Zl9pc19lbnVtKHQpKSB7XG4gXHRcdHN0cnVjdCBidGZfZW51bSAqZSA9IGJ0Zl9lbnVtKHQpO1xuIFxuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVEZfSU5GT19WTEVOKHQtXHUwMDNlaW5mbyk7IGkrKykge1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBidGZfdmxlbih0KTsgaSsrKSB7XG4gXHRcdFx0biA9IGJ0Zl9fbmFtZV9ieV9vZmZzZXQoX19DT01QQVRfdm1saW51eF9idGYsIGVbaV0ubmFtZV9vZmYpO1xuIFx0XHRcdFNDWF9CVUdfT04oIW4sIFwiYnRmX19uYW1lX2J5X29mZnNldCgpXCIpO1xuIFx0XHRcdGlmICghc3RyY21wKG4sIG5hbWUpKSB7XG5AQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19DT01QQVRfcmVhZF9lbnVtKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCAqdlxuIFx0fSBlbHNlIGlmIChidGZfaXNfZW51bTY0KHQpKSB7XG4gXHRcdHN0cnVjdCBidGZfZW51bTY0ICplID0gYnRmX2VudW02NCh0KTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pOyBpKyspIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnRmX3ZsZW4odCk7IGkrKykge1xuIFx0XHRcdG4gPSBidGZfX25hbWVfYnlfb2Zmc2V0KF9fQ09NUEFUX3ZtbGludXhfYnRmLCBlW2ldLm5hbWVfb2ZmKTtcbiBcdFx0XHRTQ1hfQlVHX09OKCFuLCBcImJ0Zl9fbmFtZV9ieV9vZmZzZXQoKVwiKTtcbiBcdFx0XHRpZiAoIXN0cmNtcChuLCBuYW1lKSkge1xuQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIGlubGluZSBib29sIF9fQ09NUEFUX3N0cnVjdF9oYXNfZmllbGQoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZmllbGRcbiBcbiBcdG0gPSBidGZfbWVtYmVycyh0KTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJURl9JTkZPX1ZMRU4odC1cdTAwM2VpbmZvKTsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBidGZfdmxlbih0KTsgaSsrKSB7XG4gXHRcdG4gPSBidGZfX25hbWVfYnlfb2Zmc2V0KF9fQ09NUEFUX3ZtbGludXhfYnRmLCBtW2ldLm5hbWVfb2ZmKTtcbiBcdFx0U0NYX0JVR19PTighbiwgXCJidGZfX25hbWVfYnlfb2Zmc2V0KClcIik7XG4gXHRcdFx0aWYgKCFzdHJjbXAobiwgZmllbGQpKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDQ6MTI6NDYuNDczMzgzMDg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MzI2NzAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVc2VyLVNwYWNlIENoYW5nZSBpbiBgc2NoZWRfZXh0YCBUb29scyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGV5J3JlIHN3YXBwaW5nIG91dCBgQlRGX0lORk9fVkxFTih0LVx1MDAzZWluZm8pYCBmb3IgYGJ0Zl92bGVuKHQpYC5cIiBUaGF0J3MgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIEFuZCBpdCdzIGluIHRoZSB1c2VyLXNwYWNlIHRvb2xzIGZvciBgc2NoZWRfZXh0YCwgbm90IHRoZSBrZXJuZWwgaXRzZWxmLiBUaGlzIGlzIGltcG9ydGFudCDigJMgdXNlci1zcGFjZSB0b29scyBvcGVyYXRlIGluIHJpbmcgMywgYW5kIEkgbmVlZCB0byBjb25zaWRlciB0aGUgaW1wYWN0LlxuXG5SaWdodCwgdGhlIGB0b29scy9gIGRpcmVjdG9yeSAqaXNuJ3QqIHBhcnQgb2YgdGhlIGNvcmUga2VybmVsIGNvZGUgdGhhdCBydW5zIGluIHJpbmcgMC4gU28sIEkgc2hvdWxkbid0IGV4cGVjdCB0aGlzIHRvIGFmZmVjdCBrZXJuZWwgZnV6emluZyBvciBhbnkgbG93LWxldmVsIGtlcm5lbCBiZWhhdmlvci4gTXkgZm9jdXMgaXMgb24gdGhlIHRvb2xzLCBub3QgdGhlIGtlcm5lbCdzIGludGVncml0eS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGB0b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmhgIGlzbid0ICpzb21laG93KiBpbmNsdWRlZCBpbiBrZXJuZWwtc3BhY2UgY29kZS4gVGltZSB0byBmaXJlIHVwIGBncmVwYC4gQWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo1MC43MTY2NTI1NTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxODAxMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbXBhdC5oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oPTI4PXR5cGVkZWYgaW50NjRfdCBzNjQ7XFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmgtNzQtI2luY2x1ZGUgXFxcInVzZXJfZXhpdF9pbmZvLmhcXFwiXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5oOjc1OiNpbmNsdWRlIFxcXCJjb21wYXQuaFxcXCJcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmgtNzYtI2luY2x1ZGUgXFxcImVudW1zLmhcXFwiXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oPTIyOT1zdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19DT01QQVRfc2N4X2JwZl9jcHVfY3VycihpbnQgY3B1KVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0yNDktICogVGhlIGtlcm5lbCB3aWxsIGNhcnJ5IHRoZSBjb21wYXQgdmFyaWFudHMgdW50aWwgdjYuMjMgdG8gbWFpbnRhaW4gYmluYXJ5XFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaDoyNTA6ICogY29tcGF0aWJpbGl0eS4gQWZ0ZXIgdjYuMjMgcmVsZWFzZSwgcmVtb3ZlIHRoZSBjb21wYXQgaGFuZGxpbmcgYW5kIG1vdmUgdGhlXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaC0yNTEtICogd3JhcHBlcnMgdG8gY29tbW9uLmJwZi5oLlxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5icGYuaD0zMDc9c2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdTY0IGRzcV9pZCwgdTY0IHNsaWNlLCB1NjQgdnRpbWUsXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oLTMzMS0gKiB2Ni4xOTogc2N4X2JwZl9kc3FfaW5zZXJ0KCkgbm93IHJldHVybnMgYm9vbCBpbnN0ZWFkIG9mIHZvaWQuIE1vdmVcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oOjMzMjogKiBzY3hfYnBmX2RzcV9pbnNlcnQoKSBkZWNsIHRvIGNvbW1vbi5icGYuaCBhbmQgZHJvcCBjb21wYXQgaGVscGVyIGFmdGVyIHY2LjIyLlxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmgtMzMzLSAqIFRoZSBleHRyYSBfX19jb21wYXQgc3VmZml4IGlzIHRvIHdvcmsgYXJvdW5kIGxpYmJwZiBub3QgaWdub3JpbmcgX19TVUZGSVggb25cXG4tLVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg9NDE1PXN0YXRpYyBpbmxpbmUgdm9pZCBzY3hfYnBmX2RzcV9yZWVucSh1NjQgZHNxX2lkLCB1NjQgcmVlbnFfZmxhZ3MpXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmJwZi5oLTQyNi0gKiBEZWZpbmUgc2NoZWRfZXh0X29wcy4gVGhpcyBtYXkgYmUgZXhwYW5kZWQgdG8gZGVmaW5lIG11bHRpcGxlIHZhcmlhbnRzIGZvclxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmg6NDI3OiAqIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNlZSBjb21wYXQuaDo6U0NYX09QU19MT0FEL0FUVEFDSCgpLlxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuYnBmLmgtNDI4LSAqL1xcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oPTEyNj1zdGF0aWMgaW5saW5lIGxvbmcgc2N4X2hvdHBsdWdfc2VxKHZvaWQpXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0LmgtMTUyLSAqIHN0cnVjdCBzY2hlZF9leHRfb3BzIGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLiBJZiBjb21wYXQuYnBmLmg6OlNDWF9PUFNfREVGSU5FKClcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tcGF0Lmg6MTUzOiAqIGlzIHVzZWQgdG8gZGVmaW5lIG9wcyBhbmQgY29tcGF0Lmg6OlNDWF9PUFNfTE9BRC9BVFRBQ0goKSBhcmUgdXNlZCB0byBsb2FkXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbXBhdC5oLTE1NC0gKiBhbmQgYXR0YWNoIGl0LCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzIGF1dG9tYXRpY2FsbHkgbWFpbnRhaW5lZCB3aGVyZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwNDoxMjo1MC44NTg0NjMyNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjQ3MDA1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYHRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21wYXQuaGAuIFJpZ2h0LCB0aGF0J3MgYSBoZWFkZXIgZmlsZSwgYW5kIGEgdXNlci1zcGFjZSB0b29sIGhlYWRlciBhdCB0aGF0LiBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHJpZ2h0IGF3YXkgdGhhdCB0aGlzIGlzbid0IHNvbWV0aGluZyB0aGF0J3MgZ29pbmcgdG8gYmUgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aC4gRnV6emluZyB0aGlzIHBhcnRpY3VsYXIgZmlsZSB3b3VsZCBiZSBhIHdhc3RlIG9mIHJlc291cmNlczsgaXQncyBub3QgZ29pbmcgdG8gcmV2ZWFsIGFueSBleHBsb2l0YWJsZSBrZXJuZWwgdnVsbmVyYWJpbGl0aWVzLiBTbywgYWZ0ZXIgYSBxdWljayBtZW50YWwgc2NhbiwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuIE5vIG5lZWQgdG8gZXhwZW5kIGN5Y2xlcyBvbiB0aGlzIG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzMiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA0OjEyOjU0LjEyMzE2ODE2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzICh0b29scy9zY2hlZF9leHQpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdG9vbHMgKHRvb2xzL3NjaGVkX2V4dCkgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdvzf[1] Phase: Running StartedAt: 2026-06-30 04:13:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdvzf[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-30 04:13:23 +0000 UTC FinishedAt: 2026-06-30 04:13:34 +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,}