Name: series-workflowjll6v Phase: Failed StartedAt: 2026-06-23 10:35:16 +0000 UTC FinishedAt: 2026-06-23 10:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjll6v[0] Phase: Succeeded StartedAt: 2026-06-23 10:35:16 +0000 UTC FinishedAt: 2026-06-23 10:43:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjll6v[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 10:35:16 +0000 UTC FinishedAt: 2026-06-23 10:43:58 +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+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1Y2EzZmU5ZjJmM2ZmYTIxOTI4ZWU4Nzk4NDMyNjRiODAzOTI1YjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0MzoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggYWYzNTRiZWY1YzBkNzkuLjI2YjQ2YTQwNDU4MDg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTEwMTE3LDcgJiM0MzsxMDExNyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdXBkYXRlX3ZpZl9vZmZsb2FkKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxuIFx0aWYgKHZpZi1cdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXHUwMDI2XHUwMDI2XG4gXHQgICAgdmlmLVx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVApXG4gXHRcdHZpZi1cdTAwM2VvZmZsb2FkX2ZsYWdzIFx1MDAyNj0gfihJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEIHxcbi1cdFx0XHRcdFx0SUVFRTgwMjExX09GRkxPQURfREVDQVBfRU5BQkxFRCk7XG4mIzQzO1x0XHRcdFx0XHRJRUVFODAyMTFfT0ZGTE9BRF9ERUNBUF9FTkFCTEVEIHxcbiYjNDM7XHRcdFx0XHRcdElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX01DQVNUKTtcbiBcbiBcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCkge1xuIFx0XHRhaHZpZi1cdTAwM2VkcF92aWYudHhfZW5jYXBfdHlwZSA9IEFUSDEyS19IV19UWFJYX0VUSEVSTkVUO1xuQEAgLTEwMTM2LDYgJiM0MzsxMDEzNyw5IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdXBkYXRlX3ZpZl9vZmZsb2FkKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxuIFx0XHR2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjY9IH5JRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEO1xuIFx0fVxuIFxuJiM0MztcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRClcbiYjNDM7XHRcdHZpZi1cdTAwM2VvZmZsb2FkX2ZsYWdzIHw9IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX01DQVNUO1xuJiM0MztcbiBcdHBhcmFtX2lkID0gV01JX1ZERVZfUEFSQU1fUlhfREVDQVBfVFlQRTtcbiBcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfREVDQVBfRU5BQkxFRClcbiBcdFx0cGFyYW1fdmFsdWUgPSBBVEgxMktfSFdfVFhSWF9FVEhFUk5FVDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IDNkNTlmYTQ1MmVjMDNkLi5lNWJmOWQyMTgxMDQwZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtOTAzLDYgJiM0Mzs5MDMsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0c3RydWN0IGV0aGhkciAqZXRoO1xuIFx0Ym9vbCBpc19wcmJfcnNwO1xuIFx0dTE2IG1jYmNfZ3NuO1xuJiM0MztcdHU4IGNiX2ZsYWdzO1xuIFx0dTggbGlua19pZDtcbiBcdGludCByZXQ7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwICp0bXBfZHA7XG5AQCAtOTk2LDggJiM0Mzs5OTcsMTMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdCAgICBpZWVlODAyMTFfaGFzX3Byb3RlY3RlZChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gXHRcdGlzX2R2bGFuID0gdHJ1ZTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEFkZCBhIHN0YSBwb2ludGVyIGNoZWNrIHRvIGRpZmZlcmVudGlhdGUgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb25cbiYjNDM7XHQgKiBvZmZsb2FkIHBhY2tldHMsIGFzIHRoZSBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQIGZsYWcgaXMgYWxzbyBzZXRcbiYjNDM7XHQgKiBmb3Igc3VjaCBwYWNrZXRzLlxuJiM0MztcdCAqL1xuIFx0aWYgKCF2aWYtXHUwMDNldmFsaWRfbGlua3MgfHwgIWlzX21jYXN0IHx8IGlzX2R2bGFuIHx8XG4tXHQgICAgKHNrYl9jYi1cdTAwM2VmbGFncyBcdTAwMjYgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCkgfHxcbiYjNDM7XHQgICAgKChza2JfY2ItXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApIFx1MDAyNlx1MDAyNiBzdGEpIHx8XG4gXHQgICAgdGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkFXX01PREUsIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpIHtcbiBcdFx0cmV0ID0gYXRoMTJrX3dpZmk3X2RwX3R4KGRwX3BkZXYsIGFydmlmLCBhcnN0YSwgc2tiLCBmYWxzZSwgMCwgaXNfbWNhc3QpO1xuIFx0XHRpZiAodW5saWtlbHkocmV0KSkge1xuQEAgLTEwMDksNiAmIzQzOzEwMTUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRtY2JjX2dzbiA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmFodmlmLVx1MDAzZWRwX3ZpZi5tY2JjX2dzbikgXHUwMDI2IDB4ZmZmO1xuIFxuIFx0XHRsaW5rc19tYXAgPSBhaHZpZi1cdTAwM2VsaW5rc19tYXA7XG4mIzQzO1x0XHRjYl9mbGFncyA9IHNrYl9jYi1cdTAwM2VmbGFncztcbiBcdFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rX2lkLCBcdTAwMjZsaW5rc19tYXAsXG4gXHRcdFx0XHQgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKSB7XG4gXHRcdFx0dG1wX2FydmlmID0gcmN1X2RlcmVmZXJlbmNlKGFodmlmLVx1MDAzZWxpbmtbbGlua19pZF0pO1xuQEAgLTEwMTYsMjEgJiM0MzsxMDIzLDQ1IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHR0bXBfYXIgPSB0bXBfYXJ2aWYtXHUwMDNlYXI7XG4tXHRcdFx0dG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfYXItXHUwMDNlYWItXHUwMDNlZHAsXG4mIzQzO1x0XHRcdHRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItXHUwMDNlYWIpO1xuJiM0MztcdFx0XHR0bXBfZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHRtcF9kcCxcbiBcdFx0XHRcdFx0XHRcdCAgIHRtcF9hci1cdTAwM2VwZGV2X2lkeCk7XG4gXHRcdFx0aWYgKCF0bXBfZHBfcGRldilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbi1cdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4tXHRcdFx0XHRhdGgxMmtfZXJyKGFyLVx1MDAzZWFiLFxuLVx0XHRcdFx0XHQgICBcJiMzNDtza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuLVx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0fVxuIFxuLVx0XHRcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXG4tXHRcdFx0XHRcdFx0XHRcdG1zZHVfY29waWVkLFxuLVx0XHRcdFx0XHRcdFx0XHRpbmZvX2ZsYWdzKTtcbiYjNDM7XHRcdFx0aWYgKGNiX2ZsYWdzIFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBza2ItXHUwMDNlZGF0YSBtYXkgYmUgbW9kaWZpZWQgZm9yIHRoZSBpb3ZhX21hc2sgZGV2aWNlcy5cbiYjNDM7XHRcdFx0XHQgKiBJdCBpcyBiZXR0ZXIgdG8gdXNlIHNrYl9jb3B5KCkgZm9yIHN1Y2ggZGV2aWNlc1xuJiM0MztcdFx0XHRcdCAqIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgc2tiIGNvcnJ1cHRpb24gcmVsYXRlZCBpc3N1ZXMuXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0aWYgKHRtcF9kcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaW92YV9tYXNrKVxuJiM0MztcdFx0XHRcdFx0bXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdC8qXG4mIzQzO1x0XHRcdFx0XHQgKiBhdGgxMmtfd2lmaTdfZHBfdHgoKSBzaG91bGQgdHJlYXQgY2xvbmVkIEhXLWVuY2FwXG4mIzQzO1x0XHRcdFx0XHQgKiBFdGhlcm5ldCBtdWx0aWNhc3QgZnJhbWVzIGFzIHJlYWQtb25seS5cbiYjNDM7XHRcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdFx0bXNkdV9jb3BpZWQgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRcdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4mIzQzO1x0XHRcdFx0XHRhdGgxMmtfZXJyKGFyLVx1MDAzZWFiLFxuJiM0MztcdFx0XHRcdFx0XHQgICBcJiMzNDtza2IgY29weS9jbG9uZSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRcdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4mIzQzO1x0XHRcdFx0XHRhdGgxMmtfZXJyKGFyLVx1MDAzZWFiLFxuJiM0MztcdFx0XHRcdFx0XHQgICBcJiMzNDtza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHRhdGgxMmtfbWxvX21jYXN0X3VwZGF0ZV90eF9saW5rX2FkZHJlc3ModmlmLCBsaW5rX2lkLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRtc2R1X2NvcGllZCxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0aW5mb19mbGFncyk7XG4mIzQzO1x0XHRcdH1cbiBcbiBcdFx0XHRza2JfY2IgPSBBVEgxMktfU0tCX0NCKG1zZHVfY29waWVkKTtcbiBcdFx0XHRza2JfY2ItXHUwMDNlbGlua19pZCA9IGxpbmtfaWQ7XG5AQCAtMTA0Niw3ICYjNDM7MTA3Nyw2IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0aWYgKHVubGlrZWx5KCFhaHZpZi1cdTAwM2VkcF92aWYua2V5X2NpcGhlcikpXG4gXHRcdFx0XHRnb3RvIHNraXBfcGVlcl9maW5kO1xuIFxuLVx0XHRcdHRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItXHUwMDNlYWIpO1xuIFx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0bXBfZHAtXHUwMDNlZHBfbG9jayk7XG4gXHRcdFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV9hZGRyKHRtcF9kcCxcbiBcdFx0XHRcdFx0XHRcdFx0dG1wX2FydmlmLVx1MDAzZWJzc2lkKTtcbkBAIC0xMDY1LDExICYjNDM7MTA5NSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0c2tiX2NiLVx1MDAzZWNpcGhlciA9IGtleS1cdTAwM2VjaXBoZXI7XG4gXHRcdFx0XHRza2JfY2ItXHUwMDNlZmxhZ3MgfD0gQVRIMTJLX1NLQl9DSVBIRVJfU0VUO1xuIFxuJiM0MztcdFx0XHRcdGlmIChza2JfY2ItXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApXG4mIzQzO1x0XHRcdFx0XHRnb3RvIHNraXBfZmN0bF9wcm90ZWN0ZWRfY2hlY2s7XG4mIzQzO1xuIFx0XHRcdFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopbXNkdV9jb3BpZWQtXHUwMDNlZGF0YTtcbiBcdFx0XHRcdGlmICghaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRcdFx0XHRoZHItXHUwMDNlZnJhbWVfY29udHJvbCB8PVxuIFx0XHRcdFx0XHRcdGNwdV90b19sZTE2KElFRUU4MDIxMV9GQ1RMX1BST1RFQ1RFRCk7XG4gXHRcdFx0fVxuJiM0MztcbiYjNDM7c2tpcF9mY3RsX3Byb3RlY3RlZF9jaGVjazpcbiBcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0bXBfZHAtXHUwMDNlZHBfbG9jayk7XG4gXG4gc2tpcF9wZWVyX2ZpbmQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NWNhM2ZlOWYyZjNmZmEyMTkyOGVlODc5ODQzMjY0YjgwMzkyNWI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMTA6NDM6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwppbmRleCBhZjM1NGJlZjVjMGQ3OS4uMjZiNDZhNDA0NTgwODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwpAQCAtMTAxMTcsNyAmIzQzOzEwMTE3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWQoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYpCiAJaWYgKHZpZi0mZ3Q7dHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OICZhbXA7JmFtcDsKIAkgICAgdmlmLSZndDt0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKQogCQl2aWYtJmd0O29mZmxvYWRfZmxhZ3MgJmFtcDs9IH4oSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCB8Ci0JCQkJCUlFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpOwomIzQzOwkJCQkJSUVFRTgwMjExX09GRkxPQURfREVDQVBfRU5BQkxFRCB8CiYjNDM7CQkJCQlJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9NQ0FTVCk7CiAKIAlpZiAodmlmLSZndDtvZmZsb2FkX2ZsYWdzICZhbXA7IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX0VOQUJMRUQpIHsKIAkJYWh2aWYtJmd0O2RwX3ZpZi50eF9lbmNhcF90eXBlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7CkBAIC0xMDEzNiw2ICYjNDM7MTAxMzcsOSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3VwZGF0ZV92aWZfb2ZmbG9hZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZikKIAkJdmlmLSZndDtvZmZsb2FkX2ZsYWdzICZhbXA7PSB+SUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRDsKIAl9CiAKJiM0MzsJaWYgKHZpZi0mZ3Q7b2ZmbG9hZF9mbGFncyAmYW1wOyBJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEKQomIzQzOwkJdmlmLSZndDtvZmZsb2FkX2ZsYWdzIHw9IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX01DQVNUOwomIzQzOwogCXBhcmFtX2lkID0gV01JX1ZERVZfUEFSQU1fUlhfREVDQVBfVFlQRTsKIAlpZiAodmlmLSZndDtvZmZsb2FkX2ZsYWdzICZhbXA7IElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpCiAJCXBhcmFtX3ZhbHVlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKaW5kZXggM2Q1OWZhNDUyZWMwM2QuLmU1YmY5ZDIxODEwNDBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCkBAIC05MDMsNiAmIzQzOzkwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJc3RydWN0IGV0aGhkciAqZXRoOwogCWJvb2wgaXNfcHJiX3JzcDsKIAl1MTYgbWNiY19nc247CiYjNDM7CXU4IGNiX2ZsYWdzOwogCXU4IGxpbmtfaWQ7CiAJaW50IHJldDsKIAlzdHJ1Y3QgYXRoMTJrX2RwICp0bXBfZHA7CkBAIC05OTYsOCAmIzQzOzk5NywxMyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCSAgICBpZWVlODAyMTFfaGFzX3Byb3RlY3RlZChoZHItJmd0O2ZyYW1lX2NvbnRyb2wpKQogCQlpc19kdmxhbiA9IHRydWU7CiAKJiM0MzsJLyoKJiM0MzsJICogQWRkIGEgc3RhIHBvaW50ZXIgY2hlY2sgdG8gZGlmZmVyZW50aWF0ZSBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbgomIzQzOwkgKiBvZmZsb2FkIHBhY2tldHMsIGFzIHRoZSBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQIGZsYWcgaXMgYWxzbyBzZXQKJiM0MzsJICogZm9yIHN1Y2ggcGFja2V0cy4KJiM0MzsJICovCiAJaWYgKCF2aWYtJmd0O3ZhbGlkX2xpbmtzIHx8ICFpc19tY2FzdCB8fCBpc19kdmxhbiB8fAotCSAgICAoc2tiX2NiLSZndDtmbGFncyAmYW1wOyBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB8fAomIzQzOwkgICAgKChza2JfY2ItJmd0O2ZsYWdzICZhbXA7IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApICZhbXA7JmFtcDsgc3RhKSB8fAogCSAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SQVdfTU9ERSwgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpIHsKIAkJcmV0ID0gYXRoMTJrX3dpZmk3X2RwX3R4KGRwX3BkZXYsIGFydmlmLCBhcnN0YSwgc2tiLCBmYWxzZSwgMCwgaXNfbWNhc3QpOwogCQlpZiAodW5saWtlbHkocmV0KSkgewpAQCAtMTAwOSw2ICYjNDM7MTAxNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCW1jYmNfZ3NuID0gYXRvbWljX2luY19yZXR1cm4oJmFtcDthaHZpZi0mZ3Q7ZHBfdmlmLm1jYmNfZ3NuKSAmYW1wOyAweGZmZjsKIAogCQlsaW5rc19tYXAgPSBhaHZpZi0mZ3Q7bGlua3NfbWFwOwomIzQzOwkJY2JfZmxhZ3MgPSBza2JfY2ItJmd0O2ZsYWdzOwogCQlmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsICZhbXA7bGlua3NfbWFwLAogCQkJCSBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHsKIAkJCXRtcF9hcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi0mZ3Q7bGlua1tsaW5rX2lkXSk7CkBAIC0xMDE2LDIxICYjNDM7MTAyMyw0NSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCWNvbnRpbnVlOwogCiAJCQl0bXBfYXIgPSB0bXBfYXJ2aWYtJmd0O2FyOwotCQkJdG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfYXItJmd0O2FiLSZndDtkcCwKJiM0MzsJCQl0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLSZndDthYik7CiYjNDM7CQkJdG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfZHAsCiAJCQkJCQkJICAgdG1wX2FyLSZndDtwZGV2X2lkeCk7CiAJCQlpZiAoIXRtcF9kcF9wZGV2KQogCQkJCWNvbnRpbnVlOwotCQkJbXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpOwotCQkJaWYgKCFtc2R1X2NvcGllZCkgewotCQkJCWF0aDEya19lcnIoYXItJmd0O2FiLAotCQkJCQkgICAmIzM0O3NrYiBjb3B5IGZhaWx1cmUgbGlua19pZCAweCVYIHZkZXZpZCAweCVYXG4mIzM0OywKLQkJCQkJICAgbGlua19pZCwgdG1wX2FydmlmLSZndDt2ZGV2X2lkKTsKLQkJCQljb250aW51ZTsKLQkJCX0KIAotCQkJYXRoMTJrX21sb19tY2FzdF91cGRhdGVfdHhfbGlua19hZGRyZXNzKHZpZiwgbGlua19pZCwKLQkJCQkJCQkJbXNkdV9jb3BpZWQsCi0JCQkJCQkJCWluZm9fZmxhZ3MpOwomIzQzOwkJCWlmIChjYl9mbGFncyAmYW1wOyBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB7CiYjNDM7CQkJCS8qCiYjNDM7CQkJCSAqIHNrYi0mZ3Q7ZGF0YSBtYXkgYmUgbW9kaWZpZWQgZm9yIHRoZSBpb3ZhX21hc2sgZGV2aWNlcy4KJiM0MzsJCQkJICogSXQgaXMgYmV0dGVyIHRvIHVzZSBza2JfY29weSgpIGZvciBzdWNoIGRldmljZXMKJiM0MzsJCQkJICogdG8gYXZvaWQgYW55IHBvdGVudGlhbCBza2IgY29ycnVwdGlvbiByZWxhdGVkIGlzc3Vlcy4KJiM0MzsJCQkJICovCiYjNDM7CQkJCWlmICh0bXBfZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aW92YV9tYXNrKQomIzQzOwkJCQkJbXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpOwomIzQzOwkJCQllbHNlCiYjNDM7CQkJCQkvKgomIzQzOwkJCQkJICogYXRoMTJrX3dpZmk3X2RwX3R4KCkgc2hvdWxkIHRyZWF0IGNsb25lZCBIVy1lbmNhcAomIzQzOwkJCQkJICogRXRoZXJuZXQgbXVsdGljYXN0IGZyYW1lcyBhcyByZWFkLW9ubHkuCiYjNDM7CQkJCQkgKi8KJiM0MzsJCQkJCW1zZHVfY29waWVkID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7CiYjNDM7CQkJCWlmICghbXNkdV9jb3BpZWQpIHsKJiM0MzsJCQkJCWF0aDEya19lcnIoYXItJmd0O2FiLAomIzQzOwkJCQkJCSAgICYjMzQ7c2tiIGNvcHkvY2xvbmUgZmFpbHVyZSBsaW5rX2lkIDB4JVggdmRldmlkIDB4JVhcbiYjMzQ7LAomIzQzOwkJCQkJCSAgIGxpbmtfaWQsIHRtcF9hcnZpZi0mZ3Q7dmRldl9pZCk7CiYjNDM7CQkJCQljb250aW51ZTsKJiM0MzsJCQkJfQomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCW1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJaWYgKCFtc2R1X2NvcGllZCkgewomIzQzOwkJCQkJYXRoMTJrX2Vycihhci0mZ3Q7YWIsCiYjNDM7CQkJCQkJICAgJiMzNDtza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxuJiMzNDssCiYjNDM7CQkJCQkJICAgbGlua19pZCwgdG1wX2FydmlmLSZndDt2ZGV2X2lkKTsKJiM0MzsJCQkJCWNvbnRpbnVlOwomIzQzOwkJCQl9CiYjNDM7CiYjNDM7CQkJCWF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsCiYjNDM7CQkJCQkJCQkJbXNkdV9jb3BpZWQsCiYjNDM7CQkJCQkJCQkJaW5mb19mbGFncyk7CiYjNDM7CQkJfQogCiAJCQlza2JfY2IgPSBBVEgxMktfU0tCX0NCKG1zZHVfY29waWVkKTsKIAkJCXNrYl9jYi0mZ3Q7bGlua19pZCA9IGxpbmtfaWQ7CkBAIC0xMDQ2LDcgJiM0MzsxMDc3LDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCWlmICh1bmxpa2VseSghYWh2aWYtJmd0O2RwX3ZpZi5rZXlfY2lwaGVyKSkKIAkJCQlnb3RvIHNraXBfcGVlcl9maW5kOwogCi0JCQl0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLSZndDthYik7CiAJCQlzcGluX2xvY2tfYmgoJmFtcDt0bXBfZHAtJmd0O2RwX2xvY2spOwogCQkJcGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV9hZGRyKHRtcF9kcCwKIAkJCQkJCQkJdG1wX2FydmlmLSZndDtic3NpZCk7CkBAIC0xMDY1LDExICYjNDM7MTA5NSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCXNrYl9jYi0mZ3Q7Y2lwaGVyID0ga2V5LSZndDtjaXBoZXI7CiAJCQkJc2tiX2NiLSZndDtmbGFncyB8PSBBVEgxMktfU0tCX0NJUEhFUl9TRVQ7CiAKJiM0MzsJCQkJaWYgKHNrYl9jYi0mZ3Q7ZmxhZ3MgJmFtcDsgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCkKJiM0MzsJCQkJCWdvdG8gc2tpcF9mY3RsX3Byb3RlY3RlZF9jaGVjazsKJiM0MzsKIAkJCQloZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKiltc2R1X2NvcGllZC0mZ3Q7ZGF0YTsKIAkJCQlpZiAoIWllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhkci0mZ3Q7ZnJhbWVfY29udHJvbCkpCiAJCQkJCWhkci0mZ3Q7ZnJhbWVfY29udHJvbCB8PQogCQkJCQkJY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTsKIAkJCX0KJiM0MzsKJiM0Mztza2lwX2ZjdGxfcHJvdGVjdGVkX2NoZWNrOgogCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0bXBfZHAtJmd0O2RwX2xvY2spOwogCiBza2lwX3BlZXJfZmluZDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIE11bHRpY2FzdCBFbmNhcHN1bGF0aW9uIE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBhdGgxMmsvbWFjLmNgIGFuZCBgYXRoMTJrL3dpZmk3L2h3LmNgLiBUaGlzIGlzIGFib3V0IGVuYWJsaW5nIG11bHRpY2FzdCBlbmNhcHN1bGF0aW9uIG9mZmxvYWQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyB0d2Vha2luZyBgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWRgIGFuZCBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAsIHNwZWNpZmljYWxseSBhcm91bmQgc2V0dGluZyBgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1RgLiBSaWdodCwgc3RhbmRhcmQgc3R1ZmYgZm9yIG9mZmxvYWQuCgpOb3csIG15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCB0aGVzZSBraW5kcyBvZiBkcml2ZXIgY2hhbmdlcywgaXMgcmVhY2hhYmlsaXR5LiBDYW4gSSAqYWN0dWFsbHkqIHRyaWdnZXIgdGhpcyBjb2RlIGluIGEgdGVzdGluZyBlbnZpcm9ubWVudD8gIGBhdGgxMmtgIGlzIFF1YWxjb21tJiMzOTtzIFdpLUZpIDcgZHJpdmVyLCBhIGhhcmR3YXJlIGRyaXZlci4gVGhhdCBtYWtlcyB0aGluZ3MgaW1tZWRpYXRlbHkgdHJpY2t5LiAgQ2FuIEkgZnV6eiB0aGlzIHRoaW5nPyAgSGFyZHdhcmUgZHJpdmVycyBhcmUgdXN1YWxseSBhIHBhaW4gdG8gZnV6eiBkaXJlY3RseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuICBVbmxlc3MgdGhlcmUmIzM5O3MgYSBzb2Z0d2FyZSBlbXVsYXRvci4uLiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0JiMzOTtzIGdlbmVyaWMsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGBhdGgxMmtgLgoKV2FpdCBhIG1pbnV0ZSwgZG9lcyBzeXprYWxsZXIgZXZlbiBzdXBwb3J0IHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgc3l6a2FsbGVyIHVzZXMgZm9yIGF0aDEyay4gT3RoZXJ3aXNlLCBpZiBpdCYjMzk7cyBqdXN0IGEgcmF3IGhhcmR3YXJlIGRyaXZlciB3aXRob3V0IGFuIGVtdWxhdGlvbiBsYXllciwgdGhpcyBwYXRjaCBtaWdodCBiZSBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHR5cGljYWwgdGVzdCBzZXR1cC4gSXQmIzM5O3MgYSB3YXN0ZSBvZiB0aW1lIGFuZCBlZmZvcnQgdG8gcmV2aWV3LiBOZWVkIHRvIGNoZWNrIGlmIGl0JiMzOTtzIFBDSSBvciBBSEIsIG9yIHNvbWUgb3RoZXIgYnVzIGludGVyZmFjZSwgaW4gdGhlIGF0aDEyayBjb2RlLCB0byBkZXRlcm1pbmUgd2hhdCYjMzk7cyBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI9Y29uZmlnIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM6XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE1Olx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIGF0aDEyay5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0xNz1jb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4Olx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOS1cdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBSRU1PVEVQUk9DXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI1PWNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNjpcdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI3LVx0ZGVwZW5kcyBvbiBBVEgxMktcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MzU9Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzgtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzk6XHQgIEVuYWJsZSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTQ0PWNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ1Olx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ3LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ4Olx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTUzPWNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NDpcdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTUtXHRkZXBlbmRzIG9uIEFUSDEyS1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Ny1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1ODpcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVRIMTJLIERyaXZlciBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBBVEgxMktgIGRyaXZlciwgYW5kIGltbWVkaWF0ZWx5IG15IG1pbmQgZ29lcyB0byBkZXBlbmRlbmNpZXMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYnVpbHQgb24gdG9wIG9mIGBNQUM4MDIxMWAsIHdoaWNoIGlzIHN0YW5kYXJkLCBhbmQgdGhlbiByZXF1aXJlcyBlaXRoZXIgYEhBU19ETUEgJmFtcDsmYW1wOyBQQ0lgICpvciogYEFUSDEyS19BSEJgLiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uIHJpZ2h0IHRoZXJlLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiBjb25zaWRlcmluZyBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuCgpUaGUgbmV4dCBxdWVzdGlvbiB0aGF0IHBvcHMgdXAsIGdpdmVuIEkga25vdyBhIGJpdCBhYm91dCB0aGUgc3BhY2UgYW5kIHRoZSBwb3RlbnRpYWwgY2hhbGxlbmdlcyBvZiBoYXJkd2FyZSBzdXBwb3J0LCBpcyB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW50ZXJmYWNlIGZvciBgYXRoMTJrYC4gSXQmIzM5O3MgYWx3YXlzIHVzZWZ1bCB0byBrbm93IGlmIEkgY2FuIHRlc3Qgb3Igc2ltdWxhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBuZWVkaW5nIHRoZSAqZXhhY3QqIGhhcmR3YXJlLiBUaGlzIGhlbHBzIHdpdGggZGVidWdnaW5nIGFuZCBkZXZlbG9wbWVudCBpZiBJIGNhbiB0ZXN0IHRoaW5ncyB3aXRob3V0IGEgcGh5c2ljYWwgc2V0dXAuIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UgZm9yIGFueSBoaW50cyBvZiB0aGF0LiBJcyB0aGVyZSBhIHZpcnR1YWwgZGV2aWNlIG1vZGVsIGluIHRoZSBrZXJuZWwsIG9yIHNvbWUgc29ydCBvZiB1c2Vyc3BhY2UgZW11bGF0aW9uIHRoYXQmIzM5O3MgYmVlbiBwdXQgdG9nZXRoZXI/IExldCBtZSBkaXZlIGluIGFuZCBzZWUgd2hhdCYjMzk7cyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBdGgxMms6IEEgVmlydHVhbGl6YXRpb24gQ29udW5kcnVtKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGh3c2ltIGZvciBhdGgxMmsuIFRoYXQmIzM5O3MgYSBwcm9ibGVtLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyAqYW55KiBvdGhlciB2aWFibGUgcGF0aCBmb3IgZnV6emluZyB0aGlzIGRyaXZlci4gSSB1c3VhbGx5IGxvb2sgdG8gUENJIGRldmljZXMsIGFuZCBpZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgdGhhdCBjYW4gYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQsIGF0aDEyayBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcjsgaXQmIzM5O3Mgbm90IHNvbWUgZ2VuZXJpYywgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFdhaXQsIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgaXQmIzM5O3MgdmVyeSBsaW1pdGVkLCBhbmQgZnJhbmtseSwgd2UgdXN1YWxseSBkb24mIzM5O3QgYm90aGVyIGZ1enppbmcgZHJpdmVycyBmb3IgKnNwZWNpZmljKiBoYXJkd2FyZS4gV2UgdGVuZCB0byBmb2N1cyBvbiBnZW5lcmljIHN1YnN5c3RlbXMgb3IgdGhvc2Ugd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgdmhjaSwgbWFjODAyMTFfaHdzaW0sIG9yIG5ldGRldnNpbS4KCkhvbGQgb24sIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgaW5zdHJ1Y3Rpb25zIGFnYWluLiBJIHJlbWVtYmVyIHNvbWV0aGluZyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGFmZmVjdHMgY29kZSB0aGF0JiMzOTtzIGltcG9zc2libGUgdG8gaGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0JiMzOTtzIGtleS4gQW5kIEkga25vdyB0aGF0IGF0aDEyayBpcyBhIHNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBtYWM4MDIxMV9od3NpbSwgd2hpY2ggZW11bGF0ZXMgKmdlbmVyaWMqIG1hYzgwMjExIGhhcmR3YXJlIOKAkyBub3QgYXRoMTJrIHNwZWNpZmljYWxseS4gVGhlcmVmb3JlLCBhbnkgbmV3IGNvZGUgd291bGQgYmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgcmVzb3VyY2VzIG9uZSBsYXN0IHRpbWUuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGhpZGRlbiBlbXVsYXRpb24gb2YgYXRoMTJrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UUVNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzY1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGZvciBGdXp6aW5nIGFuZCBFbXVsYXRpb24gd2l0aGluIGF0aDEyayoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgb2YgdGhlIGF0aDEyayBkcml2ZXIuIE15IHByaW1hcnkgaW50ZXJlc3QgcmlnaHQgbm93IHJldm9sdmVzIGFyb3VuZCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBmdXp6aW5nIGFuZC9vciBlbXVsYXRpb24gdGVjaG5pcXVlcyBiZWluZyB1dGlsaXplZCB3aXRoaW4gaXRzIGRldmVsb3BtZW50LCB0ZXN0aW5nLCBvciBzZWN1cml0eSBhbmFseXNpcy4gSSBuZWVkIHRvIHF1aWNrbHkgZmluZCBvdXQgaWYgYW55b25lIGlzIHNwZWNpZmljYWxseSB1c2luZyBmdXp6aW5nIHRvIGZpbmQgYnVncywgb3IgZW11bGF0aW9uIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcgYW5kIGFuYWx5c2lzIG9mIGl0cyBiZWhhdmlvdXIuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlIGRpcmVjdGx5IGZvciBtZW50aW9ucywgYW55IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiwgbWF5YmUgZXZlbiBkaXNjdXNzaW9ucyBvbiBtYWlsaW5nIGxpc3RzIGlmIEkgY2FuIGZpbmQgdGhlbS4gVGhlIGdvYWwgaXMgdG8gc2VlIGhvdyByb2J1c3QgdGhlIGRlc2lnbiBpcywgYW5kIGhvdyBjYXJlZnVsbHkgdGhleSBhcmUgY2hlY2tpbmcgdGhlaXIgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXp6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTk5CgkJCQkJCQlvdXRwdXQ6IDg3CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCB0aGUgYGF0aDEya2AgZHJpdmVyLiBUaGF0IGNsaWNrcyDigJMgdGhhdCYjMzk7cyBhICpoYXJkd2FyZS1zcGVjaWZpYyogZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGZvciBRdWFsY29tbSYjMzk7cyBXaS1GaSA3IHNpbGljb24uIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGVyZSYjMzk7cyBubyByZWFsaXN0aWMgd2F5IHRvIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBwcm9wZXJseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhlIGNvZGUgcGF0aHMgdGhpcyBwYXRjaCB0b3VjaGVzIHNpbXBseSB3b24mIzM5O3QgYmUgZXhlcmNpc2VkIGJ5IGFueSBmdXp6aW5nIEkmIzM5O2QgdGhyb3cgYXQgaXQuCgpUaGVyZWZvcmUsIGZyb20gYSBwcmFjdGljYWwgc3RhbmRwb2ludCwgdGhpcyBwYXRjaCYjMzk7cyBmdXp6aW5nIHdvcnRoaW5lc3MgaXMgZXNzZW50aWFsbHkgemVyby4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gTm8gcG9pbnQgaW4gd2FzdGluZyByZXNvdXJjZXMgb24gc29tZXRoaW5nIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjIwLjg5MTUwMjMxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTEzOTY2MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjIwLjg5MTUwOTY3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYxNTA5MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTVjYTNmZTlmMmYzZmZhMjE5MjhlZTg3OTg0MzI2NGI4MDM5MjViNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0MzoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IGFmMzU0YmVmNWMwZDc5Li4yNmI0NmE0MDQ1ODA4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC0xMDExNyw3ICsxMDExNyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdXBkYXRlX3ZpZl9vZmZsb2FkKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxcbiBcXHRpZiAodmlmLVxcdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIHZpZi1cXHUwMDNldHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUClcXG4gXFx0XFx0dmlmLVxcdTAwM2VvZmZsb2FkX2ZsYWdzIFxcdTAwMjY9IH4oSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCB8XFxuLVxcdFxcdFxcdFxcdFxcdElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpO1xcbitcXHRcXHRcXHRcXHRcXHRJRUVFODAyMTFfT0ZGTE9BRF9ERUNBUF9FTkFCTEVEIHxcXG4rXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1QpO1xcbiBcXG4gXFx0aWYgKHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX0VOQUJMRUQpIHtcXG4gXFx0XFx0YWh2aWYtXFx1MDAzZWRwX3ZpZi50eF9lbmNhcF90eXBlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XFxuQEAgLTEwMTM2LDYgKzEwMTM3LDkgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWQoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYpXFxuIFxcdFxcdHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2PSB+SUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX0VOQUJMRUQpXFxuK1xcdFxcdHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyB8PSBJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9NQ0FTVDtcXG4rXFxuIFxcdHBhcmFtX2lkID0gV01JX1ZERVZfUEFSQU1fUlhfREVDQVBfVFlQRTtcXG4gXFx0aWYgKHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpXFxuIFxcdFxcdHBhcmFtX3ZhbHVlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbmluZGV4IDNkNTlmYTQ1MmVjMDNkLi5lNWJmOWQyMTgxMDQwZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5AQCAtOTAzLDYgKzkwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdHN0cnVjdCBldGhoZHIgKmV0aDtcXG4gXFx0Ym9vbCBpc19wcmJfcnNwO1xcbiBcXHR1MTYgbWNiY19nc247XFxuK1xcdHU4IGNiX2ZsYWdzO1xcbiBcXHR1OCBsaW5rX2lkO1xcbiBcXHRpbnQgcmV0O1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2RwICp0bXBfZHA7XFxuQEAgLTk5Niw4ICs5OTcsMTMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0ICAgIGllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIFxcdFxcdGlzX2R2bGFuID0gdHJ1ZTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIEFkZCBhIHN0YSBwb2ludGVyIGNoZWNrIHRvIGRpZmZlcmVudGlhdGUgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb25cXG4rXFx0ICogb2ZmbG9hZCBwYWNrZXRzLCBhcyB0aGUgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCBmbGFnIGlzIGFsc28gc2V0XFxuK1xcdCAqIGZvciBzdWNoIHBhY2tldHMuXFxuK1xcdCAqL1xcbiBcXHRpZiAoIXZpZi1cXHUwMDNldmFsaWRfbGlua3MgfHwgIWlzX21jYXN0IHx8IGlzX2R2bGFuIHx8XFxuLVxcdCAgICAoc2tiX2NiLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApIHx8XFxuK1xcdCAgICAoKHNrYl9jYi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSBcXHUwMDI2XFx1MDAyNiBzdGEpIHx8XFxuIFxcdCAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SQVdfTU9ERSwgXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZGV2X2ZsYWdzKSkge1xcbiBcXHRcXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfdHgoZHBfcGRldiwgYXJ2aWYsIGFyc3RhLCBza2IsIGZhbHNlLCAwLCBpc19tY2FzdCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseShyZXQpKSB7XFxuQEAgLTEwMDksNiArMTAxNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdG1jYmNfZ3NuID0gYXRvbWljX2luY19yZXR1cm4oXFx1MDAyNmFodmlmLVxcdTAwM2VkcF92aWYubWNiY19nc24pIFxcdTAwMjYgMHhmZmY7XFxuIFxcbiBcXHRcXHRsaW5rc19tYXAgPSBhaHZpZi1cXHUwMDNlbGlua3NfbWFwO1xcbitcXHRcXHRjYl9mbGFncyA9IHNrYl9jYi1cXHUwMDNlZmxhZ3M7XFxuIFxcdFxcdGZvcl9lYWNoX3NldF9iaXQobGlua19pZCwgXFx1MDAyNmxpbmtzX21hcCxcXG4gXFx0XFx0XFx0XFx0IElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xcbiBcXHRcXHRcXHR0bXBfYXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtXFx1MDAzZWxpbmtbbGlua19pZF0pO1xcbkBAIC0xMDE2LDIxICsxMDIzLDQ1IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0dG1wX2FyID0gdG1wX2FydmlmLVxcdTAwM2VhcjtcXG4tXFx0XFx0XFx0dG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfYXItXFx1MDAzZWFiLVxcdTAwM2VkcCxcXG4rXFx0XFx0XFx0dG1wX2RwID0gYXRoMTJrX2FiX3RvX2RwKHRtcF9hci1cXHUwMDNlYWIpO1xcbitcXHRcXHRcXHR0bXBfZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHRtcF9kcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgdG1wX2FyLVxcdTAwM2VwZGV2X2lkeCk7XFxuIFxcdFxcdFxcdGlmICghdG1wX2RwX3BkZXYpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRtc2R1X2NvcGllZCA9IHNrYl9jb3B5KHNrYiwgR0ZQX0FUT01JQyk7XFxuLVxcdFxcdFxcdGlmICghbXNkdV9jb3BpZWQpIHtcXG4tXFx0XFx0XFx0XFx0YXRoMTJrX2Vycihhci1cXHUwMDNlYWIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIFxcXCJza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVxcdTAwM2V2ZGV2X2lkKTtcXG4tXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG1zZHVfY29waWVkLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbmZvX2ZsYWdzKTtcXG4rXFx0XFx0XFx0aWYgKGNiX2ZsYWdzIFxcdTAwMjYgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCkge1xcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiBza2ItXFx1MDAzZWRhdGEgbWF5IGJlIG1vZGlmaWVkIGZvciB0aGUgaW92YV9tYXNrIGRldmljZXMuXFxuK1xcdFxcdFxcdFxcdCAqIEl0IGlzIGJldHRlciB0byB1c2Ugc2tiX2NvcHkoKSBmb3Igc3VjaCBkZXZpY2VzXFxuK1xcdFxcdFxcdFxcdCAqIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgc2tiIGNvcnJ1cHRpb24gcmVsYXRlZCBpc3N1ZXMuXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRpZiAodG1wX2RwLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWlvdmFfbWFzaylcXG4rXFx0XFx0XFx0XFx0XFx0bXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdFxcdCAqIGF0aDEya193aWZpN19kcF90eCgpIHNob3VsZCB0cmVhdCBjbG9uZWQgSFctZW5jYXBcXG4rXFx0XFx0XFx0XFx0XFx0ICogRXRoZXJuZXQgbXVsdGljYXN0IGZyYW1lcyBhcyByZWFkLW9ubHkuXFxuK1xcdFxcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRcXHRtc2R1X2NvcGllZCA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRcXHRcXHRpZiAoIW1zZHVfY29waWVkKSB7XFxuK1xcdFxcdFxcdFxcdFxcdGF0aDEya19lcnIoYXItXFx1MDAzZWFiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBcXFwic2tiIGNvcHkvY2xvbmUgZmFpbHVyZSBsaW5rX2lkIDB4JVggdmRldmlkIDB4JVhcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIGxpbmtfaWQsIHRtcF9hcnZpZi1cXHUwMDNldmRldl9pZCk7XFxuK1xcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcXG4rXFx0XFx0XFx0XFx0aWYgKCFtc2R1X2NvcGllZCkge1xcbitcXHRcXHRcXHRcXHRcXHRhdGgxMmtfZXJyKGFyLVxcdTAwM2VhYixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInNrYiBjb3B5IGZhaWx1cmUgbGlua19pZCAweCVYIHZkZXZpZCAweCVYXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBsaW5rX2lkLCB0bXBfYXJ2aWYtXFx1MDAzZXZkZXZfaWQpO1xcbitcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0XFx0YXRoMTJrX21sb19tY2FzdF91cGRhdGVfdHhfbGlua19hZGRyZXNzKHZpZiwgbGlua19pZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bXNkdV9jb3BpZWQsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGluZm9fZmxhZ3MpO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRza2JfY2IgPSBBVEgxMktfU0tCX0NCKG1zZHVfY29waWVkKTtcXG4gXFx0XFx0XFx0c2tiX2NiLVxcdTAwM2VsaW5rX2lkID0gbGlua19pZDtcXG5AQCAtMTA0Niw3ICsxMDc3LDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFhaHZpZi1cXHUwMDNlZHBfdmlmLmtleV9jaXBoZXIpKVxcbiBcXHRcXHRcXHRcXHRnb3RvIHNraXBfcGVlcl9maW5kO1xcbiBcXG4tXFx0XFx0XFx0dG1wX2RwID0gYXRoMTJrX2FiX3RvX2RwKHRtcF9hci1cXHUwMDNlYWIpO1xcbiBcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRtcF9kcC1cXHUwMDNlZHBfbG9jayk7XFxuIFxcdFxcdFxcdHBlZXIgPSBhdGgxMmtfZHBfbGlua19wZWVyX2ZpbmRfYnlfYWRkcih0bXBfZHAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRtcF9hcnZpZi1cXHUwMDNlYnNzaWQpO1xcbkBAIC0xMDY1LDExICsxMDk1LDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdHNrYl9jYi1cXHUwMDNlY2lwaGVyID0ga2V5LVxcdTAwM2VjaXBoZXI7XFxuIFxcdFxcdFxcdFxcdHNrYl9jYi1cXHUwMDNlZmxhZ3MgfD0gQVRIMTJLX1NLQl9DSVBIRVJfU0VUO1xcbiBcXG4rXFx0XFx0XFx0XFx0aWYgKHNrYl9jYi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKVxcbitcXHRcXHRcXHRcXHRcXHRnb3RvIHNraXBfZmN0bF9wcm90ZWN0ZWRfY2hlY2s7XFxuK1xcbiBcXHRcXHRcXHRcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKiltc2R1X2NvcGllZC1cXHUwMDNlZGF0YTtcXG4gXFx0XFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfaGFzX3Byb3RlY3RlZChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiBcXHRcXHRcXHRcXHRcXHRoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wgfD1cXG4gXFx0XFx0XFx0XFx0XFx0XFx0Y3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcXG4gXFx0XFx0XFx0fVxcbitcXG4rc2tpcF9mY3RsX3Byb3RlY3RlZF9jaGVjazpcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnRtcF9kcC1cXHUwMDNlZHBfbG9jayk7XFxuIFxcbiBza2lwX3BlZXJfZmluZDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MjEuNzU0MTYzOTg5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI1MTI5ODgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1Y2EzZmU5ZjJmM2ZmYTIxOTI4ZWU4Nzk4NDMyNjRiODAzOTI1YjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0MzoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCBhZjM1NGJlZjVjMGQ3OS4uMjZiNDZhNDA0NTgwODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTAxMTcsNyArMTAxMTcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3VwZGF0ZV92aWZfb2ZmbG9hZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZilcbiBcdGlmICh2aWYtXHUwMDNldHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHZpZi1cdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKVxuIFx0XHR2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjY9IH4oSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCB8XG4tXHRcdFx0XHRcdElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpO1xuK1x0XHRcdFx0XHRJRUVFODAyMTFfT0ZGTE9BRF9ERUNBUF9FTkFCTEVEIHxcbitcdFx0XHRcdFx0SUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1QpO1xuIFxuIFx0aWYgKHZpZi1cdTAwM2VvZmZsb2FkX2ZsYWdzIFx1MDAyNiBJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEKSB7XG4gXHRcdGFodmlmLVx1MDAzZWRwX3ZpZi50eF9lbmNhcF90eXBlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XG5AQCAtMTAxMzYsNiArMTAxMzcsOSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3VwZGF0ZV92aWZfb2ZmbG9hZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZilcbiBcdFx0dmlmLVx1MDAzZW9mZmxvYWRfZmxhZ3MgXHUwMDI2PSB+SUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRDtcbiBcdH1cbiBcbitcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRClcbitcdFx0dmlmLVx1MDAzZW9mZmxvYWRfZmxhZ3MgfD0gSUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1Q7XG4rXG4gXHRwYXJhbV9pZCA9IFdNSV9WREVWX1BBUkFNX1JYX0RFQ0FQX1RZUEU7XG4gXHRpZiAodmlmLVx1MDAzZW9mZmxvYWRfZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpXG4gXHRcdHBhcmFtX3ZhbHVlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5pbmRleCAzZDU5ZmE0NTJlYzAzZC4uZTViZjlkMjE4MTA0MGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuQEAgLTkwMyw2ICs5MDMsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0c3RydWN0IGV0aGhkciAqZXRoO1xuIFx0Ym9vbCBpc19wcmJfcnNwO1xuIFx0dTE2IG1jYmNfZ3NuO1xuK1x0dTggY2JfZmxhZ3M7XG4gXHR1OCBsaW5rX2lkO1xuIFx0aW50IHJldDtcbiBcdHN0cnVjdCBhdGgxMmtfZHAgKnRtcF9kcDtcbkBAIC05OTYsOCArOTk3LDEzIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHQgICAgaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRpc19kdmxhbiA9IHRydWU7XG4gXG4rXHQvKlxuK1x0ICogQWRkIGEgc3RhIHBvaW50ZXIgY2hlY2sgdG8gZGlmZmVyZW50aWF0ZSBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvblxuK1x0ICogb2ZmbG9hZCBwYWNrZXRzLCBhcyB0aGUgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCBmbGFnIGlzIGFsc28gc2V0XG4rXHQgKiBmb3Igc3VjaCBwYWNrZXRzLlxuK1x0ICovXG4gXHRpZiAoIXZpZi1cdTAwM2V2YWxpZF9saW5rcyB8fCAhaXNfbWNhc3QgfHwgaXNfZHZsYW4gfHxcbi1cdCAgICAoc2tiX2NiLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB8fFxuK1x0ICAgICgoc2tiX2NiLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSBcdTAwMjZcdTAwMjYgc3RhKSB8fFxuIFx0ICAgIHRlc3RfYml0KEFUSDEyS19GTEFHX1JBV19NT0RFLCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4gXHRcdHJldCA9IGF0aDEya193aWZpN19kcF90eChkcF9wZGV2LCBhcnZpZiwgYXJzdGEsIHNrYiwgZmFsc2UsIDAsIGlzX21jYXN0KTtcbiBcdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcbkBAIC0xMDA5LDYgKzEwMTUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRtY2JjX2dzbiA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmFodmlmLVx1MDAzZWRwX3ZpZi5tY2JjX2dzbikgXHUwMDI2IDB4ZmZmO1xuIFxuIFx0XHRsaW5rc19tYXAgPSBhaHZpZi1cdTAwM2VsaW5rc19tYXA7XG4rXHRcdGNiX2ZsYWdzID0gc2tiX2NiLVx1MDAzZWZsYWdzO1xuIFx0XHRmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsIFx1MDAyNmxpbmtzX21hcCxcbiBcdFx0XHRcdCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHtcbiBcdFx0XHR0bXBfYXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG5AQCAtMTAxNiwyMSArMTAyMyw0NSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0dG1wX2FyID0gdG1wX2FydmlmLVx1MDAzZWFyO1xuLVx0XHRcdHRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2FyLVx1MDAzZWFiLVx1MDAzZWRwLFxuK1x0XHRcdHRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItXHUwMDNlYWIpO1xuK1x0XHRcdHRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2RwLFxuIFx0XHRcdFx0XHRcdFx0ICAgdG1wX2FyLVx1MDAzZXBkZXZfaWR4KTtcbiBcdFx0XHRpZiAoIXRtcF9kcF9wZGV2KVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0bXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xuLVx0XHRcdGlmICghbXNkdV9jb3BpZWQpIHtcbi1cdFx0XHRcdGF0aDEya19lcnIoYXItXHUwMDNlYWIsXG4tXHRcdFx0XHRcdCAgIFwic2tiIGNvcHkgZmFpbHVyZSBsaW5rX2lkIDB4JVggdmRldmlkIDB4JVhcXG5cIixcbi1cdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuLVx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0fVxuIFxuLVx0XHRcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXG4tXHRcdFx0XHRcdFx0XHRcdG1zZHVfY29waWVkLFxuLVx0XHRcdFx0XHRcdFx0XHRpbmZvX2ZsYWdzKTtcbitcdFx0XHRpZiAoY2JfZmxhZ3MgXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApIHtcbitcdFx0XHRcdC8qXG4rXHRcdFx0XHQgKiBza2ItXHUwMDNlZGF0YSBtYXkgYmUgbW9kaWZpZWQgZm9yIHRoZSBpb3ZhX21hc2sgZGV2aWNlcy5cbitcdFx0XHRcdCAqIEl0IGlzIGJldHRlciB0byB1c2Ugc2tiX2NvcHkoKSBmb3Igc3VjaCBkZXZpY2VzXG4rXHRcdFx0XHQgKiB0byBhdm9pZCBhbnkgcG90ZW50aWFsIHNrYiBjb3JydXB0aW9uIHJlbGF0ZWQgaXNzdWVzLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRpZiAodG1wX2RwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vpb3ZhX21hc2spXG4rXHRcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbitcdFx0XHRcdGVsc2VcbitcdFx0XHRcdFx0LypcbitcdFx0XHRcdFx0ICogYXRoMTJrX3dpZmk3X2RwX3R4KCkgc2hvdWxkIHRyZWF0IGNsb25lZCBIVy1lbmNhcFxuK1x0XHRcdFx0XHQgKiBFdGhlcm5ldCBtdWx0aWNhc3QgZnJhbWVzIGFzIHJlYWQtb25seS5cbitcdFx0XHRcdFx0ICovXG4rXHRcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XG4rXHRcdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4rXHRcdFx0XHRcdGF0aDEya19lcnIoYXItXHUwMDNlYWIsXG4rXHRcdFx0XHRcdFx0ICAgXCJza2IgY29weS9jbG9uZSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwiLFxuK1x0XHRcdFx0XHRcdCAgIGxpbmtfaWQsIHRtcF9hcnZpZi1cdTAwM2V2ZGV2X2lkKTtcbitcdFx0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbitcdFx0XHRcdGlmICghbXNkdV9jb3BpZWQpIHtcbitcdFx0XHRcdFx0YXRoMTJrX2Vycihhci1cdTAwM2VhYixcbitcdFx0XHRcdFx0XHQgICBcInNrYiBjb3B5IGZhaWx1cmUgbGlua19pZCAweCVYIHZkZXZpZCAweCVYXFxuXCIsXG4rXHRcdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRcdH1cbitcbitcdFx0XHRcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXG4rXHRcdFx0XHRcdFx0XHRcdFx0bXNkdV9jb3BpZWQsXG4rXHRcdFx0XHRcdFx0XHRcdFx0aW5mb19mbGFncyk7XG4rXHRcdFx0fVxuIFxuIFx0XHRcdHNrYl9jYiA9IEFUSDEyS19TS0JfQ0IobXNkdV9jb3BpZWQpO1xuIFx0XHRcdHNrYl9jYi1cdTAwM2VsaW5rX2lkID0gbGlua19pZDtcbkBAIC0xMDQ2LDcgKzEwNzcsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdGlmICh1bmxpa2VseSghYWh2aWYtXHUwMDNlZHBfdmlmLmtleV9jaXBoZXIpKVxuIFx0XHRcdFx0Z290byBza2lwX3BlZXJfZmluZDtcbiBcbi1cdFx0XHR0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLVx1MDAzZWFiKTtcbiBcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2dG1wX2RwLVx1MDAzZWRwX2xvY2spO1xuIFx0XHRcdHBlZXIgPSBhdGgxMmtfZHBfbGlua19wZWVyX2ZpbmRfYnlfYWRkcih0bXBfZHAsXG4gXHRcdFx0XHRcdFx0XHRcdHRtcF9hcnZpZi1cdTAwM2Vic3NpZCk7XG5AQCAtMTA2NSwxMSArMTA5NSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0c2tiX2NiLVx1MDAzZWNpcGhlciA9IGtleS1cdTAwM2VjaXBoZXI7XG4gXHRcdFx0XHRza2JfY2ItXHUwMDNlZmxhZ3MgfD0gQVRIMTJLX1NLQl9DSVBIRVJfU0VUO1xuIFxuK1x0XHRcdFx0aWYgKHNrYl9jYi1cdTAwM2VmbGFncyBcdTAwMjYgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUClcbitcdFx0XHRcdFx0Z290byBza2lwX2ZjdGxfcHJvdGVjdGVkX2NoZWNrO1xuK1xuIFx0XHRcdFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopbXNkdV9jb3BpZWQtXHUwMDNlZGF0YTtcbiBcdFx0XHRcdGlmICghaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRcdFx0XHRoZHItXHUwMDNlZnJhbWVfY29udHJvbCB8PVxuIFx0XHRcdFx0XHRcdGNwdV90b19sZTE2KElFRUU4MDIxMV9GQ1RMX1BST1RFQ1RFRCk7XG4gXHRcdFx0fVxuK1xuK3NraXBfZmN0bF9wcm90ZWN0ZWRfY2hlY2s6XG4gXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG1wX2RwLVx1MDAzZWRwX2xvY2spO1xuIFxuIHNraXBfcGVlcl9maW5kOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MjEuNzU0MTY2NTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MDMxMTczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIE11bHRpY2FzdCBFbmNhcHN1bGF0aW9uIE9mZmxvYWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgYXRoMTJrL21hYy5jYCBhbmQgYGF0aDEyay93aWZpNy9ody5jYC4gVGhpcyBpcyBhYm91dCBlbmFibGluZyBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbiBvZmZsb2FkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQncyB0d2Vha2luZyBgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWRgIGFuZCBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAsIHNwZWNpZmljYWxseSBhcm91bmQgc2V0dGluZyBgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1RgLiBSaWdodCwgc3RhbmRhcmQgc3R1ZmYgZm9yIG9mZmxvYWQuXG5cbk5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIHRoZXNlIGtpbmRzIG9mIGRyaXZlciBjaGFuZ2VzLCBpcyByZWFjaGFiaWxpdHkuIENhbiBJICphY3R1YWxseSogdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB0ZXN0aW5nIGVudmlyb25tZW50PyAgYGF0aDEya2AgaXMgUXVhbGNvbW0ncyBXaS1GaSA3IGRyaXZlciwgYSBoYXJkd2FyZSBkcml2ZXIuIFRoYXQgbWFrZXMgdGhpbmdzIGltbWVkaWF0ZWx5IHRyaWNreS4gIENhbiBJIGZ1enogdGhpcyB0aGluZz8gIEhhcmR3YXJlIGRyaXZlcnMgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enogZGlyZWN0bHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiAgVW5sZXNzIHRoZXJlJ3MgYSBzb2Z0d2FyZSBlbXVsYXRvci4uLiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0J3MgZ2VuZXJpYywgbm90IHNwZWNpZmljYWxseSBmb3IgYGF0aDEya2AuXG5cbldhaXQgYSBtaW51dGUsIGRvZXMgc3l6a2FsbGVyIGV2ZW4gc3VwcG9ydCB0aGlzIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IHN5emthbGxlciB1c2VzIGZvciBhdGgxMmsuIE90aGVyd2lzZSwgaWYgaXQncyBqdXN0IGEgcmF3IGhhcmR3YXJlIGRyaXZlciB3aXRob3V0IGFuIGVtdWxhdGlvbiBsYXllciwgdGhpcyBwYXRjaCBtaWdodCBiZSBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHR5cGljYWwgdGVzdCBzZXR1cC4gSXQncyBhIHdhc3RlIG9mIHRpbWUgYW5kIGVmZm9ydCB0byByZXZpZXcuIE5lZWQgdG8gY2hlY2sgaWYgaXQncyBQQ0kgb3IgQUhCLCBvciBzb21lIG90aGVyIGJ1cyBpbnRlcmZhY2UsIGluIHRoZSBhdGgxMmsgY29kZSwgdG8gZGV0ZXJtaW5lIHdoYXQncyBwb3NzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjI4LjMyNDQ4MDEyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTUwNDA4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9Mj1jb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM6XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE1OlxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEyay5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTE3PWNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4OlxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTktXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI1PWNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjY6XFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzctXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM5OlxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NDQ9Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ1OlxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ2LVxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0ODpcXHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NTM9Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NDpcXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVxcdGRlcGVuZHMgb24gQVRIMTJLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1ODpcXHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MjguNzE5NTI4MDI5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2MDc4NjM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFUSDEySyBEcml2ZXIgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYEFUSDEyS2AgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBnb2VzIHRvIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSBpdCdzIGJ1aWx0IG9uIHRvcCBvZiBgTUFDODAyMTFgLCB3aGljaCBpcyBzdGFuZGFyZCwgYW5kIHRoZW4gcmVxdWlyZXMgZWl0aGVyIGBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lgICpvciogYEFUSDEyS19BSEJgLiBUaGF0J3MgYSBrZXkgZGlzdGluY3Rpb24gcmlnaHQgdGhlcmUuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIGNvbnNpZGVyaW5nIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy5cblxuVGhlIG5leHQgcXVlc3Rpb24gdGhhdCBwb3BzIHVwLCBnaXZlbiBJIGtub3cgYSBiaXQgYWJvdXQgdGhlIHNwYWNlIGFuZCB0aGUgcG90ZW50aWFsIGNoYWxsZW5nZXMgb2YgaGFyZHdhcmUgc3VwcG9ydCwgaXMgd2hldGhlciB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW50ZXJmYWNlIGZvciBgYXRoMTJrYC4gSXQncyBhbHdheXMgdXNlZnVsIHRvIGtub3cgaWYgSSBjYW4gdGVzdCBvciBzaW11bGF0ZSB0aGUgZnVuY3Rpb25hbGl0eSB3aXRob3V0IG5lZWRpbmcgdGhlICpleGFjdCogaGFyZHdhcmUuIFRoaXMgaGVscHMgd2l0aCBkZWJ1Z2dpbmcgYW5kIGRldmVsb3BtZW50IGlmIEkgY2FuIHRlc3QgdGhpbmdzIHdpdGhvdXQgYSBwaHlzaWNhbCBzZXR1cC4gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSBmb3IgYW55IGhpbnRzIG9mIHRoYXQuIElzIHRoZXJlIGEgdmlydHVhbCBkZXZpY2UgbW9kZWwgaW4gdGhlIGtlcm5lbCwgb3Igc29tZSBzb3J0IG9mIHVzZXJzcGFjZSBlbXVsYXRpb24gdGhhdCdzIGJlZW4gcHV0IHRvZ2V0aGVyPyBMZXQgbWUgZGl2ZSBpbiBhbmQgc2VlIHdoYXQncyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjMzLjE4MDMxNzUwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjEwNjQ0MDIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0MzozMy41MDEzOTIyMjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTE5NTg5NDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQXRoMTJrOiBBIFZpcnR1YWxpemF0aW9uIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gaHdzaW0gZm9yIGF0aDEyay4gVGhhdCdzIGEgcHJvYmxlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyAqYW55KiBvdGhlciB2aWFibGUgcGF0aCBmb3IgZnV6emluZyB0aGlzIGRyaXZlci4gSSB1c3VhbGx5IGxvb2sgdG8gUENJIGRldmljZXMsIGFuZCBpZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgdGhhdCBjYW4gYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQsIGF0aDEyayBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcjsgaXQncyBub3Qgc29tZSBnZW5lcmljLCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gV2FpdCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIGJ1dCBpdCdzIHZlcnkgbGltaXRlZCwgYW5kIGZyYW5rbHksIHdlIHVzdWFsbHkgZG9uJ3QgYm90aGVyIGZ1enppbmcgZHJpdmVycyBmb3IgKnNwZWNpZmljKiBoYXJkd2FyZS4gV2UgdGVuZCB0byBmb2N1cyBvbiBnZW5lcmljIHN1YnN5c3RlbXMgb3IgdGhvc2Ugd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgdmhjaSwgbWFjODAyMTFfaHdzaW0sIG9yIG5ldGRldnNpbS5cblxuSG9sZCBvbiwgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gUmlnaHQsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgYWZmZWN0cyBjb2RlIHRoYXQncyBpbXBvc3NpYmxlIHRvIGhpdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhhdCdzIGtleS4gQW5kIEkga25vdyB0aGF0IGF0aDEyayBpcyBhIHNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIG1hYzgwMjExX2h3c2ltLCB3aGljaCBlbXVsYXRlcyAqZ2VuZXJpYyogbWFjODAyMTEgaGFyZHdhcmUg4oCTIG5vdCBhdGgxMmsgc3BlY2lmaWNhbGx5LiBUaGVyZWZvcmUsIGFueSBuZXcgY29kZSB3b3VsZCBiZSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgcmVzb3VyY2VzIG9uZSBsYXN0IHRpbWUuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgaGlkZGVuIGVtdWxhdGlvbiBvZiBhdGgxMmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MzkuNDIwOTg0NzAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzg0NDQ3OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUUVNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MzkuNTI0ODM1MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg4MTE1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgZm9yIEZ1enppbmcgYW5kIEVtdWxhdGlvbiB3aXRoaW4gYXRoMTJrKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgb2YgdGhlIGF0aDEyayBkcml2ZXIuIE15IHByaW1hcnkgaW50ZXJlc3QgcmlnaHQgbm93IHJldm9sdmVzIGFyb3VuZCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBmdXp6aW5nIGFuZC9vciBlbXVsYXRpb24gdGVjaG5pcXVlcyBiZWluZyB1dGlsaXplZCB3aXRoaW4gaXRzIGRldmVsb3BtZW50LCB0ZXN0aW5nLCBvciBzZWN1cml0eSBhbmFseXNpcy4gSSBuZWVkIHRvIHF1aWNrbHkgZmluZCBvdXQgaWYgYW55b25lIGlzIHNwZWNpZmljYWxseSB1c2luZyBmdXp6aW5nIHRvIGZpbmQgYnVncywgb3IgZW11bGF0aW9uIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcgYW5kIGFuYWx5c2lzIG9mIGl0cyBiZWhhdmlvdXIuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UgZGlyZWN0bHkgZm9yIG1lbnRpb25zLCBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uLCBtYXliZSBldmVuIGRpc2N1c3Npb25zIG9uIG1haWxpbmcgbGlzdHMgaWYgSSBjYW4gZmluZCB0aGVtLiBUaGUgZ29hbCBpcyB0byBzZWUgaG93IHJvYnVzdCB0aGUgZGVzaWduIGlzLCBhbmQgaG93IGNhcmVmdWxseSB0aGV5IGFyZSBjaGVja2luZyB0aGVpciB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzY1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6NDIuNjEyOTUzODc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDIwODU3NDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjQzLjAxNTA0OTAxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTAzODQ4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBgYXRoMTJrYCBkcml2ZXIuIFRoYXQgY2xpY2tzIOKAkyB0aGF0J3MgYSAqaGFyZHdhcmUtc3BlY2lmaWMqIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGZvciBRdWFsY29tbSdzIFdpLUZpIDcgc2lsaWNvbi4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoZXJlJ3Mgbm8gcmVhbGlzdGljIHdheSB0byBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgcHJvcGVybHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggdG91Y2hlcyBzaW1wbHkgd29uJ3QgYmUgZXhlcmNpc2VkIGJ5IGFueSBmdXp6aW5nIEknZCB0aHJvdyBhdCBpdC5cblxuVGhlcmVmb3JlLCBmcm9tIGEgcHJhY3RpY2FsIHN0YW5kcG9pbnQsIHRoaXMgcGF0Y2gncyBmdXp6aW5nIHdvcnRoaW5lc3MgaXMgZXNzZW50aWFsbHkgemVyby4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBwb2ludCBpbiB3YXN0aW5nIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgdW5kZXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTksIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0Mzo0Ny4wMDU0MzcxMjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowjll6v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 10:35:16 +0000 UTC FinishedAt: 2026-06-23 10:43:48 +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+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1Y2EzZmU5ZjJmM2ZmYTIxOTI4ZWU4Nzk4NDMyNjRiODAzOTI1YjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0MzoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggYWYzNTRiZWY1YzBkNzkuLjI2YjQ2YTQwNDU4MDg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTEwMTE3LDcgJiM0MzsxMDExNyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdXBkYXRlX3ZpZl9vZmZsb2FkKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxuIFx0aWYgKHZpZi1cdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXHUwMDI2XHUwMDI2XG4gXHQgICAgdmlmLVx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVApXG4gXHRcdHZpZi1cdTAwM2VvZmZsb2FkX2ZsYWdzIFx1MDAyNj0gfihJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEIHxcbi1cdFx0XHRcdFx0SUVFRTgwMjExX09GRkxPQURfREVDQVBfRU5BQkxFRCk7XG4mIzQzO1x0XHRcdFx0XHRJRUVFODAyMTFfT0ZGTE9BRF9ERUNBUF9FTkFCTEVEIHxcbiYjNDM7XHRcdFx0XHRcdElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX01DQVNUKTtcbiBcbiBcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCkge1xuIFx0XHRhaHZpZi1cdTAwM2VkcF92aWYudHhfZW5jYXBfdHlwZSA9IEFUSDEyS19IV19UWFJYX0VUSEVSTkVUO1xuQEAgLTEwMTM2LDYgJiM0MzsxMDEzNyw5IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdXBkYXRlX3ZpZl9vZmZsb2FkKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxuIFx0XHR2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjY9IH5JRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEO1xuIFx0fVxuIFxuJiM0MztcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRClcbiYjNDM7XHRcdHZpZi1cdTAwM2VvZmZsb2FkX2ZsYWdzIHw9IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX01DQVNUO1xuJiM0MztcbiBcdHBhcmFtX2lkID0gV01JX1ZERVZfUEFSQU1fUlhfREVDQVBfVFlQRTtcbiBcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfREVDQVBfRU5BQkxFRClcbiBcdFx0cGFyYW1fdmFsdWUgPSBBVEgxMktfSFdfVFhSWF9FVEhFUk5FVDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IDNkNTlmYTQ1MmVjMDNkLi5lNWJmOWQyMTgxMDQwZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtOTAzLDYgJiM0Mzs5MDMsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0c3RydWN0IGV0aGhkciAqZXRoO1xuIFx0Ym9vbCBpc19wcmJfcnNwO1xuIFx0dTE2IG1jYmNfZ3NuO1xuJiM0MztcdHU4IGNiX2ZsYWdzO1xuIFx0dTggbGlua19pZDtcbiBcdGludCByZXQ7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwICp0bXBfZHA7XG5AQCAtOTk2LDggJiM0Mzs5OTcsMTMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdCAgICBpZWVlODAyMTFfaGFzX3Byb3RlY3RlZChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gXHRcdGlzX2R2bGFuID0gdHJ1ZTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEFkZCBhIHN0YSBwb2ludGVyIGNoZWNrIHRvIGRpZmZlcmVudGlhdGUgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb25cbiYjNDM7XHQgKiBvZmZsb2FkIHBhY2tldHMsIGFzIHRoZSBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQIGZsYWcgaXMgYWxzbyBzZXRcbiYjNDM7XHQgKiBmb3Igc3VjaCBwYWNrZXRzLlxuJiM0MztcdCAqL1xuIFx0aWYgKCF2aWYtXHUwMDNldmFsaWRfbGlua3MgfHwgIWlzX21jYXN0IHx8IGlzX2R2bGFuIHx8XG4tXHQgICAgKHNrYl9jYi1cdTAwM2VmbGFncyBcdTAwMjYgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCkgfHxcbiYjNDM7XHQgICAgKChza2JfY2ItXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApIFx1MDAyNlx1MDAyNiBzdGEpIHx8XG4gXHQgICAgdGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkFXX01PREUsIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpIHtcbiBcdFx0cmV0ID0gYXRoMTJrX3dpZmk3X2RwX3R4KGRwX3BkZXYsIGFydmlmLCBhcnN0YSwgc2tiLCBmYWxzZSwgMCwgaXNfbWNhc3QpO1xuIFx0XHRpZiAodW5saWtlbHkocmV0KSkge1xuQEAgLTEwMDksNiAmIzQzOzEwMTUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRtY2JjX2dzbiA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmFodmlmLVx1MDAzZWRwX3ZpZi5tY2JjX2dzbikgXHUwMDI2IDB4ZmZmO1xuIFxuIFx0XHRsaW5rc19tYXAgPSBhaHZpZi1cdTAwM2VsaW5rc19tYXA7XG4mIzQzO1x0XHRjYl9mbGFncyA9IHNrYl9jYi1cdTAwM2VmbGFncztcbiBcdFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rX2lkLCBcdTAwMjZsaW5rc19tYXAsXG4gXHRcdFx0XHQgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKSB7XG4gXHRcdFx0dG1wX2FydmlmID0gcmN1X2RlcmVmZXJlbmNlKGFodmlmLVx1MDAzZWxpbmtbbGlua19pZF0pO1xuQEAgLTEwMTYsMjEgJiM0MzsxMDIzLDQ1IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHR0bXBfYXIgPSB0bXBfYXJ2aWYtXHUwMDNlYXI7XG4tXHRcdFx0dG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfYXItXHUwMDNlYWItXHUwMDNlZHAsXG4mIzQzO1x0XHRcdHRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItXHUwMDNlYWIpO1xuJiM0MztcdFx0XHR0bXBfZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHRtcF9kcCxcbiBcdFx0XHRcdFx0XHRcdCAgIHRtcF9hci1cdTAwM2VwZGV2X2lkeCk7XG4gXHRcdFx0aWYgKCF0bXBfZHBfcGRldilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbi1cdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4tXHRcdFx0XHRhdGgxMmtfZXJyKGFyLVx1MDAzZWFiLFxuLVx0XHRcdFx0XHQgICBcJiMzNDtza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuLVx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0fVxuIFxuLVx0XHRcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXG4tXHRcdFx0XHRcdFx0XHRcdG1zZHVfY29waWVkLFxuLVx0XHRcdFx0XHRcdFx0XHRpbmZvX2ZsYWdzKTtcbiYjNDM7XHRcdFx0aWYgKGNiX2ZsYWdzIFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBza2ItXHUwMDNlZGF0YSBtYXkgYmUgbW9kaWZpZWQgZm9yIHRoZSBpb3ZhX21hc2sgZGV2aWNlcy5cbiYjNDM7XHRcdFx0XHQgKiBJdCBpcyBiZXR0ZXIgdG8gdXNlIHNrYl9jb3B5KCkgZm9yIHN1Y2ggZGV2aWNlc1xuJiM0MztcdFx0XHRcdCAqIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgc2tiIGNvcnJ1cHRpb24gcmVsYXRlZCBpc3N1ZXMuXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0aWYgKHRtcF9kcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaW92YV9tYXNrKVxuJiM0MztcdFx0XHRcdFx0bXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdC8qXG4mIzQzO1x0XHRcdFx0XHQgKiBhdGgxMmtfd2lmaTdfZHBfdHgoKSBzaG91bGQgdHJlYXQgY2xvbmVkIEhXLWVuY2FwXG4mIzQzO1x0XHRcdFx0XHQgKiBFdGhlcm5ldCBtdWx0aWNhc3QgZnJhbWVzIGFzIHJlYWQtb25seS5cbiYjNDM7XHRcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdFx0bXNkdV9jb3BpZWQgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRcdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4mIzQzO1x0XHRcdFx0XHRhdGgxMmtfZXJyKGFyLVx1MDAzZWFiLFxuJiM0MztcdFx0XHRcdFx0XHQgICBcJiMzNDtza2IgY29weS9jbG9uZSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRcdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4mIzQzO1x0XHRcdFx0XHRhdGgxMmtfZXJyKGFyLVx1MDAzZWFiLFxuJiM0MztcdFx0XHRcdFx0XHQgICBcJiMzNDtza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHRhdGgxMmtfbWxvX21jYXN0X3VwZGF0ZV90eF9saW5rX2FkZHJlc3ModmlmLCBsaW5rX2lkLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRtc2R1X2NvcGllZCxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0aW5mb19mbGFncyk7XG4mIzQzO1x0XHRcdH1cbiBcbiBcdFx0XHRza2JfY2IgPSBBVEgxMktfU0tCX0NCKG1zZHVfY29waWVkKTtcbiBcdFx0XHRza2JfY2ItXHUwMDNlbGlua19pZCA9IGxpbmtfaWQ7XG5AQCAtMTA0Niw3ICYjNDM7MTA3Nyw2IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0aWYgKHVubGlrZWx5KCFhaHZpZi1cdTAwM2VkcF92aWYua2V5X2NpcGhlcikpXG4gXHRcdFx0XHRnb3RvIHNraXBfcGVlcl9maW5kO1xuIFxuLVx0XHRcdHRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItXHUwMDNlYWIpO1xuIFx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0bXBfZHAtXHUwMDNlZHBfbG9jayk7XG4gXHRcdFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV9hZGRyKHRtcF9kcCxcbiBcdFx0XHRcdFx0XHRcdFx0dG1wX2FydmlmLVx1MDAzZWJzc2lkKTtcbkBAIC0xMDY1LDExICYjNDM7MTA5NSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0c2tiX2NiLVx1MDAzZWNpcGhlciA9IGtleS1cdTAwM2VjaXBoZXI7XG4gXHRcdFx0XHRza2JfY2ItXHUwMDNlZmxhZ3MgfD0gQVRIMTJLX1NLQl9DSVBIRVJfU0VUO1xuIFxuJiM0MztcdFx0XHRcdGlmIChza2JfY2ItXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApXG4mIzQzO1x0XHRcdFx0XHRnb3RvIHNraXBfZmN0bF9wcm90ZWN0ZWRfY2hlY2s7XG4mIzQzO1xuIFx0XHRcdFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopbXNkdV9jb3BpZWQtXHUwMDNlZGF0YTtcbiBcdFx0XHRcdGlmICghaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRcdFx0XHRoZHItXHUwMDNlZnJhbWVfY29udHJvbCB8PVxuIFx0XHRcdFx0XHRcdGNwdV90b19sZTE2KElFRUU4MDIxMV9GQ1RMX1BST1RFQ1RFRCk7XG4gXHRcdFx0fVxuJiM0MztcbiYjNDM7c2tpcF9mY3RsX3Byb3RlY3RlZF9jaGVjazpcbiBcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0bXBfZHAtXHUwMDNlZHBfbG9jayk7XG4gXG4gc2tpcF9wZWVyX2ZpbmQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NWNhM2ZlOWYyZjNmZmEyMTkyOGVlODc5ODQzMjY0YjgwMzkyNWI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMTA6NDM6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwppbmRleCBhZjM1NGJlZjVjMGQ3OS4uMjZiNDZhNDA0NTgwODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwpAQCAtMTAxMTcsNyAmIzQzOzEwMTE3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWQoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYpCiAJaWYgKHZpZi0mZ3Q7dHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OICZhbXA7JmFtcDsKIAkgICAgdmlmLSZndDt0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKQogCQl2aWYtJmd0O29mZmxvYWRfZmxhZ3MgJmFtcDs9IH4oSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCB8Ci0JCQkJCUlFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpOwomIzQzOwkJCQkJSUVFRTgwMjExX09GRkxPQURfREVDQVBfRU5BQkxFRCB8CiYjNDM7CQkJCQlJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9NQ0FTVCk7CiAKIAlpZiAodmlmLSZndDtvZmZsb2FkX2ZsYWdzICZhbXA7IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX0VOQUJMRUQpIHsKIAkJYWh2aWYtJmd0O2RwX3ZpZi50eF9lbmNhcF90eXBlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7CkBAIC0xMDEzNiw2ICYjNDM7MTAxMzcsOSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3VwZGF0ZV92aWZfb2ZmbG9hZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZikKIAkJdmlmLSZndDtvZmZsb2FkX2ZsYWdzICZhbXA7PSB+SUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRDsKIAl9CiAKJiM0MzsJaWYgKHZpZi0mZ3Q7b2ZmbG9hZF9mbGFncyAmYW1wOyBJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEKQomIzQzOwkJdmlmLSZndDtvZmZsb2FkX2ZsYWdzIHw9IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX01DQVNUOwomIzQzOwogCXBhcmFtX2lkID0gV01JX1ZERVZfUEFSQU1fUlhfREVDQVBfVFlQRTsKIAlpZiAodmlmLSZndDtvZmZsb2FkX2ZsYWdzICZhbXA7IElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpCiAJCXBhcmFtX3ZhbHVlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKaW5kZXggM2Q1OWZhNDUyZWMwM2QuLmU1YmY5ZDIxODEwNDBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCkBAIC05MDMsNiAmIzQzOzkwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJc3RydWN0IGV0aGhkciAqZXRoOwogCWJvb2wgaXNfcHJiX3JzcDsKIAl1MTYgbWNiY19nc247CiYjNDM7CXU4IGNiX2ZsYWdzOwogCXU4IGxpbmtfaWQ7CiAJaW50IHJldDsKIAlzdHJ1Y3QgYXRoMTJrX2RwICp0bXBfZHA7CkBAIC05OTYsOCAmIzQzOzk5NywxMyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCSAgICBpZWVlODAyMTFfaGFzX3Byb3RlY3RlZChoZHItJmd0O2ZyYW1lX2NvbnRyb2wpKQogCQlpc19kdmxhbiA9IHRydWU7CiAKJiM0MzsJLyoKJiM0MzsJICogQWRkIGEgc3RhIHBvaW50ZXIgY2hlY2sgdG8gZGlmZmVyZW50aWF0ZSBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbgomIzQzOwkgKiBvZmZsb2FkIHBhY2tldHMsIGFzIHRoZSBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQIGZsYWcgaXMgYWxzbyBzZXQKJiM0MzsJICogZm9yIHN1Y2ggcGFja2V0cy4KJiM0MzsJICovCiAJaWYgKCF2aWYtJmd0O3ZhbGlkX2xpbmtzIHx8ICFpc19tY2FzdCB8fCBpc19kdmxhbiB8fAotCSAgICAoc2tiX2NiLSZndDtmbGFncyAmYW1wOyBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB8fAomIzQzOwkgICAgKChza2JfY2ItJmd0O2ZsYWdzICZhbXA7IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApICZhbXA7JmFtcDsgc3RhKSB8fAogCSAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SQVdfTU9ERSwgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpIHsKIAkJcmV0ID0gYXRoMTJrX3dpZmk3X2RwX3R4KGRwX3BkZXYsIGFydmlmLCBhcnN0YSwgc2tiLCBmYWxzZSwgMCwgaXNfbWNhc3QpOwogCQlpZiAodW5saWtlbHkocmV0KSkgewpAQCAtMTAwOSw2ICYjNDM7MTAxNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCW1jYmNfZ3NuID0gYXRvbWljX2luY19yZXR1cm4oJmFtcDthaHZpZi0mZ3Q7ZHBfdmlmLm1jYmNfZ3NuKSAmYW1wOyAweGZmZjsKIAogCQlsaW5rc19tYXAgPSBhaHZpZi0mZ3Q7bGlua3NfbWFwOwomIzQzOwkJY2JfZmxhZ3MgPSBza2JfY2ItJmd0O2ZsYWdzOwogCQlmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsICZhbXA7bGlua3NfbWFwLAogCQkJCSBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHsKIAkJCXRtcF9hcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi0mZ3Q7bGlua1tsaW5rX2lkXSk7CkBAIC0xMDE2LDIxICYjNDM7MTAyMyw0NSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCWNvbnRpbnVlOwogCiAJCQl0bXBfYXIgPSB0bXBfYXJ2aWYtJmd0O2FyOwotCQkJdG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfYXItJmd0O2FiLSZndDtkcCwKJiM0MzsJCQl0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLSZndDthYik7CiYjNDM7CQkJdG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfZHAsCiAJCQkJCQkJICAgdG1wX2FyLSZndDtwZGV2X2lkeCk7CiAJCQlpZiAoIXRtcF9kcF9wZGV2KQogCQkJCWNvbnRpbnVlOwotCQkJbXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpOwotCQkJaWYgKCFtc2R1X2NvcGllZCkgewotCQkJCWF0aDEya19lcnIoYXItJmd0O2FiLAotCQkJCQkgICAmIzM0O3NrYiBjb3B5IGZhaWx1cmUgbGlua19pZCAweCVYIHZkZXZpZCAweCVYXG4mIzM0OywKLQkJCQkJICAgbGlua19pZCwgdG1wX2FydmlmLSZndDt2ZGV2X2lkKTsKLQkJCQljb250aW51ZTsKLQkJCX0KIAotCQkJYXRoMTJrX21sb19tY2FzdF91cGRhdGVfdHhfbGlua19hZGRyZXNzKHZpZiwgbGlua19pZCwKLQkJCQkJCQkJbXNkdV9jb3BpZWQsCi0JCQkJCQkJCWluZm9fZmxhZ3MpOwomIzQzOwkJCWlmIChjYl9mbGFncyAmYW1wOyBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB7CiYjNDM7CQkJCS8qCiYjNDM7CQkJCSAqIHNrYi0mZ3Q7ZGF0YSBtYXkgYmUgbW9kaWZpZWQgZm9yIHRoZSBpb3ZhX21hc2sgZGV2aWNlcy4KJiM0MzsJCQkJICogSXQgaXMgYmV0dGVyIHRvIHVzZSBza2JfY29weSgpIGZvciBzdWNoIGRldmljZXMKJiM0MzsJCQkJICogdG8gYXZvaWQgYW55IHBvdGVudGlhbCBza2IgY29ycnVwdGlvbiByZWxhdGVkIGlzc3Vlcy4KJiM0MzsJCQkJICovCiYjNDM7CQkJCWlmICh0bXBfZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aW92YV9tYXNrKQomIzQzOwkJCQkJbXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpOwomIzQzOwkJCQllbHNlCiYjNDM7CQkJCQkvKgomIzQzOwkJCQkJICogYXRoMTJrX3dpZmk3X2RwX3R4KCkgc2hvdWxkIHRyZWF0IGNsb25lZCBIVy1lbmNhcAomIzQzOwkJCQkJICogRXRoZXJuZXQgbXVsdGljYXN0IGZyYW1lcyBhcyByZWFkLW9ubHkuCiYjNDM7CQkJCQkgKi8KJiM0MzsJCQkJCW1zZHVfY29waWVkID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7CiYjNDM7CQkJCWlmICghbXNkdV9jb3BpZWQpIHsKJiM0MzsJCQkJCWF0aDEya19lcnIoYXItJmd0O2FiLAomIzQzOwkJCQkJCSAgICYjMzQ7c2tiIGNvcHkvY2xvbmUgZmFpbHVyZSBsaW5rX2lkIDB4JVggdmRldmlkIDB4JVhcbiYjMzQ7LAomIzQzOwkJCQkJCSAgIGxpbmtfaWQsIHRtcF9hcnZpZi0mZ3Q7dmRldl9pZCk7CiYjNDM7CQkJCQljb250aW51ZTsKJiM0MzsJCQkJfQomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCW1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJaWYgKCFtc2R1X2NvcGllZCkgewomIzQzOwkJCQkJYXRoMTJrX2Vycihhci0mZ3Q7YWIsCiYjNDM7CQkJCQkJICAgJiMzNDtza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxuJiMzNDssCiYjNDM7CQkJCQkJICAgbGlua19pZCwgdG1wX2FydmlmLSZndDt2ZGV2X2lkKTsKJiM0MzsJCQkJCWNvbnRpbnVlOwomIzQzOwkJCQl9CiYjNDM7CiYjNDM7CQkJCWF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsCiYjNDM7CQkJCQkJCQkJbXNkdV9jb3BpZWQsCiYjNDM7CQkJCQkJCQkJaW5mb19mbGFncyk7CiYjNDM7CQkJfQogCiAJCQlza2JfY2IgPSBBVEgxMktfU0tCX0NCKG1zZHVfY29waWVkKTsKIAkJCXNrYl9jYi0mZ3Q7bGlua19pZCA9IGxpbmtfaWQ7CkBAIC0xMDQ2LDcgJiM0MzsxMDc3LDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCWlmICh1bmxpa2VseSghYWh2aWYtJmd0O2RwX3ZpZi5rZXlfY2lwaGVyKSkKIAkJCQlnb3RvIHNraXBfcGVlcl9maW5kOwogCi0JCQl0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLSZndDthYik7CiAJCQlzcGluX2xvY2tfYmgoJmFtcDt0bXBfZHAtJmd0O2RwX2xvY2spOwogCQkJcGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV9hZGRyKHRtcF9kcCwKIAkJCQkJCQkJdG1wX2FydmlmLSZndDtic3NpZCk7CkBAIC0xMDY1LDExICYjNDM7MTA5NSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCXNrYl9jYi0mZ3Q7Y2lwaGVyID0ga2V5LSZndDtjaXBoZXI7CiAJCQkJc2tiX2NiLSZndDtmbGFncyB8PSBBVEgxMktfU0tCX0NJUEhFUl9TRVQ7CiAKJiM0MzsJCQkJaWYgKHNrYl9jYi0mZ3Q7ZmxhZ3MgJmFtcDsgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCkKJiM0MzsJCQkJCWdvdG8gc2tpcF9mY3RsX3Byb3RlY3RlZF9jaGVjazsKJiM0MzsKIAkJCQloZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKiltc2R1X2NvcGllZC0mZ3Q7ZGF0YTsKIAkJCQlpZiAoIWllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhkci0mZ3Q7ZnJhbWVfY29udHJvbCkpCiAJCQkJCWhkci0mZ3Q7ZnJhbWVfY29udHJvbCB8PQogCQkJCQkJY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTsKIAkJCX0KJiM0MzsKJiM0Mztza2lwX2ZjdGxfcHJvdGVjdGVkX2NoZWNrOgogCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0bXBfZHAtJmd0O2RwX2xvY2spOwogCiBza2lwX3BlZXJfZmluZDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIE11bHRpY2FzdCBFbmNhcHN1bGF0aW9uIE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBhdGgxMmsvbWFjLmNgIGFuZCBgYXRoMTJrL3dpZmk3L2h3LmNgLiBUaGlzIGlzIGFib3V0IGVuYWJsaW5nIG11bHRpY2FzdCBlbmNhcHN1bGF0aW9uIG9mZmxvYWQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyB0d2Vha2luZyBgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWRgIGFuZCBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAsIHNwZWNpZmljYWxseSBhcm91bmQgc2V0dGluZyBgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1RgLiBSaWdodCwgc3RhbmRhcmQgc3R1ZmYgZm9yIG9mZmxvYWQuCgpOb3csIG15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCB0aGVzZSBraW5kcyBvZiBkcml2ZXIgY2hhbmdlcywgaXMgcmVhY2hhYmlsaXR5LiBDYW4gSSAqYWN0dWFsbHkqIHRyaWdnZXIgdGhpcyBjb2RlIGluIGEgdGVzdGluZyBlbnZpcm9ubWVudD8gIGBhdGgxMmtgIGlzIFF1YWxjb21tJiMzOTtzIFdpLUZpIDcgZHJpdmVyLCBhIGhhcmR3YXJlIGRyaXZlci4gVGhhdCBtYWtlcyB0aGluZ3MgaW1tZWRpYXRlbHkgdHJpY2t5LiAgQ2FuIEkgZnV6eiB0aGlzIHRoaW5nPyAgSGFyZHdhcmUgZHJpdmVycyBhcmUgdXN1YWxseSBhIHBhaW4gdG8gZnV6eiBkaXJlY3RseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuICBVbmxlc3MgdGhlcmUmIzM5O3MgYSBzb2Z0d2FyZSBlbXVsYXRvci4uLiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0JiMzOTtzIGdlbmVyaWMsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGBhdGgxMmtgLgoKV2FpdCBhIG1pbnV0ZSwgZG9lcyBzeXprYWxsZXIgZXZlbiBzdXBwb3J0IHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgc3l6a2FsbGVyIHVzZXMgZm9yIGF0aDEyay4gT3RoZXJ3aXNlLCBpZiBpdCYjMzk7cyBqdXN0IGEgcmF3IGhhcmR3YXJlIGRyaXZlciB3aXRob3V0IGFuIGVtdWxhdGlvbiBsYXllciwgdGhpcyBwYXRjaCBtaWdodCBiZSBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHR5cGljYWwgdGVzdCBzZXR1cC4gSXQmIzM5O3MgYSB3YXN0ZSBvZiB0aW1lIGFuZCBlZmZvcnQgdG8gcmV2aWV3LiBOZWVkIHRvIGNoZWNrIGlmIGl0JiMzOTtzIFBDSSBvciBBSEIsIG9yIHNvbWUgb3RoZXIgYnVzIGludGVyZmFjZSwgaW4gdGhlIGF0aDEyayBjb2RlLCB0byBkZXRlcm1pbmUgd2hhdCYjMzk7cyBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI9Y29uZmlnIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM6XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE1Olx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIGF0aDEyay5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0xNz1jb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4Olx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOS1cdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBSRU1PVEVQUk9DXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI1PWNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNjpcdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI3LVx0ZGVwZW5kcyBvbiBBVEgxMktcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MzU9Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzgtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzk6XHQgIEVuYWJsZSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTQ0PWNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ1Olx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ3LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ4Olx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTUzPWNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NDpcdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTUtXHRkZXBlbmRzIG9uIEFUSDEyS1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Ny1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1ODpcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVRIMTJLIERyaXZlciBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBBVEgxMktgIGRyaXZlciwgYW5kIGltbWVkaWF0ZWx5IG15IG1pbmQgZ29lcyB0byBkZXBlbmRlbmNpZXMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYnVpbHQgb24gdG9wIG9mIGBNQUM4MDIxMWAsIHdoaWNoIGlzIHN0YW5kYXJkLCBhbmQgdGhlbiByZXF1aXJlcyBlaXRoZXIgYEhBU19ETUEgJmFtcDsmYW1wOyBQQ0lgICpvciogYEFUSDEyS19BSEJgLiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uIHJpZ2h0IHRoZXJlLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiBjb25zaWRlcmluZyBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuCgpUaGUgbmV4dCBxdWVzdGlvbiB0aGF0IHBvcHMgdXAsIGdpdmVuIEkga25vdyBhIGJpdCBhYm91dCB0aGUgc3BhY2UgYW5kIHRoZSBwb3RlbnRpYWwgY2hhbGxlbmdlcyBvZiBoYXJkd2FyZSBzdXBwb3J0LCBpcyB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW50ZXJmYWNlIGZvciBgYXRoMTJrYC4gSXQmIzM5O3MgYWx3YXlzIHVzZWZ1bCB0byBrbm93IGlmIEkgY2FuIHRlc3Qgb3Igc2ltdWxhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBuZWVkaW5nIHRoZSAqZXhhY3QqIGhhcmR3YXJlLiBUaGlzIGhlbHBzIHdpdGggZGVidWdnaW5nIGFuZCBkZXZlbG9wbWVudCBpZiBJIGNhbiB0ZXN0IHRoaW5ncyB3aXRob3V0IGEgcGh5c2ljYWwgc2V0dXAuIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UgZm9yIGFueSBoaW50cyBvZiB0aGF0LiBJcyB0aGVyZSBhIHZpcnR1YWwgZGV2aWNlIG1vZGVsIGluIHRoZSBrZXJuZWwsIG9yIHNvbWUgc29ydCBvZiB1c2Vyc3BhY2UgZW11bGF0aW9uIHRoYXQmIzM5O3MgYmVlbiBwdXQgdG9nZXRoZXI/IExldCBtZSBkaXZlIGluIGFuZCBzZWUgd2hhdCYjMzk7cyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBdGgxMms6IEEgVmlydHVhbGl6YXRpb24gQ29udW5kcnVtKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGh3c2ltIGZvciBhdGgxMmsuIFRoYXQmIzM5O3MgYSBwcm9ibGVtLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyAqYW55KiBvdGhlciB2aWFibGUgcGF0aCBmb3IgZnV6emluZyB0aGlzIGRyaXZlci4gSSB1c3VhbGx5IGxvb2sgdG8gUENJIGRldmljZXMsIGFuZCBpZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgdGhhdCBjYW4gYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQsIGF0aDEyayBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcjsgaXQmIzM5O3Mgbm90IHNvbWUgZ2VuZXJpYywgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFdhaXQsIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgaXQmIzM5O3MgdmVyeSBsaW1pdGVkLCBhbmQgZnJhbmtseSwgd2UgdXN1YWxseSBkb24mIzM5O3QgYm90aGVyIGZ1enppbmcgZHJpdmVycyBmb3IgKnNwZWNpZmljKiBoYXJkd2FyZS4gV2UgdGVuZCB0byBmb2N1cyBvbiBnZW5lcmljIHN1YnN5c3RlbXMgb3IgdGhvc2Ugd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgdmhjaSwgbWFjODAyMTFfaHdzaW0sIG9yIG5ldGRldnNpbS4KCkhvbGQgb24sIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgaW5zdHJ1Y3Rpb25zIGFnYWluLiBJIHJlbWVtYmVyIHNvbWV0aGluZyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGFmZmVjdHMgY29kZSB0aGF0JiMzOTtzIGltcG9zc2libGUgdG8gaGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0JiMzOTtzIGtleS4gQW5kIEkga25vdyB0aGF0IGF0aDEyayBpcyBhIHNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBtYWM4MDIxMV9od3NpbSwgd2hpY2ggZW11bGF0ZXMgKmdlbmVyaWMqIG1hYzgwMjExIGhhcmR3YXJlIOKAkyBub3QgYXRoMTJrIHNwZWNpZmljYWxseS4gVGhlcmVmb3JlLCBhbnkgbmV3IGNvZGUgd291bGQgYmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgcmVzb3VyY2VzIG9uZSBsYXN0IHRpbWUuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGhpZGRlbiBlbXVsYXRpb24gb2YgYXRoMTJrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UUVNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzY1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGZvciBGdXp6aW5nIGFuZCBFbXVsYXRpb24gd2l0aGluIGF0aDEyayoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgb2YgdGhlIGF0aDEyayBkcml2ZXIuIE15IHByaW1hcnkgaW50ZXJlc3QgcmlnaHQgbm93IHJldm9sdmVzIGFyb3VuZCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBmdXp6aW5nIGFuZC9vciBlbXVsYXRpb24gdGVjaG5pcXVlcyBiZWluZyB1dGlsaXplZCB3aXRoaW4gaXRzIGRldmVsb3BtZW50LCB0ZXN0aW5nLCBvciBzZWN1cml0eSBhbmFseXNpcy4gSSBuZWVkIHRvIHF1aWNrbHkgZmluZCBvdXQgaWYgYW55b25lIGlzIHNwZWNpZmljYWxseSB1c2luZyBmdXp6aW5nIHRvIGZpbmQgYnVncywgb3IgZW11bGF0aW9uIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcgYW5kIGFuYWx5c2lzIG9mIGl0cyBiZWhhdmlvdXIuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlIGRpcmVjdGx5IGZvciBtZW50aW9ucywgYW55IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiwgbWF5YmUgZXZlbiBkaXNjdXNzaW9ucyBvbiBtYWlsaW5nIGxpc3RzIGlmIEkgY2FuIGZpbmQgdGhlbS4gVGhlIGdvYWwgaXMgdG8gc2VlIGhvdyByb2J1c3QgdGhlIGRlc2lnbiBpcywgYW5kIGhvdyBjYXJlZnVsbHkgdGhleSBhcmUgY2hlY2tpbmcgdGhlaXIgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXp6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTk5CgkJCQkJCQlvdXRwdXQ6IDg3CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCB0aGUgYGF0aDEya2AgZHJpdmVyLiBUaGF0IGNsaWNrcyDigJMgdGhhdCYjMzk7cyBhICpoYXJkd2FyZS1zcGVjaWZpYyogZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGZvciBRdWFsY29tbSYjMzk7cyBXaS1GaSA3IHNpbGljb24uIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGVyZSYjMzk7cyBubyByZWFsaXN0aWMgd2F5IHRvIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBwcm9wZXJseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhlIGNvZGUgcGF0aHMgdGhpcyBwYXRjaCB0b3VjaGVzIHNpbXBseSB3b24mIzM5O3QgYmUgZXhlcmNpc2VkIGJ5IGFueSBmdXp6aW5nIEkmIzM5O2QgdGhyb3cgYXQgaXQuCgpUaGVyZWZvcmUsIGZyb20gYSBwcmFjdGljYWwgc3RhbmRwb2ludCwgdGhpcyBwYXRjaCYjMzk7cyBmdXp6aW5nIHdvcnRoaW5lc3MgaXMgZXNzZW50aWFsbHkgemVyby4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gTm8gcG9pbnQgaW4gd2FzdGluZyByZXNvdXJjZXMgb24gc29tZXRoaW5nIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjIwLjg5MTUwMjMxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTEzOTY2MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjIwLjg5MTUwOTY3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYxNTA5MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTVjYTNmZTlmMmYzZmZhMjE5MjhlZTg3OTg0MzI2NGI4MDM5MjViNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0MzoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IGFmMzU0YmVmNWMwZDc5Li4yNmI0NmE0MDQ1ODA4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC0xMDExNyw3ICsxMDExNyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdXBkYXRlX3ZpZl9vZmZsb2FkKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxcbiBcXHRpZiAodmlmLVxcdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIHZpZi1cXHUwMDNldHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUClcXG4gXFx0XFx0dmlmLVxcdTAwM2VvZmZsb2FkX2ZsYWdzIFxcdTAwMjY9IH4oSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCB8XFxuLVxcdFxcdFxcdFxcdFxcdElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpO1xcbitcXHRcXHRcXHRcXHRcXHRJRUVFODAyMTFfT0ZGTE9BRF9ERUNBUF9FTkFCTEVEIHxcXG4rXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1QpO1xcbiBcXG4gXFx0aWYgKHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX0VOQUJMRUQpIHtcXG4gXFx0XFx0YWh2aWYtXFx1MDAzZWRwX3ZpZi50eF9lbmNhcF90eXBlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XFxuQEAgLTEwMTM2LDYgKzEwMTM3LDkgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWQoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYpXFxuIFxcdFxcdHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2PSB+SUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0VOQ0FQX0VOQUJMRUQpXFxuK1xcdFxcdHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyB8PSBJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9NQ0FTVDtcXG4rXFxuIFxcdHBhcmFtX2lkID0gV01JX1ZERVZfUEFSQU1fUlhfREVDQVBfVFlQRTtcXG4gXFx0aWYgKHZpZi1cXHUwMDNlb2ZmbG9hZF9mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpXFxuIFxcdFxcdHBhcmFtX3ZhbHVlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbmluZGV4IDNkNTlmYTQ1MmVjMDNkLi5lNWJmOWQyMTgxMDQwZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5AQCAtOTAzLDYgKzkwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdHN0cnVjdCBldGhoZHIgKmV0aDtcXG4gXFx0Ym9vbCBpc19wcmJfcnNwO1xcbiBcXHR1MTYgbWNiY19nc247XFxuK1xcdHU4IGNiX2ZsYWdzO1xcbiBcXHR1OCBsaW5rX2lkO1xcbiBcXHRpbnQgcmV0O1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2RwICp0bXBfZHA7XFxuQEAgLTk5Niw4ICs5OTcsMTMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0ICAgIGllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIFxcdFxcdGlzX2R2bGFuID0gdHJ1ZTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIEFkZCBhIHN0YSBwb2ludGVyIGNoZWNrIHRvIGRpZmZlcmVudGlhdGUgbXVsdGljYXN0IGVuY2Fwc3VsYXRpb25cXG4rXFx0ICogb2ZmbG9hZCBwYWNrZXRzLCBhcyB0aGUgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCBmbGFnIGlzIGFsc28gc2V0XFxuK1xcdCAqIGZvciBzdWNoIHBhY2tldHMuXFxuK1xcdCAqL1xcbiBcXHRpZiAoIXZpZi1cXHUwMDNldmFsaWRfbGlua3MgfHwgIWlzX21jYXN0IHx8IGlzX2R2bGFuIHx8XFxuLVxcdCAgICAoc2tiX2NiLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApIHx8XFxuK1xcdCAgICAoKHNrYl9jYi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSBcXHUwMDI2XFx1MDAyNiBzdGEpIHx8XFxuIFxcdCAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SQVdfTU9ERSwgXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZGV2X2ZsYWdzKSkge1xcbiBcXHRcXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfdHgoZHBfcGRldiwgYXJ2aWYsIGFyc3RhLCBza2IsIGZhbHNlLCAwLCBpc19tY2FzdCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseShyZXQpKSB7XFxuQEAgLTEwMDksNiArMTAxNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdG1jYmNfZ3NuID0gYXRvbWljX2luY19yZXR1cm4oXFx1MDAyNmFodmlmLVxcdTAwM2VkcF92aWYubWNiY19nc24pIFxcdTAwMjYgMHhmZmY7XFxuIFxcbiBcXHRcXHRsaW5rc19tYXAgPSBhaHZpZi1cXHUwMDNlbGlua3NfbWFwO1xcbitcXHRcXHRjYl9mbGFncyA9IHNrYl9jYi1cXHUwMDNlZmxhZ3M7XFxuIFxcdFxcdGZvcl9lYWNoX3NldF9iaXQobGlua19pZCwgXFx1MDAyNmxpbmtzX21hcCxcXG4gXFx0XFx0XFx0XFx0IElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xcbiBcXHRcXHRcXHR0bXBfYXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtXFx1MDAzZWxpbmtbbGlua19pZF0pO1xcbkBAIC0xMDE2LDIxICsxMDIzLDQ1IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0dG1wX2FyID0gdG1wX2FydmlmLVxcdTAwM2VhcjtcXG4tXFx0XFx0XFx0dG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfYXItXFx1MDAzZWFiLVxcdTAwM2VkcCxcXG4rXFx0XFx0XFx0dG1wX2RwID0gYXRoMTJrX2FiX3RvX2RwKHRtcF9hci1cXHUwMDNlYWIpO1xcbitcXHRcXHRcXHR0bXBfZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHRtcF9kcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgdG1wX2FyLVxcdTAwM2VwZGV2X2lkeCk7XFxuIFxcdFxcdFxcdGlmICghdG1wX2RwX3BkZXYpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRtc2R1X2NvcGllZCA9IHNrYl9jb3B5KHNrYiwgR0ZQX0FUT01JQyk7XFxuLVxcdFxcdFxcdGlmICghbXNkdV9jb3BpZWQpIHtcXG4tXFx0XFx0XFx0XFx0YXRoMTJrX2Vycihhci1cXHUwMDNlYWIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIFxcXCJza2IgY29weSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVxcdTAwM2V2ZGV2X2lkKTtcXG4tXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG1zZHVfY29waWVkLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbmZvX2ZsYWdzKTtcXG4rXFx0XFx0XFx0aWYgKGNiX2ZsYWdzIFxcdTAwMjYgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCkge1xcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiBza2ItXFx1MDAzZWRhdGEgbWF5IGJlIG1vZGlmaWVkIGZvciB0aGUgaW92YV9tYXNrIGRldmljZXMuXFxuK1xcdFxcdFxcdFxcdCAqIEl0IGlzIGJldHRlciB0byB1c2Ugc2tiX2NvcHkoKSBmb3Igc3VjaCBkZXZpY2VzXFxuK1xcdFxcdFxcdFxcdCAqIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgc2tiIGNvcnJ1cHRpb24gcmVsYXRlZCBpc3N1ZXMuXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRpZiAodG1wX2RwLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWlvdmFfbWFzaylcXG4rXFx0XFx0XFx0XFx0XFx0bXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdFxcdCAqIGF0aDEya193aWZpN19kcF90eCgpIHNob3VsZCB0cmVhdCBjbG9uZWQgSFctZW5jYXBcXG4rXFx0XFx0XFx0XFx0XFx0ICogRXRoZXJuZXQgbXVsdGljYXN0IGZyYW1lcyBhcyByZWFkLW9ubHkuXFxuK1xcdFxcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRcXHRtc2R1X2NvcGllZCA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRcXHRcXHRpZiAoIW1zZHVfY29waWVkKSB7XFxuK1xcdFxcdFxcdFxcdFxcdGF0aDEya19lcnIoYXItXFx1MDAzZWFiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBcXFwic2tiIGNvcHkvY2xvbmUgZmFpbHVyZSBsaW5rX2lkIDB4JVggdmRldmlkIDB4JVhcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIGxpbmtfaWQsIHRtcF9hcnZpZi1cXHUwMDNldmRldl9pZCk7XFxuK1xcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcXG4rXFx0XFx0XFx0XFx0aWYgKCFtc2R1X2NvcGllZCkge1xcbitcXHRcXHRcXHRcXHRcXHRhdGgxMmtfZXJyKGFyLVxcdTAwM2VhYixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInNrYiBjb3B5IGZhaWx1cmUgbGlua19pZCAweCVYIHZkZXZpZCAweCVYXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBsaW5rX2lkLCB0bXBfYXJ2aWYtXFx1MDAzZXZkZXZfaWQpO1xcbitcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0XFx0YXRoMTJrX21sb19tY2FzdF91cGRhdGVfdHhfbGlua19hZGRyZXNzKHZpZiwgbGlua19pZCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bXNkdV9jb3BpZWQsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGluZm9fZmxhZ3MpO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRza2JfY2IgPSBBVEgxMktfU0tCX0NCKG1zZHVfY29waWVkKTtcXG4gXFx0XFx0XFx0c2tiX2NiLVxcdTAwM2VsaW5rX2lkID0gbGlua19pZDtcXG5AQCAtMTA0Niw3ICsxMDc3LDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFhaHZpZi1cXHUwMDNlZHBfdmlmLmtleV9jaXBoZXIpKVxcbiBcXHRcXHRcXHRcXHRnb3RvIHNraXBfcGVlcl9maW5kO1xcbiBcXG4tXFx0XFx0XFx0dG1wX2RwID0gYXRoMTJrX2FiX3RvX2RwKHRtcF9hci1cXHUwMDNlYWIpO1xcbiBcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRtcF9kcC1cXHUwMDNlZHBfbG9jayk7XFxuIFxcdFxcdFxcdHBlZXIgPSBhdGgxMmtfZHBfbGlua19wZWVyX2ZpbmRfYnlfYWRkcih0bXBfZHAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRtcF9hcnZpZi1cXHUwMDNlYnNzaWQpO1xcbkBAIC0xMDY1LDExICsxMDk1LDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdHNrYl9jYi1cXHUwMDNlY2lwaGVyID0ga2V5LVxcdTAwM2VjaXBoZXI7XFxuIFxcdFxcdFxcdFxcdHNrYl9jYi1cXHUwMDNlZmxhZ3MgfD0gQVRIMTJLX1NLQl9DSVBIRVJfU0VUO1xcbiBcXG4rXFx0XFx0XFx0XFx0aWYgKHNrYl9jYi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKVxcbitcXHRcXHRcXHRcXHRcXHRnb3RvIHNraXBfZmN0bF9wcm90ZWN0ZWRfY2hlY2s7XFxuK1xcbiBcXHRcXHRcXHRcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKiltc2R1X2NvcGllZC1cXHUwMDNlZGF0YTtcXG4gXFx0XFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfaGFzX3Byb3RlY3RlZChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiBcXHRcXHRcXHRcXHRcXHRoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wgfD1cXG4gXFx0XFx0XFx0XFx0XFx0XFx0Y3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcXG4gXFx0XFx0XFx0fVxcbitcXG4rc2tpcF9mY3RsX3Byb3RlY3RlZF9jaGVjazpcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnRtcF9kcC1cXHUwMDNlZHBfbG9jayk7XFxuIFxcbiBza2lwX3BlZXJfZmluZDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MjEuNzU0MTYzOTg5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI1MTI5ODgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1Y2EzZmU5ZjJmM2ZmYTIxOTI4ZWU4Nzk4NDMyNjRiODAzOTI1YjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0MzoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCBhZjM1NGJlZjVjMGQ3OS4uMjZiNDZhNDA0NTgwODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTAxMTcsNyArMTAxMTcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3VwZGF0ZV92aWZfb2ZmbG9hZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZilcbiBcdGlmICh2aWYtXHUwMDNldHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHZpZi1cdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQKVxuIFx0XHR2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjY9IH4oSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRCB8XG4tXHRcdFx0XHRcdElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpO1xuK1x0XHRcdFx0XHRJRUVFODAyMTFfT0ZGTE9BRF9ERUNBUF9FTkFCTEVEIHxcbitcdFx0XHRcdFx0SUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1QpO1xuIFxuIFx0aWYgKHZpZi1cdTAwM2VvZmZsb2FkX2ZsYWdzIFx1MDAyNiBJRUVFODAyMTFfT0ZGTE9BRF9FTkNBUF9FTkFCTEVEKSB7XG4gXHRcdGFodmlmLVx1MDAzZWRwX3ZpZi50eF9lbmNhcF90eXBlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XG5AQCAtMTAxMzYsNiArMTAxMzcsOSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3VwZGF0ZV92aWZfb2ZmbG9hZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZilcbiBcdFx0dmlmLVx1MDAzZW9mZmxvYWRfZmxhZ3MgXHUwMDI2PSB+SUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRDtcbiBcdH1cbiBcbitcdGlmICh2aWYtXHUwMDNlb2ZmbG9hZF9mbGFncyBcdTAwMjYgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfRU5BQkxFRClcbitcdFx0dmlmLVx1MDAzZW9mZmxvYWRfZmxhZ3MgfD0gSUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1Q7XG4rXG4gXHRwYXJhbV9pZCA9IFdNSV9WREVWX1BBUkFNX1JYX0RFQ0FQX1RZUEU7XG4gXHRpZiAodmlmLVx1MDAzZW9mZmxvYWRfZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9PRkZMT0FEX0RFQ0FQX0VOQUJMRUQpXG4gXHRcdHBhcmFtX3ZhbHVlID0gQVRIMTJLX0hXX1RYUlhfRVRIRVJORVQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5pbmRleCAzZDU5ZmE0NTJlYzAzZC4uZTViZjlkMjE4MTA0MGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuQEAgLTkwMyw2ICs5MDMsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0c3RydWN0IGV0aGhkciAqZXRoO1xuIFx0Ym9vbCBpc19wcmJfcnNwO1xuIFx0dTE2IG1jYmNfZ3NuO1xuK1x0dTggY2JfZmxhZ3M7XG4gXHR1OCBsaW5rX2lkO1xuIFx0aW50IHJldDtcbiBcdHN0cnVjdCBhdGgxMmtfZHAgKnRtcF9kcDtcbkBAIC05OTYsOCArOTk3LDEzIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHQgICAgaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRpc19kdmxhbiA9IHRydWU7XG4gXG4rXHQvKlxuK1x0ICogQWRkIGEgc3RhIHBvaW50ZXIgY2hlY2sgdG8gZGlmZmVyZW50aWF0ZSBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvblxuK1x0ICogb2ZmbG9hZCBwYWNrZXRzLCBhcyB0aGUgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUCBmbGFnIGlzIGFsc28gc2V0XG4rXHQgKiBmb3Igc3VjaCBwYWNrZXRzLlxuK1x0ICovXG4gXHRpZiAoIXZpZi1cdTAwM2V2YWxpZF9saW5rcyB8fCAhaXNfbWNhc3QgfHwgaXNfZHZsYW4gfHxcbi1cdCAgICAoc2tiX2NiLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSB8fFxuK1x0ICAgICgoc2tiX2NiLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEgxMktfU0tCX0hXXzgwMjExX0VOQ0FQKSBcdTAwMjZcdTAwMjYgc3RhKSB8fFxuIFx0ICAgIHRlc3RfYml0KEFUSDEyS19GTEFHX1JBV19NT0RFLCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4gXHRcdHJldCA9IGF0aDEya193aWZpN19kcF90eChkcF9wZGV2LCBhcnZpZiwgYXJzdGEsIHNrYiwgZmFsc2UsIDAsIGlzX21jYXN0KTtcbiBcdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcbkBAIC0xMDA5LDYgKzEwMTUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRtY2JjX2dzbiA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmFodmlmLVx1MDAzZWRwX3ZpZi5tY2JjX2dzbikgXHUwMDI2IDB4ZmZmO1xuIFxuIFx0XHRsaW5rc19tYXAgPSBhaHZpZi1cdTAwM2VsaW5rc19tYXA7XG4rXHRcdGNiX2ZsYWdzID0gc2tiX2NiLVx1MDAzZWZsYWdzO1xuIFx0XHRmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsIFx1MDAyNmxpbmtzX21hcCxcbiBcdFx0XHRcdCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHtcbiBcdFx0XHR0bXBfYXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG5AQCAtMTAxNiwyMSArMTAyMyw0NSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0dG1wX2FyID0gdG1wX2FydmlmLVx1MDAzZWFyO1xuLVx0XHRcdHRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2FyLVx1MDAzZWFiLVx1MDAzZWRwLFxuK1x0XHRcdHRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItXHUwMDNlYWIpO1xuK1x0XHRcdHRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2RwLFxuIFx0XHRcdFx0XHRcdFx0ICAgdG1wX2FyLVx1MDAzZXBkZXZfaWR4KTtcbiBcdFx0XHRpZiAoIXRtcF9kcF9wZGV2KVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0bXNkdV9jb3BpZWQgPSBza2JfY29weShza2IsIEdGUF9BVE9NSUMpO1xuLVx0XHRcdGlmICghbXNkdV9jb3BpZWQpIHtcbi1cdFx0XHRcdGF0aDEya19lcnIoYXItXHUwMDNlYWIsXG4tXHRcdFx0XHRcdCAgIFwic2tiIGNvcHkgZmFpbHVyZSBsaW5rX2lkIDB4JVggdmRldmlkIDB4JVhcXG5cIixcbi1cdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuLVx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0fVxuIFxuLVx0XHRcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXG4tXHRcdFx0XHRcdFx0XHRcdG1zZHVfY29waWVkLFxuLVx0XHRcdFx0XHRcdFx0XHRpbmZvX2ZsYWdzKTtcbitcdFx0XHRpZiAoY2JfZmxhZ3MgXHUwMDI2IEFUSDEyS19TS0JfSFdfODAyMTFfRU5DQVApIHtcbitcdFx0XHRcdC8qXG4rXHRcdFx0XHQgKiBza2ItXHUwMDNlZGF0YSBtYXkgYmUgbW9kaWZpZWQgZm9yIHRoZSBpb3ZhX21hc2sgZGV2aWNlcy5cbitcdFx0XHRcdCAqIEl0IGlzIGJldHRlciB0byB1c2Ugc2tiX2NvcHkoKSBmb3Igc3VjaCBkZXZpY2VzXG4rXHRcdFx0XHQgKiB0byBhdm9pZCBhbnkgcG90ZW50aWFsIHNrYiBjb3JydXB0aW9uIHJlbGF0ZWQgaXNzdWVzLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRpZiAodG1wX2RwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vpb3ZhX21hc2spXG4rXHRcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbitcdFx0XHRcdGVsc2VcbitcdFx0XHRcdFx0LypcbitcdFx0XHRcdFx0ICogYXRoMTJrX3dpZmk3X2RwX3R4KCkgc2hvdWxkIHRyZWF0IGNsb25lZCBIVy1lbmNhcFxuK1x0XHRcdFx0XHQgKiBFdGhlcm5ldCBtdWx0aWNhc3QgZnJhbWVzIGFzIHJlYWQtb25seS5cbitcdFx0XHRcdFx0ICovXG4rXHRcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XG4rXHRcdFx0XHRpZiAoIW1zZHVfY29waWVkKSB7XG4rXHRcdFx0XHRcdGF0aDEya19lcnIoYXItXHUwMDNlYWIsXG4rXHRcdFx0XHRcdFx0ICAgXCJza2IgY29weS9jbG9uZSBmYWlsdXJlIGxpbmtfaWQgMHglWCB2ZGV2aWQgMHglWFxcblwiLFxuK1x0XHRcdFx0XHRcdCAgIGxpbmtfaWQsIHRtcF9hcnZpZi1cdTAwM2V2ZGV2X2lkKTtcbitcdFx0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdG1zZHVfY29waWVkID0gc2tiX2NvcHkoc2tiLCBHRlBfQVRPTUlDKTtcbitcdFx0XHRcdGlmICghbXNkdV9jb3BpZWQpIHtcbitcdFx0XHRcdFx0YXRoMTJrX2Vycihhci1cdTAwM2VhYixcbitcdFx0XHRcdFx0XHQgICBcInNrYiBjb3B5IGZhaWx1cmUgbGlua19pZCAweCVYIHZkZXZpZCAweCVYXFxuXCIsXG4rXHRcdFx0XHRcdFx0ICAgbGlua19pZCwgdG1wX2FydmlmLVx1MDAzZXZkZXZfaWQpO1xuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRcdH1cbitcbitcdFx0XHRcdGF0aDEya19tbG9fbWNhc3RfdXBkYXRlX3R4X2xpbmtfYWRkcmVzcyh2aWYsIGxpbmtfaWQsXG4rXHRcdFx0XHRcdFx0XHRcdFx0bXNkdV9jb3BpZWQsXG4rXHRcdFx0XHRcdFx0XHRcdFx0aW5mb19mbGFncyk7XG4rXHRcdFx0fVxuIFxuIFx0XHRcdHNrYl9jYiA9IEFUSDEyS19TS0JfQ0IobXNkdV9jb3BpZWQpO1xuIFx0XHRcdHNrYl9jYi1cdTAwM2VsaW5rX2lkID0gbGlua19pZDtcbkBAIC0xMDQ2LDcgKzEwNzcsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdGlmICh1bmxpa2VseSghYWh2aWYtXHUwMDNlZHBfdmlmLmtleV9jaXBoZXIpKVxuIFx0XHRcdFx0Z290byBza2lwX3BlZXJfZmluZDtcbiBcbi1cdFx0XHR0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLVx1MDAzZWFiKTtcbiBcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2dG1wX2RwLVx1MDAzZWRwX2xvY2spO1xuIFx0XHRcdHBlZXIgPSBhdGgxMmtfZHBfbGlua19wZWVyX2ZpbmRfYnlfYWRkcih0bXBfZHAsXG4gXHRcdFx0XHRcdFx0XHRcdHRtcF9hcnZpZi1cdTAwM2Vic3NpZCk7XG5AQCAtMTA2NSwxMSArMTA5NSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0c2tiX2NiLVx1MDAzZWNpcGhlciA9IGtleS1cdTAwM2VjaXBoZXI7XG4gXHRcdFx0XHRza2JfY2ItXHUwMDNlZmxhZ3MgfD0gQVRIMTJLX1NLQl9DSVBIRVJfU0VUO1xuIFxuK1x0XHRcdFx0aWYgKHNrYl9jYi1cdTAwM2VmbGFncyBcdTAwMjYgQVRIMTJLX1NLQl9IV184MDIxMV9FTkNBUClcbitcdFx0XHRcdFx0Z290byBza2lwX2ZjdGxfcHJvdGVjdGVkX2NoZWNrO1xuK1xuIFx0XHRcdFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopbXNkdV9jb3BpZWQtXHUwMDNlZGF0YTtcbiBcdFx0XHRcdGlmICghaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRcdFx0XHRoZHItXHUwMDNlZnJhbWVfY29udHJvbCB8PVxuIFx0XHRcdFx0XHRcdGNwdV90b19sZTE2KElFRUU4MDIxMV9GQ1RMX1BST1RFQ1RFRCk7XG4gXHRcdFx0fVxuK1xuK3NraXBfZmN0bF9wcm90ZWN0ZWRfY2hlY2s6XG4gXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG1wX2RwLVx1MDAzZWRwX2xvY2spO1xuIFxuIHNraXBfcGVlcl9maW5kOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MjEuNzU0MTY2NTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MDMxMTczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIE11bHRpY2FzdCBFbmNhcHN1bGF0aW9uIE9mZmxvYWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgYXRoMTJrL21hYy5jYCBhbmQgYGF0aDEyay93aWZpNy9ody5jYC4gVGhpcyBpcyBhYm91dCBlbmFibGluZyBtdWx0aWNhc3QgZW5jYXBzdWxhdGlvbiBvZmZsb2FkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQncyB0d2Vha2luZyBgYXRoMTJrX21hY191cGRhdGVfdmlmX29mZmxvYWRgIGFuZCBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAsIHNwZWNpZmljYWxseSBhcm91bmQgc2V0dGluZyBgSUVFRTgwMjExX09GRkxPQURfRU5DQVBfTUNBU1RgLiBSaWdodCwgc3RhbmRhcmQgc3R1ZmYgZm9yIG9mZmxvYWQuXG5cbk5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIHRoZXNlIGtpbmRzIG9mIGRyaXZlciBjaGFuZ2VzLCBpcyByZWFjaGFiaWxpdHkuIENhbiBJICphY3R1YWxseSogdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB0ZXN0aW5nIGVudmlyb25tZW50PyAgYGF0aDEya2AgaXMgUXVhbGNvbW0ncyBXaS1GaSA3IGRyaXZlciwgYSBoYXJkd2FyZSBkcml2ZXIuIFRoYXQgbWFrZXMgdGhpbmdzIGltbWVkaWF0ZWx5IHRyaWNreS4gIENhbiBJIGZ1enogdGhpcyB0aGluZz8gIEhhcmR3YXJlIGRyaXZlcnMgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enogZGlyZWN0bHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiAgVW5sZXNzIHRoZXJlJ3MgYSBzb2Z0d2FyZSBlbXVsYXRvci4uLiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0J3MgZ2VuZXJpYywgbm90IHNwZWNpZmljYWxseSBmb3IgYGF0aDEya2AuXG5cbldhaXQgYSBtaW51dGUsIGRvZXMgc3l6a2FsbGVyIGV2ZW4gc3VwcG9ydCB0aGlzIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IHN5emthbGxlciB1c2VzIGZvciBhdGgxMmsuIE90aGVyd2lzZSwgaWYgaXQncyBqdXN0IGEgcmF3IGhhcmR3YXJlIGRyaXZlciB3aXRob3V0IGFuIGVtdWxhdGlvbiBsYXllciwgdGhpcyBwYXRjaCBtaWdodCBiZSBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHR5cGljYWwgdGVzdCBzZXR1cC4gSXQncyBhIHdhc3RlIG9mIHRpbWUgYW5kIGVmZm9ydCB0byByZXZpZXcuIE5lZWQgdG8gY2hlY2sgaWYgaXQncyBQQ0kgb3IgQUhCLCBvciBzb21lIG90aGVyIGJ1cyBpbnRlcmZhY2UsIGluIHRoZSBhdGgxMmsgY29kZSwgdG8gZGV0ZXJtaW5lIHdoYXQncyBwb3NzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjI4LjMyNDQ4MDEyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTUwNDA4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9Mj1jb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM6XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE1OlxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEyay5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTE3PWNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4OlxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTktXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI1PWNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjY6XFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzctXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM5OlxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NDQ9Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ1OlxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ2LVxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0ODpcXHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NTM9Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NDpcXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVxcdGRlcGVuZHMgb24gQVRIMTJLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1ODpcXHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MjguNzE5NTI4MDI5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2MDc4NjM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFUSDEySyBEcml2ZXIgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYEFUSDEyS2AgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBnb2VzIHRvIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSBpdCdzIGJ1aWx0IG9uIHRvcCBvZiBgTUFDODAyMTFgLCB3aGljaCBpcyBzdGFuZGFyZCwgYW5kIHRoZW4gcmVxdWlyZXMgZWl0aGVyIGBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lgICpvciogYEFUSDEyS19BSEJgLiBUaGF0J3MgYSBrZXkgZGlzdGluY3Rpb24gcmlnaHQgdGhlcmUuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIGNvbnNpZGVyaW5nIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy5cblxuVGhlIG5leHQgcXVlc3Rpb24gdGhhdCBwb3BzIHVwLCBnaXZlbiBJIGtub3cgYSBiaXQgYWJvdXQgdGhlIHNwYWNlIGFuZCB0aGUgcG90ZW50aWFsIGNoYWxsZW5nZXMgb2YgaGFyZHdhcmUgc3VwcG9ydCwgaXMgd2hldGhlciB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgb3IgdmlydHVhbCBkZXZpY2UgaW50ZXJmYWNlIGZvciBgYXRoMTJrYC4gSXQncyBhbHdheXMgdXNlZnVsIHRvIGtub3cgaWYgSSBjYW4gdGVzdCBvciBzaW11bGF0ZSB0aGUgZnVuY3Rpb25hbGl0eSB3aXRob3V0IG5lZWRpbmcgdGhlICpleGFjdCogaGFyZHdhcmUuIFRoaXMgaGVscHMgd2l0aCBkZWJ1Z2dpbmcgYW5kIGRldmVsb3BtZW50IGlmIEkgY2FuIHRlc3QgdGhpbmdzIHdpdGhvdXQgYSBwaHlzaWNhbCBzZXR1cC4gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSBmb3IgYW55IGhpbnRzIG9mIHRoYXQuIElzIHRoZXJlIGEgdmlydHVhbCBkZXZpY2UgbW9kZWwgaW4gdGhlIGtlcm5lbCwgb3Igc29tZSBzb3J0IG9mIHVzZXJzcGFjZSBlbXVsYXRpb24gdGhhdCdzIGJlZW4gcHV0IHRvZ2V0aGVyPyBMZXQgbWUgZGl2ZSBpbiBhbmQgc2VlIHdoYXQncyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjMzLjE4MDMxNzUwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjEwNjQ0MDIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0MzozMy41MDEzOTIyMjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTE5NTg5NDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQXRoMTJrOiBBIFZpcnR1YWxpemF0aW9uIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gaHdzaW0gZm9yIGF0aDEyay4gVGhhdCdzIGEgcHJvYmxlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyAqYW55KiBvdGhlciB2aWFibGUgcGF0aCBmb3IgZnV6emluZyB0aGlzIGRyaXZlci4gSSB1c3VhbGx5IGxvb2sgdG8gUENJIGRldmljZXMsIGFuZCBpZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgdGhhdCBjYW4gYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQsIGF0aDEyayBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcjsgaXQncyBub3Qgc29tZSBnZW5lcmljLCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gV2FpdCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIGJ1dCBpdCdzIHZlcnkgbGltaXRlZCwgYW5kIGZyYW5rbHksIHdlIHVzdWFsbHkgZG9uJ3QgYm90aGVyIGZ1enppbmcgZHJpdmVycyBmb3IgKnNwZWNpZmljKiBoYXJkd2FyZS4gV2UgdGVuZCB0byBmb2N1cyBvbiBnZW5lcmljIHN1YnN5c3RlbXMgb3IgdGhvc2Ugd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgdmhjaSwgbWFjODAyMTFfaHdzaW0sIG9yIG5ldGRldnNpbS5cblxuSG9sZCBvbiwgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gUmlnaHQsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgYWZmZWN0cyBjb2RlIHRoYXQncyBpbXBvc3NpYmxlIHRvIGhpdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhhdCdzIGtleS4gQW5kIEkga25vdyB0aGF0IGF0aDEyayBpcyBhIHNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIG1hYzgwMjExX2h3c2ltLCB3aGljaCBlbXVsYXRlcyAqZ2VuZXJpYyogbWFjODAyMTEgaGFyZHdhcmUg4oCTIG5vdCBhdGgxMmsgc3BlY2lmaWNhbGx5LiBUaGVyZWZvcmUsIGFueSBuZXcgY29kZSB3b3VsZCBiZSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgcmVzb3VyY2VzIG9uZSBsYXN0IHRpbWUuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgaGlkZGVuIGVtdWxhdGlvbiBvZiBhdGgxMmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MzkuNDIwOTg0NzAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzg0NDQ3OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUUVNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6MzkuNTI0ODM1MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg4MTE1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgZm9yIEZ1enppbmcgYW5kIEVtdWxhdGlvbiB3aXRoaW4gYXRoMTJrKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgb2YgdGhlIGF0aDEyayBkcml2ZXIuIE15IHByaW1hcnkgaW50ZXJlc3QgcmlnaHQgbm93IHJldm9sdmVzIGFyb3VuZCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBmdXp6aW5nIGFuZC9vciBlbXVsYXRpb24gdGVjaG5pcXVlcyBiZWluZyB1dGlsaXplZCB3aXRoaW4gaXRzIGRldmVsb3BtZW50LCB0ZXN0aW5nLCBvciBzZWN1cml0eSBhbmFseXNpcy4gSSBuZWVkIHRvIHF1aWNrbHkgZmluZCBvdXQgaWYgYW55b25lIGlzIHNwZWNpZmljYWxseSB1c2luZyBmdXp6aW5nIHRvIGZpbmQgYnVncywgb3IgZW11bGF0aW9uIGZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcgYW5kIGFuYWx5c2lzIG9mIGl0cyBiZWhhdmlvdXIuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UgZGlyZWN0bHkgZm9yIG1lbnRpb25zLCBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uLCBtYXliZSBldmVuIGRpc2N1c3Npb25zIG9uIG1haWxpbmcgbGlzdHMgaWYgSSBjYW4gZmluZCB0aGVtLiBUaGUgZ29hbCBpcyB0byBzZWUgaG93IHJvYnVzdCB0aGUgZGVzaWduIGlzLCBhbmQgaG93IGNhcmVmdWxseSB0aGV5IGFyZSBjaGVja2luZyB0aGVpciB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzY1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDM6NDIuNjEyOTUzODc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDIwODU3NDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQzOjQzLjAxNTA0OTAxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTAzODQ4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBgYXRoMTJrYCBkcml2ZXIuIFRoYXQgY2xpY2tzIOKAkyB0aGF0J3MgYSAqaGFyZHdhcmUtc3BlY2lmaWMqIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGZvciBRdWFsY29tbSdzIFdpLUZpIDcgc2lsaWNvbi4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoZXJlJ3Mgbm8gcmVhbGlzdGljIHdheSB0byBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgcHJvcGVybHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggdG91Y2hlcyBzaW1wbHkgd29uJ3QgYmUgZXhlcmNpc2VkIGJ5IGFueSBmdXp6aW5nIEknZCB0aHJvdyBhdCBpdC5cblxuVGhlcmVmb3JlLCBmcm9tIGEgcHJhY3RpY2FsIHN0YW5kcG9pbnQsIHRoaXMgcGF0Y2gncyBmdXp6aW5nIHdvcnRoaW5lc3MgaXMgZXNzZW50aWFsbHkgemVyby4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBwb2ludCBpbiB3YXN0aW5nIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgdW5kZXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTksIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0Mzo0Ny4wMDU0MzcxMjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowjll6v[1] Phase: Running StartedAt: 2026-06-23 10:43:58 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjll6v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-23 10:43:58 +0000 UTC FinishedAt: 2026-06-23 10:44:13 +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,}