Name: series-workflowbvjvf Phase: Failed StartedAt: 2026-07-09 19:00:10 +0000 UTC FinishedAt: 2026-07-09 19:22:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbvjvf[0] Phase: Succeeded StartedAt: 2026-07-09 19:00:10 +0000 UTC FinishedAt: 2026-07-09 19:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbvjvf[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 19:00:10 +0000 UTC FinishedAt: 2026-07-09 19:22:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE5OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRTG9naWMgUUVEIEV0aGVybmV0IE5JQyBkcml2ZXIgKHFlZGUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBuZXR3b3JrIGNhcmRzIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UgdXNlZCBmb3IgZnV6emluZywgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxOToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY2M2MxNDcxMGE5YjY2MTEzMTFmZmYyMzdhYTQ4NmU3MDQ4NjNjYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDE5OjIxOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xuaW5kZXggMzNlMThiYjY5Nzc0MDEuLjk1YjVjZmNjNDNjMjE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbkBAIC02NzAsMTMgJiM0Mzs2NzAsMjIgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHRcdFx0XHRcdFx0IE5VTV9SWF9CRFNfTUFYXTtcbiBcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4cS1cdTAwM2V0cGFfaW5mb1t0cGFfYWdnX2luZGV4XTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSB0cGFfaW5mby1cdTAwM2Vza2I7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKnBhZ2UgPSBjdXJyZW50X2JkLVx1MDAzZWRhdGE7XG4gXG4gXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjNDM7XHQvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwYWdlKSkge1xuJiM0MztcdFx0RFBfTk9USUNFKGVkZXYsXG4mIzQzO1x0XHRcdCAgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIFJYIGJ1ZmZlciBmb3IgVFBBIGFnZyAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICB0cGFfYWdnX2luZGV4KTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi9cbiBcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVx1MDAzZWZyYWdfaWQmIzQzOyYjNDM7LFxuLVx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0ICAgcGFnZSxcbiBcdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZXBhZ2Vfb2Zmc2V0ICYjNDM7IHJ4cS1cdTAwM2VyeF9oZWFkcm9vbSxcbiBcdFx0XHQgICBsZW5fb25fYmQpO1xuIFxuQEAgLTY4NCw3ICYjNDM7NjkzLDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0XHQgKiBzbyB0aGF0IGl0IGRvZXNuJiMzOTt0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi5cbiBcdFx0ICovXG4tXHRcdHBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLVx1MDAzZWRhdGEpO1xuJiM0MztcdFx0cGFnZV9yZWZfaW5jKHBhZ2UpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbkBAIC05NTksOCAmIzQzOzk2OCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcbiBcdFx0XHRcdCBzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF90cGFfY29udF9jcWUgKmNxZSlcbiB7XG4mIzQzO1x0c3RydWN0IHFlZGVfYWdnX2luZm8gKnRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW2NxZS1cdTAwM2V0cGFfYWdnX2luZGV4XTtcbiBcdGludCBpO1xuIFxuJiM0MztcdC8qIERvbiYjMzk7dCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGNxZS1cdTAwM2VsZW5fbGlzdCkgXHUwMDI2XHUwMDI2IGNxZS1cdTAwM2VsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspXG4gXHRcdHFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS1cdTAwM2V0cGFfYWdnX2luZGV4LFxuIFx0XHRcdFx0ICAgbGUxNl90b19jcHUoY3FlLVx1MDAzZWxlbl9saXN0W2ldKSk7XG5AQCAtOTgyLDYgJiM0Mzs5OTksMTAgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0dHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXhdO1xuIFx0c2tiID0gdHBhX2luZm8tXHUwMDNlc2tiO1xuIFxuJiM0MztcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUIHx8ICFza2IpKVxuJiM0MztcdFx0Z290byBlcnI7XG4mIzQzO1xuIFx0aWYgKHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5wYWdlX29mZnNldCA9PSBQQUdFX1NJWkUpXG4gXHRcdGRtYV91bm1hcF9wYWdlKHJ4cS1cdTAwM2VkZXYsIHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxuIFx0XHRcdCAgICAgICBQQUdFX1NJWkUsIHJ4cS1cdTAwM2VkYXRhX2RpcmVjdGlvbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTk6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNjNjMTQ3MTBhOWI2NjExMzExZmZmMjM3YWE0ODZlNzA0ODYzY2IzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxOToyMToxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYwppbmRleCAzM2UxOGJiNjk3NzQwMS4uOTViNWNmY2M0M2MyMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmMKQEAgLTY3MCwxMyAmIzQzOzY3MCwyMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCQkJCQkJIE5VTV9SWF9CRFNfTUFYXTsKIAlzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSAmYW1wO3J4cS0mZ3Q7dHBhX2luZm9bdHBhX2FnZ19pbmRleF07CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLSZndDtza2I7CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC0mZ3Q7ZGF0YTsKIAogCWlmICh1bmxpa2VseSh0cGFfaW5mby0mZ3Q7c3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKQogCQlnb3RvIG91dDsKIAomIzQzOwkvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovCiYjNDM7CWlmICh1bmxpa2VseSghcGFnZSkpIHsKJiM0MzsJCURQX05PVElDRShlZGV2LAomIzQzOwkJCSAgJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgUlggYnVmZmVyIGZvciBUUEEgYWdnICV1XG4mIzM0OywKJiM0MzsJCQkgIHRwYV9hZ2dfaW5kZXgpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKIAkvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi8KIAlza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCB0cGFfaW5mby0mZ3Q7ZnJhZ19pZCYjNDM7JiM0MzssCi0JCQkgICBjdXJyZW50X2JkLSZndDtkYXRhLAomIzQzOwkJCSAgIHBhZ2UsCiAJCQkgICBjdXJyZW50X2JkLSZndDtwYWdlX29mZnNldCAmIzQzOyByeHEtJmd0O3J4X2hlYWRyb29tLAogCQkJICAgbGVuX29uX2JkKTsKIApAQCAtNjg0LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCS8qIEluY3IgcGFnZSByZWYgY291bnQgdG8gcmV1c2Ugb24gYWxsb2NhdGlvbiBmYWlsdXJlCiAJCSAqIHNvIHRoYXQgaXQgZG9lc24mIzM5O3QgZ2V0IGZyZWVkIHdoaWxlIGZyZWVpbmcgU0tCLgogCQkgKi8KLQkJcGFnZV9yZWZfaW5jKGN1cnJlbnRfYmQtJmd0O2RhdGEpOwomIzQzOwkJcGFnZV9yZWZfaW5jKHBhZ2UpOwogCQlnb3RvIG91dDsKIAl9CiAKQEAgLTk1OSw4ICYjNDM7OTY4LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxZWRlX3RwYV9jb250KHN0cnVjdCBxZWRlX2RldiAqZWRldiwKIAkJCQkgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSwKIAkJCQkgc3RydWN0IGV0aF9mYXN0X3BhdGhfcnhfdHBhX2NvbnRfY3FlICpjcWUpCiB7CiYjNDM7CXN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9ICZhbXA7cnhxLSZndDt0cGFfaW5mb1tjcWUtJmd0O3RwYV9hZ2dfaW5kZXhdOwogCWludCBpOwogCiYjNDM7CS8qIERvbiYjMzk7dCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovCiYjNDM7CWlmICh1bmxpa2VseSh0cGFfaW5mby0mZ3Q7c3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShjcWUtJmd0O2xlbl9saXN0KSAmYW1wOyZhbXA7IGNxZS0mZ3Q7bGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KQomIzQzOwkJCXFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShjcWUtJmd0O2xlbl9saXN0KSAmYW1wOyZhbXA7IGNxZS0mZ3Q7bGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KQogCQlxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtJmd0O3RwYV9hZ2dfaW5kZXgsCiAJCQkJICAgbGUxNl90b19jcHUoY3FlLSZndDtsZW5fbGlzdFtpXSkpOwpAQCAtOTgyLDYgJiM0Mzs5OTksMTAgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LAogCXRwYV9pbmZvID0gJmFtcDtyeHEtJmd0O3RwYV9pbmZvW2NxZS0mZ3Q7dHBhX2FnZ19pbmRleF07CiAJc2tiID0gdHBhX2luZm8tJmd0O3NrYjsKIAomIzQzOwkvKiBEcm9wIHRoZSBwYWNrZXQgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqLwomIzQzOwlpZiAodW5saWtlbHkodHBhX2luZm8tJmd0O3N0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUIHx8ICFza2IpKQomIzQzOwkJZ290byBlcnI7CiYjNDM7CiAJaWYgKHRwYV9pbmZvLSZndDtidWZmZXIucGFnZV9vZmZzZXQgPT0gUEFHRV9TSVpFKQogCQlkbWFfdW5tYXBfcGFnZShyeHEtJmd0O2RldiwgdHBhX2luZm8tJmd0O2J1ZmZlci5tYXBwaW5nLAogCQkJICAgICAgIFBBR0VfU0laRSwgcnhxLSZndDtkYXRhX2RpcmVjdGlvbik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIFFMb2dpYyBGYXN0TGluUSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jYC4gSXQgbG9va3MgbGlrZSBzb21lIHN0YW5kYXJkIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyDigJMgTlVMTCBwb2ludGVyIGNoZWNrcyBhbmQgc3RhdGUgY2hlY2tzIHdpdGhpbiBgcWVkZV9maWxsX2ZyYWdfc2tiYCwgYHFlZGVfdHBhX2NvbnRgLCBhbmQgYHFlZGVfdHBhX2VuZGAuIE5vdGhpbmcgcGFydGljdWxhcmx5IGdyb3VuZGJyZWFraW5nLCBidXQgYWx3YXlzIGdvb2QgdG8gc2VlLiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGZvciB0aGUgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IENvcmUgRXRoZXJuZXQgRHJpdmVyLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzICpyZWFjaGFiaWxpdHkqLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzbyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRoIFFMb2dpYyBiZWluZyBhIHNwZWNpZmljIGhhcmR3YXJlIHZlbmRvciwgdHlwaWNhbGx5LCB5b3UmIzM5O3JlIG5vdCBnb2luZyB0byBzZWUgdGhpcyBkcml2ZXIgZW5nYWdlZCBpbiBRRU1VIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBlbXVsYXRlZCBkZXZpY2UgcHJlc2VudCwgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoaXMgcGFydGljdWxhciBRTG9naWMgY2FyZC4gU28sIG15IG5leHQgbW92ZSBpcyB0byB2ZXJpZnkgd2hldGhlciB0aGVyZSBpcyBhbnkgZW11bGF0aW9uIGltcGxlbWVudGVkIHdpdGhpbiBRRU1VIHRoYXQgd291bGQgdHJpZ2dlciB0aGlzIGRyaXZlciwgb3IgaWYgaXQgaXMgcHVyZWx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gdGhlIHBhdGNoJiMzOTtzIGxvZ2ljLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIHRoYXQgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLCB3aGljaCB0aGUgZGV2aWNlIGlkZW50aWZpZXIgaW1wbGllcy4gSSYjMzk7bGwgdGhlbiBtb3ZlIG9uIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRRURFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEh1bnQqKgoKT2theSwgYmVmb3JlIEkgZ28gZG93biBhIHJhYmJpdCBob2xlLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgbGlrZWx5IHJlc2lkZS4gTXkgZ3V0IHNheXMgaXQmIzM5O3MgZ29pbmcgdG8gYmUgaW4gb25lIG9mIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgcGVydGFpbmluZyB0byBRTG9naWMsIGdpdmVuIHRoZSBjb250ZXh0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWdgLiBJZiBpdCYjMzk7cyBub3QgdGhlcmUsIHRoZSBhcmNoaXRlY3R1cmUgbWlnaHQgaGF2ZSBldm9sdmVkLCBvciB0aGVyZSBtaWdodCBiZSBtb3JlIHNwZWNpZmljIHN1Yi1kcml2ZXJzIG5vdy4gSW4gdGhhdCBjYXNlLCBJIHNob3VsZCB0aGVuIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIGFueSBmaW5lLWdyYWluZWQgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGF0IHBhcnRpY3VsYXIgZGV2aWNlIG9yIHRlY2hub2xvZ3kgd2l0aGluIHRoZSBRTG9naWMgZWNvc3lzdGVtLiBUaGlzIHF1aWNrIGNoZWNrIHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB3YXN0ZWQgdGltZSBpZiBJIGNhbiBqdXN0IHNwb3QgdGhlIHJlbGV2YW50IG9wdGlvbiBkZWZpbmVkIGRpcmVjdGx5IGluIHRoZSBLY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFFFREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnPTg5PWNvbmZpZyBRRURfU1JJT1Zcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy05OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnOjk5OmNvbmZpZyBRRURFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0xMDAtXHR0cmlzdGF0ZSBcJiMzNDtRTG9naWMgUUVEIDI1LzQwLzEwMEdiIEV0aGVybmV0IE5JQ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzgKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgUUxvZ2ljIEV0aGVybmV0IE5JQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCYjMzk7cyBmb3IgdGhlICYjMzQ7UUxvZ2ljIFFFRCAyNS80MC8xMDBHYiBFdGhlcm5ldCBOSUMuJiMzNDsgUmlnaHQgYXdheSwgSSBzZWUgdGhlIHByb2JsZW0uIFRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlci4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSB2ZXJ5IHNwZWNpZmljIHBpZWNlIG9mIHBoeXNpY2FsIGVxdWlwbWVudCBoZXJlLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IG91ciBmdXp6aW5nIHNldHVwIOKAkyBzeXprYWxsZXIgcnVubmluZyBvbiBRRU1VLiBUaGF0JiMzOTtzIG91ciBwcmltYXJ5IGVudmlyb25tZW50LiBBbmQgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiB3ZSAqZW11bGF0ZSogdGhhdCBRTG9naWMgaGFyZHdhcmUgZWZmZWN0aXZlbHkgd2l0aGluIHRoYXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIHRoZXJlIHNvbWUgc29mdHdhcmUgZW11bGF0aW9uIGxheWVyIGF2YWlsYWJsZSB0aGF0IHdvdWxkIGFsbG93IHVzIHRvIGludGVyYWN0IHdpdGggdGhlIGRyaXZlciBhcyBpZiBpdCB3ZXJlIHRoZSByZWFsIHRoaW5nPyBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIGFuc3dlciBpcyBuby4gVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGFueSB1c2FibGUgZW11bGF0aW9uLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGVzZSBjb25zdHJhaW50cywgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkcml2ZXIgaXNuJiMzOTt0IHJlYWxpc3RpY2FsbHkgZnV6emFibGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuIFdlJiMzOTtsbCBiZSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIG9uZS4gSXQmIzM5O3MganVzdCBub3QgcHJhY3RpY2FsIHdpdGhvdXQgYSBzaWduaWZpY2FudCBpbnZlc3RtZW50IGluIGNyZWF0aW5nIG9yIGZpbmRpbmcgYSBnb29kIGVtdWxhdGlvbiBsYXllciBmb3IgdGhlIFFMb2dpYyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRTG9naWMgUUVEIEV0aGVybmV0IE5JQyBkcml2ZXIgKHFlZGUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBuZXR3b3JrIGNhcmRzIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UgdXNlZCBmb3IgZnV6emluZywgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MTQuMDQwNDA1NDU0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTM4MzM2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRTG9naWMgUUVEIEV0aGVybmV0IE5JQyBkcml2ZXIgKHFlZGUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBuZXR3b3JrIGNhcmRzIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UgdXNlZCBmb3IgZnV6emluZywgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MTQuMDQwNDEyOTg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTI1NDEzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNjNjMTQ3MTBhOWI2NjExMzExZmZmMjM3YWE0ODZlNzA0ODYzY2IzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMTk6MjE6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXFxuaW5kZXggMzNlMThiYjY5Nzc0MDEuLjk1YjVjZmNjNDNjMjE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xcbkBAIC02NzAsMTMgKzY3MCwyMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBOVU1fUlhfQkRTX01BWF07XFxuIFxcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFxcdTAwMjZyeHEtXFx1MDAzZXRwYV9pbmZvW3RwYV9hZ2dfaW5kZXhdO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdHBhX2luZm8tXFx1MDAzZXNrYjtcXG4rXFx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBjdXJyZW50X2JkLVxcdTAwM2VkYXRhO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVxcdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCkpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0LyogQXZvaWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gdW5kZXIgc2V2ZXJlIG1lbW9yeSBwcmVzc3VyZSAqL1xcbitcXHRpZiAodW5saWtlbHkoIXBhZ2UpKSB7XFxuK1xcdFxcdERQX05PVElDRShlZGV2LFxcbitcXHRcXHRcXHQgIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgUlggYnVmZmVyIGZvciBUUEEgYWdnICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgIHRwYV9hZ2dfaW5kZXgpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4gXFx0LyogQWRkIG9uZSBmcmFnIGFuZCB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIGZpZWxkcyBpbiB0aGUgc2tiICovXFxuIFxcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVxcdTAwM2VmcmFnX2lkKyssXFxuLVxcdFxcdFxcdCAgIGN1cnJlbnRfYmQtXFx1MDAzZWRhdGEsXFxuK1xcdFxcdFxcdCAgIHBhZ2UsXFxuIFxcdFxcdFxcdCAgIGN1cnJlbnRfYmQtXFx1MDAzZXBhZ2Vfb2Zmc2V0ICsgcnhxLVxcdTAwM2VyeF9oZWFkcm9vbSxcXG4gXFx0XFx0XFx0ICAgbGVuX29uX2JkKTtcXG4gXFxuQEAgLTY4NCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdFxcdC8qIEluY3IgcGFnZSByZWYgY291bnQgdG8gcmV1c2Ugb24gYWxsb2NhdGlvbiBmYWlsdXJlXFxuIFxcdFxcdCAqIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgZnJlZWQgd2hpbGUgZnJlZWluZyBTS0IuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRwYWdlX3JlZl9pbmMoY3VycmVudF9iZC1cXHUwMDNlZGF0YSk7XFxuK1xcdFxcdHBhZ2VfcmVmX2luYyhwYWdlKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gXFxuQEAgLTk1OSw4ICs5NjgsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHFlZGVfdHBhX2NvbnQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBldGhfZmFzdF9wYXRoX3J4X3RwYV9jb250X2NxZSAqY3FlKVxcbiB7XFxuK1xcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFxcdTAwMjZyeHEtXFx1MDAzZXRwYV9pbmZvW2NxZS1cXHUwMDNldHBhX2FnZ19pbmRleF07XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LyogRG9uJ3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xcbitcXHRpZiAodW5saWtlbHkodHBhX2luZm8tXFx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShjcWUtXFx1MDAzZWxlbl9saXN0KSBcXHUwMDI2XFx1MDAyNiBjcWUtXFx1MDAzZWxlbl9saXN0W2ldOyBpKyspXFxuK1xcdFxcdFxcdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKVxcbiBcXHRcXHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXFx1MDAzZXRwYV9hZ2dfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGNxZS1cXHUwMDNlbGVuX2xpc3RbaV0pKTtcXG5AQCAtOTgyLDYgKzk5OSwxMCBAQCBzdGF0aWMgaW50IHFlZGVfdHBhX2VuZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdHRwYV9pbmZvID0gXFx1MDAyNnJ4cS1cXHUwMDNldHBhX2luZm9bY3FlLVxcdTAwM2V0cGFfYWdnX2luZGV4XTtcXG4gXFx0c2tiID0gdHBhX2luZm8tXFx1MDAzZXNrYjtcXG4gXFxuK1xcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXFxuK1xcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQgfHwgIXNrYikpXFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXG4gXFx0aWYgKHRwYV9pbmZvLVxcdTAwM2VidWZmZXIucGFnZV9vZmZzZXQgPT0gUEFHRV9TSVpFKVxcbiBcXHRcXHRkbWFfdW5tYXBfcGFnZShyeHEtXFx1MDAzZWRldiwgdHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxcbiBcXHRcXHRcXHQgICAgICAgUEFHRV9TSVpFLCByeHEtXFx1MDAzZWRhdGFfZGlyZWN0aW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MTQuNjk2MTcxNTU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQzODA0NTkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY2M2MxNDcxMGE5YjY2MTEzMTFmZmYyMzdhYTQ4NmU3MDQ4NjNjYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDE5OjIxOjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG5pbmRleCAzM2UxOGJiNjk3NzQwMS4uOTViNWNmY2M0M2MyMTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xuQEAgLTY3MCwxMyArNjcwLDIyIEBAIHN0YXRpYyBpbnQgcWVkZV9maWxsX2ZyYWdfc2tiKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0XHRcdFx0XHRcdCBOVU1fUlhfQkRTX01BWF07XG4gXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bdHBhX2FnZ19pbmRleF07XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdHBhX2luZm8tXHUwMDNlc2tiO1xuK1x0c3RydWN0IHBhZ2UgKnBhZ2UgPSBjdXJyZW50X2JkLVx1MDAzZWRhdGE7XG4gXG4gXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKVxuIFx0XHRnb3RvIG91dDtcbiBcbitcdC8qIEF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHVuZGVyIHNldmVyZSBtZW1vcnkgcHJlc3N1cmUgKi9cbitcdGlmICh1bmxpa2VseSghcGFnZSkpIHtcbitcdFx0RFBfTk9USUNFKGVkZXYsXG4rXHRcdFx0ICBcIkZhaWxlZCB0byBhbGxvY2F0ZSBSWCBidWZmZXIgZm9yIFRQQSBhZ2cgJXVcXG5cIixcbitcdFx0XHQgIHRwYV9hZ2dfaW5kZXgpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdC8qIEFkZCBvbmUgZnJhZyBhbmQgdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMgaW4gdGhlIHNrYiAqL1xuIFx0c2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgdHBhX2luZm8tXHUwMDNlZnJhZ19pZCsrLFxuLVx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlZGF0YSxcbitcdFx0XHQgICBwYWdlLFxuIFx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlcGFnZV9vZmZzZXQgKyByeHEtXHUwMDNlcnhfaGVhZHJvb20sXG4gXHRcdFx0ICAgbGVuX29uX2JkKTtcbiBcbkBAIC02ODQsNyArNjkzLDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0XHQgKiBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IGZyZWVkIHdoaWxlIGZyZWVpbmcgU0tCLlxuIFx0XHQgKi9cbi1cdFx0cGFnZV9yZWZfaW5jKGN1cnJlbnRfYmQtXHUwMDNlZGF0YSk7XG4rXHRcdHBhZ2VfcmVmX2luYyhwYWdlKTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG5AQCAtOTU5LDggKzk2OCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcbiBcdFx0XHRcdCBzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF90cGFfY29udF9jcWUgKmNxZSlcbiB7XG4rXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXhdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBEb24ndCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4rXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKSB7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpKyspXG4rXHRcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkrKylcbiBcdFx0cWVkZV9maWxsX2ZyYWdfc2tiKGVkZXYsIHJ4cSwgY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXgsXG4gXHRcdFx0XHQgICBsZTE2X3RvX2NwdShjcWUtXHUwMDNlbGVuX2xpc3RbaV0pKTtcbkBAIC05ODIsNiArOTk5LDEwIEBAIHN0YXRpYyBpbnQgcWVkZV90cGFfZW5kKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdHRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW2NxZS1cdTAwM2V0cGFfYWdnX2luZGV4XTtcbiBcdHNrYiA9IHRwYV9pbmZvLVx1MDAzZXNrYjtcbiBcbitcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4rXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQgfHwgIXNrYikpXG4rXHRcdGdvdG8gZXJyO1xuK1xuIFx0aWYgKHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5wYWdlX29mZnNldCA9PSBQQUdFX1NJWkUpXG4gXHRcdGRtYV91bm1hcF9wYWdlKHJ4cS1cdTAwM2VkZXYsIHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxuIFx0XHRcdCAgICAgICBQQUdFX1NJWkUsIHJ4cS1cdTAwM2VkYXRhX2RpcmVjdGlvbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxOToyMToxNC42OTYxNzM5NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODcxMDEzMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoIGluIHRoZSBRTG9naWMgRmFzdExpblEgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNgLiBJdCBsb29rcyBsaWtlIHNvbWUgc3RhbmRhcmQgZGVmZW5zaXZlIHByb2dyYW1taW5nIOKAkyBOVUxMIHBvaW50ZXIgY2hlY2tzIGFuZCBzdGF0ZSBjaGVja3Mgd2l0aGluIGBxZWRlX2ZpbGxfZnJhZ19za2JgLCBgcWVkZV90cGFfY29udGAsIGFuZCBgcWVkZV90cGFfZW5kYC4gTm90aGluZyBwYXJ0aWN1bGFybHkgZ3JvdW5kYnJlYWtpbmcsIGJ1dCBhbHdheXMgZ29vZCB0byBzZWUuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgZm9yIHRoZSBRTG9naWMgRmFzdExpblEgNHh4eHggQ29yZSBFdGhlcm5ldCBEcml2ZXIuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgKnJlYWNoYWJpbGl0eSouIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNvIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdpdGggUUxvZ2ljIGJlaW5nIGEgc3BlY2lmaWMgaGFyZHdhcmUgdmVuZG9yLCB0eXBpY2FsbHksIHlvdSdyZSBub3QgZ29pbmcgdG8gc2VlIHRoaXMgZHJpdmVyIGVuZ2FnZWQgaW4gUUVNVSB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRlZCBkZXZpY2UgcHJlc2VudCwgYW5kIEknbSBwcmV0dHkgc3VyZSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGlzIHBhcnRpY3VsYXIgUUxvZ2ljIGNhcmQuIFNvLCBteSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYW55IGVtdWxhdGlvbiBpbXBsZW1lbnRlZCB3aXRoaW4gUUVNVSB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcyBkcml2ZXIsIG9yIGlmIGl0IGlzIHB1cmVseSBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlci4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBwYXRjaCdzIGxvZ2ljLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdGhhdCBpdCdzIGEgUENJIGRldmljZSwgd2hpY2ggdGhlIGRldmljZSBpZGVudGlmaWVyIGltcGxpZXMuIEknbGwgdGhlbiBtb3ZlIG9uIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IG1pZ2h0IHNoZWQgc29tZSBsaWdodCBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MjEuNTY3MTg5NjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MDUwNDA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUVERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxOToyMToyMS43NDYyNDgyMTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODA1MzU1NTkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSHVudCoqXG5cbk9rYXksIGJlZm9yZSBJIGdvIGRvd24gYSByYWJiaXQgaG9sZSwgbGV0J3MganVzdCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBsaWtlbHkgcmVzaWRlLiBNeSBndXQgc2F5cyBpdCdzIGdvaW5nIHRvIGJlIGluIG9uZSBvZiB0aGUgS2NvbmZpZyBmaWxlcyByZWxhdGVkIHRvIG5ldHdvcmsgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBvbmVzIHBlcnRhaW5pbmcgdG8gUUxvZ2ljLCBnaXZlbiB0aGUgY29udGV4dC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnYC4gSWYgaXQncyBub3QgdGhlcmUsIHRoZSBhcmNoaXRlY3R1cmUgbWlnaHQgaGF2ZSBldm9sdmVkLCBvciB0aGVyZSBtaWdodCBiZSBtb3JlIHNwZWNpZmljIHN1Yi1kcml2ZXJzIG5vdy4gSW4gdGhhdCBjYXNlLCBJIHNob3VsZCB0aGVuIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgYW55IGZpbmUtZ3JhaW5lZCBvcHRpb25zIHNwZWNpZmljIHRvIHRoYXQgcGFydGljdWxhciBkZXZpY2Ugb3IgdGVjaG5vbG9neSB3aXRoaW4gdGhlIFFMb2dpYyBlY29zeXN0ZW0uIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBzYXZlIG1lIGEgbG90IG9mIHdhc3RlZCB0aW1lIGlmIEkgY2FuIGp1c3Qgc3BvdCB0aGUgcmVsZXZhbnQgb3B0aW9uIGRlZmluZWQgZGlyZWN0bHkgaW4gdGhlIEtjb25maWcgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE5OjIxOjM5Ljc5OTgwNjA1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg1NzUwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBRRURFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc9ODk9Y29uZmlnIFFFRF9TUklPVlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc6OTk6Y29uZmlnIFFFREVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0xMDAtXFx0dHJpc3RhdGUgXFxcIlFMb2dpYyBRRUQgMjUvNDAvMTAwR2IgRXRoZXJuZXQgTklDXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxOToyMTo0Mi4wODU1NzgwOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjA0ODU3NTczMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgUUxvZ2ljIEV0aGVybmV0IE5JQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlci4gSXQncyBmb3IgdGhlIFwiUUxvZ2ljIFFFRCAyNS80MC8xMDBHYiBFdGhlcm5ldCBOSUMuXCIgUmlnaHQgYXdheSwgSSBzZWUgdGhlIHByb2JsZW0uIFRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlci4gV2UncmUgdGFsa2luZyBhYm91dCBhIHZlcnkgc3BlY2lmaWMgcGllY2Ugb2YgcGh5c2ljYWwgZXF1aXBtZW50IGhlcmUuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IG91ciBmdXp6aW5nIHNldHVwIOKAkyBzeXprYWxsZXIgcnVubmluZyBvbiBRRU1VLiBUaGF0J3Mgb3VyIHByaW1hcnkgZW52aXJvbm1lbnQuIEFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcywgY2FuIHdlICplbXVsYXRlKiB0aGF0IFFMb2dpYyBoYXJkd2FyZSBlZmZlY3RpdmVseSB3aXRoaW4gdGhhdCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhlcmUgc29tZSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgYXZhaWxhYmxlIHRoYXQgd291bGQgYWxsb3cgdXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZHJpdmVyIGFzIGlmIGl0IHdlcmUgdGhlIHJlYWwgdGhpbmc/IEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgYW5zd2VyIGlzIG5vLiBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhbnkgdXNhYmxlIGVtdWxhdGlvbi5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGVzZSBjb25zdHJhaW50cywgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkcml2ZXIgaXNuJ3QgcmVhbGlzdGljYWxseSBmdXp6YWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC4gV2UnbGwgYmUgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEl0J3MganVzdCBub3QgcHJhY3RpY2FsIHdpdGhvdXQgYSBzaWduaWZpY2FudCBpbnZlc3RtZW50IGluIGNyZWF0aW5nIG9yIGZpbmRpbmcgYSBnb29kIGVtdWxhdGlvbiBsYXllciBmb3IgdGhlIFFMb2dpYyBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYzOCwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE5OjIxOjU4LjEzNDE1NzA4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUUxvZ2ljIFFFRCBFdGhlcm5ldCBOSUMgZHJpdmVyIChxZWRlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgbmV0d29yayBjYXJkcyBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHVzZWQgZm9yIGZ1enppbmcsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbvjvf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 19:00:10 +0000 UTC FinishedAt: 2026-07-09 19:21:59 +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+CgkJCTx0ZD4yMDI2LzA3LzA5IDE5OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRTG9naWMgUUVEIEV0aGVybmV0IE5JQyBkcml2ZXIgKHFlZGUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBuZXR3b3JrIGNhcmRzIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UgdXNlZCBmb3IgZnV6emluZywgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxOToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY2M2MxNDcxMGE5YjY2MTEzMTFmZmYyMzdhYTQ4NmU3MDQ4NjNjYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDE5OjIxOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xuaW5kZXggMzNlMThiYjY5Nzc0MDEuLjk1YjVjZmNjNDNjMjE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbkBAIC02NzAsMTMgJiM0Mzs2NzAsMjIgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHRcdFx0XHRcdFx0IE5VTV9SWF9CRFNfTUFYXTtcbiBcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4cS1cdTAwM2V0cGFfaW5mb1t0cGFfYWdnX2luZGV4XTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSB0cGFfaW5mby1cdTAwM2Vza2I7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKnBhZ2UgPSBjdXJyZW50X2JkLVx1MDAzZWRhdGE7XG4gXG4gXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjNDM7XHQvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwYWdlKSkge1xuJiM0MztcdFx0RFBfTk9USUNFKGVkZXYsXG4mIzQzO1x0XHRcdCAgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIFJYIGJ1ZmZlciBmb3IgVFBBIGFnZyAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICB0cGFfYWdnX2luZGV4KTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi9cbiBcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVx1MDAzZWZyYWdfaWQmIzQzOyYjNDM7LFxuLVx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0ICAgcGFnZSxcbiBcdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZXBhZ2Vfb2Zmc2V0ICYjNDM7IHJ4cS1cdTAwM2VyeF9oZWFkcm9vbSxcbiBcdFx0XHQgICBsZW5fb25fYmQpO1xuIFxuQEAgLTY4NCw3ICYjNDM7NjkzLDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0XHQgKiBzbyB0aGF0IGl0IGRvZXNuJiMzOTt0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi5cbiBcdFx0ICovXG4tXHRcdHBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLVx1MDAzZWRhdGEpO1xuJiM0MztcdFx0cGFnZV9yZWZfaW5jKHBhZ2UpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbkBAIC05NTksOCAmIzQzOzk2OCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcbiBcdFx0XHRcdCBzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF90cGFfY29udF9jcWUgKmNxZSlcbiB7XG4mIzQzO1x0c3RydWN0IHFlZGVfYWdnX2luZm8gKnRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW2NxZS1cdTAwM2V0cGFfYWdnX2luZGV4XTtcbiBcdGludCBpO1xuIFxuJiM0MztcdC8qIERvbiYjMzk7dCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGNxZS1cdTAwM2VsZW5fbGlzdCkgXHUwMDI2XHUwMDI2IGNxZS1cdTAwM2VsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspXG4gXHRcdHFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS1cdTAwM2V0cGFfYWdnX2luZGV4LFxuIFx0XHRcdFx0ICAgbGUxNl90b19jcHUoY3FlLVx1MDAzZWxlbl9saXN0W2ldKSk7XG5AQCAtOTgyLDYgJiM0Mzs5OTksMTAgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0dHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXhdO1xuIFx0c2tiID0gdHBhX2luZm8tXHUwMDNlc2tiO1xuIFxuJiM0MztcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4mIzQzO1x0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUIHx8ICFza2IpKVxuJiM0MztcdFx0Z290byBlcnI7XG4mIzQzO1xuIFx0aWYgKHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5wYWdlX29mZnNldCA9PSBQQUdFX1NJWkUpXG4gXHRcdGRtYV91bm1hcF9wYWdlKHJ4cS1cdTAwM2VkZXYsIHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxuIFx0XHRcdCAgICAgICBQQUdFX1NJWkUsIHJ4cS1cdTAwM2VkYXRhX2RpcmVjdGlvbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTk6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNjNjMTQ3MTBhOWI2NjExMzExZmZmMjM3YWE0ODZlNzA0ODYzY2IzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxOToyMToxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYwppbmRleCAzM2UxOGJiNjk3NzQwMS4uOTViNWNmY2M0M2MyMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmMKQEAgLTY3MCwxMyAmIzQzOzY3MCwyMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCQkJCQkJIE5VTV9SWF9CRFNfTUFYXTsKIAlzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSAmYW1wO3J4cS0mZ3Q7dHBhX2luZm9bdHBhX2FnZ19pbmRleF07CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLSZndDtza2I7CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC0mZ3Q7ZGF0YTsKIAogCWlmICh1bmxpa2VseSh0cGFfaW5mby0mZ3Q7c3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKQogCQlnb3RvIG91dDsKIAomIzQzOwkvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovCiYjNDM7CWlmICh1bmxpa2VseSghcGFnZSkpIHsKJiM0MzsJCURQX05PVElDRShlZGV2LAomIzQzOwkJCSAgJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgUlggYnVmZmVyIGZvciBUUEEgYWdnICV1XG4mIzM0OywKJiM0MzsJCQkgIHRwYV9hZ2dfaW5kZXgpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKIAkvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi8KIAlza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCB0cGFfaW5mby0mZ3Q7ZnJhZ19pZCYjNDM7JiM0MzssCi0JCQkgICBjdXJyZW50X2JkLSZndDtkYXRhLAomIzQzOwkJCSAgIHBhZ2UsCiAJCQkgICBjdXJyZW50X2JkLSZndDtwYWdlX29mZnNldCAmIzQzOyByeHEtJmd0O3J4X2hlYWRyb29tLAogCQkJICAgbGVuX29uX2JkKTsKIApAQCAtNjg0LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCS8qIEluY3IgcGFnZSByZWYgY291bnQgdG8gcmV1c2Ugb24gYWxsb2NhdGlvbiBmYWlsdXJlCiAJCSAqIHNvIHRoYXQgaXQgZG9lc24mIzM5O3QgZ2V0IGZyZWVkIHdoaWxlIGZyZWVpbmcgU0tCLgogCQkgKi8KLQkJcGFnZV9yZWZfaW5jKGN1cnJlbnRfYmQtJmd0O2RhdGEpOwomIzQzOwkJcGFnZV9yZWZfaW5jKHBhZ2UpOwogCQlnb3RvIG91dDsKIAl9CiAKQEAgLTk1OSw4ICYjNDM7OTY4LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxZWRlX3RwYV9jb250KHN0cnVjdCBxZWRlX2RldiAqZWRldiwKIAkJCQkgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSwKIAkJCQkgc3RydWN0IGV0aF9mYXN0X3BhdGhfcnhfdHBhX2NvbnRfY3FlICpjcWUpCiB7CiYjNDM7CXN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9ICZhbXA7cnhxLSZndDt0cGFfaW5mb1tjcWUtJmd0O3RwYV9hZ2dfaW5kZXhdOwogCWludCBpOwogCiYjNDM7CS8qIERvbiYjMzk7dCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovCiYjNDM7CWlmICh1bmxpa2VseSh0cGFfaW5mby0mZ3Q7c3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShjcWUtJmd0O2xlbl9saXN0KSAmYW1wOyZhbXA7IGNxZS0mZ3Q7bGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KQomIzQzOwkJCXFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShjcWUtJmd0O2xlbl9saXN0KSAmYW1wOyZhbXA7IGNxZS0mZ3Q7bGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KQogCQlxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtJmd0O3RwYV9hZ2dfaW5kZXgsCiAJCQkJICAgbGUxNl90b19jcHUoY3FlLSZndDtsZW5fbGlzdFtpXSkpOwpAQCAtOTgyLDYgJiM0Mzs5OTksMTAgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LAogCXRwYV9pbmZvID0gJmFtcDtyeHEtJmd0O3RwYV9pbmZvW2NxZS0mZ3Q7dHBhX2FnZ19pbmRleF07CiAJc2tiID0gdHBhX2luZm8tJmd0O3NrYjsKIAomIzQzOwkvKiBEcm9wIHRoZSBwYWNrZXQgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqLwomIzQzOwlpZiAodW5saWtlbHkodHBhX2luZm8tJmd0O3N0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUIHx8ICFza2IpKQomIzQzOwkJZ290byBlcnI7CiYjNDM7CiAJaWYgKHRwYV9pbmZvLSZndDtidWZmZXIucGFnZV9vZmZzZXQgPT0gUEFHRV9TSVpFKQogCQlkbWFfdW5tYXBfcGFnZShyeHEtJmd0O2RldiwgdHBhX2luZm8tJmd0O2J1ZmZlci5tYXBwaW5nLAogCQkJICAgICAgIFBBR0VfU0laRSwgcnhxLSZndDtkYXRhX2RpcmVjdGlvbik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIFFMb2dpYyBGYXN0TGluUSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jYC4gSXQgbG9va3MgbGlrZSBzb21lIHN0YW5kYXJkIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyDigJMgTlVMTCBwb2ludGVyIGNoZWNrcyBhbmQgc3RhdGUgY2hlY2tzIHdpdGhpbiBgcWVkZV9maWxsX2ZyYWdfc2tiYCwgYHFlZGVfdHBhX2NvbnRgLCBhbmQgYHFlZGVfdHBhX2VuZGAuIE5vdGhpbmcgcGFydGljdWxhcmx5IGdyb3VuZGJyZWFraW5nLCBidXQgYWx3YXlzIGdvb2QgdG8gc2VlLiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGZvciB0aGUgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IENvcmUgRXRoZXJuZXQgRHJpdmVyLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzICpyZWFjaGFiaWxpdHkqLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzbyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRoIFFMb2dpYyBiZWluZyBhIHNwZWNpZmljIGhhcmR3YXJlIHZlbmRvciwgdHlwaWNhbGx5LCB5b3UmIzM5O3JlIG5vdCBnb2luZyB0byBzZWUgdGhpcyBkcml2ZXIgZW5nYWdlZCBpbiBRRU1VIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBlbXVsYXRlZCBkZXZpY2UgcHJlc2VudCwgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoaXMgcGFydGljdWxhciBRTG9naWMgY2FyZC4gU28sIG15IG5leHQgbW92ZSBpcyB0byB2ZXJpZnkgd2hldGhlciB0aGVyZSBpcyBhbnkgZW11bGF0aW9uIGltcGxlbWVudGVkIHdpdGhpbiBRRU1VIHRoYXQgd291bGQgdHJpZ2dlciB0aGlzIGRyaXZlciwgb3IgaWYgaXQgaXMgcHVyZWx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gdGhlIHBhdGNoJiMzOTtzIGxvZ2ljLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIHRoYXQgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLCB3aGljaCB0aGUgZGV2aWNlIGlkZW50aWZpZXIgaW1wbGllcy4gSSYjMzk7bGwgdGhlbiBtb3ZlIG9uIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRRURFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEh1bnQqKgoKT2theSwgYmVmb3JlIEkgZ28gZG93biBhIHJhYmJpdCBob2xlLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgbGlrZWx5IHJlc2lkZS4gTXkgZ3V0IHNheXMgaXQmIzM5O3MgZ29pbmcgdG8gYmUgaW4gb25lIG9mIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgcGVydGFpbmluZyB0byBRTG9naWMsIGdpdmVuIHRoZSBjb250ZXh0LiBMZXQgbWUgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWdgLiBJZiBpdCYjMzk7cyBub3QgdGhlcmUsIHRoZSBhcmNoaXRlY3R1cmUgbWlnaHQgaGF2ZSBldm9sdmVkLCBvciB0aGVyZSBtaWdodCBiZSBtb3JlIHNwZWNpZmljIHN1Yi1kcml2ZXJzIG5vdy4gSW4gdGhhdCBjYXNlLCBJIHNob3VsZCB0aGVuIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIGFueSBmaW5lLWdyYWluZWQgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGF0IHBhcnRpY3VsYXIgZGV2aWNlIG9yIHRlY2hub2xvZ3kgd2l0aGluIHRoZSBRTG9naWMgZWNvc3lzdGVtLiBUaGlzIHF1aWNrIGNoZWNrIHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB3YXN0ZWQgdGltZSBpZiBJIGNhbiBqdXN0IHNwb3QgdGhlIHJlbGV2YW50IG9wdGlvbiBkZWZpbmVkIGRpcmVjdGx5IGluIHRoZSBLY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMTk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFFFREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnPTg5PWNvbmZpZyBRRURfU1JJT1Zcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy05OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnOjk5OmNvbmZpZyBRRURFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0xMDAtXHR0cmlzdGF0ZSBcJiMzNDtRTG9naWMgUUVEIDI1LzQwLzEwMEdiIEV0aGVybmV0IE5JQ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDE5OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzgKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgUUxvZ2ljIEV0aGVybmV0IE5JQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCYjMzk7cyBmb3IgdGhlICYjMzQ7UUxvZ2ljIFFFRCAyNS80MC8xMDBHYiBFdGhlcm5ldCBOSUMuJiMzNDsgUmlnaHQgYXdheSwgSSBzZWUgdGhlIHByb2JsZW0uIFRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlci4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSB2ZXJ5IHNwZWNpZmljIHBpZWNlIG9mIHBoeXNpY2FsIGVxdWlwbWVudCBoZXJlLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IG91ciBmdXp6aW5nIHNldHVwIOKAkyBzeXprYWxsZXIgcnVubmluZyBvbiBRRU1VLiBUaGF0JiMzOTtzIG91ciBwcmltYXJ5IGVudmlyb25tZW50LiBBbmQgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiB3ZSAqZW11bGF0ZSogdGhhdCBRTG9naWMgaGFyZHdhcmUgZWZmZWN0aXZlbHkgd2l0aGluIHRoYXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIHRoZXJlIHNvbWUgc29mdHdhcmUgZW11bGF0aW9uIGxheWVyIGF2YWlsYWJsZSB0aGF0IHdvdWxkIGFsbG93IHVzIHRvIGludGVyYWN0IHdpdGggdGhlIGRyaXZlciBhcyBpZiBpdCB3ZXJlIHRoZSByZWFsIHRoaW5nPyBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIGFuc3dlciBpcyBuby4gVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGFueSB1c2FibGUgZW11bGF0aW9uLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGVzZSBjb25zdHJhaW50cywgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkcml2ZXIgaXNuJiMzOTt0IHJlYWxpc3RpY2FsbHkgZnV6emFibGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuIFdlJiMzOTtsbCBiZSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIG9uZS4gSXQmIzM5O3MganVzdCBub3QgcHJhY3RpY2FsIHdpdGhvdXQgYSBzaWduaWZpY2FudCBpbnZlc3RtZW50IGluIGNyZWF0aW5nIG9yIGZpbmRpbmcgYSBnb29kIGVtdWxhdGlvbiBsYXllciBmb3IgdGhlIFFMb2dpYyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRTG9naWMgUUVEIEV0aGVybmV0IE5JQyBkcml2ZXIgKHFlZGUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBuZXR3b3JrIGNhcmRzIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UgdXNlZCBmb3IgZnV6emluZywgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MTQuMDQwNDA1NDU0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTM4MzM2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRTG9naWMgUUVEIEV0aGVybmV0IE5JQyBkcml2ZXIgKHFlZGUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBuZXR3b3JrIGNhcmRzIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UgdXNlZCBmb3IgZnV6emluZywgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MTQuMDQwNDEyOTg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTI1NDEzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNjNjMTQ3MTBhOWI2NjExMzExZmZmMjM3YWE0ODZlNzA0ODYzY2IzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMTk6MjE6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXFxuaW5kZXggMzNlMThiYjY5Nzc0MDEuLjk1YjVjZmNjNDNjMjE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xcbkBAIC02NzAsMTMgKzY3MCwyMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBOVU1fUlhfQkRTX01BWF07XFxuIFxcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFxcdTAwMjZyeHEtXFx1MDAzZXRwYV9pbmZvW3RwYV9hZ2dfaW5kZXhdO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdHBhX2luZm8tXFx1MDAzZXNrYjtcXG4rXFx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBjdXJyZW50X2JkLVxcdTAwM2VkYXRhO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVxcdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCkpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0LyogQXZvaWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gdW5kZXIgc2V2ZXJlIG1lbW9yeSBwcmVzc3VyZSAqL1xcbitcXHRpZiAodW5saWtlbHkoIXBhZ2UpKSB7XFxuK1xcdFxcdERQX05PVElDRShlZGV2LFxcbitcXHRcXHRcXHQgIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgUlggYnVmZmVyIGZvciBUUEEgYWdnICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgIHRwYV9hZ2dfaW5kZXgpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4gXFx0LyogQWRkIG9uZSBmcmFnIGFuZCB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIGZpZWxkcyBpbiB0aGUgc2tiICovXFxuIFxcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVxcdTAwM2VmcmFnX2lkKyssXFxuLVxcdFxcdFxcdCAgIGN1cnJlbnRfYmQtXFx1MDAzZWRhdGEsXFxuK1xcdFxcdFxcdCAgIHBhZ2UsXFxuIFxcdFxcdFxcdCAgIGN1cnJlbnRfYmQtXFx1MDAzZXBhZ2Vfb2Zmc2V0ICsgcnhxLVxcdTAwM2VyeF9oZWFkcm9vbSxcXG4gXFx0XFx0XFx0ICAgbGVuX29uX2JkKTtcXG4gXFxuQEAgLTY4NCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdFxcdC8qIEluY3IgcGFnZSByZWYgY291bnQgdG8gcmV1c2Ugb24gYWxsb2NhdGlvbiBmYWlsdXJlXFxuIFxcdFxcdCAqIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgZnJlZWQgd2hpbGUgZnJlZWluZyBTS0IuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRwYWdlX3JlZl9pbmMoY3VycmVudF9iZC1cXHUwMDNlZGF0YSk7XFxuK1xcdFxcdHBhZ2VfcmVmX2luYyhwYWdlKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gXFxuQEAgLTk1OSw4ICs5NjgsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHFlZGVfdHBhX2NvbnQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBldGhfZmFzdF9wYXRoX3J4X3RwYV9jb250X2NxZSAqY3FlKVxcbiB7XFxuK1xcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFxcdTAwMjZyeHEtXFx1MDAzZXRwYV9pbmZvW2NxZS1cXHUwMDNldHBhX2FnZ19pbmRleF07XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LyogRG9uJ3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xcbitcXHRpZiAodW5saWtlbHkodHBhX2luZm8tXFx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShjcWUtXFx1MDAzZWxlbl9saXN0KSBcXHUwMDI2XFx1MDAyNiBjcWUtXFx1MDAzZWxlbl9saXN0W2ldOyBpKyspXFxuK1xcdFxcdFxcdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKVxcbiBcXHRcXHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXFx1MDAzZXRwYV9hZ2dfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGNxZS1cXHUwMDNlbGVuX2xpc3RbaV0pKTtcXG5AQCAtOTgyLDYgKzk5OSwxMCBAQCBzdGF0aWMgaW50IHFlZGVfdHBhX2VuZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdHRwYV9pbmZvID0gXFx1MDAyNnJ4cS1cXHUwMDNldHBhX2luZm9bY3FlLVxcdTAwM2V0cGFfYWdnX2luZGV4XTtcXG4gXFx0c2tiID0gdHBhX2luZm8tXFx1MDAzZXNrYjtcXG4gXFxuK1xcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXFxuK1xcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQgfHwgIXNrYikpXFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXG4gXFx0aWYgKHRwYV9pbmZvLVxcdTAwM2VidWZmZXIucGFnZV9vZmZzZXQgPT0gUEFHRV9TSVpFKVxcbiBcXHRcXHRkbWFfdW5tYXBfcGFnZShyeHEtXFx1MDAzZWRldiwgdHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxcbiBcXHRcXHRcXHQgICAgICAgUEFHRV9TSVpFLCByeHEtXFx1MDAzZWRhdGFfZGlyZWN0aW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MTQuNjk2MTcxNTU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQzODA0NTkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY2M2MxNDcxMGE5YjY2MTEzMTFmZmYyMzdhYTQ4NmU3MDQ4NjNjYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDE5OjIxOjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG5pbmRleCAzM2UxOGJiNjk3NzQwMS4uOTViNWNmY2M0M2MyMTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xuQEAgLTY3MCwxMyArNjcwLDIyIEBAIHN0YXRpYyBpbnQgcWVkZV9maWxsX2ZyYWdfc2tiKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0XHRcdFx0XHRcdCBOVU1fUlhfQkRTX01BWF07XG4gXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bdHBhX2FnZ19pbmRleF07XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdHBhX2luZm8tXHUwMDNlc2tiO1xuK1x0c3RydWN0IHBhZ2UgKnBhZ2UgPSBjdXJyZW50X2JkLVx1MDAzZWRhdGE7XG4gXG4gXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKVxuIFx0XHRnb3RvIG91dDtcbiBcbitcdC8qIEF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHVuZGVyIHNldmVyZSBtZW1vcnkgcHJlc3N1cmUgKi9cbitcdGlmICh1bmxpa2VseSghcGFnZSkpIHtcbitcdFx0RFBfTk9USUNFKGVkZXYsXG4rXHRcdFx0ICBcIkZhaWxlZCB0byBhbGxvY2F0ZSBSWCBidWZmZXIgZm9yIFRQQSBhZ2cgJXVcXG5cIixcbitcdFx0XHQgIHRwYV9hZ2dfaW5kZXgpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdC8qIEFkZCBvbmUgZnJhZyBhbmQgdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMgaW4gdGhlIHNrYiAqL1xuIFx0c2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgdHBhX2luZm8tXHUwMDNlZnJhZ19pZCsrLFxuLVx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlZGF0YSxcbitcdFx0XHQgICBwYWdlLFxuIFx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlcGFnZV9vZmZzZXQgKyByeHEtXHUwMDNlcnhfaGVhZHJvb20sXG4gXHRcdFx0ICAgbGVuX29uX2JkKTtcbiBcbkBAIC02ODQsNyArNjkzLDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0XHQgKiBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IGZyZWVkIHdoaWxlIGZyZWVpbmcgU0tCLlxuIFx0XHQgKi9cbi1cdFx0cGFnZV9yZWZfaW5jKGN1cnJlbnRfYmQtXHUwMDNlZGF0YSk7XG4rXHRcdHBhZ2VfcmVmX2luYyhwYWdlKTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG5AQCAtOTU5LDggKzk2OCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcbiBcdFx0XHRcdCBzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF90cGFfY29udF9jcWUgKmNxZSlcbiB7XG4rXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXhdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBEb24ndCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4rXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKSB7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpKyspXG4rXHRcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkrKylcbiBcdFx0cWVkZV9maWxsX2ZyYWdfc2tiKGVkZXYsIHJ4cSwgY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXgsXG4gXHRcdFx0XHQgICBsZTE2X3RvX2NwdShjcWUtXHUwMDNlbGVuX2xpc3RbaV0pKTtcbkBAIC05ODIsNiArOTk5LDEwIEBAIHN0YXRpYyBpbnQgcWVkZV90cGFfZW5kKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdHRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW2NxZS1cdTAwM2V0cGFfYWdnX2luZGV4XTtcbiBcdHNrYiA9IHRwYV9pbmZvLVx1MDAzZXNrYjtcbiBcbitcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4rXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQgfHwgIXNrYikpXG4rXHRcdGdvdG8gZXJyO1xuK1xuIFx0aWYgKHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5wYWdlX29mZnNldCA9PSBQQUdFX1NJWkUpXG4gXHRcdGRtYV91bm1hcF9wYWdlKHJ4cS1cdTAwM2VkZXYsIHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxuIFx0XHRcdCAgICAgICBQQUdFX1NJWkUsIHJ4cS1cdTAwM2VkYXRhX2RpcmVjdGlvbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxOToyMToxNC42OTYxNzM5NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODcxMDEzMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoIGluIHRoZSBRTG9naWMgRmFzdExpblEgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNgLiBJdCBsb29rcyBsaWtlIHNvbWUgc3RhbmRhcmQgZGVmZW5zaXZlIHByb2dyYW1taW5nIOKAkyBOVUxMIHBvaW50ZXIgY2hlY2tzIGFuZCBzdGF0ZSBjaGVja3Mgd2l0aGluIGBxZWRlX2ZpbGxfZnJhZ19za2JgLCBgcWVkZV90cGFfY29udGAsIGFuZCBgcWVkZV90cGFfZW5kYC4gTm90aGluZyBwYXJ0aWN1bGFybHkgZ3JvdW5kYnJlYWtpbmcsIGJ1dCBhbHdheXMgZ29vZCB0byBzZWUuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgZm9yIHRoZSBRTG9naWMgRmFzdExpblEgNHh4eHggQ29yZSBFdGhlcm5ldCBEcml2ZXIuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgKnJlYWNoYWJpbGl0eSouIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNvIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdpdGggUUxvZ2ljIGJlaW5nIGEgc3BlY2lmaWMgaGFyZHdhcmUgdmVuZG9yLCB0eXBpY2FsbHksIHlvdSdyZSBub3QgZ29pbmcgdG8gc2VlIHRoaXMgZHJpdmVyIGVuZ2FnZWQgaW4gUUVNVSB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRlZCBkZXZpY2UgcHJlc2VudCwgYW5kIEknbSBwcmV0dHkgc3VyZSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGlzIHBhcnRpY3VsYXIgUUxvZ2ljIGNhcmQuIFNvLCBteSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYW55IGVtdWxhdGlvbiBpbXBsZW1lbnRlZCB3aXRoaW4gUUVNVSB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcyBkcml2ZXIsIG9yIGlmIGl0IGlzIHB1cmVseSBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlci4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBwYXRjaCdzIGxvZ2ljLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdGhhdCBpdCdzIGEgUENJIGRldmljZSwgd2hpY2ggdGhlIGRldmljZSBpZGVudGlmaWVyIGltcGxpZXMuIEknbGwgdGhlbiBtb3ZlIG9uIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IG1pZ2h0IHNoZWQgc29tZSBsaWdodCBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTk6MjE6MjEuNTY3MTg5NjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MDUwNDA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUVERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxOToyMToyMS43NDYyNDgyMTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODA1MzU1NTkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSHVudCoqXG5cbk9rYXksIGJlZm9yZSBJIGdvIGRvd24gYSByYWJiaXQgaG9sZSwgbGV0J3MganVzdCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBsaWtlbHkgcmVzaWRlLiBNeSBndXQgc2F5cyBpdCdzIGdvaW5nIHRvIGJlIGluIG9uZSBvZiB0aGUgS2NvbmZpZyBmaWxlcyByZWxhdGVkIHRvIG5ldHdvcmsgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBvbmVzIHBlcnRhaW5pbmcgdG8gUUxvZ2ljLCBnaXZlbiB0aGUgY29udGV4dC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnYC4gSWYgaXQncyBub3QgdGhlcmUsIHRoZSBhcmNoaXRlY3R1cmUgbWlnaHQgaGF2ZSBldm9sdmVkLCBvciB0aGVyZSBtaWdodCBiZSBtb3JlIHNwZWNpZmljIHN1Yi1kcml2ZXJzIG5vdy4gSW4gdGhhdCBjYXNlLCBJIHNob3VsZCB0aGVuIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgYW55IGZpbmUtZ3JhaW5lZCBvcHRpb25zIHNwZWNpZmljIHRvIHRoYXQgcGFydGljdWxhciBkZXZpY2Ugb3IgdGVjaG5vbG9neSB3aXRoaW4gdGhlIFFMb2dpYyBlY29zeXN0ZW0uIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBzYXZlIG1lIGEgbG90IG9mIHdhc3RlZCB0aW1lIGlmIEkgY2FuIGp1c3Qgc3BvdCB0aGUgcmVsZXZhbnQgb3B0aW9uIGRlZmluZWQgZGlyZWN0bHkgaW4gdGhlIEtjb25maWcgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE5OjIxOjM5Ljc5OTgwNjA1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg1NzUwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBRRURFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc9ODk9Y29uZmlnIFFFRF9TUklPVlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc6OTk6Y29uZmlnIFFFREVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0xMDAtXFx0dHJpc3RhdGUgXFxcIlFMb2dpYyBRRUQgMjUvNDAvMTAwR2IgRXRoZXJuZXQgTklDXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxOToyMTo0Mi4wODU1NzgwOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjA0ODU3NTczMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgUUxvZ2ljIEV0aGVybmV0IE5JQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlci4gSXQncyBmb3IgdGhlIFwiUUxvZ2ljIFFFRCAyNS80MC8xMDBHYiBFdGhlcm5ldCBOSUMuXCIgUmlnaHQgYXdheSwgSSBzZWUgdGhlIHByb2JsZW0uIFRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlci4gV2UncmUgdGFsa2luZyBhYm91dCBhIHZlcnkgc3BlY2lmaWMgcGllY2Ugb2YgcGh5c2ljYWwgZXF1aXBtZW50IGhlcmUuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IG91ciBmdXp6aW5nIHNldHVwIOKAkyBzeXprYWxsZXIgcnVubmluZyBvbiBRRU1VLiBUaGF0J3Mgb3VyIHByaW1hcnkgZW52aXJvbm1lbnQuIEFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcywgY2FuIHdlICplbXVsYXRlKiB0aGF0IFFMb2dpYyBoYXJkd2FyZSBlZmZlY3RpdmVseSB3aXRoaW4gdGhhdCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhlcmUgc29tZSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgYXZhaWxhYmxlIHRoYXQgd291bGQgYWxsb3cgdXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZHJpdmVyIGFzIGlmIGl0IHdlcmUgdGhlIHJlYWwgdGhpbmc/IEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgYW5zd2VyIGlzIG5vLiBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhbnkgdXNhYmxlIGVtdWxhdGlvbi5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGVzZSBjb25zdHJhaW50cywgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkcml2ZXIgaXNuJ3QgcmVhbGlzdGljYWxseSBmdXp6YWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC4gV2UnbGwgYmUgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEl0J3MganVzdCBub3QgcHJhY3RpY2FsIHdpdGhvdXQgYSBzaWduaWZpY2FudCBpbnZlc3RtZW50IGluIGNyZWF0aW5nIG9yIGZpbmRpbmcgYSBnb29kIGVtdWxhdGlvbiBsYXllciBmb3IgdGhlIFFMb2dpYyBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYzOCwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDE5OjIxOjU4LjEzNDE1NzA4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFFMb2dpYyBRRUQgRXRoZXJuZXQgTklDIGRyaXZlciAocWVkZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIG5ldHdvcmsgY2FyZHMgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB1c2VkIGZvciBmdXp6aW5nLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUUxvZ2ljIFFFRCBFdGhlcm5ldCBOSUMgZHJpdmVyIChxZWRlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgbmV0d29yayBjYXJkcyBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHVzZWQgZm9yIGZ1enppbmcsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbvjvf[1] Phase: Running StartedAt: 2026-07-09 19:22:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbvjvf[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-09 19:22:23 +0000 UTC FinishedAt: 2026-07-09 19:22:31 +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,}