Name: series-workflowrhvn2 Phase: Failed StartedAt: 2026-09-07 17:34:45 +0000 UTC FinishedAt: 2026-09-07 17:38:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhvn2[0] Phase: Succeeded StartedAt: 2026-09-07 17:34:45 +0000 UTC FinishedAt: 2026-09-07 17:38:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhvn2[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 17:34:45 +0000 UTC FinishedAt: 2026-09-07 17:38:33 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk3NmNiMjk0YTljOGFhZjJhMDZkNjY4OWZkN2I0ZTBkOGU1NTgyMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDE3OjM4OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi40MWNjMzE0MDkyNWZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTQ4MjcsNyAmIzQzOzQ4MjcsNyBAQCBzdGF0aWMgYm9vbCBidGZfZGVkdXBfaWRlbnRpY2FsX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQsIF9fdTMyIGlkMSwgX191MzIgaWQyLFxuIFx0XHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdFx0YTEgPSBidGZfYXJyYXkodDEpO1xuLVx0XHRhMiA9IGJ0Zl9hcnJheSh0MSk7XG4mIzQzO1x0XHRhMiA9IGJ0Zl9hcnJheSh0Mik7XG4gXG4gXHRcdGlmIChhMS1cdTAwM2VpbmRleF90eXBlICE9IGEyLVx1MDAzZWluZGV4X3R5cGUgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhYnRmX2RlZHVwX2lkZW50aWNhbF90eXBlcyhkLCBhMS1cdTAwM2VpbmRleF90eXBlLCBhMi1cdTAwM2VpbmRleF90eXBlLCBkZXB0aCAtIDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4zZTg4OWMwYmVkNTM4XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY1xuQEAgLTAsMCAmIzQzOzEsNjggQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9idGYuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDtidGZfaGVscGVycy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoYm9vbCBpZGVudGljYWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnRmICpidGY7XG4mIzQzO1xuJiM0MztcdGJ0ZiA9IGJ0Zl9fbmV3X2VtcHR5KCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGJ0ZiwgXCYjMzQ7YnRmX25ld1wmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQ29tcGFyaW5nIHRoZSBmaXJzdCBmaWVsZHMgbWFwcyBhcnJheSBbM10gdG8gWzZdLiBUaGUgc2Vjb25kXG4mIzQzO1x0ICogZmllbGRzIHJldXNlIFszXSwgcmVxdWlyaW5nIGFuIGlkZW50aWNhbC10eXBlIGNoZWNrIG9mIFs2XS9bN10uXG4mIzQzO1x0ICogUGxhY2UgY29udGFpbmVyIFs1XSBiZWZvcmUgaXRzIGVsZW1lbnRzIFs4XS9bOV0gc28gdGhleSBzdGlsbFxuJiM0MztcdCAqIGhhdmUgZGlzdGluY3QgSURzIHdoZW4gdGhlaXIgZGVmaW5pdGlvbnMgYXJlIGNvbXBhcmVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghQVNTRVJUX0VRKGJ0Zl9fYWRkX2ludChidGYsIFwmIzM0O2ludFwmIzM0OywgNCwgQlRGX0lOVF9TSUdORUQpLCAxLCBcJiMzNDtpbnRcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgXCYjMzQ7Y29udGFpbmVyXCYjMzQ7LCA4KSwgMiwgXCYjMzQ7Y29udGFpbmVyMVwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwmIzM0O2ZpcnN0XCYjMzQ7LCAzLCAwLCAwKSwgXCYjMzQ7Zmlyc3QxXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCYjMzQ7c2Vjb25kXCYjMzQ7LCAzLCAzMiwgMCksIFwmIzM0O3NlY29uZDFcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA0LCAxKSwgMywgXCYjMzQ7YXJyYXkxXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwmIzM0O2VsZW1cJiMzNDssIDQpLCA0LCBcJiMzNDtlbGVtMVwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwmIzM0O3hcJiMzNDssIDEsIDAsIDApLCBcJiMzNDtlbGVtMV9maWVsZFwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcJiMzNDtjb250YWluZXJcJiMzNDssIDgpLCA1LCBcJiMzNDtjb250YWluZXIyXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCYjMzQ7Zmlyc3RcJiMzNDssIDYsIDAsIDApLCBcJiMzNDtmaXJzdDJcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcJiMzNDtzZWNvbmRcJiMzNDssIDcsIDMyLCAwKSwgXCYjMzQ7c2Vjb25kMlwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDgsIDEpLCA2LCBcJiMzNDthcnJheTJcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA5LCAxKSwgNywgXCYjMzQ7YXJyYXkzXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwmIzM0O2VsZW1cJiMzNDssIDQpLCA4LCBcJiMzNDtlbGVtMlwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwmIzM0O3hcJiMzNDssIDEsIDAsIDApLCBcJiMzNDtlbGVtMl9maWVsZFwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcJiMzNDtlbGVtXCYjMzQ7LCA0KSwgOSwgXCYjMzQ7ZWxlbTNcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBpZGVudGljYWwgPyBcJiMzNDt4XCYjMzQ7IDogXCYjMzQ7eVwmIzM0OywgMSwgMCwgMCksIFwmIzM0O2VsZW0zX2ZpZWxkXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhidGZfX2RlZHVwKGJ0ZiwgTlVMTCksIFwmIzM0O2RlZHVwXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHQvKiBJZGVudGljYWwgZWxlbWVudHMgbGVhdmUgb25seSB0aGUgZmlyc3QgZm91ciBleHBlY3RlZCB0eXBlcy4gKi9cbiYjNDM7XHRidGZfdmFsaWRhdGVfcmF3KGJ0ZiwgaWRlbnRpY2FsID8gNCA6IDcsIChjb25zdCBjaGFyICpbXSkge1xuJiM0MztcdFx0XCYjMzQ7WzFdIElOVCAmIzM5O2ludCYjMzk7IHNpemU9NCBiaXRzX29mZnNldD0wIG5yX2JpdHM9MzIgZW5jb2Rpbmc9U0lHTkVEXCYjMzQ7LFxuJiM0MztcdFx0XCYjMzQ7WzJdIFNUUlVDVCAmIzM5O2NvbnRhaW5lciYjMzk7IHNpemU9OCB2bGVuPTJcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7XFx0JiMzOTtzZWNvbmQmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MzJcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbM10gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTQgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbNF0gU1RSVUNUICYjMzk7ZWxlbSYjMzk7IHNpemU9NCB2bGVuPTFcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7eCYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXCYjMzQ7LFxuJiM0MztcdFx0XCYjMzQ7WzVdIFNUUlVDVCAmIzM5O2NvbnRhaW5lciYjMzk7IHNpemU9OCB2bGVuPTJcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7XFx0JiMzOTtzZWNvbmQmIzM5OyB0eXBlX2lkPTYgYml0c19vZmZzZXQ9MzJcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbNl0gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTcgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbN10gU1RSVUNUICYjMzk7ZWxlbSYjMzk7IHNpemU9NCB2bGVuPTFcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7eSYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXCYjMzQ7LFxuJiM0MztcdH0pO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGJ0Zl9fZnJlZShidGYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHRlc3RfYnRmX2RlZHVwKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDthcnJheV9kaWZmZXJlbnRfZWxlbWVudF90eXBlc1wmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoZmFsc2UpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2FycmF5X2lkZW50aWNhbF9lbGVtZW50X3R5cGVzXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfYXJyYXlfZWxlbWVudF90eXBlcyh0cnVlKTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgdXNlcnNwYWNlIGxpYmJwZiAodG9vbHMvbGliL2JwZi9idGYuYykgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmMpLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBMaW51eCBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5NzZjYjI5NGE5YzhhYWYyYTA2ZDY2ODlmZDdiNGUwZDhlNTU4MjM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxNzozODowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jCmluZGV4IDg0MTdkZTkyZDAyODIuLjQxY2MzMTQwOTI1ZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuYwpAQCAtNDgyNyw3ICYjNDM7NDgyNyw3IEBAIHN0YXRpYyBib29sIGJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCwgX191MzIgaWQxLCBfX3UzMiBpZDIsCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJYTEgPSBidGZfYXJyYXkodDEpOwotCQlhMiA9IGJ0Zl9hcnJheSh0MSk7CiYjNDM7CQlhMiA9IGJ0Zl9hcnJheSh0Mik7CiAKIAkJaWYgKGExLSZndDtpbmRleF90eXBlICE9IGEyLSZndDtpbmRleF90eXBlICZhbXA7JmFtcDsKIAkJICAgICFidGZfZGVkdXBfaWRlbnRpY2FsX3R5cGVzKGQsIGExLSZndDtpbmRleF90eXBlLCBhMi0mZ3Q7aW5kZXhfdHlwZSwgZGVwdGggLSAxKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uM2U4ODljMGJlZDUzOAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jCkBAIC0wLDAgJiM0MzsxLDY4IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjaW5jbHVkZSAmbHQ7dGVzdF9wcm9ncy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnRmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDtidGZfaGVscGVycy5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoYm9vbCBpZGVudGljYWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnRmICpidGY7CiYjNDM7CiYjNDM7CWJ0ZiA9IGJ0Zl9fbmV3X2VtcHR5KCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihidGYsICYjMzQ7YnRmX25ldyYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQ29tcGFyaW5nIHRoZSBmaXJzdCBmaWVsZHMgbWFwcyBhcnJheSBbM10gdG8gWzZdLiBUaGUgc2Vjb25kCiYjNDM7CSAqIGZpZWxkcyByZXVzZSBbM10sIHJlcXVpcmluZyBhbiBpZGVudGljYWwtdHlwZSBjaGVjayBvZiBbNl0vWzddLgomIzQzOwkgKiBQbGFjZSBjb250YWluZXIgWzVdIGJlZm9yZSBpdHMgZWxlbWVudHMgWzhdL1s5XSBzbyB0aGV5IHN0aWxsCiYjNDM7CSAqIGhhdmUgZGlzdGluY3QgSURzIHdoZW4gdGhlaXIgZGVmaW5pdGlvbnMgYXJlIGNvbXBhcmVkLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFBU1NFUlRfRVEoYnRmX19hZGRfaW50KGJ0ZiwgJiMzNDtpbnQmIzM0OywgNCwgQlRGX0lOVF9TSUdORUQpLCAxLCAmIzM0O2ludCYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCAmIzM0O2NvbnRhaW5lciYjMzQ7LCA4KSwgMiwgJiMzNDtjb250YWluZXIxJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgJiMzNDtmaXJzdCYjMzQ7LCAzLCAwLCAwKSwgJiMzNDtmaXJzdDEmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCAmIzM0O3NlY29uZCYjMzQ7LCAzLCAzMiwgMCksICYjMzQ7c2Vjb25kMSYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDQsIDEpLCAzLCAmIzM0O2FycmF5MSYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCAmIzM0O2VsZW0mIzM0OywgNCksIDQsICYjMzQ7ZWxlbTEmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCAmIzM0O3gmIzM0OywgMSwgMCwgMCksICYjMzQ7ZWxlbTFfZmllbGQmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgJiMzNDtjb250YWluZXImIzM0OywgOCksIDUsICYjMzQ7Y29udGFpbmVyMiYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsICYjMzQ7Zmlyc3QmIzM0OywgNiwgMCwgMCksICYjMzQ7Zmlyc3QyJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgJiMzNDtzZWNvbmQmIzM0OywgNywgMzIsIDApLCAmIzM0O3NlY29uZDImIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA4LCAxKSwgNiwgJiMzNDthcnJheTImIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA5LCAxKSwgNywgJiMzNDthcnJheTMmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgJiMzNDtlbGVtJiMzNDssIDQpLCA4LCAmIzM0O2VsZW0yJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgJiMzNDt4JiMzNDssIDEsIDAsIDApLCAmIzM0O2VsZW0yX2ZpZWxkJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsICYjMzQ7ZWxlbSYjMzQ7LCA0KSwgOSwgJiMzNDtlbGVtMyYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIGlkZW50aWNhbCA/ICYjMzQ7eCYjMzQ7IDogJiMzNDt5JiMzNDssIDEsIDAsIDApLCAmIzM0O2VsZW0zX2ZpZWxkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWlmICghQVNTRVJUX09LKGJ0Zl9fZGVkdXAoYnRmLCBOVUxMKSwgJiMzNDtkZWR1cCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwkvKiBJZGVudGljYWwgZWxlbWVudHMgbGVhdmUgb25seSB0aGUgZmlyc3QgZm91ciBleHBlY3RlZCB0eXBlcy4gKi8KJiM0MzsJYnRmX3ZhbGlkYXRlX3JhdyhidGYsIGlkZW50aWNhbCA/IDQgOiA3LCAoY29uc3QgY2hhciAqW10pIHsKJiM0MzsJCSYjMzQ7WzFdIElOVCAmIzM5O2ludCYjMzk7IHNpemU9NCBiaXRzX29mZnNldD0wIG5yX2JpdHM9MzIgZW5jb2Rpbmc9U0lHTkVEJiMzNDssCiYjNDM7CQkmIzM0O1syXSBTVFJVQ1QgJiMzOTtjb250YWluZXImIzM5OyBzaXplPTggdmxlbj0yXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxuJiMzNDsKJiM0MzsJCSYjMzQ7XHQmIzM5O3NlY29uZCYjMzk7IHR5cGVfaWQ9MyBiaXRzX29mZnNldD0zMiYjMzQ7LAomIzQzOwkJJiMzNDtbM10gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTQgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTEmIzM0OywKJiM0MzsJCSYjMzQ7WzRdIFNUUlVDVCAmIzM5O2VsZW0mIzM5OyBzaXplPTQgdmxlbj0xXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7eCYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wJiMzNDssCiYjNDM7CQkmIzM0O1s1XSBTVFJVQ1QgJiMzOTtjb250YWluZXImIzM5OyBzaXplPTggdmxlbj0yXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxuJiMzNDsKJiM0MzsJCSYjMzQ7XHQmIzM5O3NlY29uZCYjMzk7IHR5cGVfaWQ9NiBiaXRzX29mZnNldD0zMiYjMzQ7LAomIzQzOwkJJiMzNDtbNl0gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTcgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTEmIzM0OywKJiM0MzsJCSYjMzQ7WzddIFNUUlVDVCAmIzM5O2VsZW0mIzM5OyBzaXplPTQgdmxlbj0xXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7eSYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wJiMzNDssCiYjNDM7CX0pOwomIzQzOwomIzQzO291dDoKJiM0MzsJYnRmX19mcmVlKGJ0Zik7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgdGVzdF9idGZfZGVkdXAodm9pZCkKJiM0Mzt7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7YXJyYXlfZGlmZmVyZW50X2VsZW1lbnRfdHlwZXMmIzM0OykpCiYjNDM7CQl0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoZmFsc2UpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2FycmF5X2lkZW50aWNhbF9lbGVtZW50X3R5cGVzJiMzNDspKQomIzQzOwkJdGVzdF9hcnJheV9lbGVtZW50X3R5cGVzKHRydWUpOwomIzQzO30KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwNgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaCBmb3IgV29ydGhGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGB0b29scy9saWIvYnBmL2J0Zi5jYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhvc2UgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBydWxlcywgZXNwZWNpYWxseSBzZWN0aW9uIDIuIFdlJiMzOTtyZSBsb29raW5nIGZvciBuZWdhdGl2ZSBjcml0ZXJpYSBoZXJlIOKAkyBzY2VuYXJpb3Mgd2hlcmUgd2UgKmRvbiYjMzk7dCogbmVlZCBmdXp6aW5nLgoKTXkgZ3V0IGZlZWxpbmcgaXMgdGhlc2UgYXJlIGdvaW5nIHRvIGJlIHVzZXItc3BhY2UgbW9kaWZpY2F0aW9ucy4gQm90aCBmaWxlcyByZXNpZGUgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSDigJMgYHRvb2xzL2xpYi9icGYvYnRmLmNgIHBvaW50cyB0byBsaWJicGYsIGFuZCB0aGUgb3RoZXIgdG8gc2VsZnRlc3RzLiBTbywgdGhlIHF1ZXN0aW9uIGlzLCBhcmUgZWl0aGVyIG9mIHRoZXNlIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXM/IFRoYXQmIzM5O3MgdGhlIGtleS4KCkkmIzM5O20gcHJldHR5IHN1cmUgdGhlIGJ0ZiBkZWR1cGxpY2F0aW9uIGFuZCB0aGUgbGliYnBmIGNvZGUgYXJlIHB1cmVseSB1c2Vyc3BhY2UuIFRoZSBCVEYgZGVkdXBsaWNhdGlvbiBpcyBhIHVzZXJzcGFjZSB0b29sIHdpdGhpbiBsaWJicGYgYW5kIHVzZWQgYnkgdG9vbHMgbGlrZSBicGZ0b29sIGFuZCBvdGhlciB1c2Vyc3BhY2UgcHJvZ3JhbXMuIEluLWtlcm5lbCBCVEYgKHdoaWNoIEkga25vdyBpcyByZWxldmFudCBmb3Igb3RoZXIgdGhpbmdzKSBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2J0Zi5jYC4gQnV0IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSYjMzk7cyBubyBkZXBlbmRlbmN5IG9yIGRpcmVjdCBpbnRlZ3JhdGlvbiBvZiB0aGlzIGB0b29scy9gIGNvZGUgaW50byB0aGUgY29yZSBrZXJuZWwgb3IgYSBtb2R1bGUuIERvdWJsZS1jaGVja2luZyBpcyBhbHdheXMgd2lzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9kZWR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjUKCQkJCQkJCW91dHB1dDogOTMKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm8gS2VybmVsIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlc2UgdHdvIGZpbGVzLCBgdG9vbHMvbGliL2JwZi9idGYuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY2AsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSYjMzk7cmUgc3RyaWN0bHkgaW4gdXNlcnNwYWNlLiBgbGliYnBmYCBhbmQgdGhlIGJwZiBzZWxmdGVzdHMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIG5vdCBnb2luZyB0byB0b3VjaCB0aGUga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBvZiB0aGUgY29tcGlsZWQga2VybmVsIG1vZHVsZXMuCgpMb29raW5nIGJhY2sgYXQgdGhhdCBoYW5keSBTZWN0aW9uIDIsIHRoZSBjcml0ZXJpYSBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgc2F5cyBJIGNhbiBvbmx5IHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiAqYWxsKiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIGNhdGVnb3JpZXMgbGlrZSBub24ta2VybmVsLCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLiBBbmQgd291bGRuJiMzOTt0IHlvdSBrbm93IGl0LCB0aGVzZSBmaWxlcyBhcmUgYSBwZXJmZWN0IGZpdDogdGhleSYjMzk7cmUgdXNlcnNwYWNlIGNvZGUsIHNlbGYtdGVzdHMuCgpTbywgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBEZWZpbml0ZWx5IGBmYWxzZWAuIE5vIGtlcm5lbCByaXNrIGhlcmUuCiogICBgRm9jdXNTeW1ib2xzYDogRW1wdHkuIE5vdGhpbmcgdG8gdHJhY2suCiogICBgRW5hYmxlQ29uZmlnc2A6IE5vdGhpbmcgbmVlZGVkLgoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGRlYWxzIHdpdGggdXNlcnNwYWNlIGxpYmJwZiBhbmQgYWRkcyBhIHNlbGZ0ZXN0LiBObyBrZXJuZWwtbGV2ZWwgY29kZSBpcyBpbXBhY3RlZC4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MDcuNjcxNDIxODYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjAxNTY0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHVzZXJzcGFjZSBsaWJicGYgKHRvb2xzL2xpYi9icGYvYnRmLmMpIGFuZCBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgTGludXgga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzozODowNy42NzE0MjYyNzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzI0NDQ5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NzZjYjI5NGE5YzhhYWYyYTA2ZDY2ODlmZDdiNGUwZDhlNTU4MjM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMTc6Mzg6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9idGYuYyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi40MWNjMzE0MDkyNWZiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG4rKysgYi90b29scy9saWIvYnBmL2J0Zi5jXFxuQEAgLTQ4MjcsNyArNDgyNyw3IEBAIHN0YXRpYyBib29sIGJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCwgX191MzIgaWQxLCBfX3UzMiBpZDIsXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdFxcdGExID0gYnRmX2FycmF5KHQxKTtcXG4tXFx0XFx0YTIgPSBidGZfYXJyYXkodDEpO1xcbitcXHRcXHRhMiA9IGJ0Zl9hcnJheSh0Mik7XFxuIFxcbiBcXHRcXHRpZiAoYTEtXFx1MDAzZWluZGV4X3R5cGUgIT0gYTItXFx1MDAzZWluZGV4X3R5cGUgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgICFidGZfZGVkdXBfaWRlbnRpY2FsX3R5cGVzKGQsIGExLVxcdTAwM2VpbmRleF90eXBlLCBhMi1cXHUwMDNlaW5kZXhfdHlwZSwgZGVwdGggLSAxKSlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uM2U4ODljMGJlZDUzOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY1xcbkBAIC0wLDAgKzEsNjggQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9idGYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJ0Zl9oZWxwZXJzLmhcXFwiXFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoYm9vbCBpZGVudGljYWwpXFxuK3tcXG4rXFx0c3RydWN0IGJ0ZiAqYnRmO1xcbitcXG4rXFx0YnRmID0gYnRmX19uZXdfZW1wdHkoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ0ZiwgXFxcImJ0Zl9uZXdcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0LypcXG4rXFx0ICogQ29tcGFyaW5nIHRoZSBmaXJzdCBmaWVsZHMgbWFwcyBhcnJheSBbM10gdG8gWzZdLiBUaGUgc2Vjb25kXFxuK1xcdCAqIGZpZWxkcyByZXVzZSBbM10sIHJlcXVpcmluZyBhbiBpZGVudGljYWwtdHlwZSBjaGVjayBvZiBbNl0vWzddLlxcbitcXHQgKiBQbGFjZSBjb250YWluZXIgWzVdIGJlZm9yZSBpdHMgZWxlbWVudHMgWzhdL1s5XSBzbyB0aGV5IHN0aWxsXFxuK1xcdCAqIGhhdmUgZGlzdGluY3QgSURzIHdoZW4gdGhlaXIgZGVmaW5pdGlvbnMgYXJlIGNvbXBhcmVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFBU1NFUlRfRVEoYnRmX19hZGRfaW50KGJ0ZiwgXFxcImludFxcXCIsIDQsIEJURl9JTlRfU0lHTkVEKSwgMSwgXFxcImludFxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFxcXCJjb250YWluZXJcXFwiLCA4KSwgMiwgXFxcImNvbnRhaW5lcjFcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFxcXCJmaXJzdFxcXCIsIDMsIDAsIDApLCBcXFwiZmlyc3QxXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcXFwic2Vjb25kXFxcIiwgMywgMzIsIDApLCBcXFwic2Vjb25kMVxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX2FycmF5KGJ0ZiwgMSwgNCwgMSksIDMsIFxcXCJhcnJheTFcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcXFwiZWxlbVxcXCIsIDQpLCA0LCBcXFwiZWxlbTFcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFxcXCJ4XFxcIiwgMSwgMCwgMCksIFxcXCJlbGVtMV9maWVsZFxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFxcXCJjb250YWluZXJcXFwiLCA4KSwgNSwgXFxcImNvbnRhaW5lcjJcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFxcXCJmaXJzdFxcXCIsIDYsIDAsIDApLCBcXFwiZmlyc3QyXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcXFwic2Vjb25kXFxcIiwgNywgMzIsIDApLCBcXFwic2Vjb25kMlxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX2FycmF5KGJ0ZiwgMSwgOCwgMSksIDYsIFxcXCJhcnJheTJcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDksIDEpLCA3LCBcXFwiYXJyYXkzXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgXFxcImVsZW1cXFwiLCA0KSwgOCwgXFxcImVsZW0yXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcXFwieFxcXCIsIDEsIDAsIDApLCBcXFwiZWxlbTJfZmllbGRcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcXFwiZWxlbVxcXCIsIDQpLCA5LCBcXFwiZWxlbTNcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIGlkZW50aWNhbCA/IFxcXCJ4XFxcIiA6IFxcXCJ5XFxcIiwgMSwgMCwgMCksIFxcXCJlbGVtM19maWVsZFxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdGlmICghQVNTRVJUX09LKGJ0Zl9fZGVkdXAoYnRmLCBOVUxMKSwgXFxcImRlZHVwXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0LyogSWRlbnRpY2FsIGVsZW1lbnRzIGxlYXZlIG9ubHkgdGhlIGZpcnN0IGZvdXIgZXhwZWN0ZWQgdHlwZXMuICovXFxuK1xcdGJ0Zl92YWxpZGF0ZV9yYXcoYnRmLCBpZGVudGljYWwgPyA0IDogNywgKGNvbnN0IGNoYXIgKltdKSB7XFxuK1xcdFxcdFxcXCJbMV0gSU5UICdpbnQnIHNpemU9NCBiaXRzX29mZnNldD0wIG5yX2JpdHM9MzIgZW5jb2Rpbmc9U0lHTkVEXFxcIixcXG4rXFx0XFx0XFxcIlsyXSBTVFJVQ1QgJ2NvbnRhaW5lcicgc2l6ZT04IHZsZW49MlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHQnZmlyc3QnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0wXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdCdzZWNvbmQnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0zMlxcXCIsXFxuK1xcdFxcdFxcXCJbM10gQVJSQVkgJyhhbm9uKScgdHlwZV9pZD00IGluZGV4X3R5cGVfaWQ9MSBucl9lbGVtcz0xXFxcIixcXG4rXFx0XFx0XFxcIls0XSBTVFJVQ1QgJ2VsZW0nIHNpemU9NCB2bGVuPTFcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0J3gnIHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXFxcIixcXG4rXFx0XFx0XFxcIls1XSBTVFJVQ1QgJ2NvbnRhaW5lcicgc2l6ZT04IHZsZW49MlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHQnZmlyc3QnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0wXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdCdzZWNvbmQnIHR5cGVfaWQ9NiBiaXRzX29mZnNldD0zMlxcXCIsXFxuK1xcdFxcdFxcXCJbNl0gQVJSQVkgJyhhbm9uKScgdHlwZV9pZD03IGluZGV4X3R5cGVfaWQ9MSBucl9lbGVtcz0xXFxcIixcXG4rXFx0XFx0XFxcIls3XSBTVFJVQ1QgJ2VsZW0nIHNpemU9NCB2bGVuPTFcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0J3knIHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXFxcIixcXG4rXFx0fSk7XFxuK1xcbitvdXQ6XFxuK1xcdGJ0Zl9fZnJlZShidGYpO1xcbit9XFxuK1xcbit2b2lkIHRlc3RfYnRmX2RlZHVwKHZvaWQpXFxuK3tcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcImFycmF5X2RpZmZlcmVudF9lbGVtZW50X3R5cGVzXFxcIikpXFxuK1xcdFxcdHRlc3RfYXJyYXlfZWxlbWVudF90eXBlcyhmYWxzZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJhcnJheV9pZGVudGljYWxfZWxlbWVudF90eXBlc1xcXCIpKVxcbitcXHRcXHR0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXModHJ1ZSk7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MDguOTQ0NTU4ODk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMzY4NzAwNTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NzZjYjI5NGE5YzhhYWYyYTA2ZDY2ODlmZDdiNGUwZDhlNTU4MjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzozODowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi40MWNjMzE0MDkyNWZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuKysrIGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTQ4MjcsNyArNDgyNyw3IEBAIHN0YXRpYyBib29sIGJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCwgX191MzIgaWQxLCBfX3UzMiBpZDIsXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0XHRhMSA9IGJ0Zl9hcnJheSh0MSk7XG4tXHRcdGEyID0gYnRmX2FycmF5KHQxKTtcbitcdFx0YTIgPSBidGZfYXJyYXkodDIpO1xuIFxuIFx0XHRpZiAoYTEtXHUwMDNlaW5kZXhfdHlwZSAhPSBhMi1cdTAwM2VpbmRleF90eXBlIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIWJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoZCwgYTEtXHUwMDNlaW5kZXhfdHlwZSwgYTItXHUwMDNlaW5kZXhfdHlwZSwgZGVwdGggLSAxKSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uM2U4ODljMGJlZDUzOFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmNcbkBAIC0wLDAgKzEsNjggQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9idGYuaFx1MDAzZVxuKyNpbmNsdWRlIFwiYnRmX2hlbHBlcnMuaFwiXG4rXG4rc3RhdGljIHZvaWQgdGVzdF9hcnJheV9lbGVtZW50X3R5cGVzKGJvb2wgaWRlbnRpY2FsKVxuK3tcbitcdHN0cnVjdCBidGYgKmJ0ZjtcbitcbitcdGJ0ZiA9IGJ0Zl9fbmV3X2VtcHR5KCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoYnRmLCBcImJ0Zl9uZXdcIikpXG4rXHRcdHJldHVybjtcbitcbitcdC8qXG4rXHQgKiBDb21wYXJpbmcgdGhlIGZpcnN0IGZpZWxkcyBtYXBzIGFycmF5IFszXSB0byBbNl0uIFRoZSBzZWNvbmRcbitcdCAqIGZpZWxkcyByZXVzZSBbM10sIHJlcXVpcmluZyBhbiBpZGVudGljYWwtdHlwZSBjaGVjayBvZiBbNl0vWzddLlxuK1x0ICogUGxhY2UgY29udGFpbmVyIFs1XSBiZWZvcmUgaXRzIGVsZW1lbnRzIFs4XS9bOV0gc28gdGhleSBzdGlsbFxuK1x0ICogaGF2ZSBkaXN0aW5jdCBJRHMgd2hlbiB0aGVpciBkZWZpbml0aW9ucyBhcmUgY29tcGFyZWQuXG4rXHQgKi9cbitcdGlmICghQVNTRVJUX0VRKGJ0Zl9fYWRkX2ludChidGYsIFwiaW50XCIsIDQsIEJURl9JTlRfU0lHTkVEKSwgMSwgXCJpbnRcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwiY29udGFpbmVyXCIsIDgpLCAyLCBcImNvbnRhaW5lcjFcIikgfHxcbitcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCJmaXJzdFwiLCAzLCAwLCAwKSwgXCJmaXJzdDFcIikgfHxcbitcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCJzZWNvbmRcIiwgMywgMzIsIDApLCBcInNlY29uZDFcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX2FycmF5KGJ0ZiwgMSwgNCwgMSksIDMsIFwiYXJyYXkxXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcImVsZW1cIiwgNCksIDQsIFwiZWxlbTFcIikgfHxcbitcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCJ4XCIsIDEsIDAsIDApLCBcImVsZW0xX2ZpZWxkXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcImNvbnRhaW5lclwiLCA4KSwgNSwgXCJjb250YWluZXIyXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwiZmlyc3RcIiwgNiwgMCwgMCksIFwiZmlyc3QyXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwic2Vjb25kXCIsIDcsIDMyLCAwKSwgXCJzZWNvbmQyXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDgsIDEpLCA2LCBcImFycmF5MlwiKSB8fFxuK1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA5LCAxKSwgNywgXCJhcnJheTNcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwiZWxlbVwiLCA0KSwgOCwgXCJlbGVtMlwiKSB8fFxuK1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcInhcIiwgMSwgMCwgMCksIFwiZWxlbTJfZmllbGRcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwiZWxlbVwiLCA0KSwgOSwgXCJlbGVtM1wiKSB8fFxuK1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBpZGVudGljYWwgPyBcInhcIiA6IFwieVwiLCAxLCAwLCAwKSwgXCJlbGVtM19maWVsZFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRpZiAoIUFTU0VSVF9PSyhidGZfX2RlZHVwKGJ0ZiwgTlVMTCksIFwiZGVkdXBcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0LyogSWRlbnRpY2FsIGVsZW1lbnRzIGxlYXZlIG9ubHkgdGhlIGZpcnN0IGZvdXIgZXhwZWN0ZWQgdHlwZXMuICovXG4rXHRidGZfdmFsaWRhdGVfcmF3KGJ0ZiwgaWRlbnRpY2FsID8gNCA6IDcsIChjb25zdCBjaGFyICpbXSkge1xuK1x0XHRcIlsxXSBJTlQgJ2ludCcgc2l6ZT00IGJpdHNfb2Zmc2V0PTAgbnJfYml0cz0zMiBlbmNvZGluZz1TSUdORURcIixcbitcdFx0XCJbMl0gU1RSVUNUICdjb250YWluZXInIHNpemU9OCB2bGVuPTJcXG5cIlxuK1x0XHRcIlxcdCdmaXJzdCcgdHlwZV9pZD0zIGJpdHNfb2Zmc2V0PTBcXG5cIlxuK1x0XHRcIlxcdCdzZWNvbmQnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0zMlwiLFxuK1x0XHRcIlszXSBBUlJBWSAnKGFub24pJyB0eXBlX2lkPTQgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcIixcbitcdFx0XCJbNF0gU1RSVUNUICdlbGVtJyBzaXplPTQgdmxlbj0xXFxuXCJcbitcdFx0XCJcXHQneCcgdHlwZV9pZD0xIGJpdHNfb2Zmc2V0PTBcIixcbitcdFx0XCJbNV0gU1RSVUNUICdjb250YWluZXInIHNpemU9OCB2bGVuPTJcXG5cIlxuK1x0XHRcIlxcdCdmaXJzdCcgdHlwZV9pZD0zIGJpdHNfb2Zmc2V0PTBcXG5cIlxuK1x0XHRcIlxcdCdzZWNvbmQnIHR5cGVfaWQ9NiBiaXRzX29mZnNldD0zMlwiLFxuK1x0XHRcIls2XSBBUlJBWSAnKGFub24pJyB0eXBlX2lkPTcgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcIixcbitcdFx0XCJbN10gU1RSVUNUICdlbGVtJyBzaXplPTQgdmxlbj0xXFxuXCJcbitcdFx0XCJcXHQneScgdHlwZV9pZD0xIGJpdHNfb2Zmc2V0PTBcIixcbitcdH0pO1xuK1xuK291dDpcbitcdGJ0Zl9fZnJlZShidGYpO1xuK31cbitcbit2b2lkIHRlc3RfYnRmX2RlZHVwKHZvaWQpXG4re1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJhcnJheV9kaWZmZXJlbnRfZWxlbWVudF90eXBlc1wiKSlcbitcdFx0dGVzdF9hcnJheV9lbGVtZW50X3R5cGVzKGZhbHNlKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwiYXJyYXlfaWRlbnRpY2FsX2VsZW1lbnRfdHlwZXNcIikpXG4rXHRcdHRlc3RfYXJyYXlfZWxlbWVudF90eXBlcyh0cnVlKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzozODowOC45NDQ1NjAzMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MTk1MDQ5MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciBXb3J0aEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEkgc2VlIGl0J3MgdG91Y2hpbmcgYHRvb2xzL2xpYi9icGYvYnRmLmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmNgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgcnVsZXMsIGVzcGVjaWFsbHkgc2VjdGlvbiAyLiBXZSdyZSBsb29raW5nIGZvciBuZWdhdGl2ZSBjcml0ZXJpYSBoZXJlIOKAkyBzY2VuYXJpb3Mgd2hlcmUgd2UgKmRvbid0KiBuZWVkIGZ1enppbmcuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoZXNlIGFyZSBnb2luZyB0byBiZSB1c2VyLXNwYWNlIG1vZGlmaWNhdGlvbnMuIEJvdGggZmlsZXMgcmVzaWRlIGluIHRoZSBgdG9vbHMvYCBkaXJlY3Rvcnkg4oCTIGB0b29scy9saWIvYnBmL2J0Zi5jYCBwb2ludHMgdG8gbGliYnBmLCBhbmQgdGhlIG90aGVyIHRvIHNlbGZ0ZXN0cy4gU28sIHRoZSBxdWVzdGlvbiBpcywgYXJlIGVpdGhlciBvZiB0aGVzZSBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzPyBUaGF0J3MgdGhlIGtleS5cblxuSSdtIHByZXR0eSBzdXJlIHRoZSBidGYgZGVkdXBsaWNhdGlvbiBhbmQgdGhlIGxpYmJwZiBjb2RlIGFyZSBwdXJlbHkgdXNlcnNwYWNlLiBUaGUgQlRGIGRlZHVwbGljYXRpb24gaXMgYSB1c2Vyc3BhY2UgdG9vbCB3aXRoaW4gbGliYnBmIGFuZCB1c2VkIGJ5IHRvb2xzIGxpa2UgYnBmdG9vbCBhbmQgb3RoZXIgdXNlcnNwYWNlIHByb2dyYW1zLiBJbi1rZXJuZWwgQlRGICh3aGljaCBJIGtub3cgaXMgcmVsZXZhbnQgZm9yIG90aGVyIHRoaW5ncykgaXMgbG9jYXRlZCBpbiBga2VybmVsL2JwZi9idGYuY2AuIEJ1dCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSdzIG5vIGRlcGVuZGVuY3kgb3IgZGlyZWN0IGludGVncmF0aW9uIG9mIHRoaXMgYHRvb2xzL2AgY29kZSBpbnRvIHRoZSBjb3JlIGtlcm5lbCBvciBhIG1vZHVsZS4gRG91YmxlLWNoZWNraW5nIGlzIGFsd2F5cyB3aXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MTYuMTM5NjExODI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjA3MzUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfZGVkdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MTYuMTg5MjI3NTExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQ0MjMxNTgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBObyBLZXJuZWwgSW1wYWN0KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhlc2UgdHdvIGZpbGVzLCBgdG9vbHMvbGliL2JwZi9idGYuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY2AsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIHN0cmljdGx5IGluIHVzZXJzcGFjZS4gYGxpYmJwZmAgYW5kIHRoZSBicGYgc2VsZnRlc3RzLCB3aGljaCBtZWFucyB0aGV5J3JlIG5vdCBnb2luZyB0byB0b3VjaCB0aGUga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBvZiB0aGUgY29tcGlsZWQga2VybmVsIG1vZHVsZXMuXG5cbkxvb2tpbmcgYmFjayBhdCB0aGF0IGhhbmR5IFNlY3Rpb24gMiwgdGhlIGNyaXRlcmlhIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBzYXlzIEkgY2FuIG9ubHkgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmICphbGwqIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2F0ZWdvcmllcyBsaWtlIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuIEFuZCB3b3VsZG4ndCB5b3Uga25vdyBpdCwgdGhlc2UgZmlsZXMgYXJlIGEgcGVyZmVjdCBmaXQ6IHRoZXkncmUgdXNlcnNwYWNlIGNvZGUsIHNlbGYtdGVzdHMuXG5cblNvLCBoZXJlJ3MgdGhlIGJyZWFrZG93bjpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBEZWZpbml0ZWx5IGBmYWxzZWAuIE5vIGtlcm5lbCByaXNrIGhlcmUuXG4qICAgYEZvY3VzU3ltYm9sc2A6IEVtcHR5LiBOb3RoaW5nIHRvIHRyYWNrLlxuKiAgIGBFbmFibGVDb25maWdzYDogTm90aGluZyBuZWVkZWQuXG4qICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGRlYWxzIHdpdGggdXNlcnNwYWNlIGxpYmJwZiBhbmQgYWRkcyBhIHNlbGZ0ZXN0LiBObyBrZXJuZWwtbGV2ZWwgY29kZSBpcyBpbXBhY3RlZC5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMjUsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MjIuNjMxNTQ0OTEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHVzZXJzcGFjZSBsaWJicGYgKHRvb2xzL2xpYi9icGYvYnRmLmMpIGFuZCBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgTGludXgga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHVzZXJzcGFjZSBsaWJicGYgKHRvb2xzL2xpYi9icGYvYnRmLmMpIGFuZCBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgTGludXgga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzozODoyMi42MzE1NjY1NDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrhvn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 17:34:45 +0000 UTC FinishedAt: 2026-09-07 17:38: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+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk3NmNiMjk0YTljOGFhZjJhMDZkNjY4OWZkN2I0ZTBkOGU1NTgyMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDE3OjM4OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi40MWNjMzE0MDkyNWZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTQ4MjcsNyAmIzQzOzQ4MjcsNyBAQCBzdGF0aWMgYm9vbCBidGZfZGVkdXBfaWRlbnRpY2FsX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQsIF9fdTMyIGlkMSwgX191MzIgaWQyLFxuIFx0XHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdFx0YTEgPSBidGZfYXJyYXkodDEpO1xuLVx0XHRhMiA9IGJ0Zl9hcnJheSh0MSk7XG4mIzQzO1x0XHRhMiA9IGJ0Zl9hcnJheSh0Mik7XG4gXG4gXHRcdGlmIChhMS1cdTAwM2VpbmRleF90eXBlICE9IGEyLVx1MDAzZWluZGV4X3R5cGUgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhYnRmX2RlZHVwX2lkZW50aWNhbF90eXBlcyhkLCBhMS1cdTAwM2VpbmRleF90eXBlLCBhMi1cdTAwM2VpbmRleF90eXBlLCBkZXB0aCAtIDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4zZTg4OWMwYmVkNTM4XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY1xuQEAgLTAsMCAmIzQzOzEsNjggQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9idGYuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDtidGZfaGVscGVycy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoYm9vbCBpZGVudGljYWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnRmICpidGY7XG4mIzQzO1xuJiM0MztcdGJ0ZiA9IGJ0Zl9fbmV3X2VtcHR5KCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGJ0ZiwgXCYjMzQ7YnRmX25ld1wmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQ29tcGFyaW5nIHRoZSBmaXJzdCBmaWVsZHMgbWFwcyBhcnJheSBbM10gdG8gWzZdLiBUaGUgc2Vjb25kXG4mIzQzO1x0ICogZmllbGRzIHJldXNlIFszXSwgcmVxdWlyaW5nIGFuIGlkZW50aWNhbC10eXBlIGNoZWNrIG9mIFs2XS9bN10uXG4mIzQzO1x0ICogUGxhY2UgY29udGFpbmVyIFs1XSBiZWZvcmUgaXRzIGVsZW1lbnRzIFs4XS9bOV0gc28gdGhleSBzdGlsbFxuJiM0MztcdCAqIGhhdmUgZGlzdGluY3QgSURzIHdoZW4gdGhlaXIgZGVmaW5pdGlvbnMgYXJlIGNvbXBhcmVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghQVNTRVJUX0VRKGJ0Zl9fYWRkX2ludChidGYsIFwmIzM0O2ludFwmIzM0OywgNCwgQlRGX0lOVF9TSUdORUQpLCAxLCBcJiMzNDtpbnRcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgXCYjMzQ7Y29udGFpbmVyXCYjMzQ7LCA4KSwgMiwgXCYjMzQ7Y29udGFpbmVyMVwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwmIzM0O2ZpcnN0XCYjMzQ7LCAzLCAwLCAwKSwgXCYjMzQ7Zmlyc3QxXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCYjMzQ7c2Vjb25kXCYjMzQ7LCAzLCAzMiwgMCksIFwmIzM0O3NlY29uZDFcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA0LCAxKSwgMywgXCYjMzQ7YXJyYXkxXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwmIzM0O2VsZW1cJiMzNDssIDQpLCA0LCBcJiMzNDtlbGVtMVwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwmIzM0O3hcJiMzNDssIDEsIDAsIDApLCBcJiMzNDtlbGVtMV9maWVsZFwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcJiMzNDtjb250YWluZXJcJiMzNDssIDgpLCA1LCBcJiMzNDtjb250YWluZXIyXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCYjMzQ7Zmlyc3RcJiMzNDssIDYsIDAsIDApLCBcJiMzNDtmaXJzdDJcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcJiMzNDtzZWNvbmRcJiMzNDssIDcsIDMyLCAwKSwgXCYjMzQ7c2Vjb25kMlwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDgsIDEpLCA2LCBcJiMzNDthcnJheTJcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA5LCAxKSwgNywgXCYjMzQ7YXJyYXkzXCYjMzQ7KSB8fFxuJiM0MztcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwmIzM0O2VsZW1cJiMzNDssIDQpLCA4LCBcJiMzNDtlbGVtMlwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwmIzM0O3hcJiMzNDssIDEsIDAsIDApLCBcJiMzNDtlbGVtMl9maWVsZFwmIzM0OykgfHxcbiYjNDM7XHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcJiMzNDtlbGVtXCYjMzQ7LCA0KSwgOSwgXCYjMzQ7ZWxlbTNcJiMzNDspIHx8XG4mIzQzO1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBpZGVudGljYWwgPyBcJiMzNDt4XCYjMzQ7IDogXCYjMzQ7eVwmIzM0OywgMSwgMCwgMCksIFwmIzM0O2VsZW0zX2ZpZWxkXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhidGZfX2RlZHVwKGJ0ZiwgTlVMTCksIFwmIzM0O2RlZHVwXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHQvKiBJZGVudGljYWwgZWxlbWVudHMgbGVhdmUgb25seSB0aGUgZmlyc3QgZm91ciBleHBlY3RlZCB0eXBlcy4gKi9cbiYjNDM7XHRidGZfdmFsaWRhdGVfcmF3KGJ0ZiwgaWRlbnRpY2FsID8gNCA6IDcsIChjb25zdCBjaGFyICpbXSkge1xuJiM0MztcdFx0XCYjMzQ7WzFdIElOVCAmIzM5O2ludCYjMzk7IHNpemU9NCBiaXRzX29mZnNldD0wIG5yX2JpdHM9MzIgZW5jb2Rpbmc9U0lHTkVEXCYjMzQ7LFxuJiM0MztcdFx0XCYjMzQ7WzJdIFNUUlVDVCAmIzM5O2NvbnRhaW5lciYjMzk7IHNpemU9OCB2bGVuPTJcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7XFx0JiMzOTtzZWNvbmQmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MzJcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbM10gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTQgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbNF0gU1RSVUNUICYjMzk7ZWxlbSYjMzk7IHNpemU9NCB2bGVuPTFcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7eCYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXCYjMzQ7LFxuJiM0MztcdFx0XCYjMzQ7WzVdIFNUUlVDVCAmIzM5O2NvbnRhaW5lciYjMzk7IHNpemU9OCB2bGVuPTJcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7XFx0JiMzOTtzZWNvbmQmIzM5OyB0eXBlX2lkPTYgYml0c19vZmZzZXQ9MzJcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbNl0gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTcgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcJiMzNDssXG4mIzQzO1x0XHRcJiMzNDtbN10gU1RSVUNUICYjMzk7ZWxlbSYjMzk7IHNpemU9NCB2bGVuPTFcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdCYjMzk7eSYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXCYjMzQ7LFxuJiM0MztcdH0pO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGJ0Zl9fZnJlZShidGYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHRlc3RfYnRmX2RlZHVwKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDthcnJheV9kaWZmZXJlbnRfZWxlbWVudF90eXBlc1wmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoZmFsc2UpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2FycmF5X2lkZW50aWNhbF9lbGVtZW50X3R5cGVzXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfYXJyYXlfZWxlbWVudF90eXBlcyh0cnVlKTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgdXNlcnNwYWNlIGxpYmJwZiAodG9vbHMvbGliL2JwZi9idGYuYykgYW5kIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmMpLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBMaW51eCBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5NzZjYjI5NGE5YzhhYWYyYTA2ZDY2ODlmZDdiNGUwZDhlNTU4MjM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxNzozODowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jCmluZGV4IDg0MTdkZTkyZDAyODIuLjQxY2MzMTQwOTI1ZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuYwpAQCAtNDgyNyw3ICYjNDM7NDgyNyw3IEBAIHN0YXRpYyBib29sIGJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCwgX191MzIgaWQxLCBfX3UzMiBpZDIsCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJYTEgPSBidGZfYXJyYXkodDEpOwotCQlhMiA9IGJ0Zl9hcnJheSh0MSk7CiYjNDM7CQlhMiA9IGJ0Zl9hcnJheSh0Mik7CiAKIAkJaWYgKGExLSZndDtpbmRleF90eXBlICE9IGEyLSZndDtpbmRleF90eXBlICZhbXA7JmFtcDsKIAkJICAgICFidGZfZGVkdXBfaWRlbnRpY2FsX3R5cGVzKGQsIGExLSZndDtpbmRleF90eXBlLCBhMi0mZ3Q7aW5kZXhfdHlwZSwgZGVwdGggLSAxKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uM2U4ODljMGJlZDUzOAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jCkBAIC0wLDAgJiM0MzsxLDY4IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjaW5jbHVkZSAmbHQ7dGVzdF9wcm9ncy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnRmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDtidGZfaGVscGVycy5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoYm9vbCBpZGVudGljYWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnRmICpidGY7CiYjNDM7CiYjNDM7CWJ0ZiA9IGJ0Zl9fbmV3X2VtcHR5KCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihidGYsICYjMzQ7YnRmX25ldyYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQ29tcGFyaW5nIHRoZSBmaXJzdCBmaWVsZHMgbWFwcyBhcnJheSBbM10gdG8gWzZdLiBUaGUgc2Vjb25kCiYjNDM7CSAqIGZpZWxkcyByZXVzZSBbM10sIHJlcXVpcmluZyBhbiBpZGVudGljYWwtdHlwZSBjaGVjayBvZiBbNl0vWzddLgomIzQzOwkgKiBQbGFjZSBjb250YWluZXIgWzVdIGJlZm9yZSBpdHMgZWxlbWVudHMgWzhdL1s5XSBzbyB0aGV5IHN0aWxsCiYjNDM7CSAqIGhhdmUgZGlzdGluY3QgSURzIHdoZW4gdGhlaXIgZGVmaW5pdGlvbnMgYXJlIGNvbXBhcmVkLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFBU1NFUlRfRVEoYnRmX19hZGRfaW50KGJ0ZiwgJiMzNDtpbnQmIzM0OywgNCwgQlRGX0lOVF9TSUdORUQpLCAxLCAmIzM0O2ludCYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCAmIzM0O2NvbnRhaW5lciYjMzQ7LCA4KSwgMiwgJiMzNDtjb250YWluZXIxJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgJiMzNDtmaXJzdCYjMzQ7LCAzLCAwLCAwKSwgJiMzNDtmaXJzdDEmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCAmIzM0O3NlY29uZCYjMzQ7LCAzLCAzMiwgMCksICYjMzQ7c2Vjb25kMSYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDQsIDEpLCAzLCAmIzM0O2FycmF5MSYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCAmIzM0O2VsZW0mIzM0OywgNCksIDQsICYjMzQ7ZWxlbTEmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCAmIzM0O3gmIzM0OywgMSwgMCwgMCksICYjMzQ7ZWxlbTFfZmllbGQmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgJiMzNDtjb250YWluZXImIzM0OywgOCksIDUsICYjMzQ7Y29udGFpbmVyMiYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsICYjMzQ7Zmlyc3QmIzM0OywgNiwgMCwgMCksICYjMzQ7Zmlyc3QyJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgJiMzNDtzZWNvbmQmIzM0OywgNywgMzIsIDApLCAmIzM0O3NlY29uZDImIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA4LCAxKSwgNiwgJiMzNDthcnJheTImIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA5LCAxKSwgNywgJiMzNDthcnJheTMmIzM0OykgfHwKJiM0MzsJICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgJiMzNDtlbGVtJiMzNDssIDQpLCA4LCAmIzM0O2VsZW0yJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgJiMzNDt4JiMzNDssIDEsIDAsIDApLCAmIzM0O2VsZW0yX2ZpZWxkJiMzNDspIHx8CiYjNDM7CSAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsICYjMzQ7ZWxlbSYjMzQ7LCA0KSwgOSwgJiMzNDtlbGVtMyYjMzQ7KSB8fAomIzQzOwkgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIGlkZW50aWNhbCA/ICYjMzQ7eCYjMzQ7IDogJiMzNDt5JiMzNDssIDEsIDAsIDApLCAmIzM0O2VsZW0zX2ZpZWxkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWlmICghQVNTRVJUX09LKGJ0Zl9fZGVkdXAoYnRmLCBOVUxMKSwgJiMzNDtkZWR1cCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwkvKiBJZGVudGljYWwgZWxlbWVudHMgbGVhdmUgb25seSB0aGUgZmlyc3QgZm91ciBleHBlY3RlZCB0eXBlcy4gKi8KJiM0MzsJYnRmX3ZhbGlkYXRlX3JhdyhidGYsIGlkZW50aWNhbCA/IDQgOiA3LCAoY29uc3QgY2hhciAqW10pIHsKJiM0MzsJCSYjMzQ7WzFdIElOVCAmIzM5O2ludCYjMzk7IHNpemU9NCBiaXRzX29mZnNldD0wIG5yX2JpdHM9MzIgZW5jb2Rpbmc9U0lHTkVEJiMzNDssCiYjNDM7CQkmIzM0O1syXSBTVFJVQ1QgJiMzOTtjb250YWluZXImIzM5OyBzaXplPTggdmxlbj0yXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxuJiMzNDsKJiM0MzsJCSYjMzQ7XHQmIzM5O3NlY29uZCYjMzk7IHR5cGVfaWQ9MyBiaXRzX29mZnNldD0zMiYjMzQ7LAomIzQzOwkJJiMzNDtbM10gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTQgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTEmIzM0OywKJiM0MzsJCSYjMzQ7WzRdIFNUUlVDVCAmIzM5O2VsZW0mIzM5OyBzaXplPTQgdmxlbj0xXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7eCYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wJiMzNDssCiYjNDM7CQkmIzM0O1s1XSBTVFJVQ1QgJiMzOTtjb250YWluZXImIzM5OyBzaXplPTggdmxlbj0yXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7Zmlyc3QmIzM5OyB0eXBlX2lkPTMgYml0c19vZmZzZXQ9MFxuJiMzNDsKJiM0MzsJCSYjMzQ7XHQmIzM5O3NlY29uZCYjMzk7IHR5cGVfaWQ9NiBiaXRzX29mZnNldD0zMiYjMzQ7LAomIzQzOwkJJiMzNDtbNl0gQVJSQVkgJiMzOTsoYW5vbikmIzM5OyB0eXBlX2lkPTcgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTEmIzM0OywKJiM0MzsJCSYjMzQ7WzddIFNUUlVDVCAmIzM5O2VsZW0mIzM5OyBzaXplPTQgdmxlbj0xXG4mIzM0OwomIzQzOwkJJiMzNDtcdCYjMzk7eSYjMzk7IHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wJiMzNDssCiYjNDM7CX0pOwomIzQzOwomIzQzO291dDoKJiM0MzsJYnRmX19mcmVlKGJ0Zik7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgdGVzdF9idGZfZGVkdXAodm9pZCkKJiM0Mzt7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7YXJyYXlfZGlmZmVyZW50X2VsZW1lbnRfdHlwZXMmIzM0OykpCiYjNDM7CQl0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoZmFsc2UpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2FycmF5X2lkZW50aWNhbF9lbGVtZW50X3R5cGVzJiMzNDspKQomIzQzOwkJdGVzdF9hcnJheV9lbGVtZW50X3R5cGVzKHRydWUpOwomIzQzO30KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwNgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaCBmb3IgV29ydGhGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGB0b29scy9saWIvYnBmL2J0Zi5jYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhvc2UgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBydWxlcywgZXNwZWNpYWxseSBzZWN0aW9uIDIuIFdlJiMzOTtyZSBsb29raW5nIGZvciBuZWdhdGl2ZSBjcml0ZXJpYSBoZXJlIOKAkyBzY2VuYXJpb3Mgd2hlcmUgd2UgKmRvbiYjMzk7dCogbmVlZCBmdXp6aW5nLgoKTXkgZ3V0IGZlZWxpbmcgaXMgdGhlc2UgYXJlIGdvaW5nIHRvIGJlIHVzZXItc3BhY2UgbW9kaWZpY2F0aW9ucy4gQm90aCBmaWxlcyByZXNpZGUgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSDigJMgYHRvb2xzL2xpYi9icGYvYnRmLmNgIHBvaW50cyB0byBsaWJicGYsIGFuZCB0aGUgb3RoZXIgdG8gc2VsZnRlc3RzLiBTbywgdGhlIHF1ZXN0aW9uIGlzLCBhcmUgZWl0aGVyIG9mIHRoZXNlIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXM/IFRoYXQmIzM5O3MgdGhlIGtleS4KCkkmIzM5O20gcHJldHR5IHN1cmUgdGhlIGJ0ZiBkZWR1cGxpY2F0aW9uIGFuZCB0aGUgbGliYnBmIGNvZGUgYXJlIHB1cmVseSB1c2Vyc3BhY2UuIFRoZSBCVEYgZGVkdXBsaWNhdGlvbiBpcyBhIHVzZXJzcGFjZSB0b29sIHdpdGhpbiBsaWJicGYgYW5kIHVzZWQgYnkgdG9vbHMgbGlrZSBicGZ0b29sIGFuZCBvdGhlciB1c2Vyc3BhY2UgcHJvZ3JhbXMuIEluLWtlcm5lbCBCVEYgKHdoaWNoIEkga25vdyBpcyByZWxldmFudCBmb3Igb3RoZXIgdGhpbmdzKSBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2J0Zi5jYC4gQnV0IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSYjMzk7cyBubyBkZXBlbmRlbmN5IG9yIGRpcmVjdCBpbnRlZ3JhdGlvbiBvZiB0aGlzIGB0b29scy9gIGNvZGUgaW50byB0aGUgY29yZSBrZXJuZWwgb3IgYSBtb2R1bGUuIERvdWJsZS1jaGVja2luZyBpcyBhbHdheXMgd2lzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9kZWR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjUKCQkJCQkJCW91dHB1dDogOTMKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm8gS2VybmVsIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlc2UgdHdvIGZpbGVzLCBgdG9vbHMvbGliL2JwZi9idGYuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY2AsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSYjMzk7cmUgc3RyaWN0bHkgaW4gdXNlcnNwYWNlLiBgbGliYnBmYCBhbmQgdGhlIGJwZiBzZWxmdGVzdHMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIG5vdCBnb2luZyB0byB0b3VjaCB0aGUga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBvZiB0aGUgY29tcGlsZWQga2VybmVsIG1vZHVsZXMuCgpMb29raW5nIGJhY2sgYXQgdGhhdCBoYW5keSBTZWN0aW9uIDIsIHRoZSBjcml0ZXJpYSBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgc2F5cyBJIGNhbiBvbmx5IHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiAqYWxsKiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIGNhdGVnb3JpZXMgbGlrZSBub24ta2VybmVsLCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLiBBbmQgd291bGRuJiMzOTt0IHlvdSBrbm93IGl0LCB0aGVzZSBmaWxlcyBhcmUgYSBwZXJmZWN0IGZpdDogdGhleSYjMzk7cmUgdXNlcnNwYWNlIGNvZGUsIHNlbGYtdGVzdHMuCgpTbywgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBEZWZpbml0ZWx5IGBmYWxzZWAuIE5vIGtlcm5lbCByaXNrIGhlcmUuCiogICBgRm9jdXNTeW1ib2xzYDogRW1wdHkuIE5vdGhpbmcgdG8gdHJhY2suCiogICBgRW5hYmxlQ29uZmlnc2A6IE5vdGhpbmcgbmVlZGVkLgoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGRlYWxzIHdpdGggdXNlcnNwYWNlIGxpYmJwZiBhbmQgYWRkcyBhIHNlbGZ0ZXN0LiBObyBrZXJuZWwtbGV2ZWwgY29kZSBpcyBpbXBhY3RlZC4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MDcuNjcxNDIxODYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjAxNTY0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHVzZXJzcGFjZSBsaWJicGYgKHRvb2xzL2xpYi9icGYvYnRmLmMpIGFuZCBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgTGludXgga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzozODowNy42NzE0MjYyNzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzI0NDQ5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NzZjYjI5NGE5YzhhYWYyYTA2ZDY2ODlmZDdiNGUwZDhlNTU4MjM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMTc6Mzg6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9idGYuYyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi40MWNjMzE0MDkyNWZiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG4rKysgYi90b29scy9saWIvYnBmL2J0Zi5jXFxuQEAgLTQ4MjcsNyArNDgyNyw3IEBAIHN0YXRpYyBib29sIGJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCwgX191MzIgaWQxLCBfX3UzMiBpZDIsXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdFxcdGExID0gYnRmX2FycmF5KHQxKTtcXG4tXFx0XFx0YTIgPSBidGZfYXJyYXkodDEpO1xcbitcXHRcXHRhMiA9IGJ0Zl9hcnJheSh0Mik7XFxuIFxcbiBcXHRcXHRpZiAoYTEtXFx1MDAzZWluZGV4X3R5cGUgIT0gYTItXFx1MDAzZWluZGV4X3R5cGUgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgICFidGZfZGVkdXBfaWRlbnRpY2FsX3R5cGVzKGQsIGExLVxcdTAwM2VpbmRleF90eXBlLCBhMi1cXHUwMDNlaW5kZXhfdHlwZSwgZGVwdGggLSAxKSlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uM2U4ODljMGJlZDUzOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY1xcbkBAIC0wLDAgKzEsNjggQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9idGYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJ0Zl9oZWxwZXJzLmhcXFwiXFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXMoYm9vbCBpZGVudGljYWwpXFxuK3tcXG4rXFx0c3RydWN0IGJ0ZiAqYnRmO1xcbitcXG4rXFx0YnRmID0gYnRmX19uZXdfZW1wdHkoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ0ZiwgXFxcImJ0Zl9uZXdcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0LypcXG4rXFx0ICogQ29tcGFyaW5nIHRoZSBmaXJzdCBmaWVsZHMgbWFwcyBhcnJheSBbM10gdG8gWzZdLiBUaGUgc2Vjb25kXFxuK1xcdCAqIGZpZWxkcyByZXVzZSBbM10sIHJlcXVpcmluZyBhbiBpZGVudGljYWwtdHlwZSBjaGVjayBvZiBbNl0vWzddLlxcbitcXHQgKiBQbGFjZSBjb250YWluZXIgWzVdIGJlZm9yZSBpdHMgZWxlbWVudHMgWzhdL1s5XSBzbyB0aGV5IHN0aWxsXFxuK1xcdCAqIGhhdmUgZGlzdGluY3QgSURzIHdoZW4gdGhlaXIgZGVmaW5pdGlvbnMgYXJlIGNvbXBhcmVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFBU1NFUlRfRVEoYnRmX19hZGRfaW50KGJ0ZiwgXFxcImludFxcXCIsIDQsIEJURl9JTlRfU0lHTkVEKSwgMSwgXFxcImludFxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFxcXCJjb250YWluZXJcXFwiLCA4KSwgMiwgXFxcImNvbnRhaW5lcjFcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFxcXCJmaXJzdFxcXCIsIDMsIDAsIDApLCBcXFwiZmlyc3QxXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcXFwic2Vjb25kXFxcIiwgMywgMzIsIDApLCBcXFwic2Vjb25kMVxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX2FycmF5KGJ0ZiwgMSwgNCwgMSksIDMsIFxcXCJhcnJheTFcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcXFwiZWxlbVxcXCIsIDQpLCA0LCBcXFwiZWxlbTFcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFxcXCJ4XFxcIiwgMSwgMCwgMCksIFxcXCJlbGVtMV9maWVsZFxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFxcXCJjb250YWluZXJcXFwiLCA4KSwgNSwgXFxcImNvbnRhaW5lcjJcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFxcXCJmaXJzdFxcXCIsIDYsIDAsIDApLCBcXFwiZmlyc3QyXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcXFwic2Vjb25kXFxcIiwgNywgMzIsIDApLCBcXFwic2Vjb25kMlxcXCIpIHx8XFxuK1xcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX2FycmF5KGJ0ZiwgMSwgOCwgMSksIDYsIFxcXCJhcnJheTJcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDksIDEpLCA3LCBcXFwiYXJyYXkzXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfc3RydWN0KGJ0ZiwgXFxcImVsZW1cXFwiLCA0KSwgOCwgXFxcImVsZW0yXFxcIikgfHxcXG4rXFx0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcXFwieFxcXCIsIDEsIDAsIDApLCBcXFwiZWxlbTJfZmllbGRcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcXFwiZWxlbVxcXCIsIDQpLCA5LCBcXFwiZWxlbTNcXFwiKSB8fFxcbitcXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIGlkZW50aWNhbCA/IFxcXCJ4XFxcIiA6IFxcXCJ5XFxcIiwgMSwgMCwgMCksIFxcXCJlbGVtM19maWVsZFxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdGlmICghQVNTRVJUX09LKGJ0Zl9fZGVkdXAoYnRmLCBOVUxMKSwgXFxcImRlZHVwXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0LyogSWRlbnRpY2FsIGVsZW1lbnRzIGxlYXZlIG9ubHkgdGhlIGZpcnN0IGZvdXIgZXhwZWN0ZWQgdHlwZXMuICovXFxuK1xcdGJ0Zl92YWxpZGF0ZV9yYXcoYnRmLCBpZGVudGljYWwgPyA0IDogNywgKGNvbnN0IGNoYXIgKltdKSB7XFxuK1xcdFxcdFxcXCJbMV0gSU5UICdpbnQnIHNpemU9NCBiaXRzX29mZnNldD0wIG5yX2JpdHM9MzIgZW5jb2Rpbmc9U0lHTkVEXFxcIixcXG4rXFx0XFx0XFxcIlsyXSBTVFJVQ1QgJ2NvbnRhaW5lcicgc2l6ZT04IHZsZW49MlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHQnZmlyc3QnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0wXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdCdzZWNvbmQnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0zMlxcXCIsXFxuK1xcdFxcdFxcXCJbM10gQVJSQVkgJyhhbm9uKScgdHlwZV9pZD00IGluZGV4X3R5cGVfaWQ9MSBucl9lbGVtcz0xXFxcIixcXG4rXFx0XFx0XFxcIls0XSBTVFJVQ1QgJ2VsZW0nIHNpemU9NCB2bGVuPTFcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0J3gnIHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXFxcIixcXG4rXFx0XFx0XFxcIls1XSBTVFJVQ1QgJ2NvbnRhaW5lcicgc2l6ZT04IHZsZW49MlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHQnZmlyc3QnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0wXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdCdzZWNvbmQnIHR5cGVfaWQ9NiBiaXRzX29mZnNldD0zMlxcXCIsXFxuK1xcdFxcdFxcXCJbNl0gQVJSQVkgJyhhbm9uKScgdHlwZV9pZD03IGluZGV4X3R5cGVfaWQ9MSBucl9lbGVtcz0xXFxcIixcXG4rXFx0XFx0XFxcIls3XSBTVFJVQ1QgJ2VsZW0nIHNpemU9NCB2bGVuPTFcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0J3knIHR5cGVfaWQ9MSBiaXRzX29mZnNldD0wXFxcIixcXG4rXFx0fSk7XFxuK1xcbitvdXQ6XFxuK1xcdGJ0Zl9fZnJlZShidGYpO1xcbit9XFxuK1xcbit2b2lkIHRlc3RfYnRmX2RlZHVwKHZvaWQpXFxuK3tcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcImFycmF5X2RpZmZlcmVudF9lbGVtZW50X3R5cGVzXFxcIikpXFxuK1xcdFxcdHRlc3RfYXJyYXlfZWxlbWVudF90eXBlcyhmYWxzZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJhcnJheV9pZGVudGljYWxfZWxlbWVudF90eXBlc1xcXCIpKVxcbitcXHRcXHR0ZXN0X2FycmF5X2VsZW1lbnRfdHlwZXModHJ1ZSk7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MDguOTQ0NTU4ODk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMzY4NzAwNTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB1c2Vyc3BhY2UgbGliYnBmICh0b29scy9saWIvYnBmL2J0Zi5jKSBhbmQgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIExpbnV4IGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NzZjYjI5NGE5YzhhYWYyYTA2ZDY2ODlmZDdiNGUwZDhlNTU4MjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzozODowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi40MWNjMzE0MDkyNWZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuKysrIGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTQ4MjcsNyArNDgyNyw3IEBAIHN0YXRpYyBib29sIGJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCwgX191MzIgaWQxLCBfX3UzMiBpZDIsXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0XHRhMSA9IGJ0Zl9hcnJheSh0MSk7XG4tXHRcdGEyID0gYnRmX2FycmF5KHQxKTtcbitcdFx0YTIgPSBidGZfYXJyYXkodDIpO1xuIFxuIFx0XHRpZiAoYTEtXHUwMDNlaW5kZXhfdHlwZSAhPSBhMi1cdTAwM2VpbmRleF90eXBlIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIWJ0Zl9kZWR1cF9pZGVudGljYWxfdHlwZXMoZCwgYTEtXHUwMDNlaW5kZXhfdHlwZSwgYTItXHUwMDNlaW5kZXhfdHlwZSwgZGVwdGggLSAxKSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uM2U4ODljMGJlZDUzOFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmNcbkBAIC0wLDAgKzEsNjggQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9idGYuaFx1MDAzZVxuKyNpbmNsdWRlIFwiYnRmX2hlbHBlcnMuaFwiXG4rXG4rc3RhdGljIHZvaWQgdGVzdF9hcnJheV9lbGVtZW50X3R5cGVzKGJvb2wgaWRlbnRpY2FsKVxuK3tcbitcdHN0cnVjdCBidGYgKmJ0ZjtcbitcbitcdGJ0ZiA9IGJ0Zl9fbmV3X2VtcHR5KCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoYnRmLCBcImJ0Zl9uZXdcIikpXG4rXHRcdHJldHVybjtcbitcbitcdC8qXG4rXHQgKiBDb21wYXJpbmcgdGhlIGZpcnN0IGZpZWxkcyBtYXBzIGFycmF5IFszXSB0byBbNl0uIFRoZSBzZWNvbmRcbitcdCAqIGZpZWxkcyByZXVzZSBbM10sIHJlcXVpcmluZyBhbiBpZGVudGljYWwtdHlwZSBjaGVjayBvZiBbNl0vWzddLlxuK1x0ICogUGxhY2UgY29udGFpbmVyIFs1XSBiZWZvcmUgaXRzIGVsZW1lbnRzIFs4XS9bOV0gc28gdGhleSBzdGlsbFxuK1x0ICogaGF2ZSBkaXN0aW5jdCBJRHMgd2hlbiB0aGVpciBkZWZpbml0aW9ucyBhcmUgY29tcGFyZWQuXG4rXHQgKi9cbitcdGlmICghQVNTRVJUX0VRKGJ0Zl9fYWRkX2ludChidGYsIFwiaW50XCIsIDQsIEJURl9JTlRfU0lHTkVEKSwgMSwgXCJpbnRcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwiY29udGFpbmVyXCIsIDgpLCAyLCBcImNvbnRhaW5lcjFcIikgfHxcbitcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCJmaXJzdFwiLCAzLCAwLCAwKSwgXCJmaXJzdDFcIikgfHxcbitcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCJzZWNvbmRcIiwgMywgMzIsIDApLCBcInNlY29uZDFcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX2FycmF5KGJ0ZiwgMSwgNCwgMSksIDMsIFwiYXJyYXkxXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcImVsZW1cIiwgNCksIDQsIFwiZWxlbTFcIikgfHxcbitcdCAgICAhQVNTRVJUX09LKGJ0Zl9fYWRkX2ZpZWxkKGJ0ZiwgXCJ4XCIsIDEsIDAsIDApLCBcImVsZW0xX2ZpZWxkXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9zdHJ1Y3QoYnRmLCBcImNvbnRhaW5lclwiLCA4KSwgNSwgXCJjb250YWluZXIyXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwiZmlyc3RcIiwgNiwgMCwgMCksIFwiZmlyc3QyXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9PSyhidGZfX2FkZF9maWVsZChidGYsIFwic2Vjb25kXCIsIDcsIDMyLCAwKSwgXCJzZWNvbmQyXCIpIHx8XG4rXHQgICAgIUFTU0VSVF9FUShidGZfX2FkZF9hcnJheShidGYsIDEsIDgsIDEpLCA2LCBcImFycmF5MlwiKSB8fFxuK1x0ICAgICFBU1NFUlRfRVEoYnRmX19hZGRfYXJyYXkoYnRmLCAxLCA5LCAxKSwgNywgXCJhcnJheTNcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwiZWxlbVwiLCA0KSwgOCwgXCJlbGVtMlwiKSB8fFxuK1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBcInhcIiwgMSwgMCwgMCksIFwiZWxlbTJfZmllbGRcIikgfHxcbitcdCAgICAhQVNTRVJUX0VRKGJ0Zl9fYWRkX3N0cnVjdChidGYsIFwiZWxlbVwiLCA0KSwgOSwgXCJlbGVtM1wiKSB8fFxuK1x0ICAgICFBU1NFUlRfT0soYnRmX19hZGRfZmllbGQoYnRmLCBpZGVudGljYWwgPyBcInhcIiA6IFwieVwiLCAxLCAwLCAwKSwgXCJlbGVtM19maWVsZFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRpZiAoIUFTU0VSVF9PSyhidGZfX2RlZHVwKGJ0ZiwgTlVMTCksIFwiZGVkdXBcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0LyogSWRlbnRpY2FsIGVsZW1lbnRzIGxlYXZlIG9ubHkgdGhlIGZpcnN0IGZvdXIgZXhwZWN0ZWQgdHlwZXMuICovXG4rXHRidGZfdmFsaWRhdGVfcmF3KGJ0ZiwgaWRlbnRpY2FsID8gNCA6IDcsIChjb25zdCBjaGFyICpbXSkge1xuK1x0XHRcIlsxXSBJTlQgJ2ludCcgc2l6ZT00IGJpdHNfb2Zmc2V0PTAgbnJfYml0cz0zMiBlbmNvZGluZz1TSUdORURcIixcbitcdFx0XCJbMl0gU1RSVUNUICdjb250YWluZXInIHNpemU9OCB2bGVuPTJcXG5cIlxuK1x0XHRcIlxcdCdmaXJzdCcgdHlwZV9pZD0zIGJpdHNfb2Zmc2V0PTBcXG5cIlxuK1x0XHRcIlxcdCdzZWNvbmQnIHR5cGVfaWQ9MyBiaXRzX29mZnNldD0zMlwiLFxuK1x0XHRcIlszXSBBUlJBWSAnKGFub24pJyB0eXBlX2lkPTQgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcIixcbitcdFx0XCJbNF0gU1RSVUNUICdlbGVtJyBzaXplPTQgdmxlbj0xXFxuXCJcbitcdFx0XCJcXHQneCcgdHlwZV9pZD0xIGJpdHNfb2Zmc2V0PTBcIixcbitcdFx0XCJbNV0gU1RSVUNUICdjb250YWluZXInIHNpemU9OCB2bGVuPTJcXG5cIlxuK1x0XHRcIlxcdCdmaXJzdCcgdHlwZV9pZD0zIGJpdHNfb2Zmc2V0PTBcXG5cIlxuK1x0XHRcIlxcdCdzZWNvbmQnIHR5cGVfaWQ9NiBiaXRzX29mZnNldD0zMlwiLFxuK1x0XHRcIls2XSBBUlJBWSAnKGFub24pJyB0eXBlX2lkPTcgaW5kZXhfdHlwZV9pZD0xIG5yX2VsZW1zPTFcIixcbitcdFx0XCJbN10gU1RSVUNUICdlbGVtJyBzaXplPTQgdmxlbj0xXFxuXCJcbitcdFx0XCJcXHQneScgdHlwZV9pZD0xIGJpdHNfb2Zmc2V0PTBcIixcbitcdH0pO1xuK1xuK291dDpcbitcdGJ0Zl9fZnJlZShidGYpO1xuK31cbitcbit2b2lkIHRlc3RfYnRmX2RlZHVwKHZvaWQpXG4re1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJhcnJheV9kaWZmZXJlbnRfZWxlbWVudF90eXBlc1wiKSlcbitcdFx0dGVzdF9hcnJheV9lbGVtZW50X3R5cGVzKGZhbHNlKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwiYXJyYXlfaWRlbnRpY2FsX2VsZW1lbnRfdHlwZXNcIikpXG4rXHRcdHRlc3RfYXJyYXlfZWxlbWVudF90eXBlcyh0cnVlKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzozODowOC45NDQ1NjAzMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MTk1MDQ5MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciBXb3J0aEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEkgc2VlIGl0J3MgdG91Y2hpbmcgYHRvb2xzL2xpYi9icGYvYnRmLmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwLmNgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgcnVsZXMsIGVzcGVjaWFsbHkgc2VjdGlvbiAyLiBXZSdyZSBsb29raW5nIGZvciBuZWdhdGl2ZSBjcml0ZXJpYSBoZXJlIOKAkyBzY2VuYXJpb3Mgd2hlcmUgd2UgKmRvbid0KiBuZWVkIGZ1enppbmcuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoZXNlIGFyZSBnb2luZyB0byBiZSB1c2VyLXNwYWNlIG1vZGlmaWNhdGlvbnMuIEJvdGggZmlsZXMgcmVzaWRlIGluIHRoZSBgdG9vbHMvYCBkaXJlY3Rvcnkg4oCTIGB0b29scy9saWIvYnBmL2J0Zi5jYCBwb2ludHMgdG8gbGliYnBmLCBhbmQgdGhlIG90aGVyIHRvIHNlbGZ0ZXN0cy4gU28sIHRoZSBxdWVzdGlvbiBpcywgYXJlIGVpdGhlciBvZiB0aGVzZSBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzPyBUaGF0J3MgdGhlIGtleS5cblxuSSdtIHByZXR0eSBzdXJlIHRoZSBidGYgZGVkdXBsaWNhdGlvbiBhbmQgdGhlIGxpYmJwZiBjb2RlIGFyZSBwdXJlbHkgdXNlcnNwYWNlLiBUaGUgQlRGIGRlZHVwbGljYXRpb24gaXMgYSB1c2Vyc3BhY2UgdG9vbCB3aXRoaW4gbGliYnBmIGFuZCB1c2VkIGJ5IHRvb2xzIGxpa2UgYnBmdG9vbCBhbmQgb3RoZXIgdXNlcnNwYWNlIHByb2dyYW1zLiBJbi1rZXJuZWwgQlRGICh3aGljaCBJIGtub3cgaXMgcmVsZXZhbnQgZm9yIG90aGVyIHRoaW5ncykgaXMgbG9jYXRlZCBpbiBga2VybmVsL2JwZi9idGYuY2AuIEJ1dCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSdzIG5vIGRlcGVuZGVuY3kgb3IgZGlyZWN0IGludGVncmF0aW9uIG9mIHRoaXMgYHRvb2xzL2AgY29kZSBpbnRvIHRoZSBjb3JlIGtlcm5lbCBvciBhIG1vZHVsZS4gRG91YmxlLWNoZWNraW5nIGlzIGFsd2F5cyB3aXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MTYuMTM5NjExODI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjA3MzUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfZGVkdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MTYuMTg5MjI3NTExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQ0MjMxNTgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBObyBLZXJuZWwgSW1wYWN0KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhlc2UgdHdvIGZpbGVzLCBgdG9vbHMvbGliL2JwZi9idGYuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXAuY2AsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIHN0cmljdGx5IGluIHVzZXJzcGFjZS4gYGxpYmJwZmAgYW5kIHRoZSBicGYgc2VsZnRlc3RzLCB3aGljaCBtZWFucyB0aGV5J3JlIG5vdCBnb2luZyB0byB0b3VjaCB0aGUga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBvZiB0aGUgY29tcGlsZWQga2VybmVsIG1vZHVsZXMuXG5cbkxvb2tpbmcgYmFjayBhdCB0aGF0IGhhbmR5IFNlY3Rpb24gMiwgdGhlIGNyaXRlcmlhIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBzYXlzIEkgY2FuIG9ubHkgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmICphbGwqIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2F0ZWdvcmllcyBsaWtlIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuIEFuZCB3b3VsZG4ndCB5b3Uga25vdyBpdCwgdGhlc2UgZmlsZXMgYXJlIGEgcGVyZmVjdCBmaXQ6IHRoZXkncmUgdXNlcnNwYWNlIGNvZGUsIHNlbGYtdGVzdHMuXG5cblNvLCBoZXJlJ3MgdGhlIGJyZWFrZG93bjpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBEZWZpbml0ZWx5IGBmYWxzZWAuIE5vIGtlcm5lbCByaXNrIGhlcmUuXG4qICAgYEZvY3VzU3ltYm9sc2A6IEVtcHR5LiBOb3RoaW5nIHRvIHRyYWNrLlxuKiAgIGBFbmFibGVDb25maWdzYDogTm90aGluZyBuZWVkZWQuXG4qICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGRlYWxzIHdpdGggdXNlcnNwYWNlIGxpYmJwZiBhbmQgYWRkcyBhIHNlbGZ0ZXN0LiBObyBrZXJuZWwtbGV2ZWwgY29kZSBpcyBpbXBhY3RlZC5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMjUsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6Mzg6MjIuNjMxNTQ0OTEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHVzZXJzcGFjZSBsaWJicGYgKHRvb2xzL2xpYi9icGYvYnRmLmMpIGFuZCBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgTGludXgga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHVzZXJzcGFjZSBsaWJicGYgKHRvb2xzL2xpYi9icGYvYnRmLmMpIGFuZCBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cC5jKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgTGludXgga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzozODoyMi42MzE1NjY1NDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrhvn2[1] Phase: Running StartedAt: 2026-09-07 17:38:33 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrhvn2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 17:38:33 +0000 UTC FinishedAt: 2026-09-07 17:38:37 +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,}