Name: series-workflowbkw2n Phase: Failed StartedAt: 2026-07-23 12:33:40 +0000 UTC FinishedAt: 2026-07-23 12:47:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkw2n[0] Phase: Succeeded StartedAt: 2026-07-23 12:33:40 +0000 UTC FinishedAt: 2026-07-23 12:47:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkw2n[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 12:33:40 +0000 UTC FinishedAt: 2026-07-23 12:47:46 +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+CgkJCTx0ZD4yMDI2LzA3LzIzIDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYGljZV9wcmludF9saW5rX21zZ2AgdG8gZXhwbGljaXRseSBwcm92aWRlIHRoZSBsaW5rIHNwZWVkIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBwb3J0IGluZm8gc3RydWN0dXJlLiBUaGlzIGZ1bmN0aW9uIGlzIHNvbGVseSB1c2VkIGZvciBsb2dnaW5nIHRoZSBsaW5rIHN0YXR1cyAoZS5nLiwgXCYjMzQ7TklDIExpbmsgaXMgRG93blwmIzM0OyBvciBzcGVlZC9GRUMgZGV0YWlscykgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGV4ZWN1dGlvbiBmbG93IG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTI6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZDQwNDA2MGRjOTIzODUzMDFlNDc2YTUzNzc5MjE1MTVkZTkyMTYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTI6NDc6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG5pbmRleCBmNzJiYjFhYTQwNjc0MS4uODIwMTYzOTc3ZTM2M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuQEAgLTEwMDYsNyAmIzQzOzEwMDYsNyBAQCBpbnQgaWNlX2dldF9yc3Nfa2V5KHN0cnVjdCBpY2VfdnNpICp2c2ksIHU4ICpzZWVkKTtcbiBpbnQgaWNlX3NldF9yc3NfaGZ1bmMoc3RydWN0IGljZV92c2kgKnZzaSwgdTggaGZ1bmMpO1xuIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7XG4gaW50IGljZV9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0KTtcbi12b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApO1xuJiM0Mzt2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKTtcbiBpbnQgaWNlX3BsdWdfYXV4X2RldihzdHJ1Y3QgaWNlX3BmICpwZik7XG4gdm9pZCBpY2VfdW5wbHVnX2F1eF9kZXYoc3RydWN0IGljZV9wZiAqcGYpO1xuIHZvaWQgaWNlX3JkbWFfZmluYWxpemVfc2V0dXAoc3RydWN0IGljZV9wZiAqcGYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbmluZGV4IDQ5MzcxYjA2NTg0NTgyLi5mMTQ3NWExOWQ3MjFjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuQEAgLTI3ODUsNyAmIzQzOzI3ODUsNyBAQCBpY2Vfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdC8qIFRlbGwgdGhlIE9TIGxpbmsgaXMgZ29pbmcgZG93biwgdGhlIGxpbmsgd2lsbCBnb1xuIFx0XHQgKiBiYWNrIHVwIHdoZW4gZncgc2F5cyBpdCBpcyByZWFkeSBhc3luY2hyb25vdXNseVxuIFx0XHQgKi9cbi1cdFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVx1MDAzZXZzaSwgZmFsc2UpO1xuJiM0MztcdFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVx1MDAzZXZzaSwgZmFsc2UsIDApO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpO1xuIFx0XHRuZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZkMmRhYjAzZTM2My4uMWJlMTMwMWExMzgzODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC03NzIsOCAmIzQzOzc3Miw5IEBAIHN0YXRpYyB2b2lkIGljZV9wcmludF90b3BvX2NvbmZsaWN0KHN0cnVjdCBpY2VfdnNpICp2c2kpXG4gICogaWNlX3ByaW50X2xpbmtfbXNnIC0gcHJpbnQgbGluayB1cCBvciBkb3duIG1lc3NhZ2VcbiAgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGxpbmsgc3RhdHVzIGlzIGJlaW5nIHF1ZXJpZWRcbiAgKiBAaXN1cDogYm9vbGVhbiBmb3IgaWYgdGhlIGxpbmsgaXMgbm93IHVwIG9yIGRvd25cbiYjNDM7ICogQGxpbmtfc3BlZWQ6IGN1cnJlbnQgbGluayBzcGVlZCB2YWx1ZSB0byBkaXNwbGF5XG4gICovXG4tdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxuJiM0Mzt2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxuIHtcbiBcdHN0cnVjdCBpY2VfYXFjX2dldF9waHlfY2Fwc19kYXRhICpjYXBzO1xuIFx0Y29uc3QgY2hhciAqYW5fYWR2ZXJ0aXNlZDtcbkBAIC03OTcsNyAmIzQzOzc5OCw3IEBAIHZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cClcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0c3dpdGNoICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8ubGlua19zcGVlZCkge1xuJiM0MztcdHN3aXRjaCAobGlua19zcGVlZCkge1xuIFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMDBHQjpcbiBcdFx0c3BlZWQgPSBcJiMzNDsyMDAgR1wmIzM0OztcbiBcdFx0YnJlYWs7XG5AQCAtMTEzMCw4ICYjNDM7MTEzMSwxMCBAQCBpY2VfbGlua19ldmVudChzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCBib29sIGxpbmtfdXAsXG4gXHQvKiBDaGVjayBpZiB0aGUgbGluayBzdGF0ZSBpcyB1cCBhZnRlciB1cGRhdGluZyBsaW5rIGluZm8sIGFuZCB0cmVhdFxuIFx0ICogdGhpcyBldmVudCBhcyBhbiBVUCBldmVudCBzaW5jZSB0aGUgbGluayBpcyBhY3R1YWxseSBVUCBub3cuXG4gXHQgKi9cbi1cdGlmIChwaHlfaW5mby1cdTAwM2VsaW5rX2luZm8ubGlua19pbmZvIFx1MDAyNiBJQ0VfQVFfTElOS19VUClcbiYjNDM7XHRpZiAocGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApIHtcbiBcdFx0bGlua191cCA9IHRydWU7XG4mIzQzO1x0XHRsaW5rX3NwZWVkID0gcGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfc3BlZWQ7XG4mIzQzO1x0fVxuIFxuIFx0dnNpID0gaWNlX2dldF9tYWluX3ZzaShwZik7XG4gXHRpZiAoIXZzaSB8fCAhdnNpLVx1MDAzZXBvcnRfaW5mbylcbkBAIC0xMTYxLDcgJiM0MzsxMTY0LDcgQEAgaWNlX2xpbmtfZXZlbnQoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgYm9vbCBsaW5rX3VwLFxuIFx0XHRcdGljZV9zZXRfZGZsdF9taWIocGYpO1xuIFx0fVxuIFx0aWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7XG4tXHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwKTtcbiYjNDM7XHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwLCBsaW5rX3NwZWVkKTtcbiBcbiBcdGljZV92Y19ub3RpZnlfbGlua19zdGF0ZShwZik7XG4gXG5AQCAtNjczMiw3ICYjNDM7NjczNSw4IEBAIHN0YXRpYyBpbnQgaWNlX3VwX2NvbXBsZXRlKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4gXHQgICAgKHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX2luZm8gXHUwMDI2IElDRV9BUV9MSU5LX1VQKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAoKHZzaS1cdTAwM2VuZXRkZXYgXHUwMDI2XHUwMDI2ICh2c2ktXHUwMDNldHlwZSA9PSBJQ0VfVlNJX1BGIHx8XG4gXHRcdFx0ICAgICAgdnNpLVx1MDAzZXR5cGUgPT0gSUNFX1ZTSV9TRikpKSkge1xuLVx0XHRpY2VfcHJpbnRfbGlua19tc2codnNpLCB0cnVlKTtcbiYjNDM7XHRcdGljZV9wcmludF9saW5rX21zZyh2c2ksIHRydWUsXG4mIzQzO1x0XHRcdFx0ICAgdnNpLVx1MDAzZXBvcnRfaW5mby1cdTAwM2VwaHkubGlua19pbmZvLmxpbmtfc3BlZWQpO1xuIFx0XHRuZXRpZl90eF9zdGFydF9hbGxfcXVldWVzKHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29uKHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHRpY2VfcHRwX2xpbmtfY2hhbmdlKHBmLCB0cnVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgaWNlX3ByaW50X2xpbmtfbXNnYCB0byBleHBsaWNpdGx5IHByb3ZpZGUgdGhlIGxpbmsgc3BlZWQgaW5zdGVhZCBvZiByZWFkaW5nIGl0IGZyb20gdGhlIHBvcnQgaW5mbyBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc29sZWx5IHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGxpbmsgc3RhdHVzIChlLmcuLCBcJiMzNDtOSUMgTGluayBpcyBEb3duXCYjMzQ7IG9yIHNwZWVkL0ZFQyBkZXRhaWxzKSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWQ0MDQwNjBkYzkyMzg1MzAxZTQ3NmE1Mzc3OTIxNTE1ZGU5MjE2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDEyOjQ3OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oCmluZGV4IGY3MmJiMWFhNDA2NzQxLi44MjAxNjM5NzdlMzYzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaApAQCAtMTAwNiw3ICYjNDM7MTAwNiw3IEBAIGludCBpY2VfZ2V0X3Jzc19rZXkoc3RydWN0IGljZV92c2kgKnZzaSwgdTggKnNlZWQpOwogaW50IGljZV9zZXRfcnNzX2hmdW5jKHN0cnVjdCBpY2VfdnNpICp2c2ksIHU4IGhmdW5jKTsKIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7CiBpbnQgaWNlX3NjaGVkdWxlX3Jlc2V0KHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXQpOwotdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKTsKJiM0Mzt2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKTsKIGludCBpY2VfcGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTsKIHZvaWQgaWNlX3VucGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTsKIHZvaWQgaWNlX3JkbWFfZmluYWxpemVfc2V0dXAoc3RydWN0IGljZV9wZiAqcGYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwppbmRleCA0OTM3MWIwNjU4NDU4Mi4uZjE0NzVhMTlkNzIxY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jCkBAIC0yNzg1LDcgJiM0MzsyNzg1LDcgQEAgaWNlX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQkvKiBUZWxsIHRoZSBPUyBsaW5rIGlzIGdvaW5nIGRvd24sIHRoZSBsaW5rIHdpbGwgZ28KIAkJICogYmFjayB1cCB3aGVuIGZ3IHNheXMgaXQgaXMgcmVhZHkgYXN5bmNocm9ub3VzbHkKIAkJICovCi0JCWljZV9wcmludF9saW5rX21zZyhucC0mZ3Q7dnNpLCBmYWxzZSk7CiYjNDM7CQlpY2VfcHJpbnRfbGlua19tc2cobnAtJmd0O3ZzaSwgZmFsc2UsIDApOwogCQluZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpOwogCQluZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCmluZGV4IGUyZmQyZGFiMDNlMzYzLi4xYmUxMzAxYTEzODM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMKQEAgLTc3Miw4ICYjNDM7NzcyLDkgQEAgc3RhdGljIHZvaWQgaWNlX3ByaW50X3RvcG9fY29uZmxpY3Qoc3RydWN0IGljZV92c2kgKnZzaSkKICAqIGljZV9wcmludF9saW5rX21zZyAtIHByaW50IGxpbmsgdXAgb3IgZG93biBtZXNzYWdlCiAgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGxpbmsgc3RhdHVzIGlzIGJlaW5nIHF1ZXJpZWQKICAqIEBpc3VwOiBib29sZWFuIGZvciBpZiB0aGUgbGluayBpcyBub3cgdXAgb3IgZG93bgomIzQzOyAqIEBsaW5rX3NwZWVkOiBjdXJyZW50IGxpbmsgc3BlZWQgdmFsdWUgdG8gZGlzcGxheQogICovCi12b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApCiYjNDM7dm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwLCB1MTYgbGlua19zcGVlZCkKIHsKIAlzdHJ1Y3QgaWNlX2FxY19nZXRfcGh5X2NhcHNfZGF0YSAqY2FwczsKIAljb25zdCBjaGFyICphbl9hZHZlcnRpc2VkOwpAQCAtNzk3LDcgJiM0Mzs3OTgsNyBAQCB2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApCiAJCXJldHVybjsKIAl9CiAKLQlzd2l0Y2ggKHZzaS0mZ3Q7cG9ydF9pbmZvLSZndDtwaHkubGlua19pbmZvLmxpbmtfc3BlZWQpIHsKJiM0MzsJc3dpdGNoIChsaW5rX3NwZWVkKSB7CiAJY2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMDBHQjoKIAkJc3BlZWQgPSAmIzM0OzIwMCBHJiMzNDs7CiAJCWJyZWFrOwpAQCAtMTEzMCw4ICYjNDM7MTEzMSwxMCBAQCBpY2VfbGlua19ldmVudChzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCBib29sIGxpbmtfdXAsCiAJLyogQ2hlY2sgaWYgdGhlIGxpbmsgc3RhdGUgaXMgdXAgYWZ0ZXIgdXBkYXRpbmcgbGluayBpbmZvLCBhbmQgdHJlYXQKIAkgKiB0aGlzIGV2ZW50IGFzIGFuIFVQIGV2ZW50IHNpbmNlIHRoZSBsaW5rIGlzIGFjdHVhbGx5IFVQIG5vdy4KIAkgKi8KLQlpZiAocGh5X2luZm8tJmd0O2xpbmtfaW5mby5saW5rX2luZm8gJmFtcDsgSUNFX0FRX0xJTktfVVApCiYjNDM7CWlmIChwaHlfaW5mby0mZ3Q7bGlua19pbmZvLmxpbmtfaW5mbyAmYW1wOyBJQ0VfQVFfTElOS19VUCkgewogCQlsaW5rX3VwID0gdHJ1ZTsKJiM0MzsJCWxpbmtfc3BlZWQgPSBwaHlfaW5mby0mZ3Q7bGlua19pbmZvLmxpbmtfc3BlZWQ7CiYjNDM7CX0KIAogCXZzaSA9IGljZV9nZXRfbWFpbl92c2kocGYpOwogCWlmICghdnNpIHx8ICF2c2ktJmd0O3BvcnRfaW5mbykKQEAgLTExNjEsNyAmIzQzOzExNjQsNyBAQCBpY2VfbGlua19ldmVudChzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCBib29sIGxpbmtfdXAsCiAJCQlpY2Vfc2V0X2RmbHRfbWliKHBmKTsKIAl9CiAJaWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7Ci0JaWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgbGlua191cCk7CiYjNDM7CWljZV9wcmludF9saW5rX21zZyh2c2ksIGxpbmtfdXAsIGxpbmtfc3BlZWQpOwogCiAJaWNlX3ZjX25vdGlmeV9saW5rX3N0YXRlKHBmKTsKIApAQCAtNjczMiw3ICYjNDM7NjczNSw4IEBAIHN0YXRpYyBpbnQgaWNlX3VwX2NvbXBsZXRlKHN0cnVjdCBpY2VfdnNpICp2c2kpCiAJICAgICh2c2ktJmd0O3BvcnRfaW5mby0mZ3Q7cGh5LmxpbmtfaW5mby5saW5rX2luZm8gJmFtcDsgSUNFX0FRX0xJTktfVVApICZhbXA7JmFtcDsKIAkgICAgKCh2c2ktJmd0O25ldGRldiAmYW1wOyZhbXA7ICh2c2ktJmd0O3R5cGUgPT0gSUNFX1ZTSV9QRiB8fAogCQkJICAgICAgdnNpLSZndDt0eXBlID09IElDRV9WU0lfU0YpKSkpIHsKLQkJaWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgdHJ1ZSk7CiYjNDM7CQlpY2VfcHJpbnRfbGlua19tc2codnNpLCB0cnVlLAomIzQzOwkJCQkgICB2c2ktJmd0O3BvcnRfaW5mby0mZ3Q7cGh5LmxpbmtfaW5mby5saW5rX3NwZWVkKTsKIAkJbmV0aWZfdHhfc3RhcnRfYWxsX3F1ZXVlcyh2c2ktJmd0O25ldGRldik7CiAJCW5ldGlmX2NhcnJpZXJfb24odnNpLSZndDtuZXRkZXYpOwogCQlpY2VfcHRwX2xpbmtfY2hhbmdlKHBmLCB0cnVlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIElDRSBEcml2ZXIgTGluayBNZXNzYWdlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBpY2VfcHJpbnRfbGlua19tc2dgIGFuZCBpdHMgY2FsbGVycyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIGBsaW5rX3NwZWVkYCBwYXJhbWV0ZXIgdG8gdGhhdCBmdW5jdGlvbiBhbmQgcmVwbGFjaW5nIHRoZSBleGlzdGluZyB1c2FnZSBvZiBgdnNpLSZndDtwb3J0X2luZm8tJmd0O3BoeS5saW5rX2luZm8ubGlua19zcGVlZGAgd2l0aCB0aGlzIG5ldyBwYXJhbWV0ZXIuCgpIbW0sIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEEgcHVyZWx5IGNvc21ldGljIGNoYW5nZSwgYXMgZmFyIGFzIEkgY2FuIHRlbGwg4oCTIGp1c3QgaW1wYWN0aW5nIHRoZSBsb2dnaW5nIG91dHB1dC4gIGBpY2VfcHJpbnRfbGlua19tc2dgIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRob3NlICYjMzQ7bGluayB1cCYjMzQ7IGFuZCAmIzM0O2xpbmsgZG93biYjMzQ7IG1lc3NhZ2VzLCByaWdodD8gSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYS4gSG93ZXZlciwgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gSXQgY2FuJiMzOTt0IGh1cnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgaWNlX3ByaW50X2xpbmtfbXNnYCBmdW5jdGlvbiB0byBlbnN1cmUgaXQgKm9ubHkqIGRvZXMgbG9nZ2luZy4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgcGFyYW1ldGVyIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIGljZV9wcmludF9saW5rX21zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTc1MD1zdGF0aWMgdm9pZCBpY2VfcHJpbnRfdG9wb19jb25mbGljdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTc3Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjc3Nzp2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNzc4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODEzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgQ29kZSYjMzk7cyBJbnRlbnQ6IGBpY2VfcHJpbnRfbGlua19tc2dgKioKClJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3JlIG9uIHRoZSBzYW1lIHBhZ2UuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgYnJvYWRlciBjb250ZXh0LCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSB0aGUgYWN0dWFsIGJlaGF2aW9yIG9mIGBpY2VfcHJpbnRfbGlua19tc2dgLiBUaGVyZSYjMzk7cyBsaWtlbHkgc29tZSBudWFuY2UgaGVyZSwgYW5kIGFzc3VtaW5nIEkga25vdyB3aGF0IGl0IGRvZXMgd2l0aG91dCBjaGVja2luZyBjb3VsZCBsZWFkIG1lIGRvd24gdGhlIHdyb25nIHBhdGgsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaWNlLWJhc2VkIHN5c3RlbXMuIEl0JiMzOTtzIHRvbyBlYXN5IHRvIG1ha2UgaW5jb3JyZWN0IGFzc3VtcHRpb25zLiBJJiMzOTtsbCBxdWlja2x5IGxvb2sgb3ZlciB0aGF0IHJvdXRpbmUgYW5kIGVuc3VyZSBJIGhhdmUgYSBmaXJtIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgaW4gdGhpcyBzeXN0ZW0uIEl0IGNvdWxkIGJlIGEgc2ltcGxlIGRlYnVnZ2luZyBwcmludCwgYSBjcnVjaWFsIGxvZ2dpbmcgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBldmVuIG1vcmUgY29tcGxleCBkZXBlbmRlbnQgb24gdGhlIHN1cnJvdW5kaW5nIGNvbmZpZ3VyYXRpb24uIEEgYnJpZWYgbG9vayBub3cgd2lsbCBzYXZlIHRpbWUgbGF0ZXIsIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50IG1vcmUgc2VyaW91cyBpc3N1ZXMuIE5vIG5lZWQgdG8gcmV3cml0ZSB0aGUgd2hlZWwgaWYgc29tZW9uZSBlbHNlIGhhcyB0aG91Z2h0IG9mIGEgc29sdXRpb24gYWxyZWFkeS4gSSBzaG91bGQganVzdCBjb25maXJtIHRoZSBjb2RlJiMzOTtzIGludGVuZGVkIGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzc3Olx0dm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwLCB1MTYgbGlua19zcGVlZClcbiA3Nzg6XHR7XG4gNzc5Olx0XHRzdHJ1Y3QgaWNlX2FxY19nZXRfcGh5X2NhcHNfZGF0YSAqY2FwcztcbiA3ODA6XHRcdGNvbnN0IGNoYXIgKmFuX2FkdmVydGlzZWQ7XG4gNzgxOlx0XHRjb25zdCBjaGFyICpmZWNfcmVxO1xuIDc4MjpcdFx0Y29uc3QgY2hhciAqc3BlZWQ7XG4gNzgzOlx0XHRjb25zdCBjaGFyICpmZWM7XG4gNzg0Olx0XHRjb25zdCBjaGFyICpmYztcbiA3ODU6XHRcdGNvbnN0IGNoYXIgKmFuO1xuIDc4NjpcdFx0aW50IHN0YXR1cztcbiA3ODc6XHRcbiA3ODg6XHRcdGlmICghdnNpKVxuIDc4OTpcdFx0XHRyZXR1cm47XG4gNzkwOlx0XG4gNzkxOlx0XHRpZiAodnNpLVx1MDAzZWN1cnJlbnRfaXN1cCA9PSBpc3VwKVxuIDc5MjpcdFx0XHRyZXR1cm47XG4gNzkzOlx0XG4gNzk0Olx0XHR2c2ktXHUwMDNlY3VycmVudF9pc3VwID0gaXN1cDtcbiA3OTU6XHRcbiA3OTY6XHRcdGlmICghaXN1cCkge1xuIDc5NzpcdFx0XHRuZXRkZXZfaW5mbyh2c2ktXHUwMDNlbmV0ZGV2LCBcJiMzNDtOSUMgTGluayBpcyBEb3duXFxuXCYjMzQ7KTtcbiA3OTg6XHRcdFx0cmV0dXJuO1xuIDc5OTpcdFx0fVxuIDgwMDpcdFxuIDgwMTpcdFx0c3dpdGNoIChsaW5rX3NwZWVkKSB7XG4gODAyOlx0XHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzIwMEdCOlxuIDgwMzpcdFx0XHRzcGVlZCA9IFwmIzM0OzIwMCBHXCYjMzQ7O1xuIDgwNDpcdFx0XHRicmVhaztcbiA4MDU6XHRcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMTAwR0I6XG4gODA2Olx0XHRcdHNwZWVkID0gXCYjMzQ7MTAwIEdcJiMzNDs7XG4gODA3Olx0XHRcdGJyZWFrO1xuIDgwODpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF81MEdCOlxuIDgwOTpcdFx0XHRzcGVlZCA9IFwmIzM0OzUwIEdcJiMzNDs7XG4gODEwOlx0XHRcdGJyZWFrO1xuIDgxMTpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF80MEdCOlxuIDgxMjpcdFx0XHRzcGVlZCA9IFwmIzM0OzQwIEdcJiMzNDs7XG4gODEzOlx0XHRcdGJyZWFrO1xuIDgxNDpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yNUdCOlxuIDgxNTpcdFx0XHRzcGVlZCA9IFwmIzM0OzI1IEdcJiMzNDs7XG4gODE2Olx0XHRcdGJyZWFrO1xuIDgxNzpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMEdCOlxuIDgxODpcdFx0XHRzcGVlZCA9IFwmIzM0OzIwIEdcJiMzNDs7XG4gODE5Olx0XHRcdGJyZWFrO1xuIDgyMDpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8xMEdCOlxuIDgyMTpcdFx0XHRzcGVlZCA9IFwmIzM0OzEwIEdcJiMzNDs7XG4gODIyOlx0XHRcdGJyZWFrO1xuIDgyMzpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF81R0I6XG4gODI0Olx0XHRcdHNwZWVkID0gXCYjMzQ7NSBHXCYjMzQ7O1xuIDgyNTpcdFx0XHRicmVhaztcbiA4MjY6XHRcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMjUwME1COlxuIDgyNzpcdFx0XHRzcGVlZCA9IFwmIzM0OzIuNSBHXCYjMzQ7O1xuIDgyODpcdFx0XHRicmVhaztcbiA4Mjk6XHRcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMTAwME1COlxuIDgzMDpcdFx0XHRzcGVlZCA9IFwmIzM0OzEgR1wmIzM0OztcbiA4MzE6XHRcdFx0YnJlYWs7XG4gODMyOlx0XHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzEwME1COlxuIDgzMzpcdFx0XHRzcGVlZCA9IFwmIzM0OzEwMCBNXCYjMzQ7O1xuIDgzNDpcdFx0XHRicmVhaztcbiA4MzU6XHRcdGRlZmF1bHQ6XG4gODM2Olx0XHRcdHNwZWVkID0gXCYjMzQ7VW5rbm93biBcJiMzNDs7XG4gODM3Olx0XHRcdGJyZWFrO1xuIDgzODpcdFx0fVxuIDgzOTpcdFxuIDg0MDpcdFx0c3dpdGNoICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZWZjLmN1cnJlbnRfbW9kZSkge1xuIDg0MTpcdFx0Y2FzZSBJQ0VfRkNfRlVMTDpcbiA4NDI6XHRcdFx0ZmMgPSBcJiMzNDtSeC9UeFwmIzM0OztcbiA4NDM6XHRcdFx0YnJlYWs7XG4gODQ0Olx0XHRjYXNlIElDRV9GQ19UWF9QQVVTRTpcbiA4NDU6XHRcdFx0ZmMgPSBcJiMzNDtUeFwmIzM0OztcbiA4NDY6XHRcdFx0YnJlYWs7XG4gODQ3Olx0XHRjYXNlIElDRV9GQ19SWF9QQVVTRTpcbiA4NDg6XHRcdFx0ZmMgPSBcJiMzNDtSeFwmIzM0OztcbiA4NDk6XHRcdFx0YnJlYWs7XG4gODUwOlx0XHRjYXNlIElDRV9GQ19OT05FOlxuIDg1MTpcdFx0XHRmYyA9IFwmIzM0O05vbmVcJiMzNDs7XG4gODUyOlx0XHRcdGJyZWFrO1xuIDg1MzpcdFx0ZGVmYXVsdDpcbiA4NTQ6XHRcdFx0ZmMgPSBcJiMzNDtVbmtub3duXCYjMzQ7O1xuIDg1NTpcdFx0XHRicmVhaztcbiA4NTY6XHRcdH1cbiA4NTc6XHRcbiA4NTg6XHRcdC8qIEdldCBGRUMgbW9kZSBiYXNlZCBvbiBuZWdvdGlhdGVkIGxpbmsgaW5mbyAqL1xuIDg1OTpcdFx0c3dpdGNoICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8uZmVjX2luZm8pIHtcbiA4NjA6XHRcdGNhc2UgSUNFX0FRX0xJTktfMjVHX1JTXzUyOF9GRUNfRU46XG4gODYxOlx0XHRjYXNlIElDRV9BUV9MSU5LXzI1R19SU181NDRfRkVDX0VOOlxuIDg2MjpcdFx0XHRmZWMgPSBcJiMzNDtSUy1GRUNcJiMzNDs7XG4gODYzOlx0XHRcdGJyZWFrO1xuIDg2NDpcdFx0Y2FzZSBJQ0VfQVFfTElOS18yNUdfS1JfRkVDX0VOOlxuIDg2NTpcdFx0XHRmZWMgPSBcJiMzNDtGQy1GRUMvQkFTRS1SXCYjMzQ7O1xuIDg2NjpcdFx0XHRicmVhaztcbiA4Njc6XHRcdGRlZmF1bHQ6XG4gODY4Olx0XHRcdGZlYyA9IFwmIzM0O05PTkVcJiMzNDs7XG4gODY5Olx0XHRcdGJyZWFrO1xuIDg3MDpcdFx0fVxuIDg3MTpcdFxuIDg3MjpcdFx0LyogY2hlY2sgaWYgYXV0b25lZyBjb21wbGV0ZWQsIG1pZ2h0IGJlIGZhbHNlIGR1ZSB0byBub3Qgc3VwcG9ydGVkICovXG4gODczOlx0XHRpZiAodnNpLVx1MDAzZXBvcnRfaW5mby1cdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm8gXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXG4gODc0Olx0XHRcdGFuID0gXCYjMzQ7VHJ1ZVwmIzM0OztcbiA4NzU6XHRcdGVsc2VcbiA4NzY6XHRcdFx0YW4gPSBcJiMzNDtGYWxzZVwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDkzCgkJCQkJCQlvdXRwdXQ6IDEwMwoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUganVzdCByZXZpZXdlZCB0aGUgY2hhbmdlcyB0byBgaWNlX3ByaW50X2xpbmtfbXNnYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHZlcnkgbG9jYWxpemVkIG1vZGlmaWNhdGlvbi4gSSBzZWUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhlIHNldHRpbmcgb2YgYHZzaS0mZ3Q7Y3VycmVudF9pc3VwID0gaXN1cGAsIHJlbWFpbnMgdW5jaGFuZ2VkIGZyb20gdGhlIHByZXZpb3VzIHZlcnNpb24uIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBub3cgd2UgYXJlIHBhc3NpbmcgYGxpbmtfc3BlZWRgIGFzIGEgZGlyZWN0IGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbiwgcmF0aGVyIHRoYW4gcmVhZGluZyBpdCBmcm9tIGB2c2ktJmd0O3BvcnRfaW5mby0mZ3Q7cGh5LmxpbmtfaW5mby5saW5rX3NwZWVkYC4gVGhpcyBzdWdnZXN0cyBpdCBpcyBhIGNoYW5nZSBwdXJlbHkgcmVsYXRlZCB0byBsb2dnaW5nOyB0aGUgYWN0dWFsIGRyaXZlciYjMzk7cyBvcGVyYXRpb25hbCBsb2dpYyBhcHBlYXJzIHVudG91Y2hlZC4gR2l2ZW4gdGhpcyBsaW1pdGVkIHNjb3BlLCBhbmQgdGhlIGxhY2sgb2YgZnVuY3Rpb25hbCBjaGFuZ2UsIEkmIzM5O20gY29uZmlkZW50IGluIGNvbmNsdWRpbmcgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdXp6aW5nIHZlY3RvcnMgdGhhdCBhcmUgd29ydGh5IG9mIGZ1cnRoZXIgZXhwbG9yYXRpb24uIFRoZXJlZm9yZSwgSSB3aWxsIGNsYXNzaWZ5IHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpY2VfcHJpbnRfbGlua19tc2dgIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgbGluayBzcGVlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgcG9ydCBpbmZvIHN0cnVjdHVyZS4gVGhpcyBmdW5jdGlvbiBpcyBzb2xlbHkgdXNlZCBmb3IgbG9nZ2luZyB0aGUgbGluayBzdGF0dXMgKGUuZy4sIFwmIzM0O05JQyBMaW5rIGlzIERvd25cJiMzNDsgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpY2VfcHJpbnRfbGlua19tc2dgIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgbGluayBzcGVlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgcG9ydCBpbmZvIHN0cnVjdHVyZS4gVGhpcyBmdW5jdGlvbiBpcyBzb2xlbHkgdXNlZCBmb3IgbG9nZ2luZyB0aGUgbGluayBzdGF0dXMgKGUuZy4sIFwmIzM0O05JQyBMaW5rIGlzIERvd25cJiMzNDsgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MDYuODU2OTIyNzExWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4ODM3NDI4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYGljZV9wcmludF9saW5rX21zZ2AgdG8gZXhwbGljaXRseSBwcm92aWRlIHRoZSBsaW5rIHNwZWVkIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBwb3J0IGluZm8gc3RydWN0dXJlLiBUaGlzIGZ1bmN0aW9uIGlzIHNvbGVseSB1c2VkIGZvciBsb2dnaW5nIHRoZSBsaW5rIHN0YXR1cyAoZS5nLiwgXFxcIk5JQyBMaW5rIGlzIERvd25cXFwiIG9yIHNwZWVkL0ZFQyBkZXRhaWxzKSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MDYuODU2OTI4NDgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM3MDc4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZDQwNDA2MGRjOTIzODUzMDFlNDc2YTUzNzc5MjE1MTVkZTkyMTYyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDEyOjQ3OjA1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxcbmluZGV4IGY3MmJiMWFhNDA2NzQxLi44MjAxNjM5NzdlMzYzYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcXG5AQCAtMTAwNiw3ICsxMDA2LDcgQEAgaW50IGljZV9nZXRfcnNzX2tleShzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1OCAqc2VlZCk7XFxuIGludCBpY2Vfc2V0X3Jzc19oZnVuYyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1OCBoZnVuYyk7XFxuIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7XFxuIGludCBpY2Vfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX3Jlc2V0X3JlcSByZXNldCk7XFxuLXZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCk7XFxuK3ZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpO1xcbiBpbnQgaWNlX3BsdWdfYXV4X2RldihzdHJ1Y3QgaWNlX3BmICpwZik7XFxuIHZvaWQgaWNlX3VucGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTtcXG4gdm9pZCBpY2VfcmRtYV9maW5hbGl6ZV9zZXR1cChzdHJ1Y3QgaWNlX3BmICpwZik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5pbmRleCA0OTM3MWIwNjU4NDU4Mi4uZjE0NzVhMTlkNzIxY2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xcbkBAIC0yNzg1LDcgKzI3ODUsNyBAQCBpY2Vfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdC8qIFRlbGwgdGhlIE9TIGxpbmsgaXMgZ29pbmcgZG93biwgdGhlIGxpbmsgd2lsbCBnb1xcbiBcXHRcXHQgKiBiYWNrIHVwIHdoZW4gZncgc2F5cyBpdCBpcyByZWFkeSBhc3luY2hyb25vdXNseVxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVxcdTAwM2V2c2ksIGZhbHNlKTtcXG4rXFx0XFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVxcdTAwM2V2c2ksIGZhbHNlLCAwKTtcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vZmYobmV0ZGV2KTtcXG4gXFx0XFx0bmV0aWZfdHhfc3RvcF9hbGxfcXVldWVzKG5ldGRldik7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbmluZGV4IGUyZmQyZGFiMDNlMzYzLi4xYmUxMzAxYTEzODM4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXFxuQEAgLTc3Miw4ICs3NzIsOSBAQCBzdGF0aWMgdm9pZCBpY2VfcHJpbnRfdG9wb19jb25mbGljdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbiAgKiBpY2VfcHJpbnRfbGlua19tc2cgLSBwcmludCBsaW5rIHVwIG9yIGRvd24gbWVzc2FnZVxcbiAgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGxpbmsgc3RhdHVzIGlzIGJlaW5nIHF1ZXJpZWRcXG4gICogQGlzdXA6IGJvb2xlYW4gZm9yIGlmIHRoZSBsaW5rIGlzIG5vdyB1cCBvciBkb3duXFxuKyAqIEBsaW5rX3NwZWVkOiBjdXJyZW50IGxpbmsgc3BlZWQgdmFsdWUgdG8gZGlzcGxheVxcbiAgKi9cXG4tdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxcbit2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxcbiB7XFxuIFxcdHN0cnVjdCBpY2VfYXFjX2dldF9waHlfY2Fwc19kYXRhICpjYXBzO1xcbiBcXHRjb25zdCBjaGFyICphbl9hZHZlcnRpc2VkO1xcbkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdHN3aXRjaCAodnNpLVxcdTAwM2Vwb3J0X2luZm8tXFx1MDAzZXBoeS5saW5rX2luZm8ubGlua19zcGVlZCkge1xcbitcXHRzd2l0Y2ggKGxpbmtfc3BlZWQpIHtcXG4gXFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMDBHQjpcXG4gXFx0XFx0c3BlZWQgPSBcXFwiMjAwIEdcXFwiO1xcbiBcXHRcXHRicmVhaztcXG5AQCAtMTEzMCw4ICsxMTMxLDEwIEBAIGljZV9saW5rX2V2ZW50KHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGksIGJvb2wgbGlua191cCxcXG4gXFx0LyogQ2hlY2sgaWYgdGhlIGxpbmsgc3RhdGUgaXMgdXAgYWZ0ZXIgdXBkYXRpbmcgbGluayBpbmZvLCBhbmQgdHJlYXRcXG4gXFx0ICogdGhpcyBldmVudCBhcyBhbiBVUCBldmVudCBzaW5jZSB0aGUgbGluayBpcyBhY3R1YWxseSBVUCBub3cuXFxuIFxcdCAqL1xcbi1cXHRpZiAocGh5X2luZm8tXFx1MDAzZWxpbmtfaW5mby5saW5rX2luZm8gXFx1MDAyNiBJQ0VfQVFfTElOS19VUClcXG4rXFx0aWYgKHBoeV9pbmZvLVxcdTAwM2VsaW5rX2luZm8ubGlua19pbmZvIFxcdTAwMjYgSUNFX0FRX0xJTktfVVApIHtcXG4gXFx0XFx0bGlua191cCA9IHRydWU7XFxuK1xcdFxcdGxpbmtfc3BlZWQgPSBwaHlfaW5mby1cXHUwMDNlbGlua19pbmZvLmxpbmtfc3BlZWQ7XFxuK1xcdH1cXG4gXFxuIFxcdHZzaSA9IGljZV9nZXRfbWFpbl92c2kocGYpO1xcbiBcXHRpZiAoIXZzaSB8fCAhdnNpLVxcdTAwM2Vwb3J0X2luZm8pXFxuQEAgLTExNjEsNyArMTE2NCw3IEBAIGljZV9saW5rX2V2ZW50KHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGksIGJvb2wgbGlua191cCxcXG4gXFx0XFx0XFx0aWNlX3NldF9kZmx0X21pYihwZik7XFxuIFxcdH1cXG4gXFx0aWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7XFxuLVxcdGljZV9wcmludF9saW5rX21zZyh2c2ksIGxpbmtfdXApO1xcbitcXHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwLCBsaW5rX3NwZWVkKTtcXG4gXFxuIFxcdGljZV92Y19ub3RpZnlfbGlua19zdGF0ZShwZik7XFxuIFxcbkBAIC02NzMyLDcgKzY3MzUsOCBAQCBzdGF0aWMgaW50IGljZV91cF9jb21wbGV0ZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbiBcXHQgICAgKHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VwaHkubGlua19pbmZvLmxpbmtfaW5mbyBcXHUwMDI2IElDRV9BUV9MSU5LX1VQKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKCh2c2ktXFx1MDAzZW5ldGRldiBcXHUwMDI2XFx1MDAyNiAodnNpLVxcdTAwM2V0eXBlID09IElDRV9WU0lfUEYgfHxcXG4gXFx0XFx0XFx0ICAgICAgdnNpLVxcdTAwM2V0eXBlID09IElDRV9WU0lfU0YpKSkpIHtcXG4tXFx0XFx0aWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgdHJ1ZSk7XFxuK1xcdFxcdGljZV9wcmludF9saW5rX21zZyh2c2ksIHRydWUsXFxuK1xcdFxcdFxcdFxcdCAgIHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VwaHkubGlua19pbmZvLmxpbmtfc3BlZWQpO1xcbiBcXHRcXHRuZXRpZl90eF9zdGFydF9hbGxfcXVldWVzKHZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vbih2c2ktXFx1MDAzZW5ldGRldik7XFxuIFxcdFxcdGljZV9wdHBfbGlua19jaGFuZ2UocGYsIHRydWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMjo0NzowNy4zNTEyNDYwNDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzM4OTQxNDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgaWNlX3ByaW50X2xpbmtfbXNnYCB0byBleHBsaWNpdGx5IHByb3ZpZGUgdGhlIGxpbmsgc3BlZWQgaW5zdGVhZCBvZiByZWFkaW5nIGl0IGZyb20gdGhlIHBvcnQgaW5mbyBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc29sZWx5IHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGxpbmsgc3RhdHVzIChlLmcuLCBcXFwiTklDIExpbmsgaXMgRG93blxcXCIgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVkNDA0MDYwZGM5MjM4NTMwMWU0NzZhNTM3NzkyMTUxNWRlOTIxNjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxMjo0NzowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuaW5kZXggZjcyYmIxYWE0MDY3NDEuLjgyMDE2Mzk3N2UzNjNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcbkBAIC0xMDA2LDcgKzEwMDYsNyBAQCBpbnQgaWNlX2dldF9yc3Nfa2V5KHN0cnVjdCBpY2VfdnNpICp2c2ksIHU4ICpzZWVkKTtcbiBpbnQgaWNlX3NldF9yc3NfaGZ1bmMoc3RydWN0IGljZV92c2kgKnZzaSwgdTggaGZ1bmMpO1xuIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7XG4gaW50IGljZV9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0KTtcbi12b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApO1xuK3ZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpO1xuIGludCBpY2VfcGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTtcbiB2b2lkIGljZV91bnBsdWdfYXV4X2RldihzdHJ1Y3QgaWNlX3BmICpwZik7XG4gdm9pZCBpY2VfcmRtYV9maW5hbGl6ZV9zZXR1cChzdHJ1Y3QgaWNlX3BmICpwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuaW5kZXggNDkzNzFiMDY1ODQ1ODIuLmYxNDc1YTE5ZDcyMWNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMjc4NSw3ICsyNzg1LDcgQEAgaWNlX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHQvKiBUZWxsIHRoZSBPUyBsaW5rIGlzIGdvaW5nIGRvd24sIHRoZSBsaW5rIHdpbGwgZ29cbiBcdFx0ICogYmFjayB1cCB3aGVuIGZ3IHNheXMgaXQgaXMgcmVhZHkgYXN5bmNocm9ub3VzbHlcbiBcdFx0ICovXG4tXHRcdGljZV9wcmludF9saW5rX21zZyhucC1cdTAwM2V2c2ksIGZhbHNlKTtcbitcdFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVx1MDAzZXZzaSwgZmFsc2UsIDApO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpO1xuIFx0XHRuZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZkMmRhYjAzZTM2My4uMWJlMTMwMWExMzgzODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC03NzIsOCArNzcyLDkgQEAgc3RhdGljIHZvaWQgaWNlX3ByaW50X3RvcG9fY29uZmxpY3Qoc3RydWN0IGljZV92c2kgKnZzaSlcbiAgKiBpY2VfcHJpbnRfbGlua19tc2cgLSBwcmludCBsaW5rIHVwIG9yIGRvd24gbWVzc2FnZVxuICAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgbGluayBzdGF0dXMgaXMgYmVpbmcgcXVlcmllZFxuICAqIEBpc3VwOiBib29sZWFuIGZvciBpZiB0aGUgbGluayBpcyBub3cgdXAgb3IgZG93blxuKyAqIEBsaW5rX3NwZWVkOiBjdXJyZW50IGxpbmsgc3BlZWQgdmFsdWUgdG8gZGlzcGxheVxuICAqL1xuLXZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cClcbit2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxuIHtcbiBcdHN0cnVjdCBpY2VfYXFjX2dldF9waHlfY2Fwc19kYXRhICpjYXBzO1xuIFx0Y29uc3QgY2hhciAqYW5fYWR2ZXJ0aXNlZDtcbkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRzd2l0Y2ggKHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX3NwZWVkKSB7XG4rXHRzd2l0Y2ggKGxpbmtfc3BlZWQpIHtcbiBcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMjAwR0I6XG4gXHRcdHNwZWVkID0gXCIyMDAgR1wiO1xuIFx0XHRicmVhaztcbkBAIC0xMTMwLDggKzExMzEsMTAgQEAgaWNlX2xpbmtfZXZlbnQoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgYm9vbCBsaW5rX3VwLFxuIFx0LyogQ2hlY2sgaWYgdGhlIGxpbmsgc3RhdGUgaXMgdXAgYWZ0ZXIgdXBkYXRpbmcgbGluayBpbmZvLCBhbmQgdHJlYXRcbiBcdCAqIHRoaXMgZXZlbnQgYXMgYW4gVVAgZXZlbnQgc2luY2UgdGhlIGxpbmsgaXMgYWN0dWFsbHkgVVAgbm93LlxuIFx0ICovXG4tXHRpZiAocGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApXG4rXHRpZiAocGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApIHtcbiBcdFx0bGlua191cCA9IHRydWU7XG4rXHRcdGxpbmtfc3BlZWQgPSBwaHlfaW5mby1cdTAwM2VsaW5rX2luZm8ubGlua19zcGVlZDtcbitcdH1cbiBcbiBcdHZzaSA9IGljZV9nZXRfbWFpbl92c2kocGYpO1xuIFx0aWYgKCF2c2kgfHwgIXZzaS1cdTAwM2Vwb3J0X2luZm8pXG5AQCAtMTE2MSw3ICsxMTY0LDcgQEAgaWNlX2xpbmtfZXZlbnQoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgYm9vbCBsaW5rX3VwLFxuIFx0XHRcdGljZV9zZXRfZGZsdF9taWIocGYpO1xuIFx0fVxuIFx0aWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7XG4tXHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwKTtcbitcdGljZV9wcmludF9saW5rX21zZyh2c2ksIGxpbmtfdXAsIGxpbmtfc3BlZWQpO1xuIFxuIFx0aWNlX3ZjX25vdGlmeV9saW5rX3N0YXRlKHBmKTtcbiBcbkBAIC02NzMyLDcgKzY3MzUsOCBAQCBzdGF0aWMgaW50IGljZV91cF9jb21wbGV0ZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuIFx0ICAgICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8ubGlua19pbmZvIFx1MDAyNiBJQ0VfQVFfTElOS19VUCkgXHUwMDI2XHUwMDI2XG4gXHQgICAgKCh2c2ktXHUwMDNlbmV0ZGV2IFx1MDAyNlx1MDAyNiAodnNpLVx1MDAzZXR5cGUgPT0gSUNFX1ZTSV9QRiB8fFxuIFx0XHRcdCAgICAgIHZzaS1cdTAwM2V0eXBlID09IElDRV9WU0lfU0YpKSkpIHtcbi1cdFx0aWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgdHJ1ZSk7XG4rXHRcdGljZV9wcmludF9saW5rX21zZyh2c2ksIHRydWUsXG4rXHRcdFx0XHQgICB2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8ubGlua19zcGVlZCk7XG4gXHRcdG5ldGlmX3R4X3N0YXJ0X2FsbF9xdWV1ZXModnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb24odnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdGljZV9wdHBfbGlua19jaGFuZ2UocGYsIHRydWUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MDcuMzUxMjQ3MzI3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MjQzOTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIElDRSBEcml2ZXIgTGluayBNZXNzYWdlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGljZV9wcmludF9saW5rX21zZ2AgYW5kIGl0cyBjYWxsZXJzIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYSBgbGlua19zcGVlZGAgcGFyYW1ldGVyIHRvIHRoYXQgZnVuY3Rpb24gYW5kIHJlcGxhY2luZyB0aGUgZXhpc3RpbmcgdXNhZ2Ugb2YgYHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX3NwZWVkYCB3aXRoIHRoaXMgbmV3IHBhcmFtZXRlci5cblxuSG1tLCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBBIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UsIGFzIGZhciBhcyBJIGNhbiB0ZWxsIOKAkyBqdXN0IGltcGFjdGluZyB0aGUgbG9nZ2luZyBvdXRwdXQuICBgaWNlX3ByaW50X2xpbmtfbXNnYCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aG9zZSBcImxpbmsgdXBcIiBhbmQgXCJsaW5rIGRvd25cIiBtZXNzYWdlcywgcmlnaHQ/IEknbSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYS4gSG93ZXZlciwgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gSXQgY2FuJ3QgaHVydCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBpY2VfcHJpbnRfbGlua19tc2dgIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCAqb25seSogZG9lcyBsb2dnaW5nLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgZnJvbSB0aGlzIHBhcmFtZXRlciBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNjEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMjo0NzoxMS45OTM2ODgzNzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3MjcwMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCBpY2VfcHJpbnRfbGlua19tc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9NzUwPXN0YXRpYyB2b2lkIGljZV9wcmludF90b3BvX2NvbmZsaWN0KHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy03NzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6Nzc3OnZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNzc4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MTIuMDUzNDIyNTEyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NTg0NzAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgQ29kZSdzIEludGVudDogYGljZV9wcmludF9saW5rX21zZ2AqKlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHNhbWUgcGFnZS4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IHRoZSBhY3R1YWwgYmVoYXZpb3Igb2YgYGljZV9wcmludF9saW5rX21zZ2AuIFRoZXJlJ3MgbGlrZWx5IHNvbWUgbnVhbmNlIGhlcmUsIGFuZCBhc3N1bWluZyBJIGtub3cgd2hhdCBpdCBkb2VzIHdpdGhvdXQgY2hlY2tpbmcgY291bGQgbGVhZCBtZSBkb3duIHRoZSB3cm9uZyBwYXRoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGljZS1iYXNlZCBzeXN0ZW1zLiBJdCdzIHRvbyBlYXN5IHRvIG1ha2UgaW5jb3JyZWN0IGFzc3VtcHRpb25zLiBJJ2xsIHF1aWNrbHkgbG9vayBvdmVyIHRoYXQgcm91dGluZSBhbmQgZW5zdXJlIEkgaGF2ZSBhIGZpcm0gdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gSXQgY291bGQgYmUgYSBzaW1wbGUgZGVidWdnaW5nIHByaW50LCBhIGNydWNpYWwgbG9nZ2luZyBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGV2ZW4gbW9yZSBjb21wbGV4IGRlcGVuZGVudCBvbiB0aGUgc3Vycm91bmRpbmcgY29uZmlndXJhdGlvbi4gQSBicmllZiBsb29rIG5vdyB3aWxsIHNhdmUgdGltZSBsYXRlciwgYW5kIHBvdGVudGlhbGx5IHByZXZlbnQgbW9yZSBzZXJpb3VzIGlzc3Vlcy4gTm8gbmVlZCB0byByZXdyaXRlIHRoZSB3aGVlbCBpZiBzb21lb25lIGVsc2UgaGFzIHRob3VnaHQgb2YgYSBzb2x1dGlvbiBhbHJlYWR5LiBJIHNob3VsZCBqdXN0IGNvbmZpcm0gdGhlIGNvZGUncyBpbnRlbmRlZCBhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMjo0NzoxNS41MzkyNzY5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NzcsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzc3OlxcdHZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpXFxuIDc3ODpcXHR7XFxuIDc3OTpcXHRcXHRzdHJ1Y3QgaWNlX2FxY19nZXRfcGh5X2NhcHNfZGF0YSAqY2FwcztcXG4gNzgwOlxcdFxcdGNvbnN0IGNoYXIgKmFuX2FkdmVydGlzZWQ7XFxuIDc4MTpcXHRcXHRjb25zdCBjaGFyICpmZWNfcmVxO1xcbiA3ODI6XFx0XFx0Y29uc3QgY2hhciAqc3BlZWQ7XFxuIDc4MzpcXHRcXHRjb25zdCBjaGFyICpmZWM7XFxuIDc4NDpcXHRcXHRjb25zdCBjaGFyICpmYztcXG4gNzg1OlxcdFxcdGNvbnN0IGNoYXIgKmFuO1xcbiA3ODY6XFx0XFx0aW50IHN0YXR1cztcXG4gNzg3OlxcdFxcbiA3ODg6XFx0XFx0aWYgKCF2c2kpXFxuIDc4OTpcXHRcXHRcXHRyZXR1cm47XFxuIDc5MDpcXHRcXG4gNzkxOlxcdFxcdGlmICh2c2ktXFx1MDAzZWN1cnJlbnRfaXN1cCA9PSBpc3VwKVxcbiA3OTI6XFx0XFx0XFx0cmV0dXJuO1xcbiA3OTM6XFx0XFxuIDc5NDpcXHRcXHR2c2ktXFx1MDAzZWN1cnJlbnRfaXN1cCA9IGlzdXA7XFxuIDc5NTpcXHRcXG4gNzk2OlxcdFxcdGlmICghaXN1cCkge1xcbiA3OTc6XFx0XFx0XFx0bmV0ZGV2X2luZm8odnNpLVxcdTAwM2VuZXRkZXYsIFxcXCJOSUMgTGluayBpcyBEb3duXFxcXG5cXFwiKTtcXG4gNzk4OlxcdFxcdFxcdHJldHVybjtcXG4gNzk5OlxcdFxcdH1cXG4gODAwOlxcdFxcbiA4MDE6XFx0XFx0c3dpdGNoIChsaW5rX3NwZWVkKSB7XFxuIDgwMjpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzIwMEdCOlxcbiA4MDM6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMjAwIEdcXFwiO1xcbiA4MDQ6XFx0XFx0XFx0YnJlYWs7XFxuIDgwNTpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzEwMEdCOlxcbiA4MDY6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMTAwIEdcXFwiO1xcbiA4MDc6XFx0XFx0XFx0YnJlYWs7XFxuIDgwODpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzUwR0I6XFxuIDgwOTpcXHRcXHRcXHRzcGVlZCA9IFxcXCI1MCBHXFxcIjtcXG4gODEwOlxcdFxcdFxcdGJyZWFrO1xcbiA4MTE6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF80MEdCOlxcbiA4MTI6XFx0XFx0XFx0c3BlZWQgPSBcXFwiNDAgR1xcXCI7XFxuIDgxMzpcXHRcXHRcXHRicmVhaztcXG4gODE0OlxcdFxcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMjVHQjpcXG4gODE1OlxcdFxcdFxcdHNwZWVkID0gXFxcIjI1IEdcXFwiO1xcbiA4MTY6XFx0XFx0XFx0YnJlYWs7XFxuIDgxNzpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzIwR0I6XFxuIDgxODpcXHRcXHRcXHRzcGVlZCA9IFxcXCIyMCBHXFxcIjtcXG4gODE5OlxcdFxcdFxcdGJyZWFrO1xcbiA4MjA6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8xMEdCOlxcbiA4MjE6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMTAgR1xcXCI7XFxuIDgyMjpcXHRcXHRcXHRicmVhaztcXG4gODIzOlxcdFxcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfNUdCOlxcbiA4MjQ6XFx0XFx0XFx0c3BlZWQgPSBcXFwiNSBHXFxcIjtcXG4gODI1OlxcdFxcdFxcdGJyZWFrO1xcbiA4MjY6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yNTAwTUI6XFxuIDgyNzpcXHRcXHRcXHRzcGVlZCA9IFxcXCIyLjUgR1xcXCI7XFxuIDgyODpcXHRcXHRcXHRicmVhaztcXG4gODI5OlxcdFxcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMTAwME1COlxcbiA4MzA6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMSBHXFxcIjtcXG4gODMxOlxcdFxcdFxcdGJyZWFrO1xcbiA4MzI6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8xMDBNQjpcXG4gODMzOlxcdFxcdFxcdHNwZWVkID0gXFxcIjEwMCBNXFxcIjtcXG4gODM0OlxcdFxcdFxcdGJyZWFrO1xcbiA4MzU6XFx0XFx0ZGVmYXVsdDpcXG4gODM2OlxcdFxcdFxcdHNwZWVkID0gXFxcIlVua25vd24gXFxcIjtcXG4gODM3OlxcdFxcdFxcdGJyZWFrO1xcbiA4Mzg6XFx0XFx0fVxcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHRzd2l0Y2ggKHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VmYy5jdXJyZW50X21vZGUpIHtcXG4gODQxOlxcdFxcdGNhc2UgSUNFX0ZDX0ZVTEw6XFxuIDg0MjpcXHRcXHRcXHRmYyA9IFxcXCJSeC9UeFxcXCI7XFxuIDg0MzpcXHRcXHRcXHRicmVhaztcXG4gODQ0OlxcdFxcdGNhc2UgSUNFX0ZDX1RYX1BBVVNFOlxcbiA4NDU6XFx0XFx0XFx0ZmMgPSBcXFwiVHhcXFwiO1xcbiA4NDY6XFx0XFx0XFx0YnJlYWs7XFxuIDg0NzpcXHRcXHRjYXNlIElDRV9GQ19SWF9QQVVTRTpcXG4gODQ4OlxcdFxcdFxcdGZjID0gXFxcIlJ4XFxcIjtcXG4gODQ5OlxcdFxcdFxcdGJyZWFrO1xcbiA4NTA6XFx0XFx0Y2FzZSBJQ0VfRkNfTk9ORTpcXG4gODUxOlxcdFxcdFxcdGZjID0gXFxcIk5vbmVcXFwiO1xcbiA4NTI6XFx0XFx0XFx0YnJlYWs7XFxuIDg1MzpcXHRcXHRkZWZhdWx0OlxcbiA4NTQ6XFx0XFx0XFx0ZmMgPSBcXFwiVW5rbm93blxcXCI7XFxuIDg1NTpcXHRcXHRcXHRicmVhaztcXG4gODU2OlxcdFxcdH1cXG4gODU3OlxcdFxcbiA4NTg6XFx0XFx0LyogR2V0IEZFQyBtb2RlIGJhc2VkIG9uIG5lZ290aWF0ZWQgbGluayBpbmZvICovXFxuIDg1OTpcXHRcXHRzd2l0Y2ggKHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VwaHkubGlua19pbmZvLmZlY19pbmZvKSB7XFxuIDg2MDpcXHRcXHRjYXNlIElDRV9BUV9MSU5LXzI1R19SU181MjhfRkVDX0VOOlxcbiA4NjE6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS18yNUdfUlNfNTQ0X0ZFQ19FTjpcXG4gODYyOlxcdFxcdFxcdGZlYyA9IFxcXCJSUy1GRUNcXFwiO1xcbiA4NjM6XFx0XFx0XFx0YnJlYWs7XFxuIDg2NDpcXHRcXHRjYXNlIElDRV9BUV9MSU5LXzI1R19LUl9GRUNfRU46XFxuIDg2NTpcXHRcXHRcXHRmZWMgPSBcXFwiRkMtRkVDL0JBU0UtUlxcXCI7XFxuIDg2NjpcXHRcXHRcXHRicmVhaztcXG4gODY3OlxcdFxcdGRlZmF1bHQ6XFxuIDg2ODpcXHRcXHRcXHRmZWMgPSBcXFwiTk9ORVxcXCI7XFxuIDg2OTpcXHRcXHRcXHRicmVhaztcXG4gODcwOlxcdFxcdH1cXG4gODcxOlxcdFxcbiA4NzI6XFx0XFx0LyogY2hlY2sgaWYgYXV0b25lZyBjb21wbGV0ZWQsIG1pZ2h0IGJlIGZhbHNlIGR1ZSB0byBub3Qgc3VwcG9ydGVkICovXFxuIDg3MzpcXHRcXHRpZiAodnNpLVxcdTAwM2Vwb3J0X2luZm8tXFx1MDAzZXBoeS5saW5rX2luZm8uYW5faW5mbyBcXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXFxuIDg3NDpcXHRcXHRcXHRhbiA9IFxcXCJUcnVlXFxcIjtcXG4gODc1OlxcdFxcdGVsc2VcXG4gODc2OlxcdFxcdFxcdGFuID0gXFxcIkZhbHNlXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MTUuNTM5NjYzNTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjAwOTY2MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpZXdlZCB0aGUgY2hhbmdlcyB0byBgaWNlX3ByaW50X2xpbmtfbXNnYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHZlcnkgbG9jYWxpemVkIG1vZGlmaWNhdGlvbi4gSSBzZWUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhlIHNldHRpbmcgb2YgYHZzaS1cdTAwM2VjdXJyZW50X2lzdXAgPSBpc3VwYCwgcmVtYWlucyB1bmNoYW5nZWQgZnJvbSB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IG5vdyB3ZSBhcmUgcGFzc2luZyBgbGlua19zcGVlZGAgYXMgYSBkaXJlY3QgYXJndW1lbnQgdG8gdGhlIGZ1bmN0aW9uLCByYXRoZXIgdGhhbiByZWFkaW5nIGl0IGZyb20gYHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX3NwZWVkYC4gVGhpcyBzdWdnZXN0cyBpdCBpcyBhIGNoYW5nZSBwdXJlbHkgcmVsYXRlZCB0byBsb2dnaW5nOyB0aGUgYWN0dWFsIGRyaXZlcidzIG9wZXJhdGlvbmFsIGxvZ2ljIGFwcGVhcnMgdW50b3VjaGVkLiBHaXZlbiB0aGlzIGxpbWl0ZWQgc2NvcGUsIGFuZCB0aGUgbGFjayBvZiBmdW5jdGlvbmFsIGNoYW5nZSwgSSdtIGNvbmZpZGVudCBpbiBjb25jbHVkaW5nIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnV6emluZyB2ZWN0b3JzIHRoYXQgYXJlIHdvcnRoeSBvZiBmdXJ0aGVyIGV4cGxvcmF0aW9uLiBUaGVyZWZvcmUsIEkgd2lsbCBjbGFzc2lmeSB0aGlzIGFzIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDkzLCJPdXRwdXRUb2tlbnMiOjEwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDEyOjQ3OjIwLjc0MDYzMTY0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgaWNlX3ByaW50X2xpbmtfbXNnYCB0byBleHBsaWNpdGx5IHByb3ZpZGUgdGhlIGxpbmsgc3BlZWQgaW5zdGVhZCBvZiByZWFkaW5nIGl0IGZyb20gdGhlIHBvcnQgaW5mbyBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc29sZWx5IHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGxpbmsgc3RhdHVzIChlLmcuLCBcXFwiTklDIExpbmsgaXMgRG93blxcXCIgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpY2VfcHJpbnRfbGlua19tc2dgIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgbGluayBzcGVlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgcG9ydCBpbmZvIHN0cnVjdHVyZS4gVGhpcyBmdW5jdGlvbiBpcyBzb2xlbHkgdXNlZCBmb3IgbG9nZ2luZyB0aGUgbGluayBzdGF0dXMgKGUuZy4sIFxcXCJOSUMgTGluayBpcyBEb3duXFxcIiBvciBzcGVlZC9GRUMgZGV0YWlscykgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGV4ZWN1dGlvbiBmbG93IG9yIGRyaXZlciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbkw2n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 12:33:40 +0000 UTC FinishedAt: 2026-07-23 12:47:22 +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+CgkJCTx0ZD4yMDI2LzA3LzIzIDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYGljZV9wcmludF9saW5rX21zZ2AgdG8gZXhwbGljaXRseSBwcm92aWRlIHRoZSBsaW5rIHNwZWVkIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBwb3J0IGluZm8gc3RydWN0dXJlLiBUaGlzIGZ1bmN0aW9uIGlzIHNvbGVseSB1c2VkIGZvciBsb2dnaW5nIHRoZSBsaW5rIHN0YXR1cyAoZS5nLiwgXCYjMzQ7TklDIExpbmsgaXMgRG93blwmIzM0OyBvciBzcGVlZC9GRUMgZGV0YWlscykgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGV4ZWN1dGlvbiBmbG93IG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTI6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZDQwNDA2MGRjOTIzODUzMDFlNDc2YTUzNzc5MjE1MTVkZTkyMTYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTI6NDc6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG5pbmRleCBmNzJiYjFhYTQwNjc0MS4uODIwMTYzOTc3ZTM2M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuQEAgLTEwMDYsNyAmIzQzOzEwMDYsNyBAQCBpbnQgaWNlX2dldF9yc3Nfa2V5KHN0cnVjdCBpY2VfdnNpICp2c2ksIHU4ICpzZWVkKTtcbiBpbnQgaWNlX3NldF9yc3NfaGZ1bmMoc3RydWN0IGljZV92c2kgKnZzaSwgdTggaGZ1bmMpO1xuIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7XG4gaW50IGljZV9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0KTtcbi12b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApO1xuJiM0Mzt2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKTtcbiBpbnQgaWNlX3BsdWdfYXV4X2RldihzdHJ1Y3QgaWNlX3BmICpwZik7XG4gdm9pZCBpY2VfdW5wbHVnX2F1eF9kZXYoc3RydWN0IGljZV9wZiAqcGYpO1xuIHZvaWQgaWNlX3JkbWFfZmluYWxpemVfc2V0dXAoc3RydWN0IGljZV9wZiAqcGYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbmluZGV4IDQ5MzcxYjA2NTg0NTgyLi5mMTQ3NWExOWQ3MjFjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuQEAgLTI3ODUsNyAmIzQzOzI3ODUsNyBAQCBpY2Vfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdC8qIFRlbGwgdGhlIE9TIGxpbmsgaXMgZ29pbmcgZG93biwgdGhlIGxpbmsgd2lsbCBnb1xuIFx0XHQgKiBiYWNrIHVwIHdoZW4gZncgc2F5cyBpdCBpcyByZWFkeSBhc3luY2hyb25vdXNseVxuIFx0XHQgKi9cbi1cdFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVx1MDAzZXZzaSwgZmFsc2UpO1xuJiM0MztcdFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVx1MDAzZXZzaSwgZmFsc2UsIDApO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpO1xuIFx0XHRuZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZkMmRhYjAzZTM2My4uMWJlMTMwMWExMzgzODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC03NzIsOCAmIzQzOzc3Miw5IEBAIHN0YXRpYyB2b2lkIGljZV9wcmludF90b3BvX2NvbmZsaWN0KHN0cnVjdCBpY2VfdnNpICp2c2kpXG4gICogaWNlX3ByaW50X2xpbmtfbXNnIC0gcHJpbnQgbGluayB1cCBvciBkb3duIG1lc3NhZ2VcbiAgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGxpbmsgc3RhdHVzIGlzIGJlaW5nIHF1ZXJpZWRcbiAgKiBAaXN1cDogYm9vbGVhbiBmb3IgaWYgdGhlIGxpbmsgaXMgbm93IHVwIG9yIGRvd25cbiYjNDM7ICogQGxpbmtfc3BlZWQ6IGN1cnJlbnQgbGluayBzcGVlZCB2YWx1ZSB0byBkaXNwbGF5XG4gICovXG4tdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxuJiM0Mzt2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxuIHtcbiBcdHN0cnVjdCBpY2VfYXFjX2dldF9waHlfY2Fwc19kYXRhICpjYXBzO1xuIFx0Y29uc3QgY2hhciAqYW5fYWR2ZXJ0aXNlZDtcbkBAIC03OTcsNyAmIzQzOzc5OCw3IEBAIHZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cClcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0c3dpdGNoICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8ubGlua19zcGVlZCkge1xuJiM0MztcdHN3aXRjaCAobGlua19zcGVlZCkge1xuIFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMDBHQjpcbiBcdFx0c3BlZWQgPSBcJiMzNDsyMDAgR1wmIzM0OztcbiBcdFx0YnJlYWs7XG5AQCAtMTEzMCw4ICYjNDM7MTEzMSwxMCBAQCBpY2VfbGlua19ldmVudChzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCBib29sIGxpbmtfdXAsXG4gXHQvKiBDaGVjayBpZiB0aGUgbGluayBzdGF0ZSBpcyB1cCBhZnRlciB1cGRhdGluZyBsaW5rIGluZm8sIGFuZCB0cmVhdFxuIFx0ICogdGhpcyBldmVudCBhcyBhbiBVUCBldmVudCBzaW5jZSB0aGUgbGluayBpcyBhY3R1YWxseSBVUCBub3cuXG4gXHQgKi9cbi1cdGlmIChwaHlfaW5mby1cdTAwM2VsaW5rX2luZm8ubGlua19pbmZvIFx1MDAyNiBJQ0VfQVFfTElOS19VUClcbiYjNDM7XHRpZiAocGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApIHtcbiBcdFx0bGlua191cCA9IHRydWU7XG4mIzQzO1x0XHRsaW5rX3NwZWVkID0gcGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfc3BlZWQ7XG4mIzQzO1x0fVxuIFxuIFx0dnNpID0gaWNlX2dldF9tYWluX3ZzaShwZik7XG4gXHRpZiAoIXZzaSB8fCAhdnNpLVx1MDAzZXBvcnRfaW5mbylcbkBAIC0xMTYxLDcgJiM0MzsxMTY0LDcgQEAgaWNlX2xpbmtfZXZlbnQoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgYm9vbCBsaW5rX3VwLFxuIFx0XHRcdGljZV9zZXRfZGZsdF9taWIocGYpO1xuIFx0fVxuIFx0aWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7XG4tXHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwKTtcbiYjNDM7XHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwLCBsaW5rX3NwZWVkKTtcbiBcbiBcdGljZV92Y19ub3RpZnlfbGlua19zdGF0ZShwZik7XG4gXG5AQCAtNjczMiw3ICYjNDM7NjczNSw4IEBAIHN0YXRpYyBpbnQgaWNlX3VwX2NvbXBsZXRlKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4gXHQgICAgKHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX2luZm8gXHUwMDI2IElDRV9BUV9MSU5LX1VQKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAoKHZzaS1cdTAwM2VuZXRkZXYgXHUwMDI2XHUwMDI2ICh2c2ktXHUwMDNldHlwZSA9PSBJQ0VfVlNJX1BGIHx8XG4gXHRcdFx0ICAgICAgdnNpLVx1MDAzZXR5cGUgPT0gSUNFX1ZTSV9TRikpKSkge1xuLVx0XHRpY2VfcHJpbnRfbGlua19tc2codnNpLCB0cnVlKTtcbiYjNDM7XHRcdGljZV9wcmludF9saW5rX21zZyh2c2ksIHRydWUsXG4mIzQzO1x0XHRcdFx0ICAgdnNpLVx1MDAzZXBvcnRfaW5mby1cdTAwM2VwaHkubGlua19pbmZvLmxpbmtfc3BlZWQpO1xuIFx0XHRuZXRpZl90eF9zdGFydF9hbGxfcXVldWVzKHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29uKHZzaS1cdTAwM2VuZXRkZXYpO1xuIFx0XHRpY2VfcHRwX2xpbmtfY2hhbmdlKHBmLCB0cnVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgaWNlX3ByaW50X2xpbmtfbXNnYCB0byBleHBsaWNpdGx5IHByb3ZpZGUgdGhlIGxpbmsgc3BlZWQgaW5zdGVhZCBvZiByZWFkaW5nIGl0IGZyb20gdGhlIHBvcnQgaW5mbyBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc29sZWx5IHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGxpbmsgc3RhdHVzIChlLmcuLCBcJiMzNDtOSUMgTGluayBpcyBEb3duXCYjMzQ7IG9yIHNwZWVkL0ZFQyBkZXRhaWxzKSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZHJpdmVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWQ0MDQwNjBkYzkyMzg1MzAxZTQ3NmE1Mzc3OTIxNTE1ZGU5MjE2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDEyOjQ3OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oCmluZGV4IGY3MmJiMWFhNDA2NzQxLi44MjAxNjM5NzdlMzYzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaApAQCAtMTAwNiw3ICYjNDM7MTAwNiw3IEBAIGludCBpY2VfZ2V0X3Jzc19rZXkoc3RydWN0IGljZV92c2kgKnZzaSwgdTggKnNlZWQpOwogaW50IGljZV9zZXRfcnNzX2hmdW5jKHN0cnVjdCBpY2VfdnNpICp2c2ksIHU4IGhmdW5jKTsKIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7CiBpbnQgaWNlX3NjaGVkdWxlX3Jlc2V0KHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXQpOwotdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKTsKJiM0Mzt2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKTsKIGludCBpY2VfcGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTsKIHZvaWQgaWNlX3VucGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTsKIHZvaWQgaWNlX3JkbWFfZmluYWxpemVfc2V0dXAoc3RydWN0IGljZV9wZiAqcGYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwppbmRleCA0OTM3MWIwNjU4NDU4Mi4uZjE0NzVhMTlkNzIxY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jCkBAIC0yNzg1LDcgJiM0MzsyNzg1LDcgQEAgaWNlX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQkvKiBUZWxsIHRoZSBPUyBsaW5rIGlzIGdvaW5nIGRvd24sIHRoZSBsaW5rIHdpbGwgZ28KIAkJICogYmFjayB1cCB3aGVuIGZ3IHNheXMgaXQgaXMgcmVhZHkgYXN5bmNocm9ub3VzbHkKIAkJICovCi0JCWljZV9wcmludF9saW5rX21zZyhucC0mZ3Q7dnNpLCBmYWxzZSk7CiYjNDM7CQlpY2VfcHJpbnRfbGlua19tc2cobnAtJmd0O3ZzaSwgZmFsc2UsIDApOwogCQluZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpOwogCQluZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCmluZGV4IGUyZmQyZGFiMDNlMzYzLi4xYmUxMzAxYTEzODM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMKQEAgLTc3Miw4ICYjNDM7NzcyLDkgQEAgc3RhdGljIHZvaWQgaWNlX3ByaW50X3RvcG9fY29uZmxpY3Qoc3RydWN0IGljZV92c2kgKnZzaSkKICAqIGljZV9wcmludF9saW5rX21zZyAtIHByaW50IGxpbmsgdXAgb3IgZG93biBtZXNzYWdlCiAgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGxpbmsgc3RhdHVzIGlzIGJlaW5nIHF1ZXJpZWQKICAqIEBpc3VwOiBib29sZWFuIGZvciBpZiB0aGUgbGluayBpcyBub3cgdXAgb3IgZG93bgomIzQzOyAqIEBsaW5rX3NwZWVkOiBjdXJyZW50IGxpbmsgc3BlZWQgdmFsdWUgdG8gZGlzcGxheQogICovCi12b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApCiYjNDM7dm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwLCB1MTYgbGlua19zcGVlZCkKIHsKIAlzdHJ1Y3QgaWNlX2FxY19nZXRfcGh5X2NhcHNfZGF0YSAqY2FwczsKIAljb25zdCBjaGFyICphbl9hZHZlcnRpc2VkOwpAQCAtNzk3LDcgJiM0Mzs3OTgsNyBAQCB2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApCiAJCXJldHVybjsKIAl9CiAKLQlzd2l0Y2ggKHZzaS0mZ3Q7cG9ydF9pbmZvLSZndDtwaHkubGlua19pbmZvLmxpbmtfc3BlZWQpIHsKJiM0MzsJc3dpdGNoIChsaW5rX3NwZWVkKSB7CiAJY2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMDBHQjoKIAkJc3BlZWQgPSAmIzM0OzIwMCBHJiMzNDs7CiAJCWJyZWFrOwpAQCAtMTEzMCw4ICYjNDM7MTEzMSwxMCBAQCBpY2VfbGlua19ldmVudChzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCBib29sIGxpbmtfdXAsCiAJLyogQ2hlY2sgaWYgdGhlIGxpbmsgc3RhdGUgaXMgdXAgYWZ0ZXIgdXBkYXRpbmcgbGluayBpbmZvLCBhbmQgdHJlYXQKIAkgKiB0aGlzIGV2ZW50IGFzIGFuIFVQIGV2ZW50IHNpbmNlIHRoZSBsaW5rIGlzIGFjdHVhbGx5IFVQIG5vdy4KIAkgKi8KLQlpZiAocGh5X2luZm8tJmd0O2xpbmtfaW5mby5saW5rX2luZm8gJmFtcDsgSUNFX0FRX0xJTktfVVApCiYjNDM7CWlmIChwaHlfaW5mby0mZ3Q7bGlua19pbmZvLmxpbmtfaW5mbyAmYW1wOyBJQ0VfQVFfTElOS19VUCkgewogCQlsaW5rX3VwID0gdHJ1ZTsKJiM0MzsJCWxpbmtfc3BlZWQgPSBwaHlfaW5mby0mZ3Q7bGlua19pbmZvLmxpbmtfc3BlZWQ7CiYjNDM7CX0KIAogCXZzaSA9IGljZV9nZXRfbWFpbl92c2kocGYpOwogCWlmICghdnNpIHx8ICF2c2ktJmd0O3BvcnRfaW5mbykKQEAgLTExNjEsNyAmIzQzOzExNjQsNyBAQCBpY2VfbGlua19ldmVudChzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCBib29sIGxpbmtfdXAsCiAJCQlpY2Vfc2V0X2RmbHRfbWliKHBmKTsKIAl9CiAJaWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7Ci0JaWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgbGlua191cCk7CiYjNDM7CWljZV9wcmludF9saW5rX21zZyh2c2ksIGxpbmtfdXAsIGxpbmtfc3BlZWQpOwogCiAJaWNlX3ZjX25vdGlmeV9saW5rX3N0YXRlKHBmKTsKIApAQCAtNjczMiw3ICYjNDM7NjczNSw4IEBAIHN0YXRpYyBpbnQgaWNlX3VwX2NvbXBsZXRlKHN0cnVjdCBpY2VfdnNpICp2c2kpCiAJICAgICh2c2ktJmd0O3BvcnRfaW5mby0mZ3Q7cGh5LmxpbmtfaW5mby5saW5rX2luZm8gJmFtcDsgSUNFX0FRX0xJTktfVVApICZhbXA7JmFtcDsKIAkgICAgKCh2c2ktJmd0O25ldGRldiAmYW1wOyZhbXA7ICh2c2ktJmd0O3R5cGUgPT0gSUNFX1ZTSV9QRiB8fAogCQkJICAgICAgdnNpLSZndDt0eXBlID09IElDRV9WU0lfU0YpKSkpIHsKLQkJaWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgdHJ1ZSk7CiYjNDM7CQlpY2VfcHJpbnRfbGlua19tc2codnNpLCB0cnVlLAomIzQzOwkJCQkgICB2c2ktJmd0O3BvcnRfaW5mby0mZ3Q7cGh5LmxpbmtfaW5mby5saW5rX3NwZWVkKTsKIAkJbmV0aWZfdHhfc3RhcnRfYWxsX3F1ZXVlcyh2c2ktJmd0O25ldGRldik7CiAJCW5ldGlmX2NhcnJpZXJfb24odnNpLSZndDtuZXRkZXYpOwogCQlpY2VfcHRwX2xpbmtfY2hhbmdlKHBmLCB0cnVlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIElDRSBEcml2ZXIgTGluayBNZXNzYWdlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBpY2VfcHJpbnRfbGlua19tc2dgIGFuZCBpdHMgY2FsbGVycyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIGBsaW5rX3NwZWVkYCBwYXJhbWV0ZXIgdG8gdGhhdCBmdW5jdGlvbiBhbmQgcmVwbGFjaW5nIHRoZSBleGlzdGluZyB1c2FnZSBvZiBgdnNpLSZndDtwb3J0X2luZm8tJmd0O3BoeS5saW5rX2luZm8ubGlua19zcGVlZGAgd2l0aCB0aGlzIG5ldyBwYXJhbWV0ZXIuCgpIbW0sIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEEgcHVyZWx5IGNvc21ldGljIGNoYW5nZSwgYXMgZmFyIGFzIEkgY2FuIHRlbGwg4oCTIGp1c3QgaW1wYWN0aW5nIHRoZSBsb2dnaW5nIG91dHB1dC4gIGBpY2VfcHJpbnRfbGlua19tc2dgIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRob3NlICYjMzQ7bGluayB1cCYjMzQ7IGFuZCAmIzM0O2xpbmsgZG93biYjMzQ7IG1lc3NhZ2VzLCByaWdodD8gSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYS4gSG93ZXZlciwgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gSXQgY2FuJiMzOTt0IGh1cnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgaWNlX3ByaW50X2xpbmtfbXNnYCBmdW5jdGlvbiB0byBlbnN1cmUgaXQgKm9ubHkqIGRvZXMgbG9nZ2luZy4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgcGFyYW1ldGVyIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIGljZV9wcmludF9saW5rX21zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTc1MD1zdGF0aWMgdm9pZCBpY2VfcHJpbnRfdG9wb19jb25mbGljdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTc3Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjc3Nzp2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNzc4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODEzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgQ29kZSYjMzk7cyBJbnRlbnQ6IGBpY2VfcHJpbnRfbGlua19tc2dgKioKClJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3JlIG9uIHRoZSBzYW1lIHBhZ2UuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgYnJvYWRlciBjb250ZXh0LCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSB0aGUgYWN0dWFsIGJlaGF2aW9yIG9mIGBpY2VfcHJpbnRfbGlua19tc2dgLiBUaGVyZSYjMzk7cyBsaWtlbHkgc29tZSBudWFuY2UgaGVyZSwgYW5kIGFzc3VtaW5nIEkga25vdyB3aGF0IGl0IGRvZXMgd2l0aG91dCBjaGVja2luZyBjb3VsZCBsZWFkIG1lIGRvd24gdGhlIHdyb25nIHBhdGgsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaWNlLWJhc2VkIHN5c3RlbXMuIEl0JiMzOTtzIHRvbyBlYXN5IHRvIG1ha2UgaW5jb3JyZWN0IGFzc3VtcHRpb25zLiBJJiMzOTtsbCBxdWlja2x5IGxvb2sgb3ZlciB0aGF0IHJvdXRpbmUgYW5kIGVuc3VyZSBJIGhhdmUgYSBmaXJtIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgaW4gdGhpcyBzeXN0ZW0uIEl0IGNvdWxkIGJlIGEgc2ltcGxlIGRlYnVnZ2luZyBwcmludCwgYSBjcnVjaWFsIGxvZ2dpbmcgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBldmVuIG1vcmUgY29tcGxleCBkZXBlbmRlbnQgb24gdGhlIHN1cnJvdW5kaW5nIGNvbmZpZ3VyYXRpb24uIEEgYnJpZWYgbG9vayBub3cgd2lsbCBzYXZlIHRpbWUgbGF0ZXIsIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50IG1vcmUgc2VyaW91cyBpc3N1ZXMuIE5vIG5lZWQgdG8gcmV3cml0ZSB0aGUgd2hlZWwgaWYgc29tZW9uZSBlbHNlIGhhcyB0aG91Z2h0IG9mIGEgc29sdXRpb24gYWxyZWFkeS4gSSBzaG91bGQganVzdCBjb25maXJtIHRoZSBjb2RlJiMzOTtzIGludGVuZGVkIGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzc3Olx0dm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwLCB1MTYgbGlua19zcGVlZClcbiA3Nzg6XHR7XG4gNzc5Olx0XHRzdHJ1Y3QgaWNlX2FxY19nZXRfcGh5X2NhcHNfZGF0YSAqY2FwcztcbiA3ODA6XHRcdGNvbnN0IGNoYXIgKmFuX2FkdmVydGlzZWQ7XG4gNzgxOlx0XHRjb25zdCBjaGFyICpmZWNfcmVxO1xuIDc4MjpcdFx0Y29uc3QgY2hhciAqc3BlZWQ7XG4gNzgzOlx0XHRjb25zdCBjaGFyICpmZWM7XG4gNzg0Olx0XHRjb25zdCBjaGFyICpmYztcbiA3ODU6XHRcdGNvbnN0IGNoYXIgKmFuO1xuIDc4NjpcdFx0aW50IHN0YXR1cztcbiA3ODc6XHRcbiA3ODg6XHRcdGlmICghdnNpKVxuIDc4OTpcdFx0XHRyZXR1cm47XG4gNzkwOlx0XG4gNzkxOlx0XHRpZiAodnNpLVx1MDAzZWN1cnJlbnRfaXN1cCA9PSBpc3VwKVxuIDc5MjpcdFx0XHRyZXR1cm47XG4gNzkzOlx0XG4gNzk0Olx0XHR2c2ktXHUwMDNlY3VycmVudF9pc3VwID0gaXN1cDtcbiA3OTU6XHRcbiA3OTY6XHRcdGlmICghaXN1cCkge1xuIDc5NzpcdFx0XHRuZXRkZXZfaW5mbyh2c2ktXHUwMDNlbmV0ZGV2LCBcJiMzNDtOSUMgTGluayBpcyBEb3duXFxuXCYjMzQ7KTtcbiA3OTg6XHRcdFx0cmV0dXJuO1xuIDc5OTpcdFx0fVxuIDgwMDpcdFxuIDgwMTpcdFx0c3dpdGNoIChsaW5rX3NwZWVkKSB7XG4gODAyOlx0XHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzIwMEdCOlxuIDgwMzpcdFx0XHRzcGVlZCA9IFwmIzM0OzIwMCBHXCYjMzQ7O1xuIDgwNDpcdFx0XHRicmVhaztcbiA4MDU6XHRcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMTAwR0I6XG4gODA2Olx0XHRcdHNwZWVkID0gXCYjMzQ7MTAwIEdcJiMzNDs7XG4gODA3Olx0XHRcdGJyZWFrO1xuIDgwODpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF81MEdCOlxuIDgwOTpcdFx0XHRzcGVlZCA9IFwmIzM0OzUwIEdcJiMzNDs7XG4gODEwOlx0XHRcdGJyZWFrO1xuIDgxMTpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF80MEdCOlxuIDgxMjpcdFx0XHRzcGVlZCA9IFwmIzM0OzQwIEdcJiMzNDs7XG4gODEzOlx0XHRcdGJyZWFrO1xuIDgxNDpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yNUdCOlxuIDgxNTpcdFx0XHRzcGVlZCA9IFwmIzM0OzI1IEdcJiMzNDs7XG4gODE2Olx0XHRcdGJyZWFrO1xuIDgxNzpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMEdCOlxuIDgxODpcdFx0XHRzcGVlZCA9IFwmIzM0OzIwIEdcJiMzNDs7XG4gODE5Olx0XHRcdGJyZWFrO1xuIDgyMDpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8xMEdCOlxuIDgyMTpcdFx0XHRzcGVlZCA9IFwmIzM0OzEwIEdcJiMzNDs7XG4gODIyOlx0XHRcdGJyZWFrO1xuIDgyMzpcdFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF81R0I6XG4gODI0Olx0XHRcdHNwZWVkID0gXCYjMzQ7NSBHXCYjMzQ7O1xuIDgyNTpcdFx0XHRicmVhaztcbiA4MjY6XHRcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMjUwME1COlxuIDgyNzpcdFx0XHRzcGVlZCA9IFwmIzM0OzIuNSBHXCYjMzQ7O1xuIDgyODpcdFx0XHRicmVhaztcbiA4Mjk6XHRcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMTAwME1COlxuIDgzMDpcdFx0XHRzcGVlZCA9IFwmIzM0OzEgR1wmIzM0OztcbiA4MzE6XHRcdFx0YnJlYWs7XG4gODMyOlx0XHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzEwME1COlxuIDgzMzpcdFx0XHRzcGVlZCA9IFwmIzM0OzEwMCBNXCYjMzQ7O1xuIDgzNDpcdFx0XHRicmVhaztcbiA4MzU6XHRcdGRlZmF1bHQ6XG4gODM2Olx0XHRcdHNwZWVkID0gXCYjMzQ7VW5rbm93biBcJiMzNDs7XG4gODM3Olx0XHRcdGJyZWFrO1xuIDgzODpcdFx0fVxuIDgzOTpcdFxuIDg0MDpcdFx0c3dpdGNoICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZWZjLmN1cnJlbnRfbW9kZSkge1xuIDg0MTpcdFx0Y2FzZSBJQ0VfRkNfRlVMTDpcbiA4NDI6XHRcdFx0ZmMgPSBcJiMzNDtSeC9UeFwmIzM0OztcbiA4NDM6XHRcdFx0YnJlYWs7XG4gODQ0Olx0XHRjYXNlIElDRV9GQ19UWF9QQVVTRTpcbiA4NDU6XHRcdFx0ZmMgPSBcJiMzNDtUeFwmIzM0OztcbiA4NDY6XHRcdFx0YnJlYWs7XG4gODQ3Olx0XHRjYXNlIElDRV9GQ19SWF9QQVVTRTpcbiA4NDg6XHRcdFx0ZmMgPSBcJiMzNDtSeFwmIzM0OztcbiA4NDk6XHRcdFx0YnJlYWs7XG4gODUwOlx0XHRjYXNlIElDRV9GQ19OT05FOlxuIDg1MTpcdFx0XHRmYyA9IFwmIzM0O05vbmVcJiMzNDs7XG4gODUyOlx0XHRcdGJyZWFrO1xuIDg1MzpcdFx0ZGVmYXVsdDpcbiA4NTQ6XHRcdFx0ZmMgPSBcJiMzNDtVbmtub3duXCYjMzQ7O1xuIDg1NTpcdFx0XHRicmVhaztcbiA4NTY6XHRcdH1cbiA4NTc6XHRcbiA4NTg6XHRcdC8qIEdldCBGRUMgbW9kZSBiYXNlZCBvbiBuZWdvdGlhdGVkIGxpbmsgaW5mbyAqL1xuIDg1OTpcdFx0c3dpdGNoICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8uZmVjX2luZm8pIHtcbiA4NjA6XHRcdGNhc2UgSUNFX0FRX0xJTktfMjVHX1JTXzUyOF9GRUNfRU46XG4gODYxOlx0XHRjYXNlIElDRV9BUV9MSU5LXzI1R19SU181NDRfRkVDX0VOOlxuIDg2MjpcdFx0XHRmZWMgPSBcJiMzNDtSUy1GRUNcJiMzNDs7XG4gODYzOlx0XHRcdGJyZWFrO1xuIDg2NDpcdFx0Y2FzZSBJQ0VfQVFfTElOS18yNUdfS1JfRkVDX0VOOlxuIDg2NTpcdFx0XHRmZWMgPSBcJiMzNDtGQy1GRUMvQkFTRS1SXCYjMzQ7O1xuIDg2NjpcdFx0XHRicmVhaztcbiA4Njc6XHRcdGRlZmF1bHQ6XG4gODY4Olx0XHRcdGZlYyA9IFwmIzM0O05PTkVcJiMzNDs7XG4gODY5Olx0XHRcdGJyZWFrO1xuIDg3MDpcdFx0fVxuIDg3MTpcdFxuIDg3MjpcdFx0LyogY2hlY2sgaWYgYXV0b25lZyBjb21wbGV0ZWQsIG1pZ2h0IGJlIGZhbHNlIGR1ZSB0byBub3Qgc3VwcG9ydGVkICovXG4gODczOlx0XHRpZiAodnNpLVx1MDAzZXBvcnRfaW5mby1cdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm8gXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXG4gODc0Olx0XHRcdGFuID0gXCYjMzQ7VHJ1ZVwmIzM0OztcbiA4NzU6XHRcdGVsc2VcbiA4NzY6XHRcdFx0YW4gPSBcJiMzNDtGYWxzZVwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDkzCgkJCQkJCQlvdXRwdXQ6IDEwMwoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUganVzdCByZXZpZXdlZCB0aGUgY2hhbmdlcyB0byBgaWNlX3ByaW50X2xpbmtfbXNnYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHZlcnkgbG9jYWxpemVkIG1vZGlmaWNhdGlvbi4gSSBzZWUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhlIHNldHRpbmcgb2YgYHZzaS0mZ3Q7Y3VycmVudF9pc3VwID0gaXN1cGAsIHJlbWFpbnMgdW5jaGFuZ2VkIGZyb20gdGhlIHByZXZpb3VzIHZlcnNpb24uIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBub3cgd2UgYXJlIHBhc3NpbmcgYGxpbmtfc3BlZWRgIGFzIGEgZGlyZWN0IGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbiwgcmF0aGVyIHRoYW4gcmVhZGluZyBpdCBmcm9tIGB2c2ktJmd0O3BvcnRfaW5mby0mZ3Q7cGh5LmxpbmtfaW5mby5saW5rX3NwZWVkYC4gVGhpcyBzdWdnZXN0cyBpdCBpcyBhIGNoYW5nZSBwdXJlbHkgcmVsYXRlZCB0byBsb2dnaW5nOyB0aGUgYWN0dWFsIGRyaXZlciYjMzk7cyBvcGVyYXRpb25hbCBsb2dpYyBhcHBlYXJzIHVudG91Y2hlZC4gR2l2ZW4gdGhpcyBsaW1pdGVkIHNjb3BlLCBhbmQgdGhlIGxhY2sgb2YgZnVuY3Rpb25hbCBjaGFuZ2UsIEkmIzM5O20gY29uZmlkZW50IGluIGNvbmNsdWRpbmcgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdXp6aW5nIHZlY3RvcnMgdGhhdCBhcmUgd29ydGh5IG9mIGZ1cnRoZXIgZXhwbG9yYXRpb24uIFRoZXJlZm9yZSwgSSB3aWxsIGNsYXNzaWZ5IHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpY2VfcHJpbnRfbGlua19tc2dgIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgbGluayBzcGVlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgcG9ydCBpbmZvIHN0cnVjdHVyZS4gVGhpcyBmdW5jdGlvbiBpcyBzb2xlbHkgdXNlZCBmb3IgbG9nZ2luZyB0aGUgbGluayBzdGF0dXMgKGUuZy4sIFwmIzM0O05JQyBMaW5rIGlzIERvd25cJiMzNDsgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpY2VfcHJpbnRfbGlua19tc2dgIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgbGluayBzcGVlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgcG9ydCBpbmZvIHN0cnVjdHVyZS4gVGhpcyBmdW5jdGlvbiBpcyBzb2xlbHkgdXNlZCBmb3IgbG9nZ2luZyB0aGUgbGluayBzdGF0dXMgKGUuZy4sIFwmIzM0O05JQyBMaW5rIGlzIERvd25cJiMzNDsgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MDYuODU2OTIyNzExWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4ODM3NDI4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYGljZV9wcmludF9saW5rX21zZ2AgdG8gZXhwbGljaXRseSBwcm92aWRlIHRoZSBsaW5rIHNwZWVkIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBwb3J0IGluZm8gc3RydWN0dXJlLiBUaGlzIGZ1bmN0aW9uIGlzIHNvbGVseSB1c2VkIGZvciBsb2dnaW5nIHRoZSBsaW5rIHN0YXR1cyAoZS5nLiwgXFxcIk5JQyBMaW5rIGlzIERvd25cXFwiIG9yIHNwZWVkL0ZFQyBkZXRhaWxzKSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUgZXhlY3V0aW9uIGZsb3cgb3IgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MDYuODU2OTI4NDgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM3MDc4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZDQwNDA2MGRjOTIzODUzMDFlNDc2YTUzNzc5MjE1MTVkZTkyMTYyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDEyOjQ3OjA1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxcbmluZGV4IGY3MmJiMWFhNDA2NzQxLi44MjAxNjM5NzdlMzYzYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcXG5AQCAtMTAwNiw3ICsxMDA2LDcgQEAgaW50IGljZV9nZXRfcnNzX2tleShzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1OCAqc2VlZCk7XFxuIGludCBpY2Vfc2V0X3Jzc19oZnVuYyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1OCBoZnVuYyk7XFxuIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7XFxuIGludCBpY2Vfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX3Jlc2V0X3JlcSByZXNldCk7XFxuLXZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCk7XFxuK3ZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpO1xcbiBpbnQgaWNlX3BsdWdfYXV4X2RldihzdHJ1Y3QgaWNlX3BmICpwZik7XFxuIHZvaWQgaWNlX3VucGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTtcXG4gdm9pZCBpY2VfcmRtYV9maW5hbGl6ZV9zZXR1cChzdHJ1Y3QgaWNlX3BmICpwZik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5pbmRleCA0OTM3MWIwNjU4NDU4Mi4uZjE0NzVhMTlkNzIxY2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xcbkBAIC0yNzg1LDcgKzI3ODUsNyBAQCBpY2Vfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdC8qIFRlbGwgdGhlIE9TIGxpbmsgaXMgZ29pbmcgZG93biwgdGhlIGxpbmsgd2lsbCBnb1xcbiBcXHRcXHQgKiBiYWNrIHVwIHdoZW4gZncgc2F5cyBpdCBpcyByZWFkeSBhc3luY2hyb25vdXNseVxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVxcdTAwM2V2c2ksIGZhbHNlKTtcXG4rXFx0XFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVxcdTAwM2V2c2ksIGZhbHNlLCAwKTtcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vZmYobmV0ZGV2KTtcXG4gXFx0XFx0bmV0aWZfdHhfc3RvcF9hbGxfcXVldWVzKG5ldGRldik7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbmluZGV4IGUyZmQyZGFiMDNlMzYzLi4xYmUxMzAxYTEzODM4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXFxuQEAgLTc3Miw4ICs3NzIsOSBAQCBzdGF0aWMgdm9pZCBpY2VfcHJpbnRfdG9wb19jb25mbGljdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbiAgKiBpY2VfcHJpbnRfbGlua19tc2cgLSBwcmludCBsaW5rIHVwIG9yIGRvd24gbWVzc2FnZVxcbiAgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGxpbmsgc3RhdHVzIGlzIGJlaW5nIHF1ZXJpZWRcXG4gICogQGlzdXA6IGJvb2xlYW4gZm9yIGlmIHRoZSBsaW5rIGlzIG5vdyB1cCBvciBkb3duXFxuKyAqIEBsaW5rX3NwZWVkOiBjdXJyZW50IGxpbmsgc3BlZWQgdmFsdWUgdG8gZGlzcGxheVxcbiAgKi9cXG4tdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxcbit2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxcbiB7XFxuIFxcdHN0cnVjdCBpY2VfYXFjX2dldF9waHlfY2Fwc19kYXRhICpjYXBzO1xcbiBcXHRjb25zdCBjaGFyICphbl9hZHZlcnRpc2VkO1xcbkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdHN3aXRjaCAodnNpLVxcdTAwM2Vwb3J0X2luZm8tXFx1MDAzZXBoeS5saW5rX2luZm8ubGlua19zcGVlZCkge1xcbitcXHRzd2l0Y2ggKGxpbmtfc3BlZWQpIHtcXG4gXFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yMDBHQjpcXG4gXFx0XFx0c3BlZWQgPSBcXFwiMjAwIEdcXFwiO1xcbiBcXHRcXHRicmVhaztcXG5AQCAtMTEzMCw4ICsxMTMxLDEwIEBAIGljZV9saW5rX2V2ZW50KHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGksIGJvb2wgbGlua191cCxcXG4gXFx0LyogQ2hlY2sgaWYgdGhlIGxpbmsgc3RhdGUgaXMgdXAgYWZ0ZXIgdXBkYXRpbmcgbGluayBpbmZvLCBhbmQgdHJlYXRcXG4gXFx0ICogdGhpcyBldmVudCBhcyBhbiBVUCBldmVudCBzaW5jZSB0aGUgbGluayBpcyBhY3R1YWxseSBVUCBub3cuXFxuIFxcdCAqL1xcbi1cXHRpZiAocGh5X2luZm8tXFx1MDAzZWxpbmtfaW5mby5saW5rX2luZm8gXFx1MDAyNiBJQ0VfQVFfTElOS19VUClcXG4rXFx0aWYgKHBoeV9pbmZvLVxcdTAwM2VsaW5rX2luZm8ubGlua19pbmZvIFxcdTAwMjYgSUNFX0FRX0xJTktfVVApIHtcXG4gXFx0XFx0bGlua191cCA9IHRydWU7XFxuK1xcdFxcdGxpbmtfc3BlZWQgPSBwaHlfaW5mby1cXHUwMDNlbGlua19pbmZvLmxpbmtfc3BlZWQ7XFxuK1xcdH1cXG4gXFxuIFxcdHZzaSA9IGljZV9nZXRfbWFpbl92c2kocGYpO1xcbiBcXHRpZiAoIXZzaSB8fCAhdnNpLVxcdTAwM2Vwb3J0X2luZm8pXFxuQEAgLTExNjEsNyArMTE2NCw3IEBAIGljZV9saW5rX2V2ZW50KHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGksIGJvb2wgbGlua191cCxcXG4gXFx0XFx0XFx0aWNlX3NldF9kZmx0X21pYihwZik7XFxuIFxcdH1cXG4gXFx0aWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7XFxuLVxcdGljZV9wcmludF9saW5rX21zZyh2c2ksIGxpbmtfdXApO1xcbitcXHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwLCBsaW5rX3NwZWVkKTtcXG4gXFxuIFxcdGljZV92Y19ub3RpZnlfbGlua19zdGF0ZShwZik7XFxuIFxcbkBAIC02NzMyLDcgKzY3MzUsOCBAQCBzdGF0aWMgaW50IGljZV91cF9jb21wbGV0ZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbiBcXHQgICAgKHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VwaHkubGlua19pbmZvLmxpbmtfaW5mbyBcXHUwMDI2IElDRV9BUV9MSU5LX1VQKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKCh2c2ktXFx1MDAzZW5ldGRldiBcXHUwMDI2XFx1MDAyNiAodnNpLVxcdTAwM2V0eXBlID09IElDRV9WU0lfUEYgfHxcXG4gXFx0XFx0XFx0ICAgICAgdnNpLVxcdTAwM2V0eXBlID09IElDRV9WU0lfU0YpKSkpIHtcXG4tXFx0XFx0aWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgdHJ1ZSk7XFxuK1xcdFxcdGljZV9wcmludF9saW5rX21zZyh2c2ksIHRydWUsXFxuK1xcdFxcdFxcdFxcdCAgIHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VwaHkubGlua19pbmZvLmxpbmtfc3BlZWQpO1xcbiBcXHRcXHRuZXRpZl90eF9zdGFydF9hbGxfcXVldWVzKHZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vbih2c2ktXFx1MDAzZW5ldGRldik7XFxuIFxcdFxcdGljZV9wdHBfbGlua19jaGFuZ2UocGYsIHRydWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMjo0NzowNy4zNTEyNDYwNDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzM4OTQxNDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgaWNlX3ByaW50X2xpbmtfbXNnYCB0byBleHBsaWNpdGx5IHByb3ZpZGUgdGhlIGxpbmsgc3BlZWQgaW5zdGVhZCBvZiByZWFkaW5nIGl0IGZyb20gdGhlIHBvcnQgaW5mbyBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc29sZWx5IHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGxpbmsgc3RhdHVzIChlLmcuLCBcXFwiTklDIExpbmsgaXMgRG93blxcXCIgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVkNDA0MDYwZGM5MjM4NTMwMWU0NzZhNTM3NzkyMTUxNWRlOTIxNjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxMjo0NzowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuaW5kZXggZjcyYmIxYWE0MDY3NDEuLjgyMDE2Mzk3N2UzNjNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcbkBAIC0xMDA2LDcgKzEwMDYsNyBAQCBpbnQgaWNlX2dldF9yc3Nfa2V5KHN0cnVjdCBpY2VfdnNpICp2c2ksIHU4ICpzZWVkKTtcbiBpbnQgaWNlX3NldF9yc3NfaGZ1bmMoc3RydWN0IGljZV92c2kgKnZzaSwgdTggaGZ1bmMpO1xuIHZvaWQgaWNlX2ZpbGxfcnNzX2x1dCh1OCAqbHV0LCB1MTYgcnNzX3RhYmxlX3NpemUsIHUxNiByc3Nfc2l6ZSk7XG4gaW50IGljZV9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0KTtcbi12b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXApO1xuK3ZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpO1xuIGludCBpY2VfcGx1Z19hdXhfZGV2KHN0cnVjdCBpY2VfcGYgKnBmKTtcbiB2b2lkIGljZV91bnBsdWdfYXV4X2RldihzdHJ1Y3QgaWNlX3BmICpwZik7XG4gdm9pZCBpY2VfcmRtYV9maW5hbGl6ZV9zZXR1cChzdHJ1Y3QgaWNlX3BmICpwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuaW5kZXggNDkzNzFiMDY1ODQ1ODIuLmYxNDc1YTE5ZDcyMWNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMjc4NSw3ICsyNzg1LDcgQEAgaWNlX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHQvKiBUZWxsIHRoZSBPUyBsaW5rIGlzIGdvaW5nIGRvd24sIHRoZSBsaW5rIHdpbGwgZ29cbiBcdFx0ICogYmFjayB1cCB3aGVuIGZ3IHNheXMgaXQgaXMgcmVhZHkgYXN5bmNocm9ub3VzbHlcbiBcdFx0ICovXG4tXHRcdGljZV9wcmludF9saW5rX21zZyhucC1cdTAwM2V2c2ksIGZhbHNlKTtcbitcdFx0aWNlX3ByaW50X2xpbmtfbXNnKG5wLVx1MDAzZXZzaSwgZmFsc2UsIDApO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpO1xuIFx0XHRuZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZkMmRhYjAzZTM2My4uMWJlMTMwMWExMzgzODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC03NzIsOCArNzcyLDkgQEAgc3RhdGljIHZvaWQgaWNlX3ByaW50X3RvcG9fY29uZmxpY3Qoc3RydWN0IGljZV92c2kgKnZzaSlcbiAgKiBpY2VfcHJpbnRfbGlua19tc2cgLSBwcmludCBsaW5rIHVwIG9yIGRvd24gbWVzc2FnZVxuICAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgbGluayBzdGF0dXMgaXMgYmVpbmcgcXVlcmllZFxuICAqIEBpc3VwOiBib29sZWFuIGZvciBpZiB0aGUgbGluayBpcyBub3cgdXAgb3IgZG93blxuKyAqIEBsaW5rX3NwZWVkOiBjdXJyZW50IGxpbmsgc3BlZWQgdmFsdWUgdG8gZGlzcGxheVxuICAqL1xuLXZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cClcbit2b2lkIGljZV9wcmludF9saW5rX21zZyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBib29sIGlzdXAsIHUxNiBsaW5rX3NwZWVkKVxuIHtcbiBcdHN0cnVjdCBpY2VfYXFjX2dldF9waHlfY2Fwc19kYXRhICpjYXBzO1xuIFx0Y29uc3QgY2hhciAqYW5fYWR2ZXJ0aXNlZDtcbkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBpY2VfcHJpbnRfbGlua19tc2coc3RydWN0IGljZV92c2kgKnZzaSwgYm9vbCBpc3VwKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRzd2l0Y2ggKHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX3NwZWVkKSB7XG4rXHRzd2l0Y2ggKGxpbmtfc3BlZWQpIHtcbiBcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMjAwR0I6XG4gXHRcdHNwZWVkID0gXCIyMDAgR1wiO1xuIFx0XHRicmVhaztcbkBAIC0xMTMwLDggKzExMzEsMTAgQEAgaWNlX2xpbmtfZXZlbnQoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgYm9vbCBsaW5rX3VwLFxuIFx0LyogQ2hlY2sgaWYgdGhlIGxpbmsgc3RhdGUgaXMgdXAgYWZ0ZXIgdXBkYXRpbmcgbGluayBpbmZvLCBhbmQgdHJlYXRcbiBcdCAqIHRoaXMgZXZlbnQgYXMgYW4gVVAgZXZlbnQgc2luY2UgdGhlIGxpbmsgaXMgYWN0dWFsbHkgVVAgbm93LlxuIFx0ICovXG4tXHRpZiAocGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApXG4rXHRpZiAocGh5X2luZm8tXHUwMDNlbGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApIHtcbiBcdFx0bGlua191cCA9IHRydWU7XG4rXHRcdGxpbmtfc3BlZWQgPSBwaHlfaW5mby1cdTAwM2VsaW5rX2luZm8ubGlua19zcGVlZDtcbitcdH1cbiBcbiBcdHZzaSA9IGljZV9nZXRfbWFpbl92c2kocGYpO1xuIFx0aWYgKCF2c2kgfHwgIXZzaS1cdTAwM2Vwb3J0X2luZm8pXG5AQCAtMTE2MSw3ICsxMTY0LDcgQEAgaWNlX2xpbmtfZXZlbnQoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgYm9vbCBsaW5rX3VwLFxuIFx0XHRcdGljZV9zZXRfZGZsdF9taWIocGYpO1xuIFx0fVxuIFx0aWNlX3ZzaV9saW5rX2V2ZW50KHZzaSwgbGlua191cCk7XG4tXHRpY2VfcHJpbnRfbGlua19tc2codnNpLCBsaW5rX3VwKTtcbitcdGljZV9wcmludF9saW5rX21zZyh2c2ksIGxpbmtfdXAsIGxpbmtfc3BlZWQpO1xuIFxuIFx0aWNlX3ZjX25vdGlmeV9saW5rX3N0YXRlKHBmKTtcbiBcbkBAIC02NzMyLDcgKzY3MzUsOCBAQCBzdGF0aWMgaW50IGljZV91cF9jb21wbGV0ZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuIFx0ICAgICh2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8ubGlua19pbmZvIFx1MDAyNiBJQ0VfQVFfTElOS19VUCkgXHUwMDI2XHUwMDI2XG4gXHQgICAgKCh2c2ktXHUwMDNlbmV0ZGV2IFx1MDAyNlx1MDAyNiAodnNpLVx1MDAzZXR5cGUgPT0gSUNFX1ZTSV9QRiB8fFxuIFx0XHRcdCAgICAgIHZzaS1cdTAwM2V0eXBlID09IElDRV9WU0lfU0YpKSkpIHtcbi1cdFx0aWNlX3ByaW50X2xpbmtfbXNnKHZzaSwgdHJ1ZSk7XG4rXHRcdGljZV9wcmludF9saW5rX21zZyh2c2ksIHRydWUsXG4rXHRcdFx0XHQgICB2c2ktXHUwMDNlcG9ydF9pbmZvLVx1MDAzZXBoeS5saW5rX2luZm8ubGlua19zcGVlZCk7XG4gXHRcdG5ldGlmX3R4X3N0YXJ0X2FsbF9xdWV1ZXModnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb24odnNpLVx1MDAzZW5ldGRldik7XG4gXHRcdGljZV9wdHBfbGlua19jaGFuZ2UocGYsIHRydWUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MDcuMzUxMjQ3MzI3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MjQzOTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIElDRSBEcml2ZXIgTGluayBNZXNzYWdlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGljZV9wcmludF9saW5rX21zZ2AgYW5kIGl0cyBjYWxsZXJzIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYSBgbGlua19zcGVlZGAgcGFyYW1ldGVyIHRvIHRoYXQgZnVuY3Rpb24gYW5kIHJlcGxhY2luZyB0aGUgZXhpc3RpbmcgdXNhZ2Ugb2YgYHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX3NwZWVkYCB3aXRoIHRoaXMgbmV3IHBhcmFtZXRlci5cblxuSG1tLCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBBIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UsIGFzIGZhciBhcyBJIGNhbiB0ZWxsIOKAkyBqdXN0IGltcGFjdGluZyB0aGUgbG9nZ2luZyBvdXRwdXQuICBgaWNlX3ByaW50X2xpbmtfbXNnYCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aG9zZSBcImxpbmsgdXBcIiBhbmQgXCJsaW5rIGRvd25cIiBtZXNzYWdlcywgcmlnaHQ/IEknbSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYS4gSG93ZXZlciwgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gSXQgY2FuJ3QgaHVydCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBpY2VfcHJpbnRfbGlua19tc2dgIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCAqb25seSogZG9lcyBsb2dnaW5nLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgZnJvbSB0aGlzIHBhcmFtZXRlciBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNjEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMjo0NzoxMS45OTM2ODgzNzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3MjcwMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCBpY2VfcHJpbnRfbGlua19tc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9NzUwPXN0YXRpYyB2b2lkIGljZV9wcmludF90b3BvX2NvbmZsaWN0KHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy03NzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6Nzc3OnZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNzc4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MTIuMDUzNDIyNTEyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NTg0NzAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgQ29kZSdzIEludGVudDogYGljZV9wcmludF9saW5rX21zZ2AqKlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UncmUgb24gdGhlIHNhbWUgcGFnZS4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IHRoZSBhY3R1YWwgYmVoYXZpb3Igb2YgYGljZV9wcmludF9saW5rX21zZ2AuIFRoZXJlJ3MgbGlrZWx5IHNvbWUgbnVhbmNlIGhlcmUsIGFuZCBhc3N1bWluZyBJIGtub3cgd2hhdCBpdCBkb2VzIHdpdGhvdXQgY2hlY2tpbmcgY291bGQgbGVhZCBtZSBkb3duIHRoZSB3cm9uZyBwYXRoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGljZS1iYXNlZCBzeXN0ZW1zLiBJdCdzIHRvbyBlYXN5IHRvIG1ha2UgaW5jb3JyZWN0IGFzc3VtcHRpb25zLiBJJ2xsIHF1aWNrbHkgbG9vayBvdmVyIHRoYXQgcm91dGluZSBhbmQgZW5zdXJlIEkgaGF2ZSBhIGZpcm0gdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gSXQgY291bGQgYmUgYSBzaW1wbGUgZGVidWdnaW5nIHByaW50LCBhIGNydWNpYWwgbG9nZ2luZyBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGV2ZW4gbW9yZSBjb21wbGV4IGRlcGVuZGVudCBvbiB0aGUgc3Vycm91bmRpbmcgY29uZmlndXJhdGlvbi4gQSBicmllZiBsb29rIG5vdyB3aWxsIHNhdmUgdGltZSBsYXRlciwgYW5kIHBvdGVudGlhbGx5IHByZXZlbnQgbW9yZSBzZXJpb3VzIGlzc3Vlcy4gTm8gbmVlZCB0byByZXdyaXRlIHRoZSB3aGVlbCBpZiBzb21lb25lIGVsc2UgaGFzIHRob3VnaHQgb2YgYSBzb2x1dGlvbiBhbHJlYWR5LiBJIHNob3VsZCBqdXN0IGNvbmZpcm0gdGhlIGNvZGUncyBpbnRlbmRlZCBhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMjo0NzoxNS41MzkyNzY5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NzcsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzc3OlxcdHZvaWQgaWNlX3ByaW50X2xpbmtfbXNnKHN0cnVjdCBpY2VfdnNpICp2c2ksIGJvb2wgaXN1cCwgdTE2IGxpbmtfc3BlZWQpXFxuIDc3ODpcXHR7XFxuIDc3OTpcXHRcXHRzdHJ1Y3QgaWNlX2FxY19nZXRfcGh5X2NhcHNfZGF0YSAqY2FwcztcXG4gNzgwOlxcdFxcdGNvbnN0IGNoYXIgKmFuX2FkdmVydGlzZWQ7XFxuIDc4MTpcXHRcXHRjb25zdCBjaGFyICpmZWNfcmVxO1xcbiA3ODI6XFx0XFx0Y29uc3QgY2hhciAqc3BlZWQ7XFxuIDc4MzpcXHRcXHRjb25zdCBjaGFyICpmZWM7XFxuIDc4NDpcXHRcXHRjb25zdCBjaGFyICpmYztcXG4gNzg1OlxcdFxcdGNvbnN0IGNoYXIgKmFuO1xcbiA3ODY6XFx0XFx0aW50IHN0YXR1cztcXG4gNzg3OlxcdFxcbiA3ODg6XFx0XFx0aWYgKCF2c2kpXFxuIDc4OTpcXHRcXHRcXHRyZXR1cm47XFxuIDc5MDpcXHRcXG4gNzkxOlxcdFxcdGlmICh2c2ktXFx1MDAzZWN1cnJlbnRfaXN1cCA9PSBpc3VwKVxcbiA3OTI6XFx0XFx0XFx0cmV0dXJuO1xcbiA3OTM6XFx0XFxuIDc5NDpcXHRcXHR2c2ktXFx1MDAzZWN1cnJlbnRfaXN1cCA9IGlzdXA7XFxuIDc5NTpcXHRcXG4gNzk2OlxcdFxcdGlmICghaXN1cCkge1xcbiA3OTc6XFx0XFx0XFx0bmV0ZGV2X2luZm8odnNpLVxcdTAwM2VuZXRkZXYsIFxcXCJOSUMgTGluayBpcyBEb3duXFxcXG5cXFwiKTtcXG4gNzk4OlxcdFxcdFxcdHJldHVybjtcXG4gNzk5OlxcdFxcdH1cXG4gODAwOlxcdFxcbiA4MDE6XFx0XFx0c3dpdGNoIChsaW5rX3NwZWVkKSB7XFxuIDgwMjpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzIwMEdCOlxcbiA4MDM6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMjAwIEdcXFwiO1xcbiA4MDQ6XFx0XFx0XFx0YnJlYWs7XFxuIDgwNTpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzEwMEdCOlxcbiA4MDY6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMTAwIEdcXFwiO1xcbiA4MDc6XFx0XFx0XFx0YnJlYWs7XFxuIDgwODpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzUwR0I6XFxuIDgwOTpcXHRcXHRcXHRzcGVlZCA9IFxcXCI1MCBHXFxcIjtcXG4gODEwOlxcdFxcdFxcdGJyZWFrO1xcbiA4MTE6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF80MEdCOlxcbiA4MTI6XFx0XFx0XFx0c3BlZWQgPSBcXFwiNDAgR1xcXCI7XFxuIDgxMzpcXHRcXHRcXHRicmVhaztcXG4gODE0OlxcdFxcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMjVHQjpcXG4gODE1OlxcdFxcdFxcdHNwZWVkID0gXFxcIjI1IEdcXFwiO1xcbiA4MTY6XFx0XFx0XFx0YnJlYWs7XFxuIDgxNzpcXHRcXHRjYXNlIElDRV9BUV9MSU5LX1NQRUVEXzIwR0I6XFxuIDgxODpcXHRcXHRcXHRzcGVlZCA9IFxcXCIyMCBHXFxcIjtcXG4gODE5OlxcdFxcdFxcdGJyZWFrO1xcbiA4MjA6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8xMEdCOlxcbiA4MjE6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMTAgR1xcXCI7XFxuIDgyMjpcXHRcXHRcXHRicmVhaztcXG4gODIzOlxcdFxcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfNUdCOlxcbiA4MjQ6XFx0XFx0XFx0c3BlZWQgPSBcXFwiNSBHXFxcIjtcXG4gODI1OlxcdFxcdFxcdGJyZWFrO1xcbiA4MjY6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8yNTAwTUI6XFxuIDgyNzpcXHRcXHRcXHRzcGVlZCA9IFxcXCIyLjUgR1xcXCI7XFxuIDgyODpcXHRcXHRcXHRicmVhaztcXG4gODI5OlxcdFxcdGNhc2UgSUNFX0FRX0xJTktfU1BFRURfMTAwME1COlxcbiA4MzA6XFx0XFx0XFx0c3BlZWQgPSBcXFwiMSBHXFxcIjtcXG4gODMxOlxcdFxcdFxcdGJyZWFrO1xcbiA4MzI6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS19TUEVFRF8xMDBNQjpcXG4gODMzOlxcdFxcdFxcdHNwZWVkID0gXFxcIjEwMCBNXFxcIjtcXG4gODM0OlxcdFxcdFxcdGJyZWFrO1xcbiA4MzU6XFx0XFx0ZGVmYXVsdDpcXG4gODM2OlxcdFxcdFxcdHNwZWVkID0gXFxcIlVua25vd24gXFxcIjtcXG4gODM3OlxcdFxcdFxcdGJyZWFrO1xcbiA4Mzg6XFx0XFx0fVxcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHRzd2l0Y2ggKHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VmYy5jdXJyZW50X21vZGUpIHtcXG4gODQxOlxcdFxcdGNhc2UgSUNFX0ZDX0ZVTEw6XFxuIDg0MjpcXHRcXHRcXHRmYyA9IFxcXCJSeC9UeFxcXCI7XFxuIDg0MzpcXHRcXHRcXHRicmVhaztcXG4gODQ0OlxcdFxcdGNhc2UgSUNFX0ZDX1RYX1BBVVNFOlxcbiA4NDU6XFx0XFx0XFx0ZmMgPSBcXFwiVHhcXFwiO1xcbiA4NDY6XFx0XFx0XFx0YnJlYWs7XFxuIDg0NzpcXHRcXHRjYXNlIElDRV9GQ19SWF9QQVVTRTpcXG4gODQ4OlxcdFxcdFxcdGZjID0gXFxcIlJ4XFxcIjtcXG4gODQ5OlxcdFxcdFxcdGJyZWFrO1xcbiA4NTA6XFx0XFx0Y2FzZSBJQ0VfRkNfTk9ORTpcXG4gODUxOlxcdFxcdFxcdGZjID0gXFxcIk5vbmVcXFwiO1xcbiA4NTI6XFx0XFx0XFx0YnJlYWs7XFxuIDg1MzpcXHRcXHRkZWZhdWx0OlxcbiA4NTQ6XFx0XFx0XFx0ZmMgPSBcXFwiVW5rbm93blxcXCI7XFxuIDg1NTpcXHRcXHRcXHRicmVhaztcXG4gODU2OlxcdFxcdH1cXG4gODU3OlxcdFxcbiA4NTg6XFx0XFx0LyogR2V0IEZFQyBtb2RlIGJhc2VkIG9uIG5lZ290aWF0ZWQgbGluayBpbmZvICovXFxuIDg1OTpcXHRcXHRzd2l0Y2ggKHZzaS1cXHUwMDNlcG9ydF9pbmZvLVxcdTAwM2VwaHkubGlua19pbmZvLmZlY19pbmZvKSB7XFxuIDg2MDpcXHRcXHRjYXNlIElDRV9BUV9MSU5LXzI1R19SU181MjhfRkVDX0VOOlxcbiA4NjE6XFx0XFx0Y2FzZSBJQ0VfQVFfTElOS18yNUdfUlNfNTQ0X0ZFQ19FTjpcXG4gODYyOlxcdFxcdFxcdGZlYyA9IFxcXCJSUy1GRUNcXFwiO1xcbiA4NjM6XFx0XFx0XFx0YnJlYWs7XFxuIDg2NDpcXHRcXHRjYXNlIElDRV9BUV9MSU5LXzI1R19LUl9GRUNfRU46XFxuIDg2NTpcXHRcXHRcXHRmZWMgPSBcXFwiRkMtRkVDL0JBU0UtUlxcXCI7XFxuIDg2NjpcXHRcXHRcXHRicmVhaztcXG4gODY3OlxcdFxcdGRlZmF1bHQ6XFxuIDg2ODpcXHRcXHRcXHRmZWMgPSBcXFwiTk9ORVxcXCI7XFxuIDg2OTpcXHRcXHRcXHRicmVhaztcXG4gODcwOlxcdFxcdH1cXG4gODcxOlxcdFxcbiA4NzI6XFx0XFx0LyogY2hlY2sgaWYgYXV0b25lZyBjb21wbGV0ZWQsIG1pZ2h0IGJlIGZhbHNlIGR1ZSB0byBub3Qgc3VwcG9ydGVkICovXFxuIDg3MzpcXHRcXHRpZiAodnNpLVxcdTAwM2Vwb3J0X2luZm8tXFx1MDAzZXBoeS5saW5rX2luZm8uYW5faW5mbyBcXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXFxuIDg3NDpcXHRcXHRcXHRhbiA9IFxcXCJUcnVlXFxcIjtcXG4gODc1OlxcdFxcdGVsc2VcXG4gODc2OlxcdFxcdFxcdGFuID0gXFxcIkZhbHNlXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTI6NDc6MTUuNTM5NjYzNTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjAwOTY2MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpZXdlZCB0aGUgY2hhbmdlcyB0byBgaWNlX3ByaW50X2xpbmtfbXNnYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHZlcnkgbG9jYWxpemVkIG1vZGlmaWNhdGlvbi4gSSBzZWUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhlIHNldHRpbmcgb2YgYHZzaS1cdTAwM2VjdXJyZW50X2lzdXAgPSBpc3VwYCwgcmVtYWlucyB1bmNoYW5nZWQgZnJvbSB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IG5vdyB3ZSBhcmUgcGFzc2luZyBgbGlua19zcGVlZGAgYXMgYSBkaXJlY3QgYXJndW1lbnQgdG8gdGhlIGZ1bmN0aW9uLCByYXRoZXIgdGhhbiByZWFkaW5nIGl0IGZyb20gYHZzaS1cdTAwM2Vwb3J0X2luZm8tXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX3NwZWVkYC4gVGhpcyBzdWdnZXN0cyBpdCBpcyBhIGNoYW5nZSBwdXJlbHkgcmVsYXRlZCB0byBsb2dnaW5nOyB0aGUgYWN0dWFsIGRyaXZlcidzIG9wZXJhdGlvbmFsIGxvZ2ljIGFwcGVhcnMgdW50b3VjaGVkLiBHaXZlbiB0aGlzIGxpbWl0ZWQgc2NvcGUsIGFuZCB0aGUgbGFjayBvZiBmdW5jdGlvbmFsIGNoYW5nZSwgSSdtIGNvbmZpZGVudCBpbiBjb25jbHVkaW5nIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnV6emluZyB2ZWN0b3JzIHRoYXQgYXJlIHdvcnRoeSBvZiBmdXJ0aGVyIGV4cGxvcmF0aW9uLiBUaGVyZWZvcmUsIEkgd2lsbCBjbGFzc2lmeSB0aGlzIGFzIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDkzLCJPdXRwdXRUb2tlbnMiOjEwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDEyOjQ3OjIwLjc0MDYzMTY0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgaWNlX3ByaW50X2xpbmtfbXNnYCB0byBleHBsaWNpdGx5IHByb3ZpZGUgdGhlIGxpbmsgc3BlZWQgaW5zdGVhZCBvZiByZWFkaW5nIGl0IGZyb20gdGhlIHBvcnQgaW5mbyBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc29sZWx5IHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGxpbmsgc3RhdHVzIChlLmcuLCBcXFwiTklDIExpbmsgaXMgRG93blxcXCIgb3Igc3BlZWQvRkVDIGRldGFpbHMpIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBleGVjdXRpb24gZmxvdyBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpY2VfcHJpbnRfbGlua19tc2dgIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgbGluayBzcGVlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgcG9ydCBpbmZvIHN0cnVjdHVyZS4gVGhpcyBmdW5jdGlvbiBpcyBzb2xlbHkgdXNlZCBmb3IgbG9nZ2luZyB0aGUgbGluayBzdGF0dXMgKGUuZy4sIFxcXCJOSUMgTGluayBpcyBEb3duXFxcIiBvciBzcGVlZC9GRUMgZGV0YWlscykgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGV4ZWN1dGlvbiBmbG93IG9yIGRyaXZlciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbkw2n[1] Phase: Running StartedAt: 2026-07-23 12:47:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkw2n[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-23 12:47:46 +0000 UTC FinishedAt: 2026-07-23 12:47:52 +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,}