Name: series-workflow8tn5l Phase: Failed StartedAt: 2026-08-13 21:47:30 +0000 UTC FinishedAt: 2026-08-13 22:12:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tn5l[0] Phase: Succeeded StartedAt: 2026-08-13 21:47:30 +0000 UTC FinishedAt: 2026-08-13 22:12:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tn5l[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 21:47:30 +0000 UTC FinishedAt: 2026-08-13 22:12:06 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDIyOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNzExNjhlOGU5YmY5YjIwOWIyNTNmOTk0MmZjODNiYmNkMDFlOWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMjI6MTE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmNcbmluZGV4IGI3YzE4ZDU5MGI5OTMuLjM3ZTJjZjI0OWJlOGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXG5AQCAtMTAsNiAmIzQzOzEwLDE3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7Y2dyb3VwX2l0ZXJfbWVtY2cuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Nncm91cF9pdGVyX21lbWNnLnNrZWwuaFwmIzM0O1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBtZW1jZyBzdGF0cyBhcmUgY2FjaGVkIHBlci1jcHUgYW5kIG9ubHkgYmVjb21lIHZpc2libGUgb25jZSB0aGUgcGVyaW9kaWNcbiYjNDM7ICogZmx1c2hlciBydW5zIChGTFVTSF9USU1FLCAycyksIG9yIG9uY2UgcGVuZGluZyB1cGRhdGVzIGNyb3NzXG4mIzQzOyAqIE1FTUNHX0NIQVJHRV9CQVRDSCAqIG51bV9vbmxpbmVfY3B1cygpLiBUaGF0IHRocmVzaG9sZCBncm93cyB3aXRoIHRoZSBDUFVcbiYjNDM7ICogY291bnQsIHNvIG9uIGEgbGFyZ2UgbWFjaGluZSBhIHNpbmdsZSBwYXNzIGRvZXMgbm90IHJlYWNoIGl0IGFuZFxuJiM0MzsgKiBicGZfbWVtX2Nncm91cF9mbHVzaF9zdGF0cygpIHJldHVybnMgd2l0aG91dCBmbHVzaGluZyBhbnl0aGluZy4gUmV0cnkgZm9yXG4mIzQzOyAqIGxvbmcgZW5vdWdoIHRvIGNvdmVyIGEgZmx1c2hlciBjeWNsZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTUVNQ0dfU1RBVF9SRVRSSUVTXHRcdDE2XG4mIzQzOyNkZWZpbmUgTUVNQ0dfU1RBVF9SRVRSWV9ERUxBWV9VU1x0KDI1MCAqIDEwMDApXG4mIzQzO1xuIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4ge1xuIFx0aW50IGZkLCByZXQgPSAwO1xuQEAgLTM1LDExICYjNDM7NDYsMTMgQEAgc3RhdGljIGludCByZWFkX3N0YXRzKHN0cnVjdCBicGZfbGluayAqbGluaylcbiBcbiBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIHtcbiYjNDM7XHRpbnQgcmV0cmllcyA9IDA7XG4gXHR2b2lkICptYXA7XG4gXHRzaXplX3QgbGVuO1xuIFxuIFx0bGVuID0gc3lzY29uZihfU0NfUEFHRVNJWkUpICogMTAyNDtcbiBcbiYjNDM7cmV0cnk6XG4gXHQvKlxuIFx0ICogSW5jcmVhc2UgbWVtY2cgYW5vbiB1c2FnZSBieSBtYXBwaW5nIGFuZCB3cml0aW5nXG4gXHQgKiB0byBhIG5ldyBhbm9uIHJlZ2lvbi5cbkBAIC01Myw2ICYjNDM7NjYsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9hbm9uKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFwmIzM0O3JlYWQgc3RhdHNcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4mIzQzO1x0aWYgKCFtZW1jZ19xdWVyeS1cdTAwM2Vucl9hbm9uX21hcHBlZCBcdTAwMjZcdTAwMjYgJiM0MzsmIzQzO3JldHJpZXMgXHUwMDNjIE1FTUNHX1NUQVRfUkVUUklFUykge1xuJiM0MztcdFx0bXVubWFwKG1hcCwgbGVuKTtcbiYjNDM7XHRcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9hbm9uX21hcHBlZCwgMCwgXCYjMzQ7ZmluYWwgYW5vbiBtYXBwZWQgdmFsXCYjMzQ7KTtcbiBcbiBjbGVhbnVwOlxuQEAgLTYxLDYgJiM0Mzs4MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4gXG4gc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiB7XG4mIzQzO1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcdGNoYXIgKnBhdGg7XG5AQCAtNzYsNiAmIzQzOzk2LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGZkID0gb3BlbihwYXRoLCBPX0NSRUFUIHwgT19SRFdSLCAwNjQ0KTtcbiBcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcJiMzNDtvcGVuIGZkXCYjMzQ7KSlcbiBcdFx0cmV0dXJuO1xuJiM0MztyZXRyeTpcbiBcdGlmICghQVNTRVJUX09LKGZ0cnVuY2F0ZShmZCwgbGVuKSwgXCYjMzQ7ZnRydW5jYXRlXCYjMzQ7KSlcbiBcdFx0Z290byBjbGVhbnVwX2ZkO1xuIFxuQEAgLTg4LDYgJiM0MzsxMDksMTMgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFwmIzM0O3JlYWQgc3RhdHNcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXBfbWFwO1xuIFxuJiM0MztcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlbnJfZmlsZV9wYWdlcyBcdTAwMjZcdTAwMjYgIW1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfbWFwcGVkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAmIzQzOyYjNDM7cmV0cmllcyBcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XG4mIzQzO1x0XHRtdW5tYXAobWFwLCBsZW4pO1xuJiM0MztcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuJiM0MztcdFx0Z290byByZXRyeTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfcGFnZXMsIDAsIFwmIzM0O2ZpbmFsIGZpbGUgdmFsdWVcJiMzNDspO1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfbWFwcGVkLCAwLCBcJiMzNDtmaW5hbCBmaWxlIG1hcHBlZCB2YWx1ZVwmIzM0Oyk7XG4gXG5AQCAtMTAwLDYgJiM0MzsxMjgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIHtcbiYjNDM7XHRpbnQgcmV0cmllcyA9IDA7XG4gXHRzaXplX3QgbGVuO1xuIFx0aW50IGZkO1xuIFxuQEAgLTExMywxMiAmIzQzOzE0MiwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcJiMzNDttZW1mZF9jcmVhdGVcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO3JldHJ5OlxuIFx0aWYgKCFBU1NFUlRfT0soZmFsbG9jYXRlKGZkLCAwLCAwLCBsZW4pLCBcJiMzNDtmYWxsb2NhdGVcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4gXHRpZiAoIUFTU0VSVF9PSyhyZWFkX3N0YXRzKGxpbmspLCBcJiMzNDtyZWFkIHN0YXRzXCYjMzQ7KSlcbiBcdFx0Z290byBjbGVhbnVwO1xuIFxuJiM0MztcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlbnJfc2htZW0gXHUwMDI2XHUwMDI2ICYjNDM7JiM0MztyZXRyaWVzIFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcbiYjNDM7XHRcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9zaG1lbSwgMCwgXCYjMzQ7ZmluYWwgc2htZW0gdmFsdWVcJiMzNDspO1xuIFxuIGNsZWFudXA6XG5AQCAtMTI3LDExICYjNDM7MTYyLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuJiM0MztcdGludCByZXRyaWVzID0gMDtcbiBcdHZvaWQgKm1hcDtcbiBcdHNpemVfdCBsZW47XG4gXG4gXHRsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0O1xuIFxuJiM0MztyZXRyeTpcbiBcdC8qIENyZWF0ZSByZWdpb24gdG8gdXNlIGZvciB0cmlnZ2VyaW5nIGEgcGFnZSBmYXVsdC4gKi9cbiBcdG1hcCA9IG1tYXAoTlVMTCwgbGVuLCBQUk9UX1dSSVRFLCBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTtcbiBcdGlmICghQVNTRVJUX05FUShtYXAsIE1BUF9GQUlMRUQsIFwmIzM0O21tYXAgYW5vblwmIzM0OykpXG5AQCAtMTQzLDYgJiM0MzsxODAsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9wZ2ZhdWx0KHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFwmIzM0O3JlYWQgc3RhdHNcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4mIzQzO1x0aWYgKCFtZW1jZ19xdWVyeS1cdTAwM2VwZ2ZhdWx0IFx1MDAyNlx1MDAyNiAmIzQzOyYjNDM7cmV0cmllcyBcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XG4mIzQzO1x0XHRtdW5tYXAobWFwLCBsZW4pO1xuJiM0MztcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuJiM0MztcdFx0Z290byByZXRyeTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZXBnZmF1bHQsIDAsIFwmIzM0O2ZpbmFsIHBnZmF1bHQgdmFsXCYjMzQ7KTtcbiBcbiBjbGVhbnVwOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIyOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3MTE2OGU4ZTliZjliMjA5YjI1M2Y5OTQyZmM4M2JiY2QwMWU5YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAyMjoxMTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jCmluZGV4IGI3YzE4ZDU5MGI5OTMuLjM3ZTJjZjI0OWJlOGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYwpAQCAtMTAsNiAmIzQzOzEwLDE3IEBACiAjaW5jbHVkZSAmIzM0O2Nncm91cF9pdGVyX21lbWNnLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtjZ3JvdXBfaXRlcl9tZW1jZy5za2VsLmgmIzM0OwogCiYjNDM7LyoKJiM0MzsgKiBtZW1jZyBzdGF0cyBhcmUgY2FjaGVkIHBlci1jcHUgYW5kIG9ubHkgYmVjb21lIHZpc2libGUgb25jZSB0aGUgcGVyaW9kaWMKJiM0MzsgKiBmbHVzaGVyIHJ1bnMgKEZMVVNIX1RJTUUsIDJzKSwgb3Igb25jZSBwZW5kaW5nIHVwZGF0ZXMgY3Jvc3MKJiM0MzsgKiBNRU1DR19DSEFSR0VfQkFUQ0ggKiBudW1fb25saW5lX2NwdXMoKS4gVGhhdCB0aHJlc2hvbGQgZ3Jvd3Mgd2l0aCB0aGUgQ1BVCiYjNDM7ICogY291bnQsIHNvIG9uIGEgbGFyZ2UgbWFjaGluZSBhIHNpbmdsZSBwYXNzIGRvZXMgbm90IHJlYWNoIGl0IGFuZAomIzQzOyAqIGJwZl9tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKCkgcmV0dXJucyB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nLiBSZXRyeSBmb3IKJiM0MzsgKiBsb25nIGVub3VnaCB0byBjb3ZlciBhIGZsdXNoZXIgY3ljbGUuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBNRU1DR19TVEFUX1JFVFJJRVMJCTE2CiYjNDM7I2RlZmluZSBNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTCSgyNTAgKiAxMDAwKQomIzQzOwogc3RhdGljIGludCByZWFkX3N0YXRzKHN0cnVjdCBicGZfbGluayAqbGluaykKIHsKIAlpbnQgZmQsIHJldCA9IDA7CkBAIC0zNSwxMSAmIzQzOzQ2LDEzIEBAIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspCiAKIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiB7CiYjNDM7CWludCByZXRyaWVzID0gMDsKIAl2b2lkICptYXA7CiAJc2l6ZV90IGxlbjsKIAogCWxlbiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAqIDEwMjQ7CiAKJiM0MztyZXRyeToKIAkvKgogCSAqIEluY3JlYXNlIG1lbWNnIGFub24gdXNhZ2UgYnkgbWFwcGluZyBhbmQgd3JpdGluZwogCSAqIHRvIGEgbmV3IGFub24gcmVnaW9uLgpAQCAtNTMsNiAmIzQzOzY2LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAJaWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgJiMzNDtyZWFkIHN0YXRzJiMzNDspKQogCQlnb3RvIGNsZWFudXA7CiAKJiM0MzsJaWYgKCFtZW1jZ19xdWVyeS0mZ3Q7bnJfYW5vbl9tYXBwZWQgJmFtcDsmYW1wOyAmIzQzOyYjNDM7cmV0cmllcyAmbHQ7IE1FTUNHX1NUQVRfUkVUUklFUykgewomIzQzOwkJbXVubWFwKG1hcCwgbGVuKTsKJiM0MzsJCXVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTsKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CX0KJiM0MzsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX2Fub25fbWFwcGVkLCAwLCAmIzM0O2ZpbmFsIGFub24gbWFwcGVkIHZhbCYjMzQ7KTsKIAogY2xlYW51cDoKQEAgLTYxLDYgJiM0Mzs4MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAKIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiB7CiYjNDM7CWludCByZXRyaWVzID0gMDsKIAl2b2lkICptYXA7CiAJc2l6ZV90IGxlbjsKIAljaGFyICpwYXRoOwpAQCAtNzYsNiAmIzQzOzk2LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSkKIAlmZCA9IG9wZW4ocGF0aCwgT19DUkVBVCB8IE9fUkRXUiwgMDY0NCk7CiAJaWYgKCFBU1NFUlRfT0tfRkQoZmQsICYjMzQ7b3BlbiBmZCYjMzQ7KSkKIAkJcmV0dXJuOwomIzQzO3JldHJ5OgogCWlmICghQVNTRVJUX09LKGZ0cnVuY2F0ZShmZCwgbGVuKSwgJiMzNDtmdHJ1bmNhdGUmIzM0OykpCiAJCWdvdG8gY2xlYW51cF9mZDsKIApAQCAtODgsNiAmIzQzOzEwOSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogCWlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksICYjMzQ7cmVhZCBzdGF0cyYjMzQ7KSkKIAkJZ290byBjbGVhbnVwX21hcDsKIAomIzQzOwlpZiAoIW1lbWNnX3F1ZXJ5LSZndDtucl9maWxlX3BhZ2VzICZhbXA7JmFtcDsgIW1lbWNnX3F1ZXJ5LSZndDtucl9maWxlX21hcHBlZCAmYW1wOyZhbXA7CiYjNDM7CSAgICAmIzQzOyYjNDM7cmV0cmllcyAmbHQ7IE1FTUNHX1NUQVRfUkVUUklFUykgewomIzQzOwkJbXVubWFwKG1hcCwgbGVuKTsKJiM0MzsJCXVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTsKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CX0KJiM0MzsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX2ZpbGVfcGFnZXMsIDAsICYjMzQ7ZmluYWwgZmlsZSB2YWx1ZSYjMzQ7KTsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX2ZpbGVfbWFwcGVkLCAwLCAmIzM0O2ZpbmFsIGZpbGUgbWFwcGVkIHZhbHVlJiMzNDspOwogCkBAIC0xMDAsNiAmIzQzOzEyOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAKIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogewomIzQzOwlpbnQgcmV0cmllcyA9IDA7CiAJc2l6ZV90IGxlbjsKIAlpbnQgZmQ7CiAKQEAgLTExMywxMiAmIzQzOzE0MiwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSkKIAlpZiAoIUFTU0VSVF9PS19GRChmZCwgJiMzNDttZW1mZF9jcmVhdGUmIzM0OykpCiAJCXJldHVybjsKIAomIzQzO3JldHJ5OgogCWlmICghQVNTRVJUX09LKGZhbGxvY2F0ZShmZCwgMCwgMCwgbGVuKSwgJiMzNDtmYWxsb2NhdGUmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIAogCWlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksICYjMzQ7cmVhZCBzdGF0cyYjMzQ7KSkKIAkJZ290byBjbGVhbnVwOwogCiYjNDM7CWlmICghbWVtY2dfcXVlcnktJmd0O25yX3NobWVtICZhbXA7JmFtcDsgJiM0MzsmIzQzO3JldHJpZXMgJmx0OyBNRU1DR19TVEFUX1JFVFJJRVMpIHsKJiM0MzsJCXVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTsKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CX0KJiM0MzsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX3NobWVtLCAwLCAmIzM0O2ZpbmFsIHNobWVtIHZhbHVlJiMzNDspOwogCiBjbGVhbnVwOgpAQCAtMTI3LDExICYjNDM7MTYyLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogCiBzdGF0aWMgdm9pZCB0ZXN0X3BnZmF1bHQoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogewomIzQzOwlpbnQgcmV0cmllcyA9IDA7CiAJdm9pZCAqbWFwOwogCXNpemVfdCBsZW47CiAKIAlsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0OwogCiYjNDM7cmV0cnk6CiAJLyogQ3JlYXRlIHJlZ2lvbiB0byB1c2UgZm9yIHRyaWdnZXJpbmcgYSBwYWdlIGZhdWx0LiAqLwogCW1hcCA9IG1tYXAoTlVMTCwgbGVuLCBQUk9UX1dSSVRFLCBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKIAlpZiAoIUFTU0VSVF9ORVEobWFwLCBNQVBfRkFJTEVELCAmIzM0O21tYXAgYW5vbiYjMzQ7KSkKQEAgLTE0Myw2ICYjNDM7MTgwLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAJaWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgJiMzNDtyZWFkIHN0YXRzJiMzNDspKQogCQlnb3RvIGNsZWFudXA7CiAKJiM0MzsJaWYgKCFtZW1jZ19xdWVyeS0mZ3Q7cGdmYXVsdCAmYW1wOyZhbXA7ICYjNDM7JiM0MztyZXRyaWVzICZsdDsgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7CiYjNDM7CQltdW5tYXAobWFwLCBsZW4pOwomIzQzOwkJdXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpOwomIzQzOwkJZ290byByZXRyeTsKJiM0MzsJfQomIzQzOwogCUFTU0VSVF9HVChtZW1jZ19xdWVyeS0mZ3Q7cGdmYXVsdCwgMCwgJiMzNDtmaW5hbCBwZ2ZhdWx0IHZhbCYjMzQ7KTsKIAogY2xlYW51cDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MwoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRhcmdldGVkIGF0IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jYC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBhYm91dCBhZGRpbmcgcmV0cmllcyB3aXRoaW4gYSBCUEYgc2VsZnRlc3QgdG8gaGFuZGxlIHBvdGVudGlhbCB0aW1pbmcgaXNzdWVzIG9yIHRyYW5zaWVudCBjb25kaXRpb25zIHdoZW4gcmVhZGluZyBtZW1jZyBzdGF0cy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBzZWUgaW1tZWRpYXRlbHkgdGhhdCB0aGlzIGlzIGEgKnRlc3Qtc3BlY2lmaWMqIG1vZGlmaWNhdGlvbi4gSXQgZG9lc24mIzM5O3QgdG91Y2ggYW55IGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgb3IgYW55IGNvZGUgdGhhdCBhZmZlY3RzIGhvdyBtZW1jZyBzdGF0cyBhcmUgKmNhbGN1bGF0ZWQqIG9yICp1c2VkKiBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uIEl0JiMzOTtzIHB1cmVseSBhbiBpbXByb3ZlbWVudCB0byB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSB0byBtYWtlIHRoZSB0ZXN0cyBtb3JlIHJvYnVzdC4gVGhlcmVmb3JlLCBzaW5jZSB0aGUgcGF0Y2ggb25seSBpbXBhY3RzIGEgc2VsZnRlc3QsIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0byBjb25zaWRlciBmb3IgZnV6emluZyBhdCB0aGlzIHRpbWUuIEkgd2lsbCwgd2l0aCBjb25maWRlbmNlLCBmbGFnIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIyOjExOjQ5LjEwNzQwOTQyMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTcxNjAyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjI6MTE6NDkuMTA3NDE1NTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTAwMTE3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNzExNjhlOGU5YmY5YjIwOWIyNTNmOTk0MmZjODNiYmNkMDFlOWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDIyOjExOjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXFxuaW5kZXggYjdjMThkNTkwYjk5My4uMzdlMmNmMjQ5YmU4YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuY1xcbkBAIC0xMCw2ICsxMCwxNyBAQFxcbiAjaW5jbHVkZSBcXFwiY2dyb3VwX2l0ZXJfbWVtY2cuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImNncm91cF9pdGVyX21lbWNnLnNrZWwuaFxcXCJcXG4gXFxuKy8qXFxuKyAqIG1lbWNnIHN0YXRzIGFyZSBjYWNoZWQgcGVyLWNwdSBhbmQgb25seSBiZWNvbWUgdmlzaWJsZSBvbmNlIHRoZSBwZXJpb2RpY1xcbisgKiBmbHVzaGVyIHJ1bnMgKEZMVVNIX1RJTUUsIDJzKSwgb3Igb25jZSBwZW5kaW5nIHVwZGF0ZXMgY3Jvc3NcXG4rICogTUVNQ0dfQ0hBUkdFX0JBVENIICogbnVtX29ubGluZV9jcHVzKCkuIFRoYXQgdGhyZXNob2xkIGdyb3dzIHdpdGggdGhlIENQVVxcbisgKiBjb3VudCwgc28gb24gYSBsYXJnZSBtYWNoaW5lIGEgc2luZ2xlIHBhc3MgZG9lcyBub3QgcmVhY2ggaXQgYW5kXFxuKyAqIGJwZl9tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKCkgcmV0dXJucyB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nLiBSZXRyeSBmb3JcXG4rICogbG9uZyBlbm91Z2ggdG8gY292ZXIgYSBmbHVzaGVyIGN5Y2xlLlxcbisgKi9cXG4rI2RlZmluZSBNRU1DR19TVEFUX1JFVFJJRVNcXHRcXHQxNlxcbisjZGVmaW5lIE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVNcXHQoMjUwICogMTAwMClcXG4rXFxuIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuIHtcXG4gXFx0aW50IGZkLCByZXQgPSAwO1xcbkBAIC0zNSwxMSArNDYsMTMgQEAgc3RhdGljIGludCByZWFkX3N0YXRzKHN0cnVjdCBicGZfbGluayAqbGluaylcXG4gXFxuIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIHtcXG4rXFx0aW50IHJldHJpZXMgPSAwO1xcbiBcXHR2b2lkICptYXA7XFxuIFxcdHNpemVfdCBsZW47XFxuIFxcbiBcXHRsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0O1xcbiBcXG4rcmV0cnk6XFxuIFxcdC8qXFxuIFxcdCAqIEluY3JlYXNlIG1lbWNnIGFub24gdXNhZ2UgYnkgbWFwcGluZyBhbmQgd3JpdGluZ1xcbiBcXHQgKiB0byBhIG5ldyBhbm9uIHJlZ2lvbi5cXG5AQCAtNTMsNiArNjYsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9hbm9uKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXFxcInJlYWQgc3RhdHNcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4rXFx0aWYgKCFtZW1jZ19xdWVyeS1cXHUwMDNlbnJfYW5vbl9tYXBwZWQgXFx1MDAyNlxcdTAwMjYgKytyZXRyaWVzIFxcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XFxuK1xcdFxcdG11bm1hcChtYXAsIGxlbik7XFxuK1xcdFxcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rXFx0fVxcbitcXG4gXFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9hbm9uX21hcHBlZCwgMCwgXFxcImZpbmFsIGFub24gbWFwcGVkIHZhbFxcXCIpO1xcbiBcXG4gY2xlYW51cDpcXG5AQCAtNjEsNiArODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxcbiBcXG4gc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4ge1xcbitcXHRpbnQgcmV0cmllcyA9IDA7XFxuIFxcdHZvaWQgKm1hcDtcXG4gXFx0c2l6ZV90IGxlbjtcXG4gXFx0Y2hhciAqcGF0aDtcXG5AQCAtNzYsNiArOTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxcbiBcXHRmZCA9IG9wZW4ocGF0aCwgT19DUkVBVCB8IE9fUkRXUiwgMDY0NCk7XFxuIFxcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcXFwib3BlbiBmZFxcXCIpKVxcbiBcXHRcXHRyZXR1cm47XFxuK3JldHJ5OlxcbiBcXHRpZiAoIUFTU0VSVF9PSyhmdHJ1bmNhdGUoZmQsIGxlbiksIFxcXCJmdHJ1bmNhdGVcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwX2ZkO1xcbiBcXG5AQCAtODgsNiArMTA5LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIFxcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFxcXCJyZWFkIHN0YXRzXFxcIikpXFxuIFxcdFxcdGdvdG8gY2xlYW51cF9tYXA7XFxuIFxcbitcXHRpZiAoIW1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9maWxlX3BhZ2VzIFxcdTAwMjZcXHUwMDI2ICFtZW1jZ19xdWVyeS1cXHUwMDNlbnJfZmlsZV9tYXBwZWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICsrcmV0cmllcyBcXHUwMDNjIE1FTUNHX1NUQVRfUkVUUklFUykge1xcbitcXHRcXHRtdW5tYXAobWFwLCBsZW4pO1xcbitcXHRcXHR1c2xlZXAoTUVNQ0dfU1RBVF9SRVRSWV9ERUxBWV9VUyk7XFxuK1xcdFxcdGdvdG8gcmV0cnk7XFxuK1xcdH1cXG4rXFxuIFxcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cXHUwMDNlbnJfZmlsZV9wYWdlcywgMCwgXFxcImZpbmFsIGZpbGUgdmFsdWVcXFwiKTtcXG4gXFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9maWxlX21hcHBlZCwgMCwgXFxcImZpbmFsIGZpbGUgbWFwcGVkIHZhbHVlXFxcIik7XFxuIFxcbkBAIC0xMDAsNiArMTI4LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFxuIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxcbiB7XFxuK1xcdGludCByZXRyaWVzID0gMDtcXG4gXFx0c2l6ZV90IGxlbjtcXG4gXFx0aW50IGZkO1xcbiBcXG5AQCAtMTEzLDEyICsxNDIsMTggQEAgc3RhdGljIHZvaWQgdGVzdF9zaG1lbShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIFxcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcXFwibWVtZmRfY3JlYXRlXFxcIikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK3JldHJ5OlxcbiBcXHRpZiAoIUFTU0VSVF9PSyhmYWxsb2NhdGUoZmQsIDAsIDAsIGxlbiksIFxcXCJmYWxsb2NhdGVcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4gXFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXFxcInJlYWQgc3RhdHNcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4rXFx0aWYgKCFtZW1jZ19xdWVyeS1cXHUwMDNlbnJfc2htZW0gXFx1MDAyNlxcdTAwMjYgKytyZXRyaWVzIFxcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XFxuK1xcdFxcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rXFx0fVxcbitcXG4gXFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9zaG1lbSwgMCwgXFxcImZpbmFsIHNobWVtIHZhbHVlXFxcIik7XFxuIFxcbiBjbGVhbnVwOlxcbkBAIC0xMjcsMTEgKzE2MiwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFxuIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIHtcXG4rXFx0aW50IHJldHJpZXMgPSAwO1xcbiBcXHR2b2lkICptYXA7XFxuIFxcdHNpemVfdCBsZW47XFxuIFxcbiBcXHRsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0O1xcbiBcXG4rcmV0cnk6XFxuIFxcdC8qIENyZWF0ZSByZWdpb24gdG8gdXNlIGZvciB0cmlnZ2VyaW5nIGEgcGFnZSBmYXVsdC4gKi9cXG4gXFx0bWFwID0gbW1hcChOVUxMLCBsZW4sIFBST1RfV1JJVEUsIE1BUF9BTk9OWU1PVVMgfCBNQVBfUFJJVkFURSwgLTEsIDApO1xcbiBcXHRpZiAoIUFTU0VSVF9ORVEobWFwLCBNQVBfRkFJTEVELCBcXFwibW1hcCBhbm9uXFxcIikpXFxuQEAgLTE0Myw2ICsxODAsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9wZ2ZhdWx0KHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXFxcInJlYWQgc3RhdHNcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4rXFx0aWYgKCFtZW1jZ19xdWVyeS1cXHUwMDNlcGdmYXVsdCBcXHUwMDI2XFx1MDAyNiArK3JldHJpZXMgXFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcXG4rXFx0XFx0bXVubWFwKG1hcCwgbGVuKTtcXG4rXFx0XFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xcbitcXHRcXHRnb3RvIHJldHJ5O1xcbitcXHR9XFxuK1xcbiBcXHRBU1NFUlRfR1QobWVtY2dfcXVlcnktXFx1MDAzZXBnZmF1bHQsIDAsIFxcXCJmaW5hbCBwZ2ZhdWx0IHZhbFxcXCIpO1xcbiBcXG4gY2xlYW51cDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjI6MTE6NDkuNDk4MTE2NDgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTIwNjQzNzIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA3MTE2OGU4ZTliZjliMjA5YjI1M2Y5OTQyZmM4M2JiY2QwMWU5YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMjoxMTo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXG5pbmRleCBiN2MxOGQ1OTBiOTkzLi4zN2UyY2YyNDliZThhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuY1xuQEAgLTEwLDYgKzEwLDE3IEBAXG4gI2luY2x1ZGUgXCJjZ3JvdXBfaXRlcl9tZW1jZy5oXCJcbiAjaW5jbHVkZSBcImNncm91cF9pdGVyX21lbWNnLnNrZWwuaFwiXG4gXG4rLypcbisgKiBtZW1jZyBzdGF0cyBhcmUgY2FjaGVkIHBlci1jcHUgYW5kIG9ubHkgYmVjb21lIHZpc2libGUgb25jZSB0aGUgcGVyaW9kaWNcbisgKiBmbHVzaGVyIHJ1bnMgKEZMVVNIX1RJTUUsIDJzKSwgb3Igb25jZSBwZW5kaW5nIHVwZGF0ZXMgY3Jvc3NcbisgKiBNRU1DR19DSEFSR0VfQkFUQ0ggKiBudW1fb25saW5lX2NwdXMoKS4gVGhhdCB0aHJlc2hvbGQgZ3Jvd3Mgd2l0aCB0aGUgQ1BVXG4rICogY291bnQsIHNvIG9uIGEgbGFyZ2UgbWFjaGluZSBhIHNpbmdsZSBwYXNzIGRvZXMgbm90IHJlYWNoIGl0IGFuZFxuKyAqIGJwZl9tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKCkgcmV0dXJucyB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nLiBSZXRyeSBmb3JcbisgKiBsb25nIGVub3VnaCB0byBjb3ZlciBhIGZsdXNoZXIgY3ljbGUuXG4rICovXG4rI2RlZmluZSBNRU1DR19TVEFUX1JFVFJJRVNcdFx0MTZcbisjZGVmaW5lIE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVNcdCgyNTAgKiAxMDAwKVxuK1xuIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4ge1xuIFx0aW50IGZkLCByZXQgPSAwO1xuQEAgLTM1LDExICs0NiwxMyBAQCBzdGF0aWMgaW50IHJlYWRfc3RhdHMoc3RydWN0IGJwZl9saW5rICpsaW5rKVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuK1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcbiBcdGxlbiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAqIDEwMjQ7XG4gXG4rcmV0cnk6XG4gXHQvKlxuIFx0ICogSW5jcmVhc2UgbWVtY2cgYW5vbiB1c2FnZSBieSBtYXBwaW5nIGFuZCB3cml0aW5nXG4gXHQgKiB0byBhIG5ldyBhbm9uIHJlZ2lvbi5cbkBAIC01Myw2ICs2NiwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXCJyZWFkIHN0YXRzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4rXHRpZiAoIW1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2Fub25fbWFwcGVkIFx1MDAyNlx1MDAyNiArK3JldHJpZXMgXHUwMDNjIE1FTUNHX1NUQVRfUkVUUklFUykge1xuK1x0XHRtdW5tYXAobWFwLCBsZW4pO1xuK1x0XHR1c2xlZXAoTUVNQ0dfU1RBVF9SRVRSWV9ERUxBWV9VUyk7XG4rXHRcdGdvdG8gcmV0cnk7XG4rXHR9XG4rXG4gXHRBU1NFUlRfR1QobWVtY2dfcXVlcnktXHUwMDNlbnJfYW5vbl9tYXBwZWQsIDAsIFwiZmluYWwgYW5vbiBtYXBwZWQgdmFsXCIpO1xuIFxuIGNsZWFudXA6XG5AQCAtNjEsNiArODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuK1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcdGNoYXIgKnBhdGg7XG5AQCAtNzYsNiArOTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0ZmQgPSBvcGVuKHBhdGgsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2NDQpO1xuIFx0aWYgKCFBU1NFUlRfT0tfRkQoZmQsIFwib3BlbiBmZFwiKSlcbiBcdFx0cmV0dXJuO1xuK3JldHJ5OlxuIFx0aWYgKCFBU1NFUlRfT0soZnRydW5jYXRlKGZkLCBsZW4pLCBcImZ0cnVuY2F0ZVwiKSlcbiBcdFx0Z290byBjbGVhbnVwX2ZkO1xuIFxuQEAgLTg4LDYgKzEwOSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXCJyZWFkIHN0YXRzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXBfbWFwO1xuIFxuK1x0aWYgKCFtZW1jZ19xdWVyeS1cdTAwM2Vucl9maWxlX3BhZ2VzIFx1MDAyNlx1MDAyNiAhbWVtY2dfcXVlcnktXHUwMDNlbnJfZmlsZV9tYXBwZWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgKytyZXRyaWVzIFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcbitcdFx0bXVubWFwKG1hcCwgbGVuKTtcbitcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuK1x0XHRnb3RvIHJldHJ5O1xuK1x0fVxuK1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfcGFnZXMsIDAsIFwiZmluYWwgZmlsZSB2YWx1ZVwiKTtcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9maWxlX21hcHBlZCwgMCwgXCJmaW5hbCBmaWxlIG1hcHBlZCB2YWx1ZVwiKTtcbiBcbkBAIC0xMDAsNiArMTI4LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcbiBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiB7XG4rXHRpbnQgcmV0cmllcyA9IDA7XG4gXHRzaXplX3QgbGVuO1xuIFx0aW50IGZkO1xuIFxuQEAgLTExMywxMiArMTQyLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0aWYgKCFBU1NFUlRfT0tfRkQoZmQsIFwibWVtZmRfY3JlYXRlXCIpKVxuIFx0XHRyZXR1cm47XG4gXG4rcmV0cnk6XG4gXHRpZiAoIUFTU0VSVF9PSyhmYWxsb2NhdGUoZmQsIDAsIDAsIGxlbiksIFwiZmFsbG9jYXRlXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4gXHRpZiAoIUFTU0VSVF9PSyhyZWFkX3N0YXRzKGxpbmspLCBcInJlYWQgc3RhdHNcIikpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbitcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlbnJfc2htZW0gXHUwMDI2XHUwMDI2ICsrcmV0cmllcyBcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XG4rXHRcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcbitcdFx0Z290byByZXRyeTtcbitcdH1cbitcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9zaG1lbSwgMCwgXCJmaW5hbCBzaG1lbSB2YWx1ZVwiKTtcbiBcbiBjbGVhbnVwOlxuQEAgLTEyNywxMSArMTYyLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuK1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcbiBcdGxlbiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAqIDEwMjQ7XG4gXG4rcmV0cnk6XG4gXHQvKiBDcmVhdGUgcmVnaW9uIHRvIHVzZSBmb3IgdHJpZ2dlcmluZyBhIHBhZ2UgZmF1bHQuICovXG4gXHRtYXAgPSBtbWFwKE5VTEwsIGxlbiwgUFJPVF9XUklURSwgTUFQX0FOT05ZTU9VUyB8IE1BUF9QUklWQVRFLCAtMSwgMCk7XG4gXHRpZiAoIUFTU0VSVF9ORVEobWFwLCBNQVBfRkFJTEVELCBcIm1tYXAgYW5vblwiKSlcbkBAIC0xNDMsNiArMTgwLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4gXHRpZiAoIUFTU0VSVF9PSyhyZWFkX3N0YXRzKGxpbmspLCBcInJlYWQgc3RhdHNcIikpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbitcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlcGdmYXVsdCBcdTAwMjZcdTAwMjYgKytyZXRyaWVzIFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcbitcdFx0bXVubWFwKG1hcCwgbGVuKTtcbitcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuK1x0XHRnb3RvIHJldHJ5O1xuK1x0fVxuK1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZXBnZmF1bHQsIDAsIFwiZmluYWwgcGdmYXVsdCB2YWxcIik7XG4gXG4gY2xlYW51cDpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIyOjExOjQ5LjQ5ODExNzk2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDY0MDY5MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0J3MgdGFyZ2V0ZWQgYXQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmNgLiBCYXNpY2FsbHksIGl0J3MgYWJvdXQgYWRkaW5nIHJldHJpZXMgd2l0aGluIGEgQlBGIHNlbGZ0ZXN0IHRvIGhhbmRsZSBwb3RlbnRpYWwgdGltaW5nIGlzc3VlcyBvciB0cmFuc2llbnQgY29uZGl0aW9ucyB3aGVuIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgc2VlIGltbWVkaWF0ZWx5IHRoYXQgdGhpcyBpcyBhICp0ZXN0LXNwZWNpZmljKiBtb2RpZmljYXRpb24uIEl0IGRvZXNuJ3QgdG91Y2ggYW55IGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgb3IgYW55IGNvZGUgdGhhdCBhZmZlY3RzIGhvdyBtZW1jZyBzdGF0cyBhcmUgKmNhbGN1bGF0ZWQqIG9yICp1c2VkKiBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uIEl0J3MgcHVyZWx5IGFuIGltcHJvdmVtZW50IHRvIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHRvIG1ha2UgdGhlIHRlc3RzIG1vcmUgcm9idXN0LiBUaGVyZWZvcmUsIHNpbmNlIHRoZSBwYXRjaCBvbmx5IGltcGFjdHMgYSBzZWxmdGVzdCwgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRvIGNvbnNpZGVyIGZvciBmdXp6aW5nIGF0IHRoaXMgdGltZS4gSSB3aWxsLCB3aXRoIGNvbmZpZGVuY2UsIGZsYWcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MywiT3V0cHV0VG9rZW5zIjo4OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjI6MTE6NTQuNzA0NTMyMDY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIyOjExOjU0LjcwNDU1NjE5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tn5l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 21:47:30 +0000 UTC FinishedAt: 2026-08-13 22:11:56 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDIyOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNzExNjhlOGU5YmY5YjIwOWIyNTNmOTk0MmZjODNiYmNkMDFlOWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMjI6MTE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmNcbmluZGV4IGI3YzE4ZDU5MGI5OTMuLjM3ZTJjZjI0OWJlOGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXG5AQCAtMTAsNiAmIzQzOzEwLDE3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7Y2dyb3VwX2l0ZXJfbWVtY2cuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Nncm91cF9pdGVyX21lbWNnLnNrZWwuaFwmIzM0O1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBtZW1jZyBzdGF0cyBhcmUgY2FjaGVkIHBlci1jcHUgYW5kIG9ubHkgYmVjb21lIHZpc2libGUgb25jZSB0aGUgcGVyaW9kaWNcbiYjNDM7ICogZmx1c2hlciBydW5zIChGTFVTSF9USU1FLCAycyksIG9yIG9uY2UgcGVuZGluZyB1cGRhdGVzIGNyb3NzXG4mIzQzOyAqIE1FTUNHX0NIQVJHRV9CQVRDSCAqIG51bV9vbmxpbmVfY3B1cygpLiBUaGF0IHRocmVzaG9sZCBncm93cyB3aXRoIHRoZSBDUFVcbiYjNDM7ICogY291bnQsIHNvIG9uIGEgbGFyZ2UgbWFjaGluZSBhIHNpbmdsZSBwYXNzIGRvZXMgbm90IHJlYWNoIGl0IGFuZFxuJiM0MzsgKiBicGZfbWVtX2Nncm91cF9mbHVzaF9zdGF0cygpIHJldHVybnMgd2l0aG91dCBmbHVzaGluZyBhbnl0aGluZy4gUmV0cnkgZm9yXG4mIzQzOyAqIGxvbmcgZW5vdWdoIHRvIGNvdmVyIGEgZmx1c2hlciBjeWNsZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTUVNQ0dfU1RBVF9SRVRSSUVTXHRcdDE2XG4mIzQzOyNkZWZpbmUgTUVNQ0dfU1RBVF9SRVRSWV9ERUxBWV9VU1x0KDI1MCAqIDEwMDApXG4mIzQzO1xuIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4ge1xuIFx0aW50IGZkLCByZXQgPSAwO1xuQEAgLTM1LDExICYjNDM7NDYsMTMgQEAgc3RhdGljIGludCByZWFkX3N0YXRzKHN0cnVjdCBicGZfbGluayAqbGluaylcbiBcbiBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIHtcbiYjNDM7XHRpbnQgcmV0cmllcyA9IDA7XG4gXHR2b2lkICptYXA7XG4gXHRzaXplX3QgbGVuO1xuIFxuIFx0bGVuID0gc3lzY29uZihfU0NfUEFHRVNJWkUpICogMTAyNDtcbiBcbiYjNDM7cmV0cnk6XG4gXHQvKlxuIFx0ICogSW5jcmVhc2UgbWVtY2cgYW5vbiB1c2FnZSBieSBtYXBwaW5nIGFuZCB3cml0aW5nXG4gXHQgKiB0byBhIG5ldyBhbm9uIHJlZ2lvbi5cbkBAIC01Myw2ICYjNDM7NjYsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9hbm9uKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFwmIzM0O3JlYWQgc3RhdHNcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4mIzQzO1x0aWYgKCFtZW1jZ19xdWVyeS1cdTAwM2Vucl9hbm9uX21hcHBlZCBcdTAwMjZcdTAwMjYgJiM0MzsmIzQzO3JldHJpZXMgXHUwMDNjIE1FTUNHX1NUQVRfUkVUUklFUykge1xuJiM0MztcdFx0bXVubWFwKG1hcCwgbGVuKTtcbiYjNDM7XHRcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9hbm9uX21hcHBlZCwgMCwgXCYjMzQ7ZmluYWwgYW5vbiBtYXBwZWQgdmFsXCYjMzQ7KTtcbiBcbiBjbGVhbnVwOlxuQEAgLTYxLDYgJiM0Mzs4MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4gXG4gc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiB7XG4mIzQzO1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcdGNoYXIgKnBhdGg7XG5AQCAtNzYsNiAmIzQzOzk2LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGZkID0gb3BlbihwYXRoLCBPX0NSRUFUIHwgT19SRFdSLCAwNjQ0KTtcbiBcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcJiMzNDtvcGVuIGZkXCYjMzQ7KSlcbiBcdFx0cmV0dXJuO1xuJiM0MztyZXRyeTpcbiBcdGlmICghQVNTRVJUX09LKGZ0cnVuY2F0ZShmZCwgbGVuKSwgXCYjMzQ7ZnRydW5jYXRlXCYjMzQ7KSlcbiBcdFx0Z290byBjbGVhbnVwX2ZkO1xuIFxuQEAgLTg4LDYgJiM0MzsxMDksMTMgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFwmIzM0O3JlYWQgc3RhdHNcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXBfbWFwO1xuIFxuJiM0MztcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlbnJfZmlsZV9wYWdlcyBcdTAwMjZcdTAwMjYgIW1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfbWFwcGVkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAmIzQzOyYjNDM7cmV0cmllcyBcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XG4mIzQzO1x0XHRtdW5tYXAobWFwLCBsZW4pO1xuJiM0MztcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuJiM0MztcdFx0Z290byByZXRyeTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfcGFnZXMsIDAsIFwmIzM0O2ZpbmFsIGZpbGUgdmFsdWVcJiMzNDspO1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfbWFwcGVkLCAwLCBcJiMzNDtmaW5hbCBmaWxlIG1hcHBlZCB2YWx1ZVwmIzM0Oyk7XG4gXG5AQCAtMTAwLDYgJiM0MzsxMjgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIHtcbiYjNDM7XHRpbnQgcmV0cmllcyA9IDA7XG4gXHRzaXplX3QgbGVuO1xuIFx0aW50IGZkO1xuIFxuQEAgLTExMywxMiAmIzQzOzE0MiwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcJiMzNDttZW1mZF9jcmVhdGVcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO3JldHJ5OlxuIFx0aWYgKCFBU1NFUlRfT0soZmFsbG9jYXRlKGZkLCAwLCAwLCBsZW4pLCBcJiMzNDtmYWxsb2NhdGVcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4gXHRpZiAoIUFTU0VSVF9PSyhyZWFkX3N0YXRzKGxpbmspLCBcJiMzNDtyZWFkIHN0YXRzXCYjMzQ7KSlcbiBcdFx0Z290byBjbGVhbnVwO1xuIFxuJiM0MztcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlbnJfc2htZW0gXHUwMDI2XHUwMDI2ICYjNDM7JiM0MztyZXRyaWVzIFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcbiYjNDM7XHRcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9zaG1lbSwgMCwgXCYjMzQ7ZmluYWwgc2htZW0gdmFsdWVcJiMzNDspO1xuIFxuIGNsZWFudXA6XG5AQCAtMTI3LDExICYjNDM7MTYyLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuJiM0MztcdGludCByZXRyaWVzID0gMDtcbiBcdHZvaWQgKm1hcDtcbiBcdHNpemVfdCBsZW47XG4gXG4gXHRsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0O1xuIFxuJiM0MztyZXRyeTpcbiBcdC8qIENyZWF0ZSByZWdpb24gdG8gdXNlIGZvciB0cmlnZ2VyaW5nIGEgcGFnZSBmYXVsdC4gKi9cbiBcdG1hcCA9IG1tYXAoTlVMTCwgbGVuLCBQUk9UX1dSSVRFLCBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTtcbiBcdGlmICghQVNTRVJUX05FUShtYXAsIE1BUF9GQUlMRUQsIFwmIzM0O21tYXAgYW5vblwmIzM0OykpXG5AQCAtMTQzLDYgJiM0MzsxODAsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9wZ2ZhdWx0KHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFwmIzM0O3JlYWQgc3RhdHNcJiMzNDspKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4mIzQzO1x0aWYgKCFtZW1jZ19xdWVyeS1cdTAwM2VwZ2ZhdWx0IFx1MDAyNlx1MDAyNiAmIzQzOyYjNDM7cmV0cmllcyBcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XG4mIzQzO1x0XHRtdW5tYXAobWFwLCBsZW4pO1xuJiM0MztcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuJiM0MztcdFx0Z290byByZXRyeTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZXBnZmF1bHQsIDAsIFwmIzM0O2ZpbmFsIHBnZmF1bHQgdmFsXCYjMzQ7KTtcbiBcbiBjbGVhbnVwOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIyOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3MTE2OGU4ZTliZjliMjA5YjI1M2Y5OTQyZmM4M2JiY2QwMWU5YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAyMjoxMTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jCmluZGV4IGI3YzE4ZDU5MGI5OTMuLjM3ZTJjZjI0OWJlOGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYwpAQCAtMTAsNiAmIzQzOzEwLDE3IEBACiAjaW5jbHVkZSAmIzM0O2Nncm91cF9pdGVyX21lbWNnLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtjZ3JvdXBfaXRlcl9tZW1jZy5za2VsLmgmIzM0OwogCiYjNDM7LyoKJiM0MzsgKiBtZW1jZyBzdGF0cyBhcmUgY2FjaGVkIHBlci1jcHUgYW5kIG9ubHkgYmVjb21lIHZpc2libGUgb25jZSB0aGUgcGVyaW9kaWMKJiM0MzsgKiBmbHVzaGVyIHJ1bnMgKEZMVVNIX1RJTUUsIDJzKSwgb3Igb25jZSBwZW5kaW5nIHVwZGF0ZXMgY3Jvc3MKJiM0MzsgKiBNRU1DR19DSEFSR0VfQkFUQ0ggKiBudW1fb25saW5lX2NwdXMoKS4gVGhhdCB0aHJlc2hvbGQgZ3Jvd3Mgd2l0aCB0aGUgQ1BVCiYjNDM7ICogY291bnQsIHNvIG9uIGEgbGFyZ2UgbWFjaGluZSBhIHNpbmdsZSBwYXNzIGRvZXMgbm90IHJlYWNoIGl0IGFuZAomIzQzOyAqIGJwZl9tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKCkgcmV0dXJucyB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nLiBSZXRyeSBmb3IKJiM0MzsgKiBsb25nIGVub3VnaCB0byBjb3ZlciBhIGZsdXNoZXIgY3ljbGUuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBNRU1DR19TVEFUX1JFVFJJRVMJCTE2CiYjNDM7I2RlZmluZSBNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTCSgyNTAgKiAxMDAwKQomIzQzOwogc3RhdGljIGludCByZWFkX3N0YXRzKHN0cnVjdCBicGZfbGluayAqbGluaykKIHsKIAlpbnQgZmQsIHJldCA9IDA7CkBAIC0zNSwxMSAmIzQzOzQ2LDEzIEBAIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspCiAKIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiB7CiYjNDM7CWludCByZXRyaWVzID0gMDsKIAl2b2lkICptYXA7CiAJc2l6ZV90IGxlbjsKIAogCWxlbiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAqIDEwMjQ7CiAKJiM0MztyZXRyeToKIAkvKgogCSAqIEluY3JlYXNlIG1lbWNnIGFub24gdXNhZ2UgYnkgbWFwcGluZyBhbmQgd3JpdGluZwogCSAqIHRvIGEgbmV3IGFub24gcmVnaW9uLgpAQCAtNTMsNiAmIzQzOzY2LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAJaWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgJiMzNDtyZWFkIHN0YXRzJiMzNDspKQogCQlnb3RvIGNsZWFudXA7CiAKJiM0MzsJaWYgKCFtZW1jZ19xdWVyeS0mZ3Q7bnJfYW5vbl9tYXBwZWQgJmFtcDsmYW1wOyAmIzQzOyYjNDM7cmV0cmllcyAmbHQ7IE1FTUNHX1NUQVRfUkVUUklFUykgewomIzQzOwkJbXVubWFwKG1hcCwgbGVuKTsKJiM0MzsJCXVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTsKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CX0KJiM0MzsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX2Fub25fbWFwcGVkLCAwLCAmIzM0O2ZpbmFsIGFub24gbWFwcGVkIHZhbCYjMzQ7KTsKIAogY2xlYW51cDoKQEAgLTYxLDYgJiM0Mzs4MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAKIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiB7CiYjNDM7CWludCByZXRyaWVzID0gMDsKIAl2b2lkICptYXA7CiAJc2l6ZV90IGxlbjsKIAljaGFyICpwYXRoOwpAQCAtNzYsNiAmIzQzOzk2LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSkKIAlmZCA9IG9wZW4ocGF0aCwgT19DUkVBVCB8IE9fUkRXUiwgMDY0NCk7CiAJaWYgKCFBU1NFUlRfT0tfRkQoZmQsICYjMzQ7b3BlbiBmZCYjMzQ7KSkKIAkJcmV0dXJuOwomIzQzO3JldHJ5OgogCWlmICghQVNTRVJUX09LKGZ0cnVuY2F0ZShmZCwgbGVuKSwgJiMzNDtmdHJ1bmNhdGUmIzM0OykpCiAJCWdvdG8gY2xlYW51cF9mZDsKIApAQCAtODgsNiAmIzQzOzEwOSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogCWlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksICYjMzQ7cmVhZCBzdGF0cyYjMzQ7KSkKIAkJZ290byBjbGVhbnVwX21hcDsKIAomIzQzOwlpZiAoIW1lbWNnX3F1ZXJ5LSZndDtucl9maWxlX3BhZ2VzICZhbXA7JmFtcDsgIW1lbWNnX3F1ZXJ5LSZndDtucl9maWxlX21hcHBlZCAmYW1wOyZhbXA7CiYjNDM7CSAgICAmIzQzOyYjNDM7cmV0cmllcyAmbHQ7IE1FTUNHX1NUQVRfUkVUUklFUykgewomIzQzOwkJbXVubWFwKG1hcCwgbGVuKTsKJiM0MzsJCXVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTsKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CX0KJiM0MzsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX2ZpbGVfcGFnZXMsIDAsICYjMzQ7ZmluYWwgZmlsZSB2YWx1ZSYjMzQ7KTsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX2ZpbGVfbWFwcGVkLCAwLCAmIzM0O2ZpbmFsIGZpbGUgbWFwcGVkIHZhbHVlJiMzNDspOwogCkBAIC0xMDAsNiAmIzQzOzEyOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAKIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogewomIzQzOwlpbnQgcmV0cmllcyA9IDA7CiAJc2l6ZV90IGxlbjsKIAlpbnQgZmQ7CiAKQEAgLTExMywxMiAmIzQzOzE0MiwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSkKIAlpZiAoIUFTU0VSVF9PS19GRChmZCwgJiMzNDttZW1mZF9jcmVhdGUmIzM0OykpCiAJCXJldHVybjsKIAomIzQzO3JldHJ5OgogCWlmICghQVNTRVJUX09LKGZhbGxvY2F0ZShmZCwgMCwgMCwgbGVuKSwgJiMzNDtmYWxsb2NhdGUmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIAogCWlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksICYjMzQ7cmVhZCBzdGF0cyYjMzQ7KSkKIAkJZ290byBjbGVhbnVwOwogCiYjNDM7CWlmICghbWVtY2dfcXVlcnktJmd0O25yX3NobWVtICZhbXA7JmFtcDsgJiM0MzsmIzQzO3JldHJpZXMgJmx0OyBNRU1DR19TVEFUX1JFVFJJRVMpIHsKJiM0MzsJCXVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTsKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7CX0KJiM0MzsKIAlBU1NFUlRfR1QobWVtY2dfcXVlcnktJmd0O25yX3NobWVtLCAwLCAmIzM0O2ZpbmFsIHNobWVtIHZhbHVlJiMzNDspOwogCiBjbGVhbnVwOgpAQCAtMTI3LDExICYjNDM7MTYyLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogCiBzdGF0aWMgdm9pZCB0ZXN0X3BnZmF1bHQoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KQogewomIzQzOwlpbnQgcmV0cmllcyA9IDA7CiAJdm9pZCAqbWFwOwogCXNpemVfdCBsZW47CiAKIAlsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0OwogCiYjNDM7cmV0cnk6CiAJLyogQ3JlYXRlIHJlZ2lvbiB0byB1c2UgZm9yIHRyaWdnZXJpbmcgYSBwYWdlIGZhdWx0LiAqLwogCW1hcCA9IG1tYXAoTlVMTCwgbGVuLCBQUk9UX1dSSVRFLCBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKIAlpZiAoIUFTU0VSVF9ORVEobWFwLCBNQVBfRkFJTEVELCAmIzM0O21tYXAgYW5vbiYjMzQ7KSkKQEAgLTE0Myw2ICYjNDM7MTgwLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpCiAJaWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgJiMzNDtyZWFkIHN0YXRzJiMzNDspKQogCQlnb3RvIGNsZWFudXA7CiAKJiM0MzsJaWYgKCFtZW1jZ19xdWVyeS0mZ3Q7cGdmYXVsdCAmYW1wOyZhbXA7ICYjNDM7JiM0MztyZXRyaWVzICZsdDsgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7CiYjNDM7CQltdW5tYXAobWFwLCBsZW4pOwomIzQzOwkJdXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpOwomIzQzOwkJZ290byByZXRyeTsKJiM0MzsJfQomIzQzOwogCUFTU0VSVF9HVChtZW1jZ19xdWVyeS0mZ3Q7cGdmYXVsdCwgMCwgJiMzNDtmaW5hbCBwZ2ZhdWx0IHZhbCYjMzQ7KTsKIAogY2xlYW51cDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MwoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRhcmdldGVkIGF0IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jYC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBhYm91dCBhZGRpbmcgcmV0cmllcyB3aXRoaW4gYSBCUEYgc2VsZnRlc3QgdG8gaGFuZGxlIHBvdGVudGlhbCB0aW1pbmcgaXNzdWVzIG9yIHRyYW5zaWVudCBjb25kaXRpb25zIHdoZW4gcmVhZGluZyBtZW1jZyBzdGF0cy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBzZWUgaW1tZWRpYXRlbHkgdGhhdCB0aGlzIGlzIGEgKnRlc3Qtc3BlY2lmaWMqIG1vZGlmaWNhdGlvbi4gSXQgZG9lc24mIzM5O3QgdG91Y2ggYW55IGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgb3IgYW55IGNvZGUgdGhhdCBhZmZlY3RzIGhvdyBtZW1jZyBzdGF0cyBhcmUgKmNhbGN1bGF0ZWQqIG9yICp1c2VkKiBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uIEl0JiMzOTtzIHB1cmVseSBhbiBpbXByb3ZlbWVudCB0byB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSB0byBtYWtlIHRoZSB0ZXN0cyBtb3JlIHJvYnVzdC4gVGhlcmVmb3JlLCBzaW5jZSB0aGUgcGF0Y2ggb25seSBpbXBhY3RzIGEgc2VsZnRlc3QsIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0byBjb25zaWRlciBmb3IgZnV6emluZyBhdCB0aGlzIHRpbWUuIEkgd2lsbCwgd2l0aCBjb25maWRlbmNlLCBmbGFnIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjI6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIyOjExOjQ5LjEwNzQwOTQyMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTcxNjAyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjI6MTE6NDkuMTA3NDE1NTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTAwMTE3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNzExNjhlOGU5YmY5YjIwOWIyNTNmOTk0MmZjODNiYmNkMDFlOWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDIyOjExOjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXFxuaW5kZXggYjdjMThkNTkwYjk5My4uMzdlMmNmMjQ5YmU4YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuY1xcbkBAIC0xMCw2ICsxMCwxNyBAQFxcbiAjaW5jbHVkZSBcXFwiY2dyb3VwX2l0ZXJfbWVtY2cuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImNncm91cF9pdGVyX21lbWNnLnNrZWwuaFxcXCJcXG4gXFxuKy8qXFxuKyAqIG1lbWNnIHN0YXRzIGFyZSBjYWNoZWQgcGVyLWNwdSBhbmQgb25seSBiZWNvbWUgdmlzaWJsZSBvbmNlIHRoZSBwZXJpb2RpY1xcbisgKiBmbHVzaGVyIHJ1bnMgKEZMVVNIX1RJTUUsIDJzKSwgb3Igb25jZSBwZW5kaW5nIHVwZGF0ZXMgY3Jvc3NcXG4rICogTUVNQ0dfQ0hBUkdFX0JBVENIICogbnVtX29ubGluZV9jcHVzKCkuIFRoYXQgdGhyZXNob2xkIGdyb3dzIHdpdGggdGhlIENQVVxcbisgKiBjb3VudCwgc28gb24gYSBsYXJnZSBtYWNoaW5lIGEgc2luZ2xlIHBhc3MgZG9lcyBub3QgcmVhY2ggaXQgYW5kXFxuKyAqIGJwZl9tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKCkgcmV0dXJucyB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nLiBSZXRyeSBmb3JcXG4rICogbG9uZyBlbm91Z2ggdG8gY292ZXIgYSBmbHVzaGVyIGN5Y2xlLlxcbisgKi9cXG4rI2RlZmluZSBNRU1DR19TVEFUX1JFVFJJRVNcXHRcXHQxNlxcbisjZGVmaW5lIE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVNcXHQoMjUwICogMTAwMClcXG4rXFxuIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuIHtcXG4gXFx0aW50IGZkLCByZXQgPSAwO1xcbkBAIC0zNSwxMSArNDYsMTMgQEAgc3RhdGljIGludCByZWFkX3N0YXRzKHN0cnVjdCBicGZfbGluayAqbGluaylcXG4gXFxuIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIHtcXG4rXFx0aW50IHJldHJpZXMgPSAwO1xcbiBcXHR2b2lkICptYXA7XFxuIFxcdHNpemVfdCBsZW47XFxuIFxcbiBcXHRsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0O1xcbiBcXG4rcmV0cnk6XFxuIFxcdC8qXFxuIFxcdCAqIEluY3JlYXNlIG1lbWNnIGFub24gdXNhZ2UgYnkgbWFwcGluZyBhbmQgd3JpdGluZ1xcbiBcXHQgKiB0byBhIG5ldyBhbm9uIHJlZ2lvbi5cXG5AQCAtNTMsNiArNjYsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9hbm9uKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXFxcInJlYWQgc3RhdHNcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4rXFx0aWYgKCFtZW1jZ19xdWVyeS1cXHUwMDNlbnJfYW5vbl9tYXBwZWQgXFx1MDAyNlxcdTAwMjYgKytyZXRyaWVzIFxcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XFxuK1xcdFxcdG11bm1hcChtYXAsIGxlbik7XFxuK1xcdFxcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rXFx0fVxcbitcXG4gXFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9hbm9uX21hcHBlZCwgMCwgXFxcImZpbmFsIGFub24gbWFwcGVkIHZhbFxcXCIpO1xcbiBcXG4gY2xlYW51cDpcXG5AQCAtNjEsNiArODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxcbiBcXG4gc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4ge1xcbitcXHRpbnQgcmV0cmllcyA9IDA7XFxuIFxcdHZvaWQgKm1hcDtcXG4gXFx0c2l6ZV90IGxlbjtcXG4gXFx0Y2hhciAqcGF0aDtcXG5AQCAtNzYsNiArOTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxcbiBcXHRmZCA9IG9wZW4ocGF0aCwgT19DUkVBVCB8IE9fUkRXUiwgMDY0NCk7XFxuIFxcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcXFwib3BlbiBmZFxcXCIpKVxcbiBcXHRcXHRyZXR1cm47XFxuK3JldHJ5OlxcbiBcXHRpZiAoIUFTU0VSVF9PSyhmdHJ1bmNhdGUoZmQsIGxlbiksIFxcXCJmdHJ1bmNhdGVcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwX2ZkO1xcbiBcXG5AQCAtODgsNiArMTA5LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIFxcdGlmICghQVNTRVJUX09LKHJlYWRfc3RhdHMobGluayksIFxcXCJyZWFkIHN0YXRzXFxcIikpXFxuIFxcdFxcdGdvdG8gY2xlYW51cF9tYXA7XFxuIFxcbitcXHRpZiAoIW1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9maWxlX3BhZ2VzIFxcdTAwMjZcXHUwMDI2ICFtZW1jZ19xdWVyeS1cXHUwMDNlbnJfZmlsZV9tYXBwZWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICsrcmV0cmllcyBcXHUwMDNjIE1FTUNHX1NUQVRfUkVUUklFUykge1xcbitcXHRcXHRtdW5tYXAobWFwLCBsZW4pO1xcbitcXHRcXHR1c2xlZXAoTUVNQ0dfU1RBVF9SRVRSWV9ERUxBWV9VUyk7XFxuK1xcdFxcdGdvdG8gcmV0cnk7XFxuK1xcdH1cXG4rXFxuIFxcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cXHUwMDNlbnJfZmlsZV9wYWdlcywgMCwgXFxcImZpbmFsIGZpbGUgdmFsdWVcXFwiKTtcXG4gXFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9maWxlX21hcHBlZCwgMCwgXFxcImZpbmFsIGZpbGUgbWFwcGVkIHZhbHVlXFxcIik7XFxuIFxcbkBAIC0xMDAsNiArMTI4LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFxuIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxcbiB7XFxuK1xcdGludCByZXRyaWVzID0gMDtcXG4gXFx0c2l6ZV90IGxlbjtcXG4gXFx0aW50IGZkO1xcbiBcXG5AQCAtMTEzLDEyICsxNDIsMTggQEAgc3RhdGljIHZvaWQgdGVzdF9zaG1lbShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIFxcdGlmICghQVNTRVJUX09LX0ZEKGZkLCBcXFwibWVtZmRfY3JlYXRlXFxcIikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK3JldHJ5OlxcbiBcXHRpZiAoIUFTU0VSVF9PSyhmYWxsb2NhdGUoZmQsIDAsIDAsIGxlbiksIFxcXCJmYWxsb2NhdGVcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4gXFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXFxcInJlYWQgc3RhdHNcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4rXFx0aWYgKCFtZW1jZ19xdWVyeS1cXHUwMDNlbnJfc2htZW0gXFx1MDAyNlxcdTAwMjYgKytyZXRyaWVzIFxcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XFxuK1xcdFxcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rXFx0fVxcbitcXG4gXFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVxcdTAwM2Vucl9zaG1lbSwgMCwgXFxcImZpbmFsIHNobWVtIHZhbHVlXFxcIik7XFxuIFxcbiBjbGVhbnVwOlxcbkBAIC0xMjcsMTEgKzE2MiwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFxuIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXFxuIHtcXG4rXFx0aW50IHJldHJpZXMgPSAwO1xcbiBcXHR2b2lkICptYXA7XFxuIFxcdHNpemVfdCBsZW47XFxuIFxcbiBcXHRsZW4gPSBzeXNjb25mKF9TQ19QQUdFU0laRSkgKiAxMDI0O1xcbiBcXG4rcmV0cnk6XFxuIFxcdC8qIENyZWF0ZSByZWdpb24gdG8gdXNlIGZvciB0cmlnZ2VyaW5nIGEgcGFnZSBmYXVsdC4gKi9cXG4gXFx0bWFwID0gbW1hcChOVUxMLCBsZW4sIFBST1RfV1JJVEUsIE1BUF9BTk9OWU1PVVMgfCBNQVBfUFJJVkFURSwgLTEsIDApO1xcbiBcXHRpZiAoIUFTU0VSVF9ORVEobWFwLCBNQVBfRkFJTEVELCBcXFwibW1hcCBhbm9uXFxcIikpXFxuQEAgLTE0Myw2ICsxODAsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9wZ2ZhdWx0KHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcXG4gXFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXFxcInJlYWQgc3RhdHNcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4rXFx0aWYgKCFtZW1jZ19xdWVyeS1cXHUwMDNlcGdmYXVsdCBcXHUwMDI2XFx1MDAyNiArK3JldHJpZXMgXFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcXG4rXFx0XFx0bXVubWFwKG1hcCwgbGVuKTtcXG4rXFx0XFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xcbitcXHRcXHRnb3RvIHJldHJ5O1xcbitcXHR9XFxuK1xcbiBcXHRBU1NFUlRfR1QobWVtY2dfcXVlcnktXFx1MDAzZXBnZmF1bHQsIDAsIFxcXCJmaW5hbCBwZ2ZhdWx0IHZhbFxcXCIpO1xcbiBcXG4gY2xlYW51cDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjI6MTE6NDkuNDk4MTE2NDgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTIwNjQzNzIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA3MTE2OGU4ZTliZjliMjA5YjI1M2Y5OTQyZmM4M2JiY2QwMWU5YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMjoxMTo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jXG5pbmRleCBiN2MxOGQ1OTBiOTkzLi4zN2UyY2YyNDliZThhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuY1xuQEAgLTEwLDYgKzEwLDE3IEBAXG4gI2luY2x1ZGUgXCJjZ3JvdXBfaXRlcl9tZW1jZy5oXCJcbiAjaW5jbHVkZSBcImNncm91cF9pdGVyX21lbWNnLnNrZWwuaFwiXG4gXG4rLypcbisgKiBtZW1jZyBzdGF0cyBhcmUgY2FjaGVkIHBlci1jcHUgYW5kIG9ubHkgYmVjb21lIHZpc2libGUgb25jZSB0aGUgcGVyaW9kaWNcbisgKiBmbHVzaGVyIHJ1bnMgKEZMVVNIX1RJTUUsIDJzKSwgb3Igb25jZSBwZW5kaW5nIHVwZGF0ZXMgY3Jvc3NcbisgKiBNRU1DR19DSEFSR0VfQkFUQ0ggKiBudW1fb25saW5lX2NwdXMoKS4gVGhhdCB0aHJlc2hvbGQgZ3Jvd3Mgd2l0aCB0aGUgQ1BVXG4rICogY291bnQsIHNvIG9uIGEgbGFyZ2UgbWFjaGluZSBhIHNpbmdsZSBwYXNzIGRvZXMgbm90IHJlYWNoIGl0IGFuZFxuKyAqIGJwZl9tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKCkgcmV0dXJucyB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nLiBSZXRyeSBmb3JcbisgKiBsb25nIGVub3VnaCB0byBjb3ZlciBhIGZsdXNoZXIgY3ljbGUuXG4rICovXG4rI2RlZmluZSBNRU1DR19TVEFUX1JFVFJJRVNcdFx0MTZcbisjZGVmaW5lIE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVNcdCgyNTAgKiAxMDAwKVxuK1xuIHN0YXRpYyBpbnQgcmVhZF9zdGF0cyhzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4ge1xuIFx0aW50IGZkLCByZXQgPSAwO1xuQEAgLTM1LDExICs0NiwxMyBAQCBzdGF0aWMgaW50IHJlYWRfc3RhdHMoc3RydWN0IGJwZl9saW5rICpsaW5rKVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfYW5vbihzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuK1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcbiBcdGxlbiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAqIDEwMjQ7XG4gXG4rcmV0cnk6XG4gXHQvKlxuIFx0ICogSW5jcmVhc2UgbWVtY2cgYW5vbiB1c2FnZSBieSBtYXBwaW5nIGFuZCB3cml0aW5nXG4gXHQgKiB0byBhIG5ldyBhbm9uIHJlZ2lvbi5cbkBAIC01Myw2ICs2NiwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXCJyZWFkIHN0YXRzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4rXHRpZiAoIW1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2Fub25fbWFwcGVkIFx1MDAyNlx1MDAyNiArK3JldHJpZXMgXHUwMDNjIE1FTUNHX1NUQVRfUkVUUklFUykge1xuK1x0XHRtdW5tYXAobWFwLCBsZW4pO1xuK1x0XHR1c2xlZXAoTUVNQ0dfU1RBVF9SRVRSWV9ERUxBWV9VUyk7XG4rXHRcdGdvdG8gcmV0cnk7XG4rXHR9XG4rXG4gXHRBU1NFUlRfR1QobWVtY2dfcXVlcnktXHUwMDNlbnJfYW5vbl9tYXBwZWQsIDAsIFwiZmluYWwgYW5vbiBtYXBwZWQgdmFsXCIpO1xuIFxuIGNsZWFudXA6XG5AQCAtNjEsNiArODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fub24oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfZmlsZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuK1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcdGNoYXIgKnBhdGg7XG5AQCAtNzYsNiArOTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0ZmQgPSBvcGVuKHBhdGgsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2NDQpO1xuIFx0aWYgKCFBU1NFUlRfT0tfRkQoZmQsIFwib3BlbiBmZFwiKSlcbiBcdFx0cmV0dXJuO1xuK3JldHJ5OlxuIFx0aWYgKCFBU1NFUlRfT0soZnRydW5jYXRlKGZkLCBsZW4pLCBcImZ0cnVuY2F0ZVwiKSlcbiBcdFx0Z290byBjbGVhbnVwX2ZkO1xuIFxuQEAgLTg4LDYgKzEwOSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZpbGUoc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0aWYgKCFBU1NFUlRfT0socmVhZF9zdGF0cyhsaW5rKSwgXCJyZWFkIHN0YXRzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXBfbWFwO1xuIFxuK1x0aWYgKCFtZW1jZ19xdWVyeS1cdTAwM2Vucl9maWxlX3BhZ2VzIFx1MDAyNlx1MDAyNiAhbWVtY2dfcXVlcnktXHUwMDNlbnJfZmlsZV9tYXBwZWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgKytyZXRyaWVzIFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcbitcdFx0bXVubWFwKG1hcCwgbGVuKTtcbitcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuK1x0XHRnb3RvIHJldHJ5O1xuK1x0fVxuK1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZW5yX2ZpbGVfcGFnZXMsIDAsIFwiZmluYWwgZmlsZSB2YWx1ZVwiKTtcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9maWxlX21hcHBlZCwgMCwgXCJmaW5hbCBmaWxlIG1hcHBlZCB2YWx1ZVwiKTtcbiBcbkBAIC0xMDAsNiArMTI4LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9maWxlKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiBcbiBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtKHN0cnVjdCBicGZfbGluayAqbGluaywgc3RydWN0IG1lbWNnX3F1ZXJ5ICptZW1jZ19xdWVyeSlcbiB7XG4rXHRpbnQgcmV0cmllcyA9IDA7XG4gXHRzaXplX3QgbGVuO1xuIFx0aW50IGZkO1xuIFxuQEAgLTExMywxMiArMTQyLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFx0aWYgKCFBU1NFUlRfT0tfRkQoZmQsIFwibWVtZmRfY3JlYXRlXCIpKVxuIFx0XHRyZXR1cm47XG4gXG4rcmV0cnk6XG4gXHRpZiAoIUFTU0VSVF9PSyhmYWxsb2NhdGUoZmQsIDAsIDAsIGxlbiksIFwiZmFsbG9jYXRlXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG4gXHRpZiAoIUFTU0VSVF9PSyhyZWFkX3N0YXRzKGxpbmspLCBcInJlYWQgc3RhdHNcIikpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbitcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlbnJfc2htZW0gXHUwMDI2XHUwMDI2ICsrcmV0cmllcyBcdTAwM2MgTUVNQ0dfU1RBVF9SRVRSSUVTKSB7XG4rXHRcdHVzbGVlcChNRU1DR19TVEFUX1JFVFJZX0RFTEFZX1VTKTtcbitcdFx0Z290byByZXRyeTtcbitcdH1cbitcbiBcdEFTU0VSVF9HVChtZW1jZ19xdWVyeS1cdTAwM2Vucl9zaG1lbSwgMCwgXCJmaW5hbCBzaG1lbSB2YWx1ZVwiKTtcbiBcbiBjbGVhbnVwOlxuQEAgLTEyNywxMSArMTYyLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW0oc3RydWN0IGJwZl9saW5rICpsaW5rLCBzdHJ1Y3QgbWVtY2dfcXVlcnkgKm1lbWNnX3F1ZXJ5KVxuIFxuIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4ge1xuK1x0aW50IHJldHJpZXMgPSAwO1xuIFx0dm9pZCAqbWFwO1xuIFx0c2l6ZV90IGxlbjtcbiBcbiBcdGxlbiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAqIDEwMjQ7XG4gXG4rcmV0cnk6XG4gXHQvKiBDcmVhdGUgcmVnaW9uIHRvIHVzZSBmb3IgdHJpZ2dlcmluZyBhIHBhZ2UgZmF1bHQuICovXG4gXHRtYXAgPSBtbWFwKE5VTEwsIGxlbiwgUFJPVF9XUklURSwgTUFQX0FOT05ZTU9VUyB8IE1BUF9QUklWQVRFLCAtMSwgMCk7XG4gXHRpZiAoIUFTU0VSVF9ORVEobWFwLCBNQVBfRkFJTEVELCBcIm1tYXAgYW5vblwiKSlcbkBAIC0xNDMsNiArMTgwLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcGdmYXVsdChzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssIHN0cnVjdCBtZW1jZ19xdWVyeSAqbWVtY2dfcXVlcnkpXG4gXHRpZiAoIUFTU0VSVF9PSyhyZWFkX3N0YXRzKGxpbmspLCBcInJlYWQgc3RhdHNcIikpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbitcdGlmICghbWVtY2dfcXVlcnktXHUwMDNlcGdmYXVsdCBcdTAwMjZcdTAwMjYgKytyZXRyaWVzIFx1MDAzYyBNRU1DR19TVEFUX1JFVFJJRVMpIHtcbitcdFx0bXVubWFwKG1hcCwgbGVuKTtcbitcdFx0dXNsZWVwKE1FTUNHX1NUQVRfUkVUUllfREVMQVlfVVMpO1xuK1x0XHRnb3RvIHJldHJ5O1xuK1x0fVxuK1xuIFx0QVNTRVJUX0dUKG1lbWNnX3F1ZXJ5LVx1MDAzZXBnZmF1bHQsIDAsIFwiZmluYWwgcGdmYXVsdCB2YWxcIik7XG4gXG4gY2xlYW51cDpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIyOjExOjQ5LjQ5ODExNzk2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDY0MDY5MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0J3MgdGFyZ2V0ZWQgYXQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9pdGVyX21lbWNnLmNgLiBCYXNpY2FsbHksIGl0J3MgYWJvdXQgYWRkaW5nIHJldHJpZXMgd2l0aGluIGEgQlBGIHNlbGZ0ZXN0IHRvIGhhbmRsZSBwb3RlbnRpYWwgdGltaW5nIGlzc3VlcyBvciB0cmFuc2llbnQgY29uZGl0aW9ucyB3aGVuIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgc2VlIGltbWVkaWF0ZWx5IHRoYXQgdGhpcyBpcyBhICp0ZXN0LXNwZWNpZmljKiBtb2RpZmljYXRpb24uIEl0IGRvZXNuJ3QgdG91Y2ggYW55IGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgb3IgYW55IGNvZGUgdGhhdCBhZmZlY3RzIGhvdyBtZW1jZyBzdGF0cyBhcmUgKmNhbGN1bGF0ZWQqIG9yICp1c2VkKiBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uIEl0J3MgcHVyZWx5IGFuIGltcHJvdmVtZW50IHRvIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHRvIG1ha2UgdGhlIHRlc3RzIG1vcmUgcm9idXN0LiBUaGVyZWZvcmUsIHNpbmNlIHRoZSBwYXRjaCBvbmx5IGltcGFjdHMgYSBzZWxmdGVzdCwgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRvIGNvbnNpZGVyIGZvciBmdXp6aW5nIGF0IHRoaXMgdGltZS4gSSB3aWxsLCB3aXRoIGNvbmZpZGVuY2UsIGZsYWcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MywiT3V0cHV0VG9rZW5zIjo4OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjI6MTE6NTQuNzA0NTMyMDY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgQlBGIHNlbGZ0ZXN0ICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfaXRlcl9tZW1jZy5jKSBieSBhZGRpbmcgcmV0cmllcyBmb3IgcmVhZGluZyBtZW1jZyBzdGF0cy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIEJQRiBzZWxmdGVzdCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2l0ZXJfbWVtY2cuYykgYnkgYWRkaW5nIHJldHJpZXMgZm9yIHJlYWRpbmcgbWVtY2cgc3RhdHMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIyOjExOjU0LjcwNDU1NjE5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tn5l[1] Phase: Running StartedAt: 2026-08-13 22:12:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tn5l[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 22:12:06 +0000 UTC FinishedAt: 2026-08-13 22:12:11 +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,}