Name: series-workflowpclcq Phase: Failed StartedAt: 2026-07-10 13:31:11 +0000 UTC FinishedAt: 2026-07-10 13:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpclcq[0] Phase: Succeeded StartedAt: 2026-07-10 13:31:11 +0000 UTC FinishedAt: 2026-07-10 13:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpclcq[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 13:31:11 +0000 UTC FinishedAt: 2026-07-10 13:44:44 +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+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8sIHdoaWNoIGFyZSB1c2VyLXNwYWNlIHRlc3RpbmcgdG9vbHMgYW5kIGRvIG5vdCBhbHRlciBmdW5jdGlvbmFsIGtlcm5lbCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwYWJiNTIxMzVhMTdiZTlhODU1YjQ0YjdjYjZiZGZjYjA2NGEwNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMzo0NDoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuaW5kZXggOGRiODhjMzU1ZjE2NTQuLjc2NjM0MThiM2ZhODQ2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuQEAgLTYsNiAmIzQzOzYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3B0aHJlYWQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3Rlc3RfdXRpbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuQEAgLTczLDE5ICYjNDM7NzQsMzQgQEAgc3RhdGljIHZvaWQgdGVzdF9pbml0Ml9pbnZhbGlkKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSwgc3RydWN0IGt2bV9zZXZfaW5pdCAqaW5pdCxcbiBcdGt2bV92bV9mcmVlKHZtKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfY3JlYXRlX2ludmFsaWRfdHlwZSh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIGNvbnN0IGNoYXIgKm1zZylcbiYjNDM7e1xuJiM0MztcdGludCBmZCA9IF9fa3ZtX2lvY3RsKGt2bV9mZCwgS1ZNX0NSRUFURV9WTSwgKHZvaWQgKil2bV90eXBlKTtcbiYjNDM7XHRpbnQgZXJyID0gZXJybm87XG4mIzQzO1xuJiM0MztcdC8qIENsZWFuIHVwIGJlZm9yZSBhc3NlcnRpbmc7IFRFU1RfQVNTRVJUKCkgYWJvcnRzIG9uIGZhaWx1cmUuICovXG4mIzQzO1x0aWYgKGZkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKGZkKTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQoZmQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVyciA9PSBFSU5WQUwsXG4mIzQzO1x0XHQgICAgXCYjMzQ7S1ZNX0NSRUFURV9WTSBzaG91bGQgcmVqZWN0IHVuc3VwcG9ydGVkIHR5cGUgKCVzKSwgZ290IGZkPSVkIGVycm5vPSVkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIG1zZywgZmQsIGVycik7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3ZtX3R5cGVzKHZvaWQpXG4ge1xuIFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9WTSwgXHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pO1xuIFxuLVx0Lypcbi1cdCAqIFRPRE86IGNoZWNrIHRoYXQgdW5zdXBwb3J0ZWQgdHlwZXMgY2Fubm90IGJlIGNyZWF0ZWQuICBQcm9iYWJseVxuLVx0ICogYSBzZXBhcmF0ZSBzZWxmdGVzdC5cbi1cdCAqL1xuJiM0MztcdC8qIFVuc3VwcG9ydGVkIHR5cGVzIG11c3QgYmUgcmVqZWN0ZWQgYnkgS1ZNX0NSRUFURV9WTSBpdHNlbGYuICovXG4gXHRpZiAoaGF2ZV9zZXZfZXMpXG4gXHRcdHRlc3RfaW5pdDIoS1ZNX1g4Nl9TRVZfRVNfVk0sIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sIFwmIzM0O1NFVi1FUyBpcyB1bnN1cHBvcnRlZFwmIzM0Oyk7XG4gXG4gXHRpZiAoaGF2ZV9zbnApXG4gXHRcdHRlc3RfaW5pdDIoS1ZNX1g4Nl9TTlBfVk0sIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TTlBfVk0sIFwmIzM0O1NFVi1TTlAgaXMgdW5zdXBwb3J0ZWRcJiMzNDspO1xuIFxuIFx0dGVzdF9pbml0Ml9pbnZhbGlkKDAsIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9LFxuIFx0XHRcdCAgIFwmIzM0O1ZNIHR5cGUgaXMgS1ZNX1g4Nl9ERUZBVUxUX1ZNXCYjMzQ7KTtcbkBAIC0xMjEsOSAmIzQzOzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiB7XG4tXHRpbnQga3ZtX2ZkID0gb3Blbl9rdm1fZGV2X3BhdGhfb3JfZXhpdCgpO1xuIFx0Ym9vbCBoYXZlX3NldjtcbiBcbiYjNDM7XHRrdm1fZmQgPSBvcGVuX2t2bV9kZXZfcGF0aF9vcl9leGl0KCk7XG4mIzQzO1xuIFx0VEVTVF9SRVFVSVJFKF9fa3ZtX2hhc19kZXZpY2VfYXR0cihrdm1fZmQsIEtWTV9YODZfR1JQX1NFVixcbiBcdFx0XHRcdFx0ICAgS1ZNX1g4Nl9TRVZfVk1TQV9GRUFUVVJFUykgPT0gMCk7XG4gXHRrdm1fZGV2aWNlX2F0dHJfZ2V0KGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xuaW5kZXggNmIyY2JlMmE5MGI3YzUuLjljZTQ2NWI0YTc3MGI0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9zbW9rZV90ZXN0LmNcbkBAIC0xNTAsMTYgJiM0MzsxNTAsMzUgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5jX3Ztc2EodTMyIHR5cGUsIHU2NCBwb2xpY3kpXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBpc19tZWFzdXJlbWVudF9ub256ZXJvKGNvbnN0IHU4ICptZWFzdXJlbWVudCwgc2l6ZV90IGxlbilcbiYjNDM7e1xuJiM0MztcdHNpemVfdCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0aWYgKG1lYXN1cmVtZW50W2ldKVxuJiM0MztcdFx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHRlc3Rfc2V2KHZvaWQgKmd1ZXN0X2NvZGUsIHUzMiB0eXBlLCB1NjQgcG9saWN5KVxuIHtcbiYjNDM7XHR1OCBtZWFzdXJlbWVudFsyNTZdO1xuIFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuIFx0c3RydWN0IGt2bV92bSAqdm07XG4gXHRzdHJ1Y3QgdWNhbGwgdWM7XG4gXG4gXHR2bSA9IHZtX3Nldl9jcmVhdGVfd2l0aF9vbmVfdmNwdSh0eXBlLCBndWVzdF9jb2RlLCBcdTAwMjZ2Y3B1KTtcbiBcbi1cdC8qIFRPRE86IFZhbGlkYXRlIHRoZSBtZWFzdXJlbWVudCBpcyBhcyBleHBlY3RlZC4gKi9cbi1cdHZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgTlVMTCk7XG4mIzQzO1x0LyogU2FuaXR5IGNoZWNrIHRoZSBtZWFzdXJlbWVudDsgU05QIGhhcyBubyBtZWFzdXJlbWVudCBoZXJlLiAqL1xuJiM0MztcdGlmIChpc19zZXZfc25wX3ZtKHZtKSkge1xuJiM0MztcdFx0dm1fc2V2X2xhdW5jaCh2bSwgcG9saWN5LCBOVUxMKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bWVtc2V0KG1lYXN1cmVtZW50LCAwLCBzaXplb2YobWVhc3VyZW1lbnQpKTtcbiYjNDM7XHRcdHZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgbWVhc3VyZW1lbnQpO1xuJiM0MztcdFx0VEVTVF9BU1NFUlQoaXNfbWVhc3VyZW1lbnRfbm9uemVybyhtZWFzdXJlbWVudCwgc2l6ZW9mKG1lYXN1cmVtZW50KSksXG4mIzQzO1x0XHRcdCAgICBcJiMzNDtTRVYgbGF1bmNoIG1lYXN1cmVtZW50IGlzIHVuZXhwZWN0ZWRseSBhbGwgemVyb3NcJiMzNDspO1xuJiM0MztcdH1cbiBcbiBcdGZvciAoOzspIHtcbiBcdFx0dmNwdV9ydW4odmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMGFiYjUyMTM1YTE3YmU5YTg1NWI0NGI3Y2I2YmRmY2IwNjRhMDczCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMTM6NDQ6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuYwppbmRleCA4ZGI4OGMzNTVmMTY1NC4uNzY2MzQxOGIzZmE4NDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuYwpAQCAtNiw2ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKICNpbmNsdWRlICZsdDtwdGhyZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3Rlc3RfdXRpbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7a3ZtX3V0aWwuaCYjMzQ7CkBAIC03MywxOSAmIzQzOzc0LDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5pdDJfaW52YWxpZCh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIHN0cnVjdCBrdm1fc2V2X2luaXQgKmluaXQsCiAJa3ZtX3ZtX2ZyZWUodm0pOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9jcmVhdGVfaW52YWxpZF90eXBlKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSwgY29uc3QgY2hhciAqbXNnKQomIzQzO3sKJiM0MzsJaW50IGZkID0gX19rdm1faW9jdGwoa3ZtX2ZkLCBLVk1fQ1JFQVRFX1ZNLCAodm9pZCAqKXZtX3R5cGUpOwomIzQzOwlpbnQgZXJyID0gZXJybm87CiYjNDM7CiYjNDM7CS8qIENsZWFuIHVwIGJlZm9yZSBhc3NlcnRpbmc7IFRFU1RfQVNTRVJUKCkgYWJvcnRzIG9uIGZhaWx1cmUuICovCiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChmZCAmbHQ7IDAgJmFtcDsmYW1wOyBlcnIgPT0gRUlOVkFMLAomIzQzOwkJICAgICYjMzQ7S1ZNX0NSRUFURV9WTSBzaG91bGQgcmVqZWN0IHVuc3VwcG9ydGVkIHR5cGUgKCVzKSwgZ290IGZkPSVkIGVycm5vPSVkJiMzNDssCiYjNDM7CQkgICAgbXNnLCBmZCwgZXJyKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfdm1fdHlwZXModm9pZCkKIHsKIAl0ZXN0X2luaXQyKEtWTV9YODZfU0VWX1ZNLCAmYW1wOyhzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTsKIAotCS8qCi0JICogVE9ETzogY2hlY2sgdGhhdCB1bnN1cHBvcnRlZCB0eXBlcyBjYW5ub3QgYmUgY3JlYXRlZC4gIFByb2JhYmx5Ci0JICogYSBzZXBhcmF0ZSBzZWxmdGVzdC4KLQkgKi8KJiM0MzsJLyogVW5zdXBwb3J0ZWQgdHlwZXMgbXVzdCBiZSByZWplY3RlZCBieSBLVk1fQ1JFQVRFX1ZNIGl0c2VsZi4gKi8KIAlpZiAoaGF2ZV9zZXZfZXMpCiAJCXRlc3RfaW5pdDIoS1ZNX1g4Nl9TRVZfRVNfVk0sICZhbXA7KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pOwomIzQzOwllbHNlCiYjNDM7CQl0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sICYjMzQ7U0VWLUVTIGlzIHVuc3VwcG9ydGVkJiMzNDspOwogCiAJaWYgKGhhdmVfc25wKQogCQl0ZXN0X2luaXQyKEtWTV9YODZfU05QX1ZNLCAmYW1wOyhzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTsKJiM0MzsJZWxzZQomIzQzOwkJdGVzdF9jcmVhdGVfaW52YWxpZF90eXBlKEtWTV9YODZfU05QX1ZNLCAmIzM0O1NFVi1TTlAgaXMgdW5zdXBwb3J0ZWQmIzM0Oyk7CiAKIAl0ZXN0X2luaXQyX2ludmFsaWQoMCwgJmFtcDsoc3RydWN0IGt2bV9zZXZfaW5pdCl7fSwKIAkJCSAgICYjMzQ7Vk0gdHlwZSBpcyBLVk1fWDg2X0RFRkFVTFRfVk0mIzM0Oyk7CkBAIC0xMjEsOSAmIzQzOzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7Ci0JaW50IGt2bV9mZCA9IG9wZW5fa3ZtX2Rldl9wYXRoX29yX2V4aXQoKTsKIAlib29sIGhhdmVfc2V2OwogCiYjNDM7CWt2bV9mZCA9IG9wZW5fa3ZtX2Rldl9wYXRoX29yX2V4aXQoKTsKJiM0MzsKIAlURVNUX1JFUVVJUkUoX19rdm1faGFzX2RldmljZV9hdHRyKGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLAogCQkJCQkgICBLVk1fWDg2X1NFVl9WTVNBX0ZFQVRVUkVTKSA9PSAwKTsKIAlrdm1fZGV2aWNlX2F0dHJfZ2V0KGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jCmluZGV4IDZiMmNiZTJhOTBiN2M1Li45Y2U0NjViNGE3NzBiNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuYwpAQCAtMTUwLDE2ICYjNDM7MTUwLDM1IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3luY192bXNhKHUzMiB0eXBlLCB1NjQgcG9saWN5KQogCWt2bV92bV9mcmVlKHZtKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGlzX21lYXN1cmVtZW50X25vbnplcm8oY29uc3QgdTggKm1lYXN1cmVtZW50LCBzaXplX3QgbGVuKQomIzQzO3sKJiM0MzsJc2l6ZV90IGk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KQomIzQzOwkJaWYgKG1lYXN1cmVtZW50W2ldKQomIzQzOwkJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGVzdF9zZXYodm9pZCAqZ3Vlc3RfY29kZSwgdTMyIHR5cGUsIHU2NCBwb2xpY3kpCiB7CiYjNDM7CXU4IG1lYXN1cmVtZW50WzI1Nl07CiAJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwogCXN0cnVjdCBrdm1fdm0gKnZtOwogCXN0cnVjdCB1Y2FsbCB1YzsKIAogCXZtID0gdm1fc2V2X2NyZWF0ZV93aXRoX29uZV92Y3B1KHR5cGUsIGd1ZXN0X2NvZGUsICZhbXA7dmNwdSk7CiAKLQkvKiBUT0RPOiBWYWxpZGF0ZSB0aGUgbWVhc3VyZW1lbnQgaXMgYXMgZXhwZWN0ZWQuICovCi0Jdm1fc2V2X2xhdW5jaCh2bSwgcG9saWN5LCBOVUxMKTsKJiM0MzsJLyogU2FuaXR5IGNoZWNrIHRoZSBtZWFzdXJlbWVudDsgU05QIGhhcyBubyBtZWFzdXJlbWVudCBoZXJlLiAqLwomIzQzOwlpZiAoaXNfc2V2X3NucF92bSh2bSkpIHsKJiM0MzsJCXZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgTlVMTCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQltZW1zZXQobWVhc3VyZW1lbnQsIDAsIHNpemVvZihtZWFzdXJlbWVudCkpOwomIzQzOwkJdm1fc2V2X2xhdW5jaCh2bSwgcG9saWN5LCBtZWFzdXJlbWVudCk7CiYjNDM7CQlURVNUX0FTU0VSVChpc19tZWFzdXJlbWVudF9ub256ZXJvKG1lYXN1cmVtZW50LCBzaXplb2YobWVhc3VyZW1lbnQpKSwKJiM0MzsJCQkgICAgJiMzNDtTRVYgbGF1bmNoIG1lYXN1cmVtZW50IGlzIHVuZXhwZWN0ZWRseSBhbGwgemVyb3MmIzM0Oyk7CiYjNDM7CX0KIAogCWZvciAoOzspIHsKIAkJdmNwdV9ydW4odmNwdSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzEKCQkJCQkJCW91dHB1dDogNjQKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkmIzM5O20gaW1tZWRpYXRlbHkgbm90aWNpbmcgaXQmIzM5O3MgcGxheWluZyBhcm91bmQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYC4gU2VsZnRlc3RzLCBub3QgdGhlIGNvcmUga2VybmVsLiBUaGF0JiMzOTtzIHRoZSBrZXkgaGVyZS4gVGhpcyBpc24mIzM5O3QgdG91Y2hpbmcgYW55IG9mIHRoZSBhY3R1YWwga2VybmVsIGZ1bmN0aW9uYWxpdHkgdGhhdCB3ZSYjMzk7ZCB3YW50IHRvIGZ1enogZm9yIHZ1bG5lcmFiaWxpdGllcy4gSXQmIzM5O3MgZXNzZW50aWFsbHkgdGVzdCBpbmZyYXN0cnVjdHVyZSwgYW5kIGV2ZW4gaWYgdGhlcmUgd2VyZSBpc3N1ZXMgaGVyZSwgdGhleSB3b3VsZG4mIzM5O3QgZGlyZWN0bHkgdHJhbnNsYXRlIGludG8gZXhwbG9pdGFibGUgZmxhd3MgaW4gdGhlIHJ1bm5pbmcgc3lzdGVtLiBObyBmdW5jdGlvbmFsIGtlcm5lbCBjaGFuZ2VzLCBubyBmdXp6aW5nIHJlcXVpcmVkLiBXb3J0aEZ1enppbmc9ZmFsc2UsIHNpbXBsZSBhcyB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLCB3aGljaCBhcmUgdXNlci1zcGFjZSB0ZXN0aW5nIHRvb2xzIGFuZCBkbyBub3QgYWx0ZXIgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzo0NDoyOC44MjUzNjUzNTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODEwNzU2MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLCB3aGljaCBhcmUgdXNlci1zcGFjZSB0ZXN0aW5nIHRvb2xzIGFuZCBkbyBub3QgYWx0ZXIgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjI4LjgyNTM3MTQ0MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3MzY2ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDBhYmI1MjEzNWExN2JlOWE4NTViNDRiN2NiNmJkZmNiMDY0YTA3M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMzo0NDoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbmluZGV4IDhkYjg4YzM1NWYxNjU0Li43NjYzNDE4YjNmYTg0NiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbkBAIC02LDYgKzYsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NlcnJuby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwidGVzdF91dGlsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJrdm1fdXRpbC5oXFxcIlxcbkBAIC03MywxOSArNzQsMzQgQEAgc3RhdGljIHZvaWQgdGVzdF9pbml0Ml9pbnZhbGlkKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSwgc3RydWN0IGt2bV9zZXZfaW5pdCAqaW5pdCxcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUodW5zaWduZWQgbG9uZyB2bV90eXBlLCBjb25zdCBjaGFyICptc2cpXFxuK3tcXG4rXFx0aW50IGZkID0gX19rdm1faW9jdGwoa3ZtX2ZkLCBLVk1fQ1JFQVRFX1ZNLCAodm9pZCAqKXZtX3R5cGUpO1xcbitcXHRpbnQgZXJyID0gZXJybm87XFxuK1xcbitcXHQvKiBDbGVhbiB1cCBiZWZvcmUgYXNzZXJ0aW5nOyBURVNUX0FTU0VSVCgpIGFib3J0cyBvbiBmYWlsdXJlLiAqL1xcbitcXHRpZiAoZmQgXFx1MDAzZT0gMClcXG4rXFx0XFx0Y2xvc2UoZmQpO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQoZmQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGVyciA9PSBFSU5WQUwsXFxuK1xcdFxcdCAgICBcXFwiS1ZNX0NSRUFURV9WTSBzaG91bGQgcmVqZWN0IHVuc3VwcG9ydGVkIHR5cGUgKCVzKSwgZ290IGZkPSVkIGVycm5vPSVkXFxcIixcXG4rXFx0XFx0ICAgIG1zZywgZmQsIGVycik7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF92bV90eXBlcyh2b2lkKVxcbiB7XFxuIFxcdHRlc3RfaW5pdDIoS1ZNX1g4Nl9TRVZfVk0sIFxcdTAwMjYoc3RydWN0IGt2bV9zZXZfaW5pdCl7fSk7XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBUT0RPOiBjaGVjayB0aGF0IHVuc3VwcG9ydGVkIHR5cGVzIGNhbm5vdCBiZSBjcmVhdGVkLiAgUHJvYmFibHlcXG4tXFx0ICogYSBzZXBhcmF0ZSBzZWxmdGVzdC5cXG4tXFx0ICovXFxuK1xcdC8qIFVuc3VwcG9ydGVkIHR5cGVzIG11c3QgYmUgcmVqZWN0ZWQgYnkgS1ZNX0NSRUFURV9WTSBpdHNlbGYuICovXFxuIFxcdGlmIChoYXZlX3Nldl9lcylcXG4gXFx0XFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9FU19WTSwgXFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sIFxcXCJTRVYtRVMgaXMgdW5zdXBwb3J0ZWRcXFwiKTtcXG4gXFxuIFxcdGlmIChoYXZlX3NucClcXG4gXFx0XFx0dGVzdF9pbml0MihLVk1fWDg2X1NOUF9WTSwgXFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TTlBfVk0sIFxcXCJTRVYtU05QIGlzIHVuc3VwcG9ydGVkXFxcIik7XFxuIFxcbiBcXHR0ZXN0X2luaXQyX2ludmFsaWQoMCwgXFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9LFxcbiBcXHRcXHRcXHQgICBcXFwiVk0gdHlwZSBpcyBLVk1fWDg2X0RFRkFVTFRfVk1cXFwiKTtcXG5AQCAtMTIxLDkgKzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXFxuIFxcbiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiB7XFxuLVxcdGludCBrdm1fZmQgPSBvcGVuX2t2bV9kZXZfcGF0aF9vcl9leGl0KCk7XFxuIFxcdGJvb2wgaGF2ZV9zZXY7XFxuIFxcbitcXHRrdm1fZmQgPSBvcGVuX2t2bV9kZXZfcGF0aF9vcl9leGl0KCk7XFxuK1xcbiBcXHRURVNUX1JFUVVJUkUoX19rdm1faGFzX2RldmljZV9hdHRyKGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBLVk1fWDg2X1NFVl9WTVNBX0ZFQVRVUkVTKSA9PSAwKTtcXG4gXFx0a3ZtX2RldmljZV9hdHRyX2dldChrdm1fZmQsIEtWTV9YODZfR1JQX1NFVixcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jXFxuaW5kZXggNmIyY2JlMmE5MGI3YzUuLjljZTQ2NWI0YTc3MGI0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xcbkBAIC0xNTAsMTYgKzE1MCwzNSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3N5bmNfdm1zYSh1MzIgdHlwZSwgdTY0IHBvbGljeSlcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBpc19tZWFzdXJlbWVudF9ub256ZXJvKGNvbnN0IHU4ICptZWFzdXJlbWVudCwgc2l6ZV90IGxlbilcXG4re1xcbitcXHRzaXplX3QgaTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKylcXG4rXFx0XFx0aWYgKG1lYXN1cmVtZW50W2ldKVxcbitcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdGVzdF9zZXYodm9pZCAqZ3Vlc3RfY29kZSwgdTMyIHR5cGUsIHU2NCBwb2xpY3kpXFxuIHtcXG4rXFx0dTggbWVhc3VyZW1lbnRbMjU2XTtcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4gXFx0c3RydWN0IHVjYWxsIHVjO1xcbiBcXG4gXFx0dm0gPSB2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodHlwZSwgZ3Vlc3RfY29kZSwgXFx1MDAyNnZjcHUpO1xcbiBcXG4tXFx0LyogVE9ETzogVmFsaWRhdGUgdGhlIG1lYXN1cmVtZW50IGlzIGFzIGV4cGVjdGVkLiAqL1xcbi1cXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIE5VTEwpO1xcbitcXHQvKiBTYW5pdHkgY2hlY2sgdGhlIG1lYXN1cmVtZW50OyBTTlAgaGFzIG5vIG1lYXN1cmVtZW50IGhlcmUuICovXFxuK1xcdGlmIChpc19zZXZfc25wX3ZtKHZtKSkge1xcbitcXHRcXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIE5VTEwpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRtZW1zZXQobWVhc3VyZW1lbnQsIDAsIHNpemVvZihtZWFzdXJlbWVudCkpO1xcbitcXHRcXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIG1lYXN1cmVtZW50KTtcXG4rXFx0XFx0VEVTVF9BU1NFUlQoaXNfbWVhc3VyZW1lbnRfbm9uemVybyhtZWFzdXJlbWVudCwgc2l6ZW9mKG1lYXN1cmVtZW50KSksXFxuK1xcdFxcdFxcdCAgICBcXFwiU0VWIGxhdW5jaCBtZWFzdXJlbWVudCBpcyB1bmV4cGVjdGVkbHkgYWxsIHplcm9zXFxcIik7XFxuK1xcdH1cXG4gXFxuIFxcdGZvciAoOzspIHtcXG4gXFx0XFx0dmNwdV9ydW4odmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjI5LjQwMzU1MDE3NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMjU1NzI2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQwYWJiNTIxMzVhMTdiZTlhODU1YjQ0YjdjYjZiZGZjYjA2NGEwNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMzo0NDoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXG5pbmRleCA4ZGI4OGMzNTVmMTY1NC4uNzY2MzQxOGIzZmE4NDYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXG5AQCAtNiw2ICs2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuICNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG5AQCAtNzMsMTkgKzc0LDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5pdDJfaW52YWxpZCh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIHN0cnVjdCBrdm1fc2V2X2luaXQgKmluaXQsXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfY3JlYXRlX2ludmFsaWRfdHlwZSh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIGNvbnN0IGNoYXIgKm1zZylcbit7XG4rXHRpbnQgZmQgPSBfX2t2bV9pb2N0bChrdm1fZmQsIEtWTV9DUkVBVEVfVk0sICh2b2lkICopdm1fdHlwZSk7XG4rXHRpbnQgZXJyID0gZXJybm87XG4rXG4rXHQvKiBDbGVhbiB1cCBiZWZvcmUgYXNzZXJ0aW5nOyBURVNUX0FTU0VSVCgpIGFib3J0cyBvbiBmYWlsdXJlLiAqL1xuK1x0aWYgKGZkIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoZmQpO1xuK1xuK1x0VEVTVF9BU1NFUlQoZmQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVyciA9PSBFSU5WQUwsXG4rXHRcdCAgICBcIktWTV9DUkVBVEVfVk0gc2hvdWxkIHJlamVjdCB1bnN1cHBvcnRlZCB0eXBlICglcyksIGdvdCBmZD0lZCBlcnJubz0lZFwiLFxuK1x0XHQgICAgbXNnLCBmZCwgZXJyKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3ZtX3R5cGVzKHZvaWQpXG4ge1xuIFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9WTSwgXHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pO1xuIFxuLVx0Lypcbi1cdCAqIFRPRE86IGNoZWNrIHRoYXQgdW5zdXBwb3J0ZWQgdHlwZXMgY2Fubm90IGJlIGNyZWF0ZWQuICBQcm9iYWJseVxuLVx0ICogYSBzZXBhcmF0ZSBzZWxmdGVzdC5cbi1cdCAqL1xuK1x0LyogVW5zdXBwb3J0ZWQgdHlwZXMgbXVzdCBiZSByZWplY3RlZCBieSBLVk1fQ1JFQVRFX1ZNIGl0c2VsZi4gKi9cbiBcdGlmIChoYXZlX3Nldl9lcylcbiBcdFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9FU19WTSwgXHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pO1xuK1x0ZWxzZVxuK1x0XHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sIFwiU0VWLUVTIGlzIHVuc3VwcG9ydGVkXCIpO1xuIFxuIFx0aWYgKGhhdmVfc25wKVxuIFx0XHR0ZXN0X2luaXQyKEtWTV9YODZfU05QX1ZNLCBcdTAwMjYoc3RydWN0IGt2bV9zZXZfaW5pdCl7fSk7XG4rXHRlbHNlXG4rXHRcdHRlc3RfY3JlYXRlX2ludmFsaWRfdHlwZShLVk1fWDg2X1NOUF9WTSwgXCJTRVYtU05QIGlzIHVuc3VwcG9ydGVkXCIpO1xuIFxuIFx0dGVzdF9pbml0Ml9pbnZhbGlkKDAsIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9LFxuIFx0XHRcdCAgIFwiVk0gdHlwZSBpcyBLVk1fWDg2X0RFRkFVTFRfVk1cIik7XG5AQCAtMTIxLDkgKzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiB7XG4tXHRpbnQga3ZtX2ZkID0gb3Blbl9rdm1fZGV2X3BhdGhfb3JfZXhpdCgpO1xuIFx0Ym9vbCBoYXZlX3NldjtcbiBcbitcdGt2bV9mZCA9IG9wZW5fa3ZtX2Rldl9wYXRoX29yX2V4aXQoKTtcbitcbiBcdFRFU1RfUkVRVUlSRShfX2t2bV9oYXNfZGV2aWNlX2F0dHIoa3ZtX2ZkLCBLVk1fWDg2X0dSUF9TRVYsXG4gXHRcdFx0XHRcdCAgIEtWTV9YODZfU0VWX1ZNU0FfRkVBVFVSRVMpID09IDApO1xuIFx0a3ZtX2RldmljZV9hdHRyX2dldChrdm1fZmQsIEtWTV9YODZfR1JQX1NFVixcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9zbW9rZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9zbW9rZV90ZXN0LmNcbmluZGV4IDZiMmNiZTJhOTBiN2M1Li45Y2U0NjViNGE3NzBiNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jXG5AQCAtMTUwLDE2ICsxNTAsMzUgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5jX3Ztc2EodTMyIHR5cGUsIHU2NCBwb2xpY3kpXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGlzX21lYXN1cmVtZW50X25vbnplcm8oY29uc3QgdTggKm1lYXN1cmVtZW50LCBzaXplX3QgbGVuKVxuK3tcbitcdHNpemVfdCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpKyspXG4rXHRcdGlmIChtZWFzdXJlbWVudFtpXSlcbitcdFx0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJldHVybiBmYWxzZTtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGVzdF9zZXYodm9pZCAqZ3Vlc3RfY29kZSwgdTMyIHR5cGUsIHU2NCBwb2xpY3kpXG4ge1xuK1x0dTggbWVhc3VyZW1lbnRbMjU2XTtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1fdm0gKnZtO1xuIFx0c3RydWN0IHVjYWxsIHVjO1xuIFxuIFx0dm0gPSB2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodHlwZSwgZ3Vlc3RfY29kZSwgXHUwMDI2dmNwdSk7XG4gXG4tXHQvKiBUT0RPOiBWYWxpZGF0ZSB0aGUgbWVhc3VyZW1lbnQgaXMgYXMgZXhwZWN0ZWQuICovXG4tXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIE5VTEwpO1xuK1x0LyogU2FuaXR5IGNoZWNrIHRoZSBtZWFzdXJlbWVudDsgU05QIGhhcyBubyBtZWFzdXJlbWVudCBoZXJlLiAqL1xuK1x0aWYgKGlzX3Nldl9zbnBfdm0odm0pKSB7XG4rXHRcdHZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgTlVMTCk7XG4rXHR9IGVsc2Uge1xuK1x0XHRtZW1zZXQobWVhc3VyZW1lbnQsIDAsIHNpemVvZihtZWFzdXJlbWVudCkpO1xuK1x0XHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIG1lYXN1cmVtZW50KTtcbitcdFx0VEVTVF9BU1NFUlQoaXNfbWVhc3VyZW1lbnRfbm9uemVybyhtZWFzdXJlbWVudCwgc2l6ZW9mKG1lYXN1cmVtZW50KSksXG4rXHRcdFx0ICAgIFwiU0VWIGxhdW5jaCBtZWFzdXJlbWVudCBpcyB1bmV4cGVjdGVkbHkgYWxsIHplcm9zXCIpO1xuK1x0fVxuIFxuIFx0Zm9yICg7Oykge1xuIFx0XHR2Y3B1X3J1bih2Y3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjI5LjQwMzU1MTQ4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzI1MTQxNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIEknbSBpbW1lZGlhdGVseSBub3RpY2luZyBpdCdzIHBsYXlpbmcgYXJvdW5kIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2AuIFNlbGZ0ZXN0cywgbm90IHRoZSBjb3JlIGtlcm5lbC4gVGhhdCdzIHRoZSBrZXkgaGVyZS4gVGhpcyBpc24ndCB0b3VjaGluZyBhbnkgb2YgdGhlIGFjdHVhbCBrZXJuZWwgZnVuY3Rpb25hbGl0eSB0aGF0IHdlJ2Qgd2FudCB0byBmdXp6IGZvciB2dWxuZXJhYmlsaXRpZXMuIEl0J3MgZXNzZW50aWFsbHkgdGVzdCBpbmZyYXN0cnVjdHVyZSwgYW5kIGV2ZW4gaWYgdGhlcmUgd2VyZSBpc3N1ZXMgaGVyZSwgdGhleSB3b3VsZG4ndCBkaXJlY3RseSB0cmFuc2xhdGUgaW50byBleHBsb2l0YWJsZSBmbGF3cyBpbiB0aGUgcnVubmluZyBzeXN0ZW0uIE5vIGZ1bmN0aW9uYWwga2VybmVsIGNoYW5nZXMsIG5vIGZ1enppbmcgcmVxdWlyZWQuIFdvcnRoRnV6emluZz1mYWxzZSwgc2ltcGxlIGFzIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzEsIk91dHB1dFRva2VucyI6NjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjMyLjYzNjA3NTE5MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLCB3aGljaCBhcmUgdXNlci1zcGFjZSB0ZXN0aW5nIHRvb2xzIGFuZCBkbyBub3QgYWx0ZXIgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpclcq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 13:31:11 +0000 UTC FinishedAt: 2026-07-10 13:44:34 +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+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8sIHdoaWNoIGFyZSB1c2VyLXNwYWNlIHRlc3RpbmcgdG9vbHMgYW5kIGRvIG5vdCBhbHRlciBmdW5jdGlvbmFsIGtlcm5lbCBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwYWJiNTIxMzVhMTdiZTlhODU1YjQ0YjdjYjZiZGZjYjA2NGEwNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMzo0NDoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuaW5kZXggOGRiODhjMzU1ZjE2NTQuLjc2NjM0MThiM2ZhODQ2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuQEAgLTYsNiAmIzQzOzYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3B0aHJlYWQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3Rlc3RfdXRpbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuQEAgLTczLDE5ICYjNDM7NzQsMzQgQEAgc3RhdGljIHZvaWQgdGVzdF9pbml0Ml9pbnZhbGlkKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSwgc3RydWN0IGt2bV9zZXZfaW5pdCAqaW5pdCxcbiBcdGt2bV92bV9mcmVlKHZtKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfY3JlYXRlX2ludmFsaWRfdHlwZSh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIGNvbnN0IGNoYXIgKm1zZylcbiYjNDM7e1xuJiM0MztcdGludCBmZCA9IF9fa3ZtX2lvY3RsKGt2bV9mZCwgS1ZNX0NSRUFURV9WTSwgKHZvaWQgKil2bV90eXBlKTtcbiYjNDM7XHRpbnQgZXJyID0gZXJybm87XG4mIzQzO1xuJiM0MztcdC8qIENsZWFuIHVwIGJlZm9yZSBhc3NlcnRpbmc7IFRFU1RfQVNTRVJUKCkgYWJvcnRzIG9uIGZhaWx1cmUuICovXG4mIzQzO1x0aWYgKGZkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKGZkKTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQoZmQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVyciA9PSBFSU5WQUwsXG4mIzQzO1x0XHQgICAgXCYjMzQ7S1ZNX0NSRUFURV9WTSBzaG91bGQgcmVqZWN0IHVuc3VwcG9ydGVkIHR5cGUgKCVzKSwgZ290IGZkPSVkIGVycm5vPSVkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIG1zZywgZmQsIGVycik7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3ZtX3R5cGVzKHZvaWQpXG4ge1xuIFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9WTSwgXHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pO1xuIFxuLVx0Lypcbi1cdCAqIFRPRE86IGNoZWNrIHRoYXQgdW5zdXBwb3J0ZWQgdHlwZXMgY2Fubm90IGJlIGNyZWF0ZWQuICBQcm9iYWJseVxuLVx0ICogYSBzZXBhcmF0ZSBzZWxmdGVzdC5cbi1cdCAqL1xuJiM0MztcdC8qIFVuc3VwcG9ydGVkIHR5cGVzIG11c3QgYmUgcmVqZWN0ZWQgYnkgS1ZNX0NSRUFURV9WTSBpdHNlbGYuICovXG4gXHRpZiAoaGF2ZV9zZXZfZXMpXG4gXHRcdHRlc3RfaW5pdDIoS1ZNX1g4Nl9TRVZfRVNfVk0sIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sIFwmIzM0O1NFVi1FUyBpcyB1bnN1cHBvcnRlZFwmIzM0Oyk7XG4gXG4gXHRpZiAoaGF2ZV9zbnApXG4gXHRcdHRlc3RfaW5pdDIoS1ZNX1g4Nl9TTlBfVk0sIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TTlBfVk0sIFwmIzM0O1NFVi1TTlAgaXMgdW5zdXBwb3J0ZWRcJiMzNDspO1xuIFxuIFx0dGVzdF9pbml0Ml9pbnZhbGlkKDAsIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9LFxuIFx0XHRcdCAgIFwmIzM0O1ZNIHR5cGUgaXMgS1ZNX1g4Nl9ERUZBVUxUX1ZNXCYjMzQ7KTtcbkBAIC0xMjEsOSAmIzQzOzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiB7XG4tXHRpbnQga3ZtX2ZkID0gb3Blbl9rdm1fZGV2X3BhdGhfb3JfZXhpdCgpO1xuIFx0Ym9vbCBoYXZlX3NldjtcbiBcbiYjNDM7XHRrdm1fZmQgPSBvcGVuX2t2bV9kZXZfcGF0aF9vcl9leGl0KCk7XG4mIzQzO1xuIFx0VEVTVF9SRVFVSVJFKF9fa3ZtX2hhc19kZXZpY2VfYXR0cihrdm1fZmQsIEtWTV9YODZfR1JQX1NFVixcbiBcdFx0XHRcdFx0ICAgS1ZNX1g4Nl9TRVZfVk1TQV9GRUFUVVJFUykgPT0gMCk7XG4gXHRrdm1fZGV2aWNlX2F0dHJfZ2V0KGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xuaW5kZXggNmIyY2JlMmE5MGI3YzUuLjljZTQ2NWI0YTc3MGI0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9zbW9rZV90ZXN0LmNcbkBAIC0xNTAsMTYgJiM0MzsxNTAsMzUgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5jX3Ztc2EodTMyIHR5cGUsIHU2NCBwb2xpY3kpXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBpc19tZWFzdXJlbWVudF9ub256ZXJvKGNvbnN0IHU4ICptZWFzdXJlbWVudCwgc2l6ZV90IGxlbilcbiYjNDM7e1xuJiM0MztcdHNpemVfdCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0aWYgKG1lYXN1cmVtZW50W2ldKVxuJiM0MztcdFx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHRlc3Rfc2V2KHZvaWQgKmd1ZXN0X2NvZGUsIHUzMiB0eXBlLCB1NjQgcG9saWN5KVxuIHtcbiYjNDM7XHR1OCBtZWFzdXJlbWVudFsyNTZdO1xuIFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuIFx0c3RydWN0IGt2bV92bSAqdm07XG4gXHRzdHJ1Y3QgdWNhbGwgdWM7XG4gXG4gXHR2bSA9IHZtX3Nldl9jcmVhdGVfd2l0aF9vbmVfdmNwdSh0eXBlLCBndWVzdF9jb2RlLCBcdTAwMjZ2Y3B1KTtcbiBcbi1cdC8qIFRPRE86IFZhbGlkYXRlIHRoZSBtZWFzdXJlbWVudCBpcyBhcyBleHBlY3RlZC4gKi9cbi1cdHZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgTlVMTCk7XG4mIzQzO1x0LyogU2FuaXR5IGNoZWNrIHRoZSBtZWFzdXJlbWVudDsgU05QIGhhcyBubyBtZWFzdXJlbWVudCBoZXJlLiAqL1xuJiM0MztcdGlmIChpc19zZXZfc25wX3ZtKHZtKSkge1xuJiM0MztcdFx0dm1fc2V2X2xhdW5jaCh2bSwgcG9saWN5LCBOVUxMKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bWVtc2V0KG1lYXN1cmVtZW50LCAwLCBzaXplb2YobWVhc3VyZW1lbnQpKTtcbiYjNDM7XHRcdHZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgbWVhc3VyZW1lbnQpO1xuJiM0MztcdFx0VEVTVF9BU1NFUlQoaXNfbWVhc3VyZW1lbnRfbm9uemVybyhtZWFzdXJlbWVudCwgc2l6ZW9mKG1lYXN1cmVtZW50KSksXG4mIzQzO1x0XHRcdCAgICBcJiMzNDtTRVYgbGF1bmNoIG1lYXN1cmVtZW50IGlzIHVuZXhwZWN0ZWRseSBhbGwgemVyb3NcJiMzNDspO1xuJiM0MztcdH1cbiBcbiBcdGZvciAoOzspIHtcbiBcdFx0dmNwdV9ydW4odmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMGFiYjUyMTM1YTE3YmU5YTg1NWI0NGI3Y2I2YmRmY2IwNjRhMDczCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMTM6NDQ6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuYwppbmRleCA4ZGI4OGMzNTVmMTY1NC4uNzY2MzQxOGIzZmE4NDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuYwpAQCAtNiw2ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKICNpbmNsdWRlICZsdDtwdGhyZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3Rlc3RfdXRpbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7a3ZtX3V0aWwuaCYjMzQ7CkBAIC03MywxOSAmIzQzOzc0LDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5pdDJfaW52YWxpZCh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIHN0cnVjdCBrdm1fc2V2X2luaXQgKmluaXQsCiAJa3ZtX3ZtX2ZyZWUodm0pOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9jcmVhdGVfaW52YWxpZF90eXBlKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSwgY29uc3QgY2hhciAqbXNnKQomIzQzO3sKJiM0MzsJaW50IGZkID0gX19rdm1faW9jdGwoa3ZtX2ZkLCBLVk1fQ1JFQVRFX1ZNLCAodm9pZCAqKXZtX3R5cGUpOwomIzQzOwlpbnQgZXJyID0gZXJybm87CiYjNDM7CiYjNDM7CS8qIENsZWFuIHVwIGJlZm9yZSBhc3NlcnRpbmc7IFRFU1RfQVNTRVJUKCkgYWJvcnRzIG9uIGZhaWx1cmUuICovCiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChmZCAmbHQ7IDAgJmFtcDsmYW1wOyBlcnIgPT0gRUlOVkFMLAomIzQzOwkJICAgICYjMzQ7S1ZNX0NSRUFURV9WTSBzaG91bGQgcmVqZWN0IHVuc3VwcG9ydGVkIHR5cGUgKCVzKSwgZ290IGZkPSVkIGVycm5vPSVkJiMzNDssCiYjNDM7CQkgICAgbXNnLCBmZCwgZXJyKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfdm1fdHlwZXModm9pZCkKIHsKIAl0ZXN0X2luaXQyKEtWTV9YODZfU0VWX1ZNLCAmYW1wOyhzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTsKIAotCS8qCi0JICogVE9ETzogY2hlY2sgdGhhdCB1bnN1cHBvcnRlZCB0eXBlcyBjYW5ub3QgYmUgY3JlYXRlZC4gIFByb2JhYmx5Ci0JICogYSBzZXBhcmF0ZSBzZWxmdGVzdC4KLQkgKi8KJiM0MzsJLyogVW5zdXBwb3J0ZWQgdHlwZXMgbXVzdCBiZSByZWplY3RlZCBieSBLVk1fQ1JFQVRFX1ZNIGl0c2VsZi4gKi8KIAlpZiAoaGF2ZV9zZXZfZXMpCiAJCXRlc3RfaW5pdDIoS1ZNX1g4Nl9TRVZfRVNfVk0sICZhbXA7KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pOwomIzQzOwllbHNlCiYjNDM7CQl0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sICYjMzQ7U0VWLUVTIGlzIHVuc3VwcG9ydGVkJiMzNDspOwogCiAJaWYgKGhhdmVfc25wKQogCQl0ZXN0X2luaXQyKEtWTV9YODZfU05QX1ZNLCAmYW1wOyhzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTsKJiM0MzsJZWxzZQomIzQzOwkJdGVzdF9jcmVhdGVfaW52YWxpZF90eXBlKEtWTV9YODZfU05QX1ZNLCAmIzM0O1NFVi1TTlAgaXMgdW5zdXBwb3J0ZWQmIzM0Oyk7CiAKIAl0ZXN0X2luaXQyX2ludmFsaWQoMCwgJmFtcDsoc3RydWN0IGt2bV9zZXZfaW5pdCl7fSwKIAkJCSAgICYjMzQ7Vk0gdHlwZSBpcyBLVk1fWDg2X0RFRkFVTFRfVk0mIzM0Oyk7CkBAIC0xMjEsOSAmIzQzOzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7Ci0JaW50IGt2bV9mZCA9IG9wZW5fa3ZtX2Rldl9wYXRoX29yX2V4aXQoKTsKIAlib29sIGhhdmVfc2V2OwogCiYjNDM7CWt2bV9mZCA9IG9wZW5fa3ZtX2Rldl9wYXRoX29yX2V4aXQoKTsKJiM0MzsKIAlURVNUX1JFUVVJUkUoX19rdm1faGFzX2RldmljZV9hdHRyKGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLAogCQkJCQkgICBLVk1fWDg2X1NFVl9WTVNBX0ZFQVRVUkVTKSA9PSAwKTsKIAlrdm1fZGV2aWNlX2F0dHJfZ2V0KGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jCmluZGV4IDZiMmNiZTJhOTBiN2M1Li45Y2U0NjViNGE3NzBiNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuYwpAQCAtMTUwLDE2ICYjNDM7MTUwLDM1IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3luY192bXNhKHUzMiB0eXBlLCB1NjQgcG9saWN5KQogCWt2bV92bV9mcmVlKHZtKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGlzX21lYXN1cmVtZW50X25vbnplcm8oY29uc3QgdTggKm1lYXN1cmVtZW50LCBzaXplX3QgbGVuKQomIzQzO3sKJiM0MzsJc2l6ZV90IGk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KQomIzQzOwkJaWYgKG1lYXN1cmVtZW50W2ldKQomIzQzOwkJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGVzdF9zZXYodm9pZCAqZ3Vlc3RfY29kZSwgdTMyIHR5cGUsIHU2NCBwb2xpY3kpCiB7CiYjNDM7CXU4IG1lYXN1cmVtZW50WzI1Nl07CiAJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwogCXN0cnVjdCBrdm1fdm0gKnZtOwogCXN0cnVjdCB1Y2FsbCB1YzsKIAogCXZtID0gdm1fc2V2X2NyZWF0ZV93aXRoX29uZV92Y3B1KHR5cGUsIGd1ZXN0X2NvZGUsICZhbXA7dmNwdSk7CiAKLQkvKiBUT0RPOiBWYWxpZGF0ZSB0aGUgbWVhc3VyZW1lbnQgaXMgYXMgZXhwZWN0ZWQuICovCi0Jdm1fc2V2X2xhdW5jaCh2bSwgcG9saWN5LCBOVUxMKTsKJiM0MzsJLyogU2FuaXR5IGNoZWNrIHRoZSBtZWFzdXJlbWVudDsgU05QIGhhcyBubyBtZWFzdXJlbWVudCBoZXJlLiAqLwomIzQzOwlpZiAoaXNfc2V2X3NucF92bSh2bSkpIHsKJiM0MzsJCXZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgTlVMTCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQltZW1zZXQobWVhc3VyZW1lbnQsIDAsIHNpemVvZihtZWFzdXJlbWVudCkpOwomIzQzOwkJdm1fc2V2X2xhdW5jaCh2bSwgcG9saWN5LCBtZWFzdXJlbWVudCk7CiYjNDM7CQlURVNUX0FTU0VSVChpc19tZWFzdXJlbWVudF9ub256ZXJvKG1lYXN1cmVtZW50LCBzaXplb2YobWVhc3VyZW1lbnQpKSwKJiM0MzsJCQkgICAgJiMzNDtTRVYgbGF1bmNoIG1lYXN1cmVtZW50IGlzIHVuZXhwZWN0ZWRseSBhbGwgemVyb3MmIzM0Oyk7CiYjNDM7CX0KIAogCWZvciAoOzspIHsKIAkJdmNwdV9ydW4odmNwdSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzEKCQkJCQkJCW91dHB1dDogNjQKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkmIzM5O20gaW1tZWRpYXRlbHkgbm90aWNpbmcgaXQmIzM5O3MgcGxheWluZyBhcm91bmQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYC4gU2VsZnRlc3RzLCBub3QgdGhlIGNvcmUga2VybmVsLiBUaGF0JiMzOTtzIHRoZSBrZXkgaGVyZS4gVGhpcyBpc24mIzM5O3QgdG91Y2hpbmcgYW55IG9mIHRoZSBhY3R1YWwga2VybmVsIGZ1bmN0aW9uYWxpdHkgdGhhdCB3ZSYjMzk7ZCB3YW50IHRvIGZ1enogZm9yIHZ1bG5lcmFiaWxpdGllcy4gSXQmIzM5O3MgZXNzZW50aWFsbHkgdGVzdCBpbmZyYXN0cnVjdHVyZSwgYW5kIGV2ZW4gaWYgdGhlcmUgd2VyZSBpc3N1ZXMgaGVyZSwgdGhleSB3b3VsZG4mIzM5O3QgZGlyZWN0bHkgdHJhbnNsYXRlIGludG8gZXhwbG9pdGFibGUgZmxhd3MgaW4gdGhlIHJ1bm5pbmcgc3lzdGVtLiBObyBmdW5jdGlvbmFsIGtlcm5lbCBjaGFuZ2VzLCBubyBmdXp6aW5nIHJlcXVpcmVkLiBXb3J0aEZ1enppbmc9ZmFsc2UsIHNpbXBsZSBhcyB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLCB3aGljaCBhcmUgdXNlci1zcGFjZSB0ZXN0aW5nIHRvb2xzIGFuZCBkbyBub3QgYWx0ZXIgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzo0NDoyOC44MjUzNjUzNTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODEwNzU2MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLCB3aGljaCBhcmUgdXNlci1zcGFjZSB0ZXN0aW5nIHRvb2xzIGFuZCBkbyBub3QgYWx0ZXIgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjI4LjgyNTM3MTQ0MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3MzY2ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDBhYmI1MjEzNWExN2JlOWE4NTViNDRiN2NiNmJkZmNiMDY0YTA3M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMzo0NDoyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbmluZGV4IDhkYjg4YzM1NWYxNjU0Li43NjYzNDE4YjNmYTg0NiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbkBAIC02LDYgKzYsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NlcnJuby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwidGVzdF91dGlsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJrdm1fdXRpbC5oXFxcIlxcbkBAIC03MywxOSArNzQsMzQgQEAgc3RhdGljIHZvaWQgdGVzdF9pbml0Ml9pbnZhbGlkKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSwgc3RydWN0IGt2bV9zZXZfaW5pdCAqaW5pdCxcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUodW5zaWduZWQgbG9uZyB2bV90eXBlLCBjb25zdCBjaGFyICptc2cpXFxuK3tcXG4rXFx0aW50IGZkID0gX19rdm1faW9jdGwoa3ZtX2ZkLCBLVk1fQ1JFQVRFX1ZNLCAodm9pZCAqKXZtX3R5cGUpO1xcbitcXHRpbnQgZXJyID0gZXJybm87XFxuK1xcbitcXHQvKiBDbGVhbiB1cCBiZWZvcmUgYXNzZXJ0aW5nOyBURVNUX0FTU0VSVCgpIGFib3J0cyBvbiBmYWlsdXJlLiAqL1xcbitcXHRpZiAoZmQgXFx1MDAzZT0gMClcXG4rXFx0XFx0Y2xvc2UoZmQpO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQoZmQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGVyciA9PSBFSU5WQUwsXFxuK1xcdFxcdCAgICBcXFwiS1ZNX0NSRUFURV9WTSBzaG91bGQgcmVqZWN0IHVuc3VwcG9ydGVkIHR5cGUgKCVzKSwgZ290IGZkPSVkIGVycm5vPSVkXFxcIixcXG4rXFx0XFx0ICAgIG1zZywgZmQsIGVycik7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF92bV90eXBlcyh2b2lkKVxcbiB7XFxuIFxcdHRlc3RfaW5pdDIoS1ZNX1g4Nl9TRVZfVk0sIFxcdTAwMjYoc3RydWN0IGt2bV9zZXZfaW5pdCl7fSk7XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBUT0RPOiBjaGVjayB0aGF0IHVuc3VwcG9ydGVkIHR5cGVzIGNhbm5vdCBiZSBjcmVhdGVkLiAgUHJvYmFibHlcXG4tXFx0ICogYSBzZXBhcmF0ZSBzZWxmdGVzdC5cXG4tXFx0ICovXFxuK1xcdC8qIFVuc3VwcG9ydGVkIHR5cGVzIG11c3QgYmUgcmVqZWN0ZWQgYnkgS1ZNX0NSRUFURV9WTSBpdHNlbGYuICovXFxuIFxcdGlmIChoYXZlX3Nldl9lcylcXG4gXFx0XFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9FU19WTSwgXFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sIFxcXCJTRVYtRVMgaXMgdW5zdXBwb3J0ZWRcXFwiKTtcXG4gXFxuIFxcdGlmIChoYXZlX3NucClcXG4gXFx0XFx0dGVzdF9pbml0MihLVk1fWDg2X1NOUF9WTSwgXFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9KTtcXG4rXFx0ZWxzZVxcbitcXHRcXHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TTlBfVk0sIFxcXCJTRVYtU05QIGlzIHVuc3VwcG9ydGVkXFxcIik7XFxuIFxcbiBcXHR0ZXN0X2luaXQyX2ludmFsaWQoMCwgXFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9LFxcbiBcXHRcXHRcXHQgICBcXFwiVk0gdHlwZSBpcyBLVk1fWDg2X0RFRkFVTFRfVk1cXFwiKTtcXG5AQCAtMTIxLDkgKzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXFxuIFxcbiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiB7XFxuLVxcdGludCBrdm1fZmQgPSBvcGVuX2t2bV9kZXZfcGF0aF9vcl9leGl0KCk7XFxuIFxcdGJvb2wgaGF2ZV9zZXY7XFxuIFxcbitcXHRrdm1fZmQgPSBvcGVuX2t2bV9kZXZfcGF0aF9vcl9leGl0KCk7XFxuK1xcbiBcXHRURVNUX1JFUVVJUkUoX19rdm1faGFzX2RldmljZV9hdHRyKGt2bV9mZCwgS1ZNX1g4Nl9HUlBfU0VWLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBLVk1fWDg2X1NFVl9WTVNBX0ZFQVRVUkVTKSA9PSAwKTtcXG4gXFx0a3ZtX2RldmljZV9hdHRyX2dldChrdm1fZmQsIEtWTV9YODZfR1JQX1NFVixcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jXFxuaW5kZXggNmIyY2JlMmE5MGI3YzUuLjljZTQ2NWI0YTc3MGI0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xcbkBAIC0xNTAsMTYgKzE1MCwzNSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3N5bmNfdm1zYSh1MzIgdHlwZSwgdTY0IHBvbGljeSlcXG4gXFx0a3ZtX3ZtX2ZyZWUodm0pO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBpc19tZWFzdXJlbWVudF9ub256ZXJvKGNvbnN0IHU4ICptZWFzdXJlbWVudCwgc2l6ZV90IGxlbilcXG4re1xcbitcXHRzaXplX3QgaTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKylcXG4rXFx0XFx0aWYgKG1lYXN1cmVtZW50W2ldKVxcbitcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdGVzdF9zZXYodm9pZCAqZ3Vlc3RfY29kZSwgdTMyIHR5cGUsIHU2NCBwb2xpY3kpXFxuIHtcXG4rXFx0dTggbWVhc3VyZW1lbnRbMjU2XTtcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4gXFx0c3RydWN0IHVjYWxsIHVjO1xcbiBcXG4gXFx0dm0gPSB2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodHlwZSwgZ3Vlc3RfY29kZSwgXFx1MDAyNnZjcHUpO1xcbiBcXG4tXFx0LyogVE9ETzogVmFsaWRhdGUgdGhlIG1lYXN1cmVtZW50IGlzIGFzIGV4cGVjdGVkLiAqL1xcbi1cXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIE5VTEwpO1xcbitcXHQvKiBTYW5pdHkgY2hlY2sgdGhlIG1lYXN1cmVtZW50OyBTTlAgaGFzIG5vIG1lYXN1cmVtZW50IGhlcmUuICovXFxuK1xcdGlmIChpc19zZXZfc25wX3ZtKHZtKSkge1xcbitcXHRcXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIE5VTEwpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRtZW1zZXQobWVhc3VyZW1lbnQsIDAsIHNpemVvZihtZWFzdXJlbWVudCkpO1xcbitcXHRcXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIG1lYXN1cmVtZW50KTtcXG4rXFx0XFx0VEVTVF9BU1NFUlQoaXNfbWVhc3VyZW1lbnRfbm9uemVybyhtZWFzdXJlbWVudCwgc2l6ZW9mKG1lYXN1cmVtZW50KSksXFxuK1xcdFxcdFxcdCAgICBcXFwiU0VWIGxhdW5jaCBtZWFzdXJlbWVudCBpcyB1bmV4cGVjdGVkbHkgYWxsIHplcm9zXFxcIik7XFxuK1xcdH1cXG4gXFxuIFxcdGZvciAoOzspIHtcXG4gXFx0XFx0dmNwdV9ydW4odmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjI5LjQwMzU1MDE3NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMjU1NzI2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQwYWJiNTIxMzVhMTdiZTlhODU1YjQ0YjdjYjZiZGZjYjA2NGEwNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMzo0NDoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXG5pbmRleCA4ZGI4OGMzNTVmMTY1NC4uNzY2MzQxOGIzZmE4NDYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jXG5AQCAtNiw2ICs2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuICNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG5AQCAtNzMsMTkgKzc0LDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW5pdDJfaW52YWxpZCh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIHN0cnVjdCBrdm1fc2V2X2luaXQgKmluaXQsXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfY3JlYXRlX2ludmFsaWRfdHlwZSh1bnNpZ25lZCBsb25nIHZtX3R5cGUsIGNvbnN0IGNoYXIgKm1zZylcbit7XG4rXHRpbnQgZmQgPSBfX2t2bV9pb2N0bChrdm1fZmQsIEtWTV9DUkVBVEVfVk0sICh2b2lkICopdm1fdHlwZSk7XG4rXHRpbnQgZXJyID0gZXJybm87XG4rXG4rXHQvKiBDbGVhbiB1cCBiZWZvcmUgYXNzZXJ0aW5nOyBURVNUX0FTU0VSVCgpIGFib3J0cyBvbiBmYWlsdXJlLiAqL1xuK1x0aWYgKGZkIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoZmQpO1xuK1xuK1x0VEVTVF9BU1NFUlQoZmQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVyciA9PSBFSU5WQUwsXG4rXHRcdCAgICBcIktWTV9DUkVBVEVfVk0gc2hvdWxkIHJlamVjdCB1bnN1cHBvcnRlZCB0eXBlICglcyksIGdvdCBmZD0lZCBlcnJubz0lZFwiLFxuK1x0XHQgICAgbXNnLCBmZCwgZXJyKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3ZtX3R5cGVzKHZvaWQpXG4ge1xuIFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9WTSwgXHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pO1xuIFxuLVx0Lypcbi1cdCAqIFRPRE86IGNoZWNrIHRoYXQgdW5zdXBwb3J0ZWQgdHlwZXMgY2Fubm90IGJlIGNyZWF0ZWQuICBQcm9iYWJseVxuLVx0ICogYSBzZXBhcmF0ZSBzZWxmdGVzdC5cbi1cdCAqL1xuK1x0LyogVW5zdXBwb3J0ZWQgdHlwZXMgbXVzdCBiZSByZWplY3RlZCBieSBLVk1fQ1JFQVRFX1ZNIGl0c2VsZi4gKi9cbiBcdGlmIChoYXZlX3Nldl9lcylcbiBcdFx0dGVzdF9pbml0MihLVk1fWDg2X1NFVl9FU19WTSwgXHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpe30pO1xuK1x0ZWxzZVxuK1x0XHR0ZXN0X2NyZWF0ZV9pbnZhbGlkX3R5cGUoS1ZNX1g4Nl9TRVZfRVNfVk0sIFwiU0VWLUVTIGlzIHVuc3VwcG9ydGVkXCIpO1xuIFxuIFx0aWYgKGhhdmVfc25wKVxuIFx0XHR0ZXN0X2luaXQyKEtWTV9YODZfU05QX1ZNLCBcdTAwMjYoc3RydWN0IGt2bV9zZXZfaW5pdCl7fSk7XG4rXHRlbHNlXG4rXHRcdHRlc3RfY3JlYXRlX2ludmFsaWRfdHlwZShLVk1fWDg2X1NOUF9WTSwgXCJTRVYtU05QIGlzIHVuc3VwcG9ydGVkXCIpO1xuIFxuIFx0dGVzdF9pbml0Ml9pbnZhbGlkKDAsIFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXt9LFxuIFx0XHRcdCAgIFwiVk0gdHlwZSBpcyBLVk1fWDg2X0RFRkFVTFRfVk1cIik7XG5AQCAtMTIxLDkgKzEzNywxMCBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXG4gXG4gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiB7XG4tXHRpbnQga3ZtX2ZkID0gb3Blbl9rdm1fZGV2X3BhdGhfb3JfZXhpdCgpO1xuIFx0Ym9vbCBoYXZlX3NldjtcbiBcbitcdGt2bV9mZCA9IG9wZW5fa3ZtX2Rldl9wYXRoX29yX2V4aXQoKTtcbitcbiBcdFRFU1RfUkVRVUlSRShfX2t2bV9oYXNfZGV2aWNlX2F0dHIoa3ZtX2ZkLCBLVk1fWDg2X0dSUF9TRVYsXG4gXHRcdFx0XHRcdCAgIEtWTV9YODZfU0VWX1ZNU0FfRkVBVFVSRVMpID09IDApO1xuIFx0a3ZtX2RldmljZV9hdHRyX2dldChrdm1fZmQsIEtWTV9YODZfR1JQX1NFVixcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9zbW9rZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9zbW9rZV90ZXN0LmNcbmluZGV4IDZiMmNiZTJhOTBiN2M1Li45Y2U0NjViNGE3NzBiNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X3Ntb2tlX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfc21va2VfdGVzdC5jXG5AQCAtMTUwLDE2ICsxNTAsMzUgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5jX3Ztc2EodTMyIHR5cGUsIHU2NCBwb2xpY3kpXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGlzX21lYXN1cmVtZW50X25vbnplcm8oY29uc3QgdTggKm1lYXN1cmVtZW50LCBzaXplX3QgbGVuKVxuK3tcbitcdHNpemVfdCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpKyspXG4rXHRcdGlmIChtZWFzdXJlbWVudFtpXSlcbitcdFx0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJldHVybiBmYWxzZTtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGVzdF9zZXYodm9pZCAqZ3Vlc3RfY29kZSwgdTMyIHR5cGUsIHU2NCBwb2xpY3kpXG4ge1xuK1x0dTggbWVhc3VyZW1lbnRbMjU2XTtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1fdm0gKnZtO1xuIFx0c3RydWN0IHVjYWxsIHVjO1xuIFxuIFx0dm0gPSB2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodHlwZSwgZ3Vlc3RfY29kZSwgXHUwMDI2dmNwdSk7XG4gXG4tXHQvKiBUT0RPOiBWYWxpZGF0ZSB0aGUgbWVhc3VyZW1lbnQgaXMgYXMgZXhwZWN0ZWQuICovXG4tXHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIE5VTEwpO1xuK1x0LyogU2FuaXR5IGNoZWNrIHRoZSBtZWFzdXJlbWVudDsgU05QIGhhcyBubyBtZWFzdXJlbWVudCBoZXJlLiAqL1xuK1x0aWYgKGlzX3Nldl9zbnBfdm0odm0pKSB7XG4rXHRcdHZtX3Nldl9sYXVuY2godm0sIHBvbGljeSwgTlVMTCk7XG4rXHR9IGVsc2Uge1xuK1x0XHRtZW1zZXQobWVhc3VyZW1lbnQsIDAsIHNpemVvZihtZWFzdXJlbWVudCkpO1xuK1x0XHR2bV9zZXZfbGF1bmNoKHZtLCBwb2xpY3ksIG1lYXN1cmVtZW50KTtcbitcdFx0VEVTVF9BU1NFUlQoaXNfbWVhc3VyZW1lbnRfbm9uemVybyhtZWFzdXJlbWVudCwgc2l6ZW9mKG1lYXN1cmVtZW50KSksXG4rXHRcdFx0ICAgIFwiU0VWIGxhdW5jaCBtZWFzdXJlbWVudCBpcyB1bmV4cGVjdGVkbHkgYWxsIHplcm9zXCIpO1xuK1x0fVxuIFxuIFx0Zm9yICg7Oykge1xuIFx0XHR2Y3B1X3J1bih2Y3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjI5LjQwMzU1MTQ4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzI1MTQxNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIEknbSBpbW1lZGlhdGVseSBub3RpY2luZyBpdCdzIHBsYXlpbmcgYXJvdW5kIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2AuIFNlbGZ0ZXN0cywgbm90IHRoZSBjb3JlIGtlcm5lbC4gVGhhdCdzIHRoZSBrZXkgaGVyZS4gVGhpcyBpc24ndCB0b3VjaGluZyBhbnkgb2YgdGhlIGFjdHVhbCBrZXJuZWwgZnVuY3Rpb25hbGl0eSB0aGF0IHdlJ2Qgd2FudCB0byBmdXp6IGZvciB2dWxuZXJhYmlsaXRpZXMuIEl0J3MgZXNzZW50aWFsbHkgdGVzdCBpbmZyYXN0cnVjdHVyZSwgYW5kIGV2ZW4gaWYgdGhlcmUgd2VyZSBpc3N1ZXMgaGVyZSwgdGhleSB3b3VsZG4ndCBkaXJlY3RseSB0cmFuc2xhdGUgaW50byBleHBsb2l0YWJsZSBmbGF3cyBpbiB0aGUgcnVubmluZyBzeXN0ZW0uIE5vIGZ1bmN0aW9uYWwga2VybmVsIGNoYW5nZXMsIG5vIGZ1enppbmcgcmVxdWlyZWQuIFdvcnRoRnV6emluZz1mYWxzZSwgc2ltcGxlIGFzIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzEsIk91dHB1dFRva2VucyI6NjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjQ0OjMyLjYzNjA3NTE5MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLywgd2hpY2ggYXJlIHVzZXItc3BhY2UgdGVzdGluZyB0b29scyBhbmQgZG8gbm90IGFsdGVyIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLCB3aGljaCBhcmUgdXNlci1zcGFjZSB0ZXN0aW5nIHRvb2xzIGFuZCBkbyBub3QgYWx0ZXIgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpclcq[1] Phase: Running StartedAt: 2026-07-10 13:44:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpclcq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-10 13:44:44 +0000 UTC FinishedAt: 2026-07-10 13:44:49 +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,}