Name: series-workflowlnck7 Phase: Failed StartedAt: 2026-08-17 06:36:20 +0000 UTC FinishedAt: 2026-08-17 07:18:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlnck7[0] Phase: Succeeded StartedAt: 2026-08-17 06:36:20 +0000 UTC FinishedAt: 2026-08-17 07:18:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlnck7[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 06:36:20 +0000 UTC FinishedAt: 2026-08-17 07:18:13 +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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBzdXBwcmVzc2VzIGVycm9yIGxvZ2dpbmcgKHJ0d19lcnIpIGR1cmluZyBVU0IgbW9kZSBzd2l0Y2hpbmcgYW5kIHByZXZlbnRzIHRoZSBzdGF0aWMgcmF0ZS1saW1pdCBjb3VudGVyIGZyb20gYmVpbmcgaW5jcmVtZW50ZWQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQxMTU0ZWExNDg4MWNkOWQ2MDQzNjQzMGJiYzlhNTRmMmRmNDQ1ZjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwNzoxNzo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5pbmRleCBjNmU5ODFiYTc5ODY4Li42ODgzZmJkOWY3NjgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5AQCAtMzc3LDYgJiM0MzszNzcsNyBAQCBlbnVtIHJ0d19mbGFncyB7XG4gXHRSVFdfRkxBR19SRVNUQVJUSU5HLFxuIFx0UlRXX0ZMQUdfUkVTVEFSVF9UUklHR0VSSU5HLFxuIFx0UlRXX0ZMQUdfRk9SQ0VfTE9XRVNUX1JBVEUsXG4mIzQzO1x0UlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLFxuIFxuIFx0TlVNX09GX1JUV19GTEFHUyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jXG5pbmRleCA2NGUxYzM0MjBlMGE4Li5lMTNmYWVjZmI0Yjg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xuQEAgLTY0LDcgJiM0Mzs2NCw4IEBAIHN0YXRpYyB2b2lkIHJ0d191c2JfcmVnX3NlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgX19sZTMyICpkYXRhKVxuIFx0XHRcdFx0IFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfV1JJVEUsXG4gXHRcdFx0XHQgdF9yZWcsIDAsIGRhdGEsIHRfbGVuLCA1MDApO1xuIFxuLVx0aWYgKHN0YXR1cyAhPSB0X2xlbiBcdTAwMjZcdTAwMjYgc3RhdHVzICE9IC1FTk9ERVYpXG4mIzQzO1x0aWYgKHN0YXR1cyAhPSB0X2xlbiBcdTAwMjZcdTAwMjYgc3RhdHVzICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cdTAwM2VmbGFncykpXG4gXHRcdHJ0d19lcnIocnR3ZGV2LCBcJiMzNDslczogcmVnIDB4JXgsIHVzYiB3cml0ZSAldSBmYWlsLCBzdGF0dXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdF9fZnVuY19fLCB0X3JlZywgdF9sZW4sIHN0YXR1cyk7XG4gfVxuQEAgLTkwLDcgJiM0Mzs5MSw5IEBAIHN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKVxuIFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSxcbiBcdFx0XHQgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1JFQUQsIGFkZHIsXG4gXHRcdFx0ICAgICAgUlRXX1VTQl9WRU5RVF9DTURfSURYLCBkYXRhLCBsZW4sIDEwMDApO1xuLVx0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2IGNvdW50JiM0MzsmIzQzOyBcdTAwM2MgNClcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVOT0RFViBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgY291bnQmIzQzOyYjNDM7IFx1MDAzYyA0KVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCYjMzQ7cmVhZCByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXFxuXCYjMzQ7LFxuIFx0XHRcdGFkZHIsIHJldCk7XG4gXG5AQCAtMTQwLDcgJiM0MzsxNDMsOSBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3dyaXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsLCBpbnQgbGVuKVxuIFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSxcbiBcdFx0XHQgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1dSSVRFLFxuIFx0XHRcdCAgICAgIGFkZHIsIDAsIGRhdGEsIGxlbiwgNTAwKTtcbi1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU5PREVWIFx1MDAyNlx1MDAyNiBjb3VudCYjNDM7JiM0MzsgXHUwMDNjIDQpXG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGNvdW50JiM0MzsmIzQzOyBcdTAwM2MgNClcbiBcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O3dyaXRlIHJlZ2lzdGVyIDB4JXggZmFpbGVkIHdpdGggJWRcXG5cJiMzNDssXG4gXHRcdFx0YWRkciwgcmV0KTtcbiBcbkBAIC0xMTczLDYgJiM0MzsxMTc4LDcgQEAgc3RhdGljIGJvb2wgcnR3X3VzYjNfY2hpcF9uZXcodTggY2hpcF9pZClcbiBzdGF0aWMgaW50IHJ0d191c2Jfc3dpdGNoX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbiB7XG4gXHR1OCBpZCA9IHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZWlkO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRpZiAoIXJ0d191c2IzX2NoaXBfbmV3KGlkKSBcdTAwMjZcdTAwMjYgIXJ0d191c2IzX2NoaXBfb2xkKGlkKSlcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMTE4OSwxMCAmIzQzOzExOTUsMTYgQEAgc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuJiM0MztcdHNldF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcbiBcdGlmIChydHdfdXNiM19jaGlwX29sZChpZCkpXG4tXHRcdHJldHVybiBydHdfdXNiX3N3aXRjaF9tb2RlX29sZChydHdkZXYpO1xuJiM0MztcdFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcbiBcdGVsc2Vcbi1cdFx0cmV0dXJuIHJ0d191c2Jfc3dpdGNoX21vZGVfbmV3KHJ0d2Rldik7XG4mIzQzO1x0XHRyZXQgPSBydHdfdXNiX3N3aXRjaF9tb2RlX25ldyhydHdkZXYpO1xuJiM0MztcbiYjNDM7XHRjbGVhcl9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiAjZGVmaW5lIFVTQl9SRUdfUEFHRVx0MHhmNFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDExNTRlYTE0ODgxY2Q5ZDYwNDM2NDMwYmJjOWE1NGYyZGY0NDVmMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDA3OjE3OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaAppbmRleCBjNmU5ODFiYTc5ODY4Li42ODgzZmJkOWY3NjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaApAQCAtMzc3LDYgJiM0MzszNzcsNyBAQCBlbnVtIHJ0d19mbGFncyB7CiAJUlRXX0ZMQUdfUkVTVEFSVElORywKIAlSVFdfRkxBR19SRVNUQVJUX1RSSUdHRVJJTkcsCiAJUlRXX0ZMQUdfRk9SQ0VfTE9XRVNUX1JBVEUsCiYjNDM7CVJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwKIAogCU5VTV9PRl9SVFdfRkxBR1MsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMKaW5kZXggNjRlMWMzNDIwZTBhOC4uZTEzZmFlY2ZiNGI4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jCkBAIC02NCw3ICYjNDM7NjQsOCBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3JlZ19zZWMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIF9fbGUzMiAqZGF0YSkKIAkJCQkgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9XUklURSwKIAkJCQkgdF9yZWcsIDAsIGRhdGEsIHRfbGVuLCA1MDApOwogCi0JaWYgKHN0YXR1cyAhPSB0X2xlbiAmYW1wOyZhbXA7IHN0YXR1cyAhPSAtRU5PREVWKQomIzQzOwlpZiAoc3RhdHVzICE9IHRfbGVuICZhbXA7JmFtcDsgc3RhdHVzICE9IC1FTk9ERVYgJmFtcDsmYW1wOwomIzQzOwkgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LSZndDtmbGFncykpCiAJCXJ0d19lcnIocnR3ZGV2LCAmIzM0OyVzOiByZWcgMHgleCwgdXNiIHdyaXRlICV1IGZhaWwsIHN0YXR1czogJWRcbiYjMzQ7LAogCQkJX19mdW5jX18sIHRfcmVnLCB0X2xlbiwgc3RhdHVzKTsKIH0KQEAgLTkwLDcgJiM0Mzs5MSw5IEBAIHN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKQogCXJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksCiAJCQkgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1JFQUQsIGFkZHIsCiAJCQkgICAgICBSVFdfVVNCX1ZFTlFUX0NNRF9JRFgsIGRhdGEsIGxlbiwgMTAwMCk7Ci0JaWYgKHJldCAmbHQ7IDAgJmFtcDsmYW1wOyByZXQgIT0gLUVOT0RFViAmYW1wOyZhbXA7IGNvdW50JiM0MzsmIzQzOyAmbHQ7IDQpCiYjNDM7CWlmIChyZXQgJmx0OyAwICZhbXA7JmFtcDsgcmV0ICE9IC1FTk9ERVYgJmFtcDsmYW1wOwomIzQzOwkgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgY291bnQmIzQzOyYjNDM7ICZsdDsgNCkKIAkJcnR3X2VycihydHdkZXYsICYjMzQ7cmVhZCByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXG4mIzM0OywKIAkJCWFkZHIsIHJldCk7CiAKQEAgLTE0MCw3ICYjNDM7MTQzLDkgQEAgc3RhdGljIHZvaWQgcnR3X3VzYl93cml0ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCwgaW50IGxlbikKIAlyZXQgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3NuZGN0cmxwaXBlKHVkZXYsIDApLAogCQkJICAgICAgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9XUklURSwKIAkJCSAgICAgIGFkZHIsIDAsIGRhdGEsIGxlbiwgNTAwKTsKLQlpZiAocmV0ICZsdDsgMCAmYW1wOyZhbXA7IHJldCAhPSAtRU5PREVWICZhbXA7JmFtcDsgY291bnQmIzQzOyYjNDM7ICZsdDsgNCkKJiM0MzsJaWYgKHJldCAmbHQ7IDAgJmFtcDsmYW1wOyByZXQgIT0gLUVOT0RFViAmYW1wOyZhbXA7CiYjNDM7CSAgICAhdGVzdF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBjb3VudCYjNDM7JiM0MzsgJmx0OyA0KQogCQlydHdfZXJyKHJ0d2RldiwgJiMzNDt3cml0ZSByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXG4mIzM0OywKIAkJCWFkZHIsIHJldCk7CiAKQEAgLTExNzMsNiAmIzQzOzExNzgsNyBAQCBzdGF0aWMgYm9vbCBydHdfdXNiM19jaGlwX25ldyh1OCBjaGlwX2lkKQogc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpCiB7CiAJdTggaWQgPSBydHdkZXYtJmd0O2NoaXAtJmd0O2lkOwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKCFydHdfdXNiM19jaGlwX25ldyhpZCkgJmFtcDsmYW1wOyAhcnR3X3VzYjNfY2hpcF9vbGQoaWQpKQogCQlyZXR1cm4gMDsKQEAgLTExODksMTAgJiM0MzsxMTk1LDE2IEBAIHN0YXRpYyBpbnQgcnR3X3VzYl9zd2l0Y2hfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KQogCQlyZXR1cm4gMDsKIAl9CiAKJiM0MzsJc2V0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi0mZ3Q7ZmxhZ3MpOwomIzQzOwogCWlmIChydHdfdXNiM19jaGlwX29sZChpZCkpCi0JCXJldHVybiBydHdfdXNiX3N3aXRjaF9tb2RlX29sZChydHdkZXYpOwomIzQzOwkJcmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTsKIAllbHNlCi0JCXJldHVybiBydHdfdXNiX3N3aXRjaF9tb2RlX25ldyhydHdkZXYpOwomIzQzOwkJcmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXcocnR3ZGV2KTsKJiM0MzsKJiM0MzsJY2xlYXJfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LSZndDtmbGFncyk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKICNkZWZpbmUgVVNCX1JFR19QQUdFCTB4ZjQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDg4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVU0IgTW9kZSBTd2l0Y2ggUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFYCwgd2l0aGluIHRoZSBgcnR3X2ZsYWdzYCBlbnVtIGluIGBtYWluLmhgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHN1cHByZXNzaW5nIGVycm9yIG1lc3NhZ2VzIGR1cmluZyBhIFVTQiBtb2RlIHN3aXRjaCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4L3VzYi5jYCBmaWxlLCBpbnNpZGUgYHJ0d191c2JfcmVnX3NlY2AsIGBydHdfdXNiX3JlYWRgLCBhbmQgYHJ0d191c2Jfd3JpdGVgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBzaW1wbHkgYSBsb2dnaW5nIGNoYW5nZSDigJMgYSB3YXkgdG8gcHJldmVudCB0aGUga2VybmVsIGxvZ3MgZnJvbSBiZWluZyBmbG9vZGVkIGR1cmluZyB0aGUgbW9kZSBzd2l0Y2guIEJ1dCB3YWl0LCBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgaWYgdGhpcyBpcyBqdXN0IGEgbG9nZ2luZyBjaGFuZ2UuIEkgaGF2ZSB0byBsb29rIGF0IHRoZSBkaWZmLgoKTG9va2luZyBhdCB0aGUgZGlmZiwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgKm9ubHkqIGFmZmVjdHMgdGhlIGBydHdfZXJyYCBjYWxscy4gVGhlIGNvZGUgbm93IGNoZWNrcyB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyBiZWZvcmUgbG9nZ2luZyBhbiBlcnJvcjogaWYgdGhlIGZsYWcgaXMgc2V0LCB0aGUgZXJyb3IgaXNuJiMzOTt0IGxvZ2dlZC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgdGhlIG5vaXNlIGRvd24uIEhvd2V2ZXIsIEkgbmVlZCB0byBjYXJlZnVsbHkgc2NydXRpbml6ZSB0aGUgbG9naWMuIEkgYW0gY29uY2VybmVkIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGNvdW50JiM0MzsmIzQzOyAmbHQ7IDRgLiBPcmlnaW5hbGx5LCB0aGUgY29kZSB3YXMgb2YgdGhlIGZvcm0gYGlmIChyZXQgJmx0OyAwICZhbXA7JmFtcDsgcmV0ICE9IC1FTk9ERVYgJmFtcDsmYW1wOyBjb3VudCYjNDM7JiM0MzsgJmx0OyA0KWAuIE5vdyB0aGUgY29kZSBpcyBgaWYgKHJldCAmbHQ7IDAgJmFtcDsmYW1wOyByZXQgIT0gLUVOT0RFViAmYW1wOyZhbXA7ICF0ZXN0X2JpdCguLi4pICZhbXA7JmFtcDsgY291bnQmIzQzOyYjNDM7ICZsdDsgNClgLgoKQWhhISBJdCBsb29rcyBsaWtlLCBpZiB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyAqaXMqIHNldCwgdGhlbiB0aGUgYGNvdW50JiM0MzsmIzQzO2AgcGFydCBvZiB0aGUgc3RhdGVtZW50IHdpbGwgTk9UIGJlIGV2YWx1YXRlZC4gVGhpcyBpcyBiZWNhdXNlIGAhdGVzdF9iaXQoLi4uKWAgd2lsbCBldmFsdWF0ZSB0byBmYWxzZSwgd2hpY2ggc3RvcHMgdGhlIGVudGlyZSBgaWZgIHN0YXRlbWVudCBmcm9tIGV2YWx1YXRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUgYXMgaXQgY291bGQgYWZmZWN0IGhvdyBtYW55IHRpbWVzIHRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgYXJlIGF0dGVtcHRlZCBiZWZvcmUgZ2l2aW5nIHVwLCBhbmQgSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBzaWRlIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IgcHVyZWx5IGNvc21ldGljPwoKQW5kIHRoZW4gSSBzZWUsIGBjb3VudGAgaXMgYSBzdGF0aWMgdmFyaWFibGUgaW5zaWRlIG9mIGBydHdfdXNiX3JlYWRgIGFuZCBgcnR3X3VzYl93cml0ZWAuIEdpdmVuIHRoZSBzdGF0aWMgc2NvcGUgb2YgdGhlIGBjb3VudGAgdmFyaWFibGUsIHN1cHByZXNzaW5nIHRoZSBlcnJvciBtZXNzYWdlIGNvdWxkIGFsc28gY2hhbmdlIHRoZSBudW1iZXIgb2YgcmV0cmllcyBwZXJmb3JtZWQgZm9yIFVTQiByZWFkcyBhbmQgd3JpdGVzIGR1cmluZyB0aGUgbW9kZSBzd2l0Y2guIElzIHRoaXMgYSBkZWxpYmVyYXRlIGNoYW5nZT8gRG9lcyB0aGlzIGFmZmVjdCB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIHN3aXRjaCwgb3IgaXMgaXQgbWVyZWx5IG1hc2tpbmcgdHJhbnNpZW50IGVycm9ycyB0aGF0IGFyZSBleHBlY3RlZD8gSSYjMzk7ZCBiZXR0ZXIgcmV2aWV3IHRoZSByZWFkL3dyaXRlIGltcGxlbWVudGF0aW9ucyB0byBjb25maXJtIGhvdyB0aGlzIG1hdHRlcnMsIGFuZCBhc3Nlc3MgdGhlIGltcGFjdCBvbiBlcnJvciBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGF0aWMgaW50IGNvdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTczPXN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtNzktXHRpbnQgaWR4LCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjgwOlx0c3RhdGljIGludCBjb3VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYz0xMjM9c3RhdGljIHZvaWQgcnR3X3VzYl93cml0ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEyOS1cdGludCBpZHgsIHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTMwOlx0c3RhdGljIGludCBjb3VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTMxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4ODgKCQkJCQkJCW91dHB1dDogNzIKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogUGF0Y2gmIzM5O3MgRnV6emluZyBJbXBsaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgdGhpcyBvdmVyLiBUaGUgYGNvdW50YCB2YXJpYWJsZSBpcyBkZWZpbml0ZWx5IGFjdGluZyBhcyBhIHN0YXRpYyByYXRlIGxpbWl0ZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZS4gVGhlIGNvcmUgbG9naWMgaGVyZSBpcyB0aGF0IHdlJiMzOTtyZSAqY29uZGl0aW9uYWxseSogc2tpcHBpbmcgdGhlIGluY3JlbWVudCBvZiB0aGF0IHJhdGUtbGltaXQgY291bnRlciwgYGNvdW50JiM0MzsmIzQzO2AsIHdoZW4gYHRlc3RfYml0YCBpcyB0cnVlIChpbmRpY2F0aW5nIGEgVVNCIG1vZGUgc3dpdGNoKS4gVGhlIG5ldCByZXN1bHQ/IFdlJiMzOTtyZSBzdXBwcmVzc2luZyBzb21lIGVycm9yIGxvZ3MuCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBvbmx5IGEgbG9nZ2luZyBhZGp1c3RtZW50LiBJdCBpc24mIzM5O3QgY2hhbmdpbmcgaG93IHRoZSBkcml2ZXIgKmZ1bmN0aW9ucyouIFdlJiMzOTtyZSBub3QgYWx0ZXJpbmcgdGhlIGNvbnRyb2wgZmxvdywgYXBhcnQgZnJvbSBza2lwcGluZyB0aGUgbG9nZ2luZyBmdW5jdGlvbiAoYHJ0d19lcnJgKSBhbmQgdGhhdCBpbmNyZW1lbnQuIFRoZXJlZm9yZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIEkgZG9uJiMzOTt0IHNlZSBhbnkgdmFsdWUgaW4gZnV6emluZyB0aGlzLiBJdCB3b24mIzM5O3QgcmV2ZWFsIGFueSBuZXcgYnVncyBpbiB0aGUgY29yZSBkcml2ZXIgZXhlY3V0aW9uIHBhdGguCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjaGVja2VkIHRoZSB1c2FnZSBvZiBgUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFYC4gSXQmIzM5O3MgdXNlZCBvbmx5IGluIGEgZmV3IHBsYWNlcy4gVGhlIGZ1bmN0aW9ucyBgcnR3X3VzYl9zd2l0Y2hfbW9kZWAgYXJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGFuZCBjbGVhcmluZyB0aGUgZmxhZywgYW5kIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBydHdfdXNiX3N3aXRjaF9tb2RlX29sZGAgYW5kIGBydHdfdXNiX3N3aXRjaF9tb2RlX25ld2AgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGVpciBwcmV2aW91cyB2ZXJzaW9ucy4gU28sIGFsbCBpbmRpY2F0aW9ucyBwb2ludCB0byB0aGlzIGJlaW5nIHB1cmVseSBhIGxvZ2dpbmctcmVsYXRlZCBtb2RpZmljYXRpb24uCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzoxNzo0MS44NjYzNzc3NjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA5NjgyODkzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgc3VwcHJlc3NlcyBlcnJvciBsb2dnaW5nIChydHdfZXJyKSBkdXJpbmcgVVNCIG1vZGUgc3dpdGNoaW5nIGFuZCBwcmV2ZW50cyB0aGUgc3RhdGljIHJhdGUtbGltaXQgY291bnRlciBmcm9tIGJlaW5nIGluY3JlbWVudGVkLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGRyaXZlciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjQxLjg2NjM4NTU0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNDM1MDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQxMTU0ZWExNDg4MWNkOWQ2MDQzNjQzMGJiYzlhNTRmMmRmNDQ1ZjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6MTc6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaFxcbmluZGV4IGM2ZTk4MWJhNzk4NjguLjY4ODNmYmQ5Zjc2ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaFxcbkBAIC0zNzcsNiArMzc3LDcgQEAgZW51bSBydHdfZmxhZ3Mge1xcbiBcXHRSVFdfRkxBR19SRVNUQVJUSU5HLFxcbiBcXHRSVFdfRkxBR19SRVNUQVJUX1RSSUdHRVJJTkcsXFxuIFxcdFJUV19GTEFHX0ZPUkNFX0xPV0VTVF9SQVRFLFxcbitcXHRSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsXFxuIFxcbiBcXHROVU1fT0ZfUlRXX0ZMQUdTLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xcbmluZGV4IDY0ZTFjMzQyMGUwYTguLmUxM2ZhZWNmYjRiODcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNcXG5AQCAtNjQsNyArNjQsOCBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3JlZ19zZWMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIF9fbGUzMiAqZGF0YSlcXG4gXFx0XFx0XFx0XFx0IFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfV1JJVEUsXFxuIFxcdFxcdFxcdFxcdCB0X3JlZywgMCwgZGF0YSwgdF9sZW4sIDUwMCk7XFxuIFxcbi1cXHRpZiAoc3RhdHVzICE9IHRfbGVuIFxcdTAwMjZcXHUwMDI2IHN0YXR1cyAhPSAtRU5PREVWKVxcbitcXHRpZiAoc3RhdHVzICE9IHRfbGVuIFxcdTAwMjZcXHUwMDI2IHN0YXR1cyAhPSAtRU5PREVWIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhdGVzdF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXFx1MDAzZWZsYWdzKSlcXG4gXFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCIlczogcmVnIDB4JXgsIHVzYiB3cml0ZSAldSBmYWlsLCBzdGF0dXM6ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRfX2Z1bmNfXywgdF9yZWcsIHRfbGVuLCBzdGF0dXMpO1xcbiB9XFxuQEAgLTkwLDcgKzkxLDkgQEAgc3RhdGljIHUzMiBydHdfdXNiX3JlYWQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUxNiBsZW4pXFxuIFxcdHJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksXFxuIFxcdFxcdFxcdCAgICAgIFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfUkVBRCwgYWRkcixcXG4gXFx0XFx0XFx0ICAgICAgUlRXX1VTQl9WRU5RVF9DTURfSURYLCBkYXRhLCBsZW4sIDEwMDApO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVOT0RFViBcXHUwMDI2XFx1MDAyNiBjb3VudCsrIFxcdTAwM2MgNClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBjb3VudCsrIFxcdTAwM2MgNClcXG4gXFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJyZWFkIHJlZ2lzdGVyIDB4JXggZmFpbGVkIHdpdGggJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdGFkZHIsIHJldCk7XFxuIFxcbkBAIC0xNDAsNyArMTQzLDkgQEAgc3RhdGljIHZvaWQgcnR3X3VzYl93cml0ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCwgaW50IGxlbilcXG4gXFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSxcXG4gXFx0XFx0XFx0ICAgICAgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9XUklURSxcXG4gXFx0XFx0XFx0ICAgICAgYWRkciwgMCwgZGF0YSwgbGVuLCA1MDApO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVOT0RFViBcXHUwMDI2XFx1MDAyNiBjb3VudCsrIFxcdTAwM2MgNClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBjb3VudCsrIFxcdTAwM2MgNClcXG4gXFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJ3cml0ZSByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRhZGRyLCByZXQpO1xcbiBcXG5AQCAtMTE3Myw2ICsxMTc4LDcgQEAgc3RhdGljIGJvb2wgcnR3X3VzYjNfY2hpcF9uZXcodTggY2hpcF9pZClcXG4gc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0dTggaWQgPSBydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZWlkO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKCFydHdfdXNiM19jaGlwX25ldyhpZCkgXFx1MDAyNlxcdTAwMjYgIXJ0d191c2IzX2NoaXBfb2xkKGlkKSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuQEAgLTExODksMTAgKzExOTUsMTYgQEAgc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcbitcXHRzZXRfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVxcdTAwM2VmbGFncyk7XFxuK1xcbiBcXHRpZiAocnR3X3VzYjNfY2hpcF9vbGQoaWQpKVxcbi1cXHRcXHRyZXR1cm4gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcXG4rXFx0XFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRyZXR1cm4gcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXcocnR3ZGV2KTtcXG4rXFx0XFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXcocnR3ZGV2KTtcXG4rXFxuK1xcdGNsZWFyX2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gI2RlZmluZSBVU0JfUkVHX1BBR0VcXHQweGY0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjQzLjI5MTY3OTgxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE4NjcxNTAyMTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMTE1NGVhMTQ4ODFjZDlkNjA0MzY0MzBiYmM5YTU0ZjJkZjQ0NWYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6MTc6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5pbmRleCBjNmU5ODFiYTc5ODY4Li42ODgzZmJkOWY3NjgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5AQCAtMzc3LDYgKzM3Nyw3IEBAIGVudW0gcnR3X2ZsYWdzIHtcbiBcdFJUV19GTEFHX1JFU1RBUlRJTkcsXG4gXHRSVFdfRkxBR19SRVNUQVJUX1RSSUdHRVJJTkcsXG4gXHRSVFdfRkxBR19GT1JDRV9MT1dFU1RfUkFURSxcbitcdFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSxcbiBcbiBcdE5VTV9PRl9SVFdfRkxBR1MsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xuaW5kZXggNjRlMWMzNDIwZTBhOC4uZTEzZmFlY2ZiNGI4NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNcbkBAIC02NCw3ICs2NCw4IEBAIHN0YXRpYyB2b2lkIHJ0d191c2JfcmVnX3NlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgX19sZTMyICpkYXRhKVxuIFx0XHRcdFx0IFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfV1JJVEUsXG4gXHRcdFx0XHQgdF9yZWcsIDAsIGRhdGEsIHRfbGVuLCA1MDApO1xuIFxuLVx0aWYgKHN0YXR1cyAhPSB0X2xlbiBcdTAwMjZcdTAwMjYgc3RhdHVzICE9IC1FTk9ERVYpXG4rXHRpZiAoc3RhdHVzICE9IHRfbGVuIFx1MDAyNlx1MDAyNiBzdGF0dXMgIT0gLUVOT0RFViBcdTAwMjZcdTAwMjZcbitcdCAgICAhdGVzdF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpKVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCIlczogcmVnIDB4JXgsIHVzYiB3cml0ZSAldSBmYWlsLCBzdGF0dXM6ICVkXFxuXCIsXG4gXHRcdFx0X19mdW5jX18sIHRfcmVnLCB0X2xlbiwgc3RhdHVzKTtcbiB9XG5AQCAtOTAsNyArOTEsOSBAQCBzdGF0aWMgdTMyIHJ0d191c2JfcmVhZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTE2IGxlbilcbiBcdHJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksXG4gXHRcdFx0ICAgICAgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9SRUFELCBhZGRyLFxuIFx0XHRcdCAgICAgIFJUV19VU0JfVkVOUVRfQ01EX0lEWCwgZGF0YSwgbGVuLCAxMDAwKTtcbi1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU5PREVWIFx1MDAyNlx1MDAyNiBjb3VudCsrIFx1MDAzYyA0KVxuK1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICBjb3VudCsrIFx1MDAzYyA0KVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCJyZWFkIHJlZ2lzdGVyIDB4JXggZmFpbGVkIHdpdGggJWRcXG5cIixcbiBcdFx0XHRhZGRyLCByZXQpO1xuIFxuQEAgLTE0MCw3ICsxNDMsOSBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3dyaXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsLCBpbnQgbGVuKVxuIFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSxcbiBcdFx0XHQgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1dSSVRFLFxuIFx0XHRcdCAgICAgIGFkZHIsIDAsIGRhdGEsIGxlbiwgNTAwKTtcbi1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU5PREVWIFx1MDAyNlx1MDAyNiBjb3VudCsrIFx1MDAzYyA0KVxuK1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICBjb3VudCsrIFx1MDAzYyA0KVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCJ3cml0ZSByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXFxuXCIsXG4gXHRcdFx0YWRkciwgcmV0KTtcbiBcbkBAIC0xMTczLDYgKzExNzgsNyBAQCBzdGF0aWMgYm9vbCBydHdfdXNiM19jaGlwX25ldyh1OCBjaGlwX2lkKVxuIHN0YXRpYyBpbnQgcnR3X3VzYl9zd2l0Y2hfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuIHtcbiBcdHU4IGlkID0gcnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlaWQ7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFydHdfdXNiM19jaGlwX25ldyhpZCkgXHUwMDI2XHUwMDI2ICFydHdfdXNiM19jaGlwX29sZChpZCkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTExODksMTAgKzExOTUsMTYgQEAgc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuK1x0c2V0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cdTAwM2VmbGFncyk7XG4rXG4gXHRpZiAocnR3X3VzYjNfY2hpcF9vbGQoaWQpKVxuLVx0XHRyZXR1cm4gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcbitcdFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcbiBcdGVsc2Vcbi1cdFx0cmV0dXJuIHJ0d191c2Jfc3dpdGNoX21vZGVfbmV3KHJ0d2Rldik7XG4rXHRcdHJldCA9IHJ0d191c2Jfc3dpdGNoX21vZGVfbmV3KHJ0d2Rldik7XG4rXG4rXHRjbGVhcl9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gI2RlZmluZSBVU0JfUkVHX1BBR0VcdDB4ZjRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjQzLjI5MTY4MTY5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTkwODEzNjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBNb2RlIFN3aXRjaCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFYCwgd2l0aGluIHRoZSBgcnR3X2ZsYWdzYCBlbnVtIGluIGBtYWluLmhgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHN1cHByZXNzaW5nIGVycm9yIG1lc3NhZ2VzIGR1cmluZyBhIFVTQiBtb2RlIHN3aXRjaCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4L3VzYi5jYCBmaWxlLCBpbnNpZGUgYHJ0d191c2JfcmVnX3NlY2AsIGBydHdfdXNiX3JlYWRgLCBhbmQgYHJ0d191c2Jfd3JpdGVgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHNpbXBseSBhIGxvZ2dpbmcgY2hhbmdlIOKAkyBhIHdheSB0byBwcmV2ZW50IHRoZSBrZXJuZWwgbG9ncyBmcm9tIGJlaW5nIGZsb29kZWQgZHVyaW5nIHRoZSBtb2RlIHN3aXRjaC4gQnV0IHdhaXQsIEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGlzIGlzIGp1c3QgYSBsb2dnaW5nIGNoYW5nZS4gSSBoYXZlIHRvIGxvb2sgYXQgdGhlIGRpZmYuXG5cbkxvb2tpbmcgYXQgdGhlIGRpZmYsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgKm9ubHkqIGFmZmVjdHMgdGhlIGBydHdfZXJyYCBjYWxscy4gVGhlIGNvZGUgbm93IGNoZWNrcyB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyBiZWZvcmUgbG9nZ2luZyBhbiBlcnJvcjogaWYgdGhlIGZsYWcgaXMgc2V0LCB0aGUgZXJyb3IgaXNuJ3QgbG9nZ2VkLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwcyB0aGUgbm9pc2UgZG93bi4gSG93ZXZlciwgSSBuZWVkIHRvIGNhcmVmdWxseSBzY3J1dGluaXplIHRoZSBsb2dpYy4gSSBhbSBjb25jZXJuZWQgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgY291bnQrKyBcdTAwM2MgNGAuIE9yaWdpbmFsbHksIHRoZSBjb2RlIHdhcyBvZiB0aGUgZm9ybSBgaWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2IGNvdW50KysgXHUwMDNjIDQpYC4gTm93IHRoZSBjb2RlIGlzIGBpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVOT0RFViBcdTAwMjZcdTAwMjYgIXRlc3RfYml0KC4uLikgXHUwMDI2XHUwMDI2IGNvdW50KysgXHUwMDNjIDQpYC5cblxuQWhhISBJdCBsb29rcyBsaWtlLCBpZiB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyAqaXMqIHNldCwgdGhlbiB0aGUgYGNvdW50KytgIHBhcnQgb2YgdGhlIHN0YXRlbWVudCB3aWxsIE5PVCBiZSBldmFsdWF0ZWQuIFRoaXMgaXMgYmVjYXVzZSBgIXRlc3RfYml0KC4uLilgIHdpbGwgZXZhbHVhdGUgdG8gZmFsc2UsIHdoaWNoIHN0b3BzIHRoZSBlbnRpcmUgYGlmYCBzdGF0ZW1lbnQgZnJvbSBldmFsdWF0aW5nLiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlIGFzIGl0IGNvdWxkIGFmZmVjdCBob3cgbWFueSB0aW1lcyB0aGUgcmVhZC93cml0ZSBvcGVyYXRpb25zIGFyZSBhdHRlbXB0ZWQgYmVmb3JlIGdpdmluZyB1cCwgYW5kIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgc2lkZSBlZmZlY3RzIG9mIHRoaXMgY2hhbmdlLiBJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG9yIHB1cmVseSBjb3NtZXRpYz9cblxuQW5kIHRoZW4gSSBzZWUsIGBjb3VudGAgaXMgYSBzdGF0aWMgdmFyaWFibGUgaW5zaWRlIG9mIGBydHdfdXNiX3JlYWRgIGFuZCBgcnR3X3VzYl93cml0ZWAuIEdpdmVuIHRoZSBzdGF0aWMgc2NvcGUgb2YgdGhlIGBjb3VudGAgdmFyaWFibGUsIHN1cHByZXNzaW5nIHRoZSBlcnJvciBtZXNzYWdlIGNvdWxkIGFsc28gY2hhbmdlIHRoZSBudW1iZXIgb2YgcmV0cmllcyBwZXJmb3JtZWQgZm9yIFVTQiByZWFkcyBhbmQgd3JpdGVzIGR1cmluZyB0aGUgbW9kZSBzd2l0Y2guIElzIHRoaXMgYSBkZWxpYmVyYXRlIGNoYW5nZT8gRG9lcyB0aGlzIGFmZmVjdCB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIHN3aXRjaCwgb3IgaXMgaXQgbWVyZWx5IG1hc2tpbmcgdHJhbnNpZW50IGVycm9ycyB0aGF0IGFyZSBleHBlY3RlZD8gSSdkIGJldHRlciByZXZpZXcgdGhlIHJlYWQvd3JpdGUgaW1wbGVtZW50YXRpb25zIHRvIGNvbmZpcm0gaG93IHRoaXMgbWF0dGVycywgYW5kIGFzc2VzcyB0aGUgaW1wYWN0IG9uIGVycm9yIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTIxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6MTc6NTUuNDgyNTEwMDE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzQwOTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXRpYyBpbnQgY291bnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTczPXN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy03OS1cXHRpbnQgaWR4LCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYzo4MDpcXHRzdGF0aWMgaW50IGNvdW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTEyMz1zdGF0aWMgdm9pZCBydHdfdXNiX3dyaXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMjktXFx0aW50IGlkeCwgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTMwOlxcdHN0YXRpYyBpbnQgY291bnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjU1LjU0Mjg1NTc1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MjAyNzczOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogUGF0Y2gncyBGdXp6aW5nIEltcGxpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgdGhpcyBvdmVyLiBUaGUgYGNvdW50YCB2YXJpYWJsZSBpcyBkZWZpbml0ZWx5IGFjdGluZyBhcyBhIHN0YXRpYyByYXRlIGxpbWl0ZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZS4gVGhlIGNvcmUgbG9naWMgaGVyZSBpcyB0aGF0IHdlJ3JlICpjb25kaXRpb25hbGx5KiBza2lwcGluZyB0aGUgaW5jcmVtZW50IG9mIHRoYXQgcmF0ZS1saW1pdCBjb3VudGVyLCBgY291bnQrK2AsIHdoZW4gYHRlc3RfYml0YCBpcyB0cnVlIChpbmRpY2F0aW5nIGEgVVNCIG1vZGUgc3dpdGNoKS4gVGhlIG5ldCByZXN1bHQ/IFdlJ3JlIHN1cHByZXNzaW5nIHNvbWUgZXJyb3IgbG9ncy5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgb25seSBhIGxvZ2dpbmcgYWRqdXN0bWVudC4gSXQgaXNuJ3QgY2hhbmdpbmcgaG93IHRoZSBkcml2ZXIgKmZ1bmN0aW9ucyouIFdlJ3JlIG5vdCBhbHRlcmluZyB0aGUgY29udHJvbCBmbG93LCBhcGFydCBmcm9tIHNraXBwaW5nIHRoZSBsb2dnaW5nIGZ1bmN0aW9uIChgcnR3X2VycmApIGFuZCB0aGF0IGluY3JlbWVudC4gVGhlcmVmb3JlLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgSSBkb24ndCBzZWUgYW55IHZhbHVlIGluIGZ1enppbmcgdGhpcy4gSXQgd29uJ3QgcmV2ZWFsIGFueSBuZXcgYnVncyBpbiB0aGUgY29yZSBkcml2ZXIgZXhlY3V0aW9uIHBhdGguXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGNoZWNrZWQgdGhlIHVzYWdlIG9mIGBSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREVgLiBJdCdzIHVzZWQgb25seSBpbiBhIGZldyBwbGFjZXMuIFRoZSBmdW5jdGlvbnMgYHJ0d191c2Jfc3dpdGNoX21vZGVgIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBhbmQgY2xlYXJpbmcgdGhlIGZsYWcsIGFuZCB0aGUgcmV0dXJuIHZhbHVlcyBvZiBgcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGRgIGFuZCBgcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXdgIGFyZSBjb25zaXN0ZW50IHdpdGggdGhlaXIgcHJldmlvdXMgdmVyc2lvbnMuIFNvLCBhbGwgaW5kaWNhdGlvbnMgcG9pbnQgdG8gdGhpcyBiZWluZyBwdXJlbHkgYSBsb2dnaW5nLXJlbGF0ZWQgbW9kaWZpY2F0aW9uLlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODgsIk91dHB1dFRva2VucyI6NzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6MTg6MDEuOTYzMTQ4NzQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzoxODowMS45NjMxODQ0NThaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowlnck7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 06:36:20 +0000 UTC FinishedAt: 2026-08-17 07:18:03 +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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBzdXBwcmVzc2VzIGVycm9yIGxvZ2dpbmcgKHJ0d19lcnIpIGR1cmluZyBVU0IgbW9kZSBzd2l0Y2hpbmcgYW5kIHByZXZlbnRzIHRoZSBzdGF0aWMgcmF0ZS1saW1pdCBjb3VudGVyIGZyb20gYmVpbmcgaW5jcmVtZW50ZWQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQxMTU0ZWExNDg4MWNkOWQ2MDQzNjQzMGJiYzlhNTRmMmRmNDQ1ZjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwNzoxNzo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5pbmRleCBjNmU5ODFiYTc5ODY4Li42ODgzZmJkOWY3NjgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5AQCAtMzc3LDYgJiM0MzszNzcsNyBAQCBlbnVtIHJ0d19mbGFncyB7XG4gXHRSVFdfRkxBR19SRVNUQVJUSU5HLFxuIFx0UlRXX0ZMQUdfUkVTVEFSVF9UUklHR0VSSU5HLFxuIFx0UlRXX0ZMQUdfRk9SQ0VfTE9XRVNUX1JBVEUsXG4mIzQzO1x0UlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLFxuIFxuIFx0TlVNX09GX1JUV19GTEFHUyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jXG5pbmRleCA2NGUxYzM0MjBlMGE4Li5lMTNmYWVjZmI0Yjg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xuQEAgLTY0LDcgJiM0Mzs2NCw4IEBAIHN0YXRpYyB2b2lkIHJ0d191c2JfcmVnX3NlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgX19sZTMyICpkYXRhKVxuIFx0XHRcdFx0IFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfV1JJVEUsXG4gXHRcdFx0XHQgdF9yZWcsIDAsIGRhdGEsIHRfbGVuLCA1MDApO1xuIFxuLVx0aWYgKHN0YXR1cyAhPSB0X2xlbiBcdTAwMjZcdTAwMjYgc3RhdHVzICE9IC1FTk9ERVYpXG4mIzQzO1x0aWYgKHN0YXR1cyAhPSB0X2xlbiBcdTAwMjZcdTAwMjYgc3RhdHVzICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cdTAwM2VmbGFncykpXG4gXHRcdHJ0d19lcnIocnR3ZGV2LCBcJiMzNDslczogcmVnIDB4JXgsIHVzYiB3cml0ZSAldSBmYWlsLCBzdGF0dXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdF9fZnVuY19fLCB0X3JlZywgdF9sZW4sIHN0YXR1cyk7XG4gfVxuQEAgLTkwLDcgJiM0Mzs5MSw5IEBAIHN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKVxuIFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSxcbiBcdFx0XHQgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1JFQUQsIGFkZHIsXG4gXHRcdFx0ICAgICAgUlRXX1VTQl9WRU5RVF9DTURfSURYLCBkYXRhLCBsZW4sIDEwMDApO1xuLVx0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2IGNvdW50JiM0MzsmIzQzOyBcdTAwM2MgNClcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVOT0RFViBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgY291bnQmIzQzOyYjNDM7IFx1MDAzYyA0KVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCYjMzQ7cmVhZCByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXFxuXCYjMzQ7LFxuIFx0XHRcdGFkZHIsIHJldCk7XG4gXG5AQCAtMTQwLDcgJiM0MzsxNDMsOSBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3dyaXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsLCBpbnQgbGVuKVxuIFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSxcbiBcdFx0XHQgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1dSSVRFLFxuIFx0XHRcdCAgICAgIGFkZHIsIDAsIGRhdGEsIGxlbiwgNTAwKTtcbi1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU5PREVWIFx1MDAyNlx1MDAyNiBjb3VudCYjNDM7JiM0MzsgXHUwMDNjIDQpXG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGNvdW50JiM0MzsmIzQzOyBcdTAwM2MgNClcbiBcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O3dyaXRlIHJlZ2lzdGVyIDB4JXggZmFpbGVkIHdpdGggJWRcXG5cJiMzNDssXG4gXHRcdFx0YWRkciwgcmV0KTtcbiBcbkBAIC0xMTczLDYgJiM0MzsxMTc4LDcgQEAgc3RhdGljIGJvb2wgcnR3X3VzYjNfY2hpcF9uZXcodTggY2hpcF9pZClcbiBzdGF0aWMgaW50IHJ0d191c2Jfc3dpdGNoX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbiB7XG4gXHR1OCBpZCA9IHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZWlkO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRpZiAoIXJ0d191c2IzX2NoaXBfbmV3KGlkKSBcdTAwMjZcdTAwMjYgIXJ0d191c2IzX2NoaXBfb2xkKGlkKSlcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMTE4OSwxMCAmIzQzOzExOTUsMTYgQEAgc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuJiM0MztcdHNldF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcbiBcdGlmIChydHdfdXNiM19jaGlwX29sZChpZCkpXG4tXHRcdHJldHVybiBydHdfdXNiX3N3aXRjaF9tb2RlX29sZChydHdkZXYpO1xuJiM0MztcdFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcbiBcdGVsc2Vcbi1cdFx0cmV0dXJuIHJ0d191c2Jfc3dpdGNoX21vZGVfbmV3KHJ0d2Rldik7XG4mIzQzO1x0XHRyZXQgPSBydHdfdXNiX3N3aXRjaF9tb2RlX25ldyhydHdkZXYpO1xuJiM0MztcbiYjNDM7XHRjbGVhcl9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiAjZGVmaW5lIFVTQl9SRUdfUEFHRVx0MHhmNFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDExNTRlYTE0ODgxY2Q5ZDYwNDM2NDMwYmJjOWE1NGYyZGY0NDVmMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDA3OjE3OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaAppbmRleCBjNmU5ODFiYTc5ODY4Li42ODgzZmJkOWY3NjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaApAQCAtMzc3LDYgJiM0MzszNzcsNyBAQCBlbnVtIHJ0d19mbGFncyB7CiAJUlRXX0ZMQUdfUkVTVEFSVElORywKIAlSVFdfRkxBR19SRVNUQVJUX1RSSUdHRVJJTkcsCiAJUlRXX0ZMQUdfRk9SQ0VfTE9XRVNUX1JBVEUsCiYjNDM7CVJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwKIAogCU5VTV9PRl9SVFdfRkxBR1MsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMKaW5kZXggNjRlMWMzNDIwZTBhOC4uZTEzZmFlY2ZiNGI4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jCkBAIC02NCw3ICYjNDM7NjQsOCBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3JlZ19zZWMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIF9fbGUzMiAqZGF0YSkKIAkJCQkgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9XUklURSwKIAkJCQkgdF9yZWcsIDAsIGRhdGEsIHRfbGVuLCA1MDApOwogCi0JaWYgKHN0YXR1cyAhPSB0X2xlbiAmYW1wOyZhbXA7IHN0YXR1cyAhPSAtRU5PREVWKQomIzQzOwlpZiAoc3RhdHVzICE9IHRfbGVuICZhbXA7JmFtcDsgc3RhdHVzICE9IC1FTk9ERVYgJmFtcDsmYW1wOwomIzQzOwkgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LSZndDtmbGFncykpCiAJCXJ0d19lcnIocnR3ZGV2LCAmIzM0OyVzOiByZWcgMHgleCwgdXNiIHdyaXRlICV1IGZhaWwsIHN0YXR1czogJWRcbiYjMzQ7LAogCQkJX19mdW5jX18sIHRfcmVnLCB0X2xlbiwgc3RhdHVzKTsKIH0KQEAgLTkwLDcgJiM0Mzs5MSw5IEBAIHN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKQogCXJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksCiAJCQkgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1JFQUQsIGFkZHIsCiAJCQkgICAgICBSVFdfVVNCX1ZFTlFUX0NNRF9JRFgsIGRhdGEsIGxlbiwgMTAwMCk7Ci0JaWYgKHJldCAmbHQ7IDAgJmFtcDsmYW1wOyByZXQgIT0gLUVOT0RFViAmYW1wOyZhbXA7IGNvdW50JiM0MzsmIzQzOyAmbHQ7IDQpCiYjNDM7CWlmIChyZXQgJmx0OyAwICZhbXA7JmFtcDsgcmV0ICE9IC1FTk9ERVYgJmFtcDsmYW1wOwomIzQzOwkgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgY291bnQmIzQzOyYjNDM7ICZsdDsgNCkKIAkJcnR3X2VycihydHdkZXYsICYjMzQ7cmVhZCByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXG4mIzM0OywKIAkJCWFkZHIsIHJldCk7CiAKQEAgLTE0MCw3ICYjNDM7MTQzLDkgQEAgc3RhdGljIHZvaWQgcnR3X3VzYl93cml0ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCwgaW50IGxlbikKIAlyZXQgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3NuZGN0cmxwaXBlKHVkZXYsIDApLAogCQkJICAgICAgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9XUklURSwKIAkJCSAgICAgIGFkZHIsIDAsIGRhdGEsIGxlbiwgNTAwKTsKLQlpZiAocmV0ICZsdDsgMCAmYW1wOyZhbXA7IHJldCAhPSAtRU5PREVWICZhbXA7JmFtcDsgY291bnQmIzQzOyYjNDM7ICZsdDsgNCkKJiM0MzsJaWYgKHJldCAmbHQ7IDAgJmFtcDsmYW1wOyByZXQgIT0gLUVOT0RFViAmYW1wOyZhbXA7CiYjNDM7CSAgICAhdGVzdF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBjb3VudCYjNDM7JiM0MzsgJmx0OyA0KQogCQlydHdfZXJyKHJ0d2RldiwgJiMzNDt3cml0ZSByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXG4mIzM0OywKIAkJCWFkZHIsIHJldCk7CiAKQEAgLTExNzMsNiAmIzQzOzExNzgsNyBAQCBzdGF0aWMgYm9vbCBydHdfdXNiM19jaGlwX25ldyh1OCBjaGlwX2lkKQogc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpCiB7CiAJdTggaWQgPSBydHdkZXYtJmd0O2NoaXAtJmd0O2lkOwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKCFydHdfdXNiM19jaGlwX25ldyhpZCkgJmFtcDsmYW1wOyAhcnR3X3VzYjNfY2hpcF9vbGQoaWQpKQogCQlyZXR1cm4gMDsKQEAgLTExODksMTAgJiM0MzsxMTk1LDE2IEBAIHN0YXRpYyBpbnQgcnR3X3VzYl9zd2l0Y2hfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KQogCQlyZXR1cm4gMDsKIAl9CiAKJiM0MzsJc2V0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi0mZ3Q7ZmxhZ3MpOwomIzQzOwogCWlmIChydHdfdXNiM19jaGlwX29sZChpZCkpCi0JCXJldHVybiBydHdfdXNiX3N3aXRjaF9tb2RlX29sZChydHdkZXYpOwomIzQzOwkJcmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTsKIAllbHNlCi0JCXJldHVybiBydHdfdXNiX3N3aXRjaF9tb2RlX25ldyhydHdkZXYpOwomIzQzOwkJcmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXcocnR3ZGV2KTsKJiM0MzsKJiM0MzsJY2xlYXJfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LSZndDtmbGFncyk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKICNkZWZpbmUgVVNCX1JFR19QQUdFCTB4ZjQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDg4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVU0IgTW9kZSBTd2l0Y2ggUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFYCwgd2l0aGluIHRoZSBgcnR3X2ZsYWdzYCBlbnVtIGluIGBtYWluLmhgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHN1cHByZXNzaW5nIGVycm9yIG1lc3NhZ2VzIGR1cmluZyBhIFVTQiBtb2RlIHN3aXRjaCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4L3VzYi5jYCBmaWxlLCBpbnNpZGUgYHJ0d191c2JfcmVnX3NlY2AsIGBydHdfdXNiX3JlYWRgLCBhbmQgYHJ0d191c2Jfd3JpdGVgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBzaW1wbHkgYSBsb2dnaW5nIGNoYW5nZSDigJMgYSB3YXkgdG8gcHJldmVudCB0aGUga2VybmVsIGxvZ3MgZnJvbSBiZWluZyBmbG9vZGVkIGR1cmluZyB0aGUgbW9kZSBzd2l0Y2guIEJ1dCB3YWl0LCBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgaWYgdGhpcyBpcyBqdXN0IGEgbG9nZ2luZyBjaGFuZ2UuIEkgaGF2ZSB0byBsb29rIGF0IHRoZSBkaWZmLgoKTG9va2luZyBhdCB0aGUgZGlmZiwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgKm9ubHkqIGFmZmVjdHMgdGhlIGBydHdfZXJyYCBjYWxscy4gVGhlIGNvZGUgbm93IGNoZWNrcyB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyBiZWZvcmUgbG9nZ2luZyBhbiBlcnJvcjogaWYgdGhlIGZsYWcgaXMgc2V0LCB0aGUgZXJyb3IgaXNuJiMzOTt0IGxvZ2dlZC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgdGhlIG5vaXNlIGRvd24uIEhvd2V2ZXIsIEkgbmVlZCB0byBjYXJlZnVsbHkgc2NydXRpbml6ZSB0aGUgbG9naWMuIEkgYW0gY29uY2VybmVkIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGNvdW50JiM0MzsmIzQzOyAmbHQ7IDRgLiBPcmlnaW5hbGx5LCB0aGUgY29kZSB3YXMgb2YgdGhlIGZvcm0gYGlmIChyZXQgJmx0OyAwICZhbXA7JmFtcDsgcmV0ICE9IC1FTk9ERVYgJmFtcDsmYW1wOyBjb3VudCYjNDM7JiM0MzsgJmx0OyA0KWAuIE5vdyB0aGUgY29kZSBpcyBgaWYgKHJldCAmbHQ7IDAgJmFtcDsmYW1wOyByZXQgIT0gLUVOT0RFViAmYW1wOyZhbXA7ICF0ZXN0X2JpdCguLi4pICZhbXA7JmFtcDsgY291bnQmIzQzOyYjNDM7ICZsdDsgNClgLgoKQWhhISBJdCBsb29rcyBsaWtlLCBpZiB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyAqaXMqIHNldCwgdGhlbiB0aGUgYGNvdW50JiM0MzsmIzQzO2AgcGFydCBvZiB0aGUgc3RhdGVtZW50IHdpbGwgTk9UIGJlIGV2YWx1YXRlZC4gVGhpcyBpcyBiZWNhdXNlIGAhdGVzdF9iaXQoLi4uKWAgd2lsbCBldmFsdWF0ZSB0byBmYWxzZSwgd2hpY2ggc3RvcHMgdGhlIGVudGlyZSBgaWZgIHN0YXRlbWVudCBmcm9tIGV2YWx1YXRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUgYXMgaXQgY291bGQgYWZmZWN0IGhvdyBtYW55IHRpbWVzIHRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgYXJlIGF0dGVtcHRlZCBiZWZvcmUgZ2l2aW5nIHVwLCBhbmQgSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBzaWRlIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IgcHVyZWx5IGNvc21ldGljPwoKQW5kIHRoZW4gSSBzZWUsIGBjb3VudGAgaXMgYSBzdGF0aWMgdmFyaWFibGUgaW5zaWRlIG9mIGBydHdfdXNiX3JlYWRgIGFuZCBgcnR3X3VzYl93cml0ZWAuIEdpdmVuIHRoZSBzdGF0aWMgc2NvcGUgb2YgdGhlIGBjb3VudGAgdmFyaWFibGUsIHN1cHByZXNzaW5nIHRoZSBlcnJvciBtZXNzYWdlIGNvdWxkIGFsc28gY2hhbmdlIHRoZSBudW1iZXIgb2YgcmV0cmllcyBwZXJmb3JtZWQgZm9yIFVTQiByZWFkcyBhbmQgd3JpdGVzIGR1cmluZyB0aGUgbW9kZSBzd2l0Y2guIElzIHRoaXMgYSBkZWxpYmVyYXRlIGNoYW5nZT8gRG9lcyB0aGlzIGFmZmVjdCB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIHN3aXRjaCwgb3IgaXMgaXQgbWVyZWx5IG1hc2tpbmcgdHJhbnNpZW50IGVycm9ycyB0aGF0IGFyZSBleHBlY3RlZD8gSSYjMzk7ZCBiZXR0ZXIgcmV2aWV3IHRoZSByZWFkL3dyaXRlIGltcGxlbWVudGF0aW9ucyB0byBjb25maXJtIGhvdyB0aGlzIG1hdHRlcnMsIGFuZCBhc3Nlc3MgdGhlIGltcGFjdCBvbiBlcnJvciBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGF0aWMgaW50IGNvdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTczPXN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtNzktXHRpbnQgaWR4LCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjgwOlx0c3RhdGljIGludCBjb3VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYz0xMjM9c3RhdGljIHZvaWQgcnR3X3VzYl93cml0ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEyOS1cdGludCBpZHgsIHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTMwOlx0c3RhdGljIGludCBjb3VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTMxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4ODgKCQkJCQkJCW91dHB1dDogNzIKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogUGF0Y2gmIzM5O3MgRnV6emluZyBJbXBsaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgdGhpcyBvdmVyLiBUaGUgYGNvdW50YCB2YXJpYWJsZSBpcyBkZWZpbml0ZWx5IGFjdGluZyBhcyBhIHN0YXRpYyByYXRlIGxpbWl0ZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZS4gVGhlIGNvcmUgbG9naWMgaGVyZSBpcyB0aGF0IHdlJiMzOTtyZSAqY29uZGl0aW9uYWxseSogc2tpcHBpbmcgdGhlIGluY3JlbWVudCBvZiB0aGF0IHJhdGUtbGltaXQgY291bnRlciwgYGNvdW50JiM0MzsmIzQzO2AsIHdoZW4gYHRlc3RfYml0YCBpcyB0cnVlIChpbmRpY2F0aW5nIGEgVVNCIG1vZGUgc3dpdGNoKS4gVGhlIG5ldCByZXN1bHQ/IFdlJiMzOTtyZSBzdXBwcmVzc2luZyBzb21lIGVycm9yIGxvZ3MuCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBvbmx5IGEgbG9nZ2luZyBhZGp1c3RtZW50LiBJdCBpc24mIzM5O3QgY2hhbmdpbmcgaG93IHRoZSBkcml2ZXIgKmZ1bmN0aW9ucyouIFdlJiMzOTtyZSBub3QgYWx0ZXJpbmcgdGhlIGNvbnRyb2wgZmxvdywgYXBhcnQgZnJvbSBza2lwcGluZyB0aGUgbG9nZ2luZyBmdW5jdGlvbiAoYHJ0d19lcnJgKSBhbmQgdGhhdCBpbmNyZW1lbnQuIFRoZXJlZm9yZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIEkgZG9uJiMzOTt0IHNlZSBhbnkgdmFsdWUgaW4gZnV6emluZyB0aGlzLiBJdCB3b24mIzM5O3QgcmV2ZWFsIGFueSBuZXcgYnVncyBpbiB0aGUgY29yZSBkcml2ZXIgZXhlY3V0aW9uIHBhdGguCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjaGVja2VkIHRoZSB1c2FnZSBvZiBgUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFYC4gSXQmIzM5O3MgdXNlZCBvbmx5IGluIGEgZmV3IHBsYWNlcy4gVGhlIGZ1bmN0aW9ucyBgcnR3X3VzYl9zd2l0Y2hfbW9kZWAgYXJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGFuZCBjbGVhcmluZyB0aGUgZmxhZywgYW5kIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBydHdfdXNiX3N3aXRjaF9tb2RlX29sZGAgYW5kIGBydHdfdXNiX3N3aXRjaF9tb2RlX25ld2AgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGVpciBwcmV2aW91cyB2ZXJzaW9ucy4gU28sIGFsbCBpbmRpY2F0aW9ucyBwb2ludCB0byB0aGlzIGJlaW5nIHB1cmVseSBhIGxvZ2dpbmctcmVsYXRlZCBtb2RpZmljYXRpb24uCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzoxNzo0MS44NjYzNzc3NjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA5NjgyODkzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgc3VwcHJlc3NlcyBlcnJvciBsb2dnaW5nIChydHdfZXJyKSBkdXJpbmcgVVNCIG1vZGUgc3dpdGNoaW5nIGFuZCBwcmV2ZW50cyB0aGUgc3RhdGljIHJhdGUtbGltaXQgY291bnRlciBmcm9tIGJlaW5nIGluY3JlbWVudGVkLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGRyaXZlciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjQxLjg2NjM4NTU0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNDM1MDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQxMTU0ZWExNDg4MWNkOWQ2MDQzNjQzMGJiYzlhNTRmMmRmNDQ1ZjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6MTc6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaFxcbmluZGV4IGM2ZTk4MWJhNzk4NjguLjY4ODNmYmQ5Zjc2ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaFxcbkBAIC0zNzcsNiArMzc3LDcgQEAgZW51bSBydHdfZmxhZ3Mge1xcbiBcXHRSVFdfRkxBR19SRVNUQVJUSU5HLFxcbiBcXHRSVFdfRkxBR19SRVNUQVJUX1RSSUdHRVJJTkcsXFxuIFxcdFJUV19GTEFHX0ZPUkNFX0xPV0VTVF9SQVRFLFxcbitcXHRSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsXFxuIFxcbiBcXHROVU1fT0ZfUlRXX0ZMQUdTLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xcbmluZGV4IDY0ZTFjMzQyMGUwYTguLmUxM2ZhZWNmYjRiODcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNcXG5AQCAtNjQsNyArNjQsOCBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3JlZ19zZWMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIF9fbGUzMiAqZGF0YSlcXG4gXFx0XFx0XFx0XFx0IFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfV1JJVEUsXFxuIFxcdFxcdFxcdFxcdCB0X3JlZywgMCwgZGF0YSwgdF9sZW4sIDUwMCk7XFxuIFxcbi1cXHRpZiAoc3RhdHVzICE9IHRfbGVuIFxcdTAwMjZcXHUwMDI2IHN0YXR1cyAhPSAtRU5PREVWKVxcbitcXHRpZiAoc3RhdHVzICE9IHRfbGVuIFxcdTAwMjZcXHUwMDI2IHN0YXR1cyAhPSAtRU5PREVWIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhdGVzdF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXFx1MDAzZWZsYWdzKSlcXG4gXFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCIlczogcmVnIDB4JXgsIHVzYiB3cml0ZSAldSBmYWlsLCBzdGF0dXM6ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRfX2Z1bmNfXywgdF9yZWcsIHRfbGVuLCBzdGF0dXMpO1xcbiB9XFxuQEAgLTkwLDcgKzkxLDkgQEAgc3RhdGljIHUzMiBydHdfdXNiX3JlYWQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUxNiBsZW4pXFxuIFxcdHJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksXFxuIFxcdFxcdFxcdCAgICAgIFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfUkVBRCwgYWRkcixcXG4gXFx0XFx0XFx0ICAgICAgUlRXX1VTQl9WRU5RVF9DTURfSURYLCBkYXRhLCBsZW4sIDEwMDApO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVOT0RFViBcXHUwMDI2XFx1MDAyNiBjb3VudCsrIFxcdTAwM2MgNClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBjb3VudCsrIFxcdTAwM2MgNClcXG4gXFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJyZWFkIHJlZ2lzdGVyIDB4JXggZmFpbGVkIHdpdGggJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdGFkZHIsIHJldCk7XFxuIFxcbkBAIC0xNDAsNyArMTQzLDkgQEAgc3RhdGljIHZvaWQgcnR3X3VzYl93cml0ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCwgaW50IGxlbilcXG4gXFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSxcXG4gXFx0XFx0XFx0ICAgICAgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9XUklURSxcXG4gXFx0XFx0XFx0ICAgICAgYWRkciwgMCwgZGF0YSwgbGVuLCA1MDApO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVOT0RFViBcXHUwMDI2XFx1MDAyNiBjb3VudCsrIFxcdTAwM2MgNClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBjb3VudCsrIFxcdTAwM2MgNClcXG4gXFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJ3cml0ZSByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRhZGRyLCByZXQpO1xcbiBcXG5AQCAtMTE3Myw2ICsxMTc4LDcgQEAgc3RhdGljIGJvb2wgcnR3X3VzYjNfY2hpcF9uZXcodTggY2hpcF9pZClcXG4gc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0dTggaWQgPSBydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZWlkO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKCFydHdfdXNiM19jaGlwX25ldyhpZCkgXFx1MDAyNlxcdTAwMjYgIXJ0d191c2IzX2NoaXBfb2xkKGlkKSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuQEAgLTExODksMTAgKzExOTUsMTYgQEAgc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcbitcXHRzZXRfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVxcdTAwM2VmbGFncyk7XFxuK1xcbiBcXHRpZiAocnR3X3VzYjNfY2hpcF9vbGQoaWQpKVxcbi1cXHRcXHRyZXR1cm4gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcXG4rXFx0XFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRyZXR1cm4gcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXcocnR3ZGV2KTtcXG4rXFx0XFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXcocnR3ZGV2KTtcXG4rXFxuK1xcdGNsZWFyX2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gI2RlZmluZSBVU0JfUkVHX1BBR0VcXHQweGY0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjQzLjI5MTY3OTgxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE4NjcxNTAyMTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMTE1NGVhMTQ4ODFjZDlkNjA0MzY0MzBiYmM5YTU0ZjJkZjQ0NWYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6MTc6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5pbmRleCBjNmU5ODFiYTc5ODY4Li42ODgzZmJkOWY3NjgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oXG5AQCAtMzc3LDYgKzM3Nyw3IEBAIGVudW0gcnR3X2ZsYWdzIHtcbiBcdFJUV19GTEFHX1JFU1RBUlRJTkcsXG4gXHRSVFdfRkxBR19SRVNUQVJUX1RSSUdHRVJJTkcsXG4gXHRSVFdfRkxBR19GT1JDRV9MT1dFU1RfUkFURSxcbitcdFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSxcbiBcbiBcdE5VTV9PRl9SVFdfRkxBR1MsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1xuaW5kZXggNjRlMWMzNDIwZTBhOC4uZTEzZmFlY2ZiNGI4NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNcbkBAIC02NCw3ICs2NCw4IEBAIHN0YXRpYyB2b2lkIHJ0d191c2JfcmVnX3NlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgX19sZTMyICpkYXRhKVxuIFx0XHRcdFx0IFJUV19VU0JfQ01EX1JFUSwgUlRXX1VTQl9DTURfV1JJVEUsXG4gXHRcdFx0XHQgdF9yZWcsIDAsIGRhdGEsIHRfbGVuLCA1MDApO1xuIFxuLVx0aWYgKHN0YXR1cyAhPSB0X2xlbiBcdTAwMjZcdTAwMjYgc3RhdHVzICE9IC1FTk9ERVYpXG4rXHRpZiAoc3RhdHVzICE9IHRfbGVuIFx1MDAyNlx1MDAyNiBzdGF0dXMgIT0gLUVOT0RFViBcdTAwMjZcdTAwMjZcbitcdCAgICAhdGVzdF9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpKVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCIlczogcmVnIDB4JXgsIHVzYiB3cml0ZSAldSBmYWlsLCBzdGF0dXM6ICVkXFxuXCIsXG4gXHRcdFx0X19mdW5jX18sIHRfcmVnLCB0X2xlbiwgc3RhdHVzKTtcbiB9XG5AQCAtOTAsNyArOTEsOSBAQCBzdGF0aWMgdTMyIHJ0d191c2JfcmVhZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTE2IGxlbilcbiBcdHJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksXG4gXHRcdFx0ICAgICAgUlRXX1VTQl9DTURfUkVRLCBSVFdfVVNCX0NNRF9SRUFELCBhZGRyLFxuIFx0XHRcdCAgICAgIFJUV19VU0JfVkVOUVRfQ01EX0lEWCwgZGF0YSwgbGVuLCAxMDAwKTtcbi1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU5PREVWIFx1MDAyNlx1MDAyNiBjb3VudCsrIFx1MDAzYyA0KVxuK1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICBjb3VudCsrIFx1MDAzYyA0KVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCJyZWFkIHJlZ2lzdGVyIDB4JXggZmFpbGVkIHdpdGggJWRcXG5cIixcbiBcdFx0XHRhZGRyLCByZXQpO1xuIFxuQEAgLTE0MCw3ICsxNDMsOSBAQCBzdGF0aWMgdm9pZCBydHdfdXNiX3dyaXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsLCBpbnQgbGVuKVxuIFx0cmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSxcbiBcdFx0XHQgICAgICBSVFdfVVNCX0NNRF9SRVEsIFJUV19VU0JfQ01EX1dSSVRFLFxuIFx0XHRcdCAgICAgIGFkZHIsIDAsIGRhdGEsIGxlbiwgNTAwKTtcbi1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU5PREVWIFx1MDAyNlx1MDAyNiBjb3VudCsrIFx1MDAzYyA0KVxuK1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERSwgcnR3ZGV2LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICBjb3VudCsrIFx1MDAzYyA0KVxuIFx0XHRydHdfZXJyKHJ0d2RldiwgXCJ3cml0ZSByZWdpc3RlciAweCV4IGZhaWxlZCB3aXRoICVkXFxuXCIsXG4gXHRcdFx0YWRkciwgcmV0KTtcbiBcbkBAIC0xMTczLDYgKzExNzgsNyBAQCBzdGF0aWMgYm9vbCBydHdfdXNiM19jaGlwX25ldyh1OCBjaGlwX2lkKVxuIHN0YXRpYyBpbnQgcnR3X3VzYl9zd2l0Y2hfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuIHtcbiBcdHU4IGlkID0gcnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlaWQ7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKCFydHdfdXNiM19jaGlwX25ldyhpZCkgXHUwMDI2XHUwMDI2ICFydHdfdXNiM19jaGlwX29sZChpZCkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTExODksMTAgKzExOTUsMTYgQEAgc3RhdGljIGludCBydHdfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuK1x0c2V0X2JpdChSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREUsIHJ0d2Rldi1cdTAwM2VmbGFncyk7XG4rXG4gXHRpZiAocnR3X3VzYjNfY2hpcF9vbGQoaWQpKVxuLVx0XHRyZXR1cm4gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcbitcdFx0cmV0ID0gcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGQocnR3ZGV2KTtcbiBcdGVsc2Vcbi1cdFx0cmV0dXJuIHJ0d191c2Jfc3dpdGNoX21vZGVfbmV3KHJ0d2Rldik7XG4rXHRcdHJldCA9IHJ0d191c2Jfc3dpdGNoX21vZGVfbmV3KHJ0d2Rldik7XG4rXG4rXHRjbGVhcl9iaXQoUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFLCBydHdkZXYtXHUwMDNlZmxhZ3MpO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gI2RlZmluZSBVU0JfUkVHX1BBR0VcdDB4ZjRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjQzLjI5MTY4MTY5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTkwODEzNjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBNb2RlIFN3aXRjaCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgUlRXX0ZMQUdfU1dJVENISU5HX1VTQl9NT0RFYCwgd2l0aGluIHRoZSBgcnR3X2ZsYWdzYCBlbnVtIGluIGBtYWluLmhgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHN1cHByZXNzaW5nIGVycm9yIG1lc3NhZ2VzIGR1cmluZyBhIFVTQiBtb2RlIHN3aXRjaCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4L3VzYi5jYCBmaWxlLCBpbnNpZGUgYHJ0d191c2JfcmVnX3NlY2AsIGBydHdfdXNiX3JlYWRgLCBhbmQgYHJ0d191c2Jfd3JpdGVgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHNpbXBseSBhIGxvZ2dpbmcgY2hhbmdlIOKAkyBhIHdheSB0byBwcmV2ZW50IHRoZSBrZXJuZWwgbG9ncyBmcm9tIGJlaW5nIGZsb29kZWQgZHVyaW5nIHRoZSBtb2RlIHN3aXRjaC4gQnV0IHdhaXQsIEkgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGlzIGlzIGp1c3QgYSBsb2dnaW5nIGNoYW5nZS4gSSBoYXZlIHRvIGxvb2sgYXQgdGhlIGRpZmYuXG5cbkxvb2tpbmcgYXQgdGhlIGRpZmYsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgKm9ubHkqIGFmZmVjdHMgdGhlIGBydHdfZXJyYCBjYWxscy4gVGhlIGNvZGUgbm93IGNoZWNrcyB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyBiZWZvcmUgbG9nZ2luZyBhbiBlcnJvcjogaWYgdGhlIGZsYWcgaXMgc2V0LCB0aGUgZXJyb3IgaXNuJ3QgbG9nZ2VkLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwcyB0aGUgbm9pc2UgZG93bi4gSG93ZXZlciwgSSBuZWVkIHRvIGNhcmVmdWxseSBzY3J1dGluaXplIHRoZSBsb2dpYy4gSSBhbSBjb25jZXJuZWQgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgY291bnQrKyBcdTAwM2MgNGAuIE9yaWdpbmFsbHksIHRoZSBjb2RlIHdhcyBvZiB0aGUgZm9ybSBgaWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FTk9ERVYgXHUwMDI2XHUwMDI2IGNvdW50KysgXHUwMDNjIDQpYC4gTm93IHRoZSBjb2RlIGlzIGBpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVOT0RFViBcdTAwMjZcdTAwMjYgIXRlc3RfYml0KC4uLikgXHUwMDI2XHUwMDI2IGNvdW50KysgXHUwMDNjIDQpYC5cblxuQWhhISBJdCBsb29rcyBsaWtlLCBpZiB0aGUgYFJUV19GTEFHX1NXSVRDSElOR19VU0JfTU9ERWAgZmxhZyAqaXMqIHNldCwgdGhlbiB0aGUgYGNvdW50KytgIHBhcnQgb2YgdGhlIHN0YXRlbWVudCB3aWxsIE5PVCBiZSBldmFsdWF0ZWQuIFRoaXMgaXMgYmVjYXVzZSBgIXRlc3RfYml0KC4uLilgIHdpbGwgZXZhbHVhdGUgdG8gZmFsc2UsIHdoaWNoIHN0b3BzIHRoZSBlbnRpcmUgYGlmYCBzdGF0ZW1lbnQgZnJvbSBldmFsdWF0aW5nLiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlIGFzIGl0IGNvdWxkIGFmZmVjdCBob3cgbWFueSB0aW1lcyB0aGUgcmVhZC93cml0ZSBvcGVyYXRpb25zIGFyZSBhdHRlbXB0ZWQgYmVmb3JlIGdpdmluZyB1cCwgYW5kIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgc2lkZSBlZmZlY3RzIG9mIHRoaXMgY2hhbmdlLiBJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG9yIHB1cmVseSBjb3NtZXRpYz9cblxuQW5kIHRoZW4gSSBzZWUsIGBjb3VudGAgaXMgYSBzdGF0aWMgdmFyaWFibGUgaW5zaWRlIG9mIGBydHdfdXNiX3JlYWRgIGFuZCBgcnR3X3VzYl93cml0ZWAuIEdpdmVuIHRoZSBzdGF0aWMgc2NvcGUgb2YgdGhlIGBjb3VudGAgdmFyaWFibGUsIHN1cHByZXNzaW5nIHRoZSBlcnJvciBtZXNzYWdlIGNvdWxkIGFsc28gY2hhbmdlIHRoZSBudW1iZXIgb2YgcmV0cmllcyBwZXJmb3JtZWQgZm9yIFVTQiByZWFkcyBhbmQgd3JpdGVzIGR1cmluZyB0aGUgbW9kZSBzd2l0Y2guIElzIHRoaXMgYSBkZWxpYmVyYXRlIGNoYW5nZT8gRG9lcyB0aGlzIGFmZmVjdCB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIHN3aXRjaCwgb3IgaXMgaXQgbWVyZWx5IG1hc2tpbmcgdHJhbnNpZW50IGVycm9ycyB0aGF0IGFyZSBleHBlY3RlZD8gSSdkIGJldHRlciByZXZpZXcgdGhlIHJlYWQvd3JpdGUgaW1wbGVtZW50YXRpb25zIHRvIGNvbmZpcm0gaG93IHRoaXMgbWF0dGVycywgYW5kIGFzc2VzcyB0aGUgaW1wYWN0IG9uIGVycm9yIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTIxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6MTc6NTUuNDgyNTEwMDE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzQwOTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXRpYyBpbnQgY291bnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTczPXN0YXRpYyB1MzIgcnR3X3VzYl9yZWFkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy03OS1cXHRpbnQgaWR4LCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYzo4MDpcXHRzdGF0aWMgaW50IGNvdW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTEyMz1zdGF0aWMgdm9pZCBydHdfdXNiX3dyaXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMjktXFx0aW50IGlkeCwgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTMwOlxcdHN0YXRpYyBpbnQgY291bnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjE3OjU1LjU0Mjg1NTc1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MjAyNzczOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogUGF0Y2gncyBGdXp6aW5nIEltcGxpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgdGhpcyBvdmVyLiBUaGUgYGNvdW50YCB2YXJpYWJsZSBpcyBkZWZpbml0ZWx5IGFjdGluZyBhcyBhIHN0YXRpYyByYXRlIGxpbWl0ZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZS4gVGhlIGNvcmUgbG9naWMgaGVyZSBpcyB0aGF0IHdlJ3JlICpjb25kaXRpb25hbGx5KiBza2lwcGluZyB0aGUgaW5jcmVtZW50IG9mIHRoYXQgcmF0ZS1saW1pdCBjb3VudGVyLCBgY291bnQrK2AsIHdoZW4gYHRlc3RfYml0YCBpcyB0cnVlIChpbmRpY2F0aW5nIGEgVVNCIG1vZGUgc3dpdGNoKS4gVGhlIG5ldCByZXN1bHQ/IFdlJ3JlIHN1cHByZXNzaW5nIHNvbWUgZXJyb3IgbG9ncy5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgb25seSBhIGxvZ2dpbmcgYWRqdXN0bWVudC4gSXQgaXNuJ3QgY2hhbmdpbmcgaG93IHRoZSBkcml2ZXIgKmZ1bmN0aW9ucyouIFdlJ3JlIG5vdCBhbHRlcmluZyB0aGUgY29udHJvbCBmbG93LCBhcGFydCBmcm9tIHNraXBwaW5nIHRoZSBsb2dnaW5nIGZ1bmN0aW9uIChgcnR3X2VycmApIGFuZCB0aGF0IGluY3JlbWVudC4gVGhlcmVmb3JlLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgSSBkb24ndCBzZWUgYW55IHZhbHVlIGluIGZ1enppbmcgdGhpcy4gSXQgd29uJ3QgcmV2ZWFsIGFueSBuZXcgYnVncyBpbiB0aGUgY29yZSBkcml2ZXIgZXhlY3V0aW9uIHBhdGguXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGNoZWNrZWQgdGhlIHVzYWdlIG9mIGBSVFdfRkxBR19TV0lUQ0hJTkdfVVNCX01PREVgLiBJdCdzIHVzZWQgb25seSBpbiBhIGZldyBwbGFjZXMuIFRoZSBmdW5jdGlvbnMgYHJ0d191c2Jfc3dpdGNoX21vZGVgIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBhbmQgY2xlYXJpbmcgdGhlIGZsYWcsIGFuZCB0aGUgcmV0dXJuIHZhbHVlcyBvZiBgcnR3X3VzYl9zd2l0Y2hfbW9kZV9vbGRgIGFuZCBgcnR3X3VzYl9zd2l0Y2hfbW9kZV9uZXdgIGFyZSBjb25zaXN0ZW50IHdpdGggdGhlaXIgcHJldmlvdXMgdmVyc2lvbnMuIFNvLCBhbGwgaW5kaWNhdGlvbnMgcG9pbnQgdG8gdGhpcyBiZWluZyBwdXJlbHkgYSBsb2dnaW5nLXJlbGF0ZWQgbW9kaWZpY2F0aW9uLlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODgsIk91dHB1dFRva2VucyI6NzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6MTg6MDEuOTYzMTQ4NzQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHN1cHByZXNzZXMgZXJyb3IgbG9nZ2luZyAocnR3X2VycikgZHVyaW5nIFVTQiBtb2RlIHN3aXRjaGluZyBhbmQgcHJldmVudHMgdGhlIHN0YXRpYyByYXRlLWxpbWl0IGNvdW50ZXIgZnJvbSBiZWluZyBpbmNyZW1lbnRlZC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzoxODowMS45NjMxODQ0NThaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowlnck7[1] Phase: Running StartedAt: 2026-08-17 07:18:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlnck7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-17 07:18:13 +0000 UTC FinishedAt: 2026-08-17 07:18:19 +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,}