Name: series-workflow6n4pb Phase: Failed StartedAt: 2026-09-09 06:55:35 +0000 UTC FinishedAt: 2026-09-09 07:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n4pb[0] Phase: Succeeded StartedAt: 2026-09-09 06:55:35 +0000 UTC FinishedAt: 2026-09-09 07:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n4pb[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 06:55:35 +0000 UTC FinishedAt: 2026-09-09 07:40:18 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDA4MjE3N2FlMWQ1YmFhMmQ5MTFhOWM0OTk0ZmY4YWVmNTIzNWUwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDc6Mzk6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG5pbmRleCA3MTc2ODAzMTQ2ZjNkLi44ODMxZGEzNzMyNmIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbkBAIC02OTIsNyAmIzQzOzY5Miw3IEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHtcbiBcdHU2NCBldGh0b29sX3N0YXRzW107XG4gfTtcbiBcbi12b2lkIGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7XG4mIzQzO2ludCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpO1xuIHZvaWQgZmVjX3B0cF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApO1xuIHZvaWQgZmVjX3B0cF9zYXZlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApO1xuIHZvaWQgZmVjX3B0cF9zdG9wKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbmluZGV4IDc5NGVjNDI3YjBlZTYuLmY3NjM2ZjIzZDFlYmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbkBAIC01Mzg0LDggJiM0Mzs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRnb3RvIGZhaWxlZF9yZXNldDtcbiBcbiBcdGlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTtcbi1cdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leClcbi1cdFx0ZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xuJiM0MztcdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leCkge1xuJiM0MztcdFx0cmV0ID0gZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBmYWlsZWRfcmVzZXQ7XG4mIzQzO1x0fVxuIFxuIFx0cmV0ID0gZmVjX2VuZXRfaW5pdChuZGV2KTtcbiBcdGlmIChyZXQpXG5AQCAtNTM5NCwxMiAmIzQzOzUzOTcsMTcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpcnFfY250OyBpJiM0MzsmIzQzOykge1xuIFx0XHRzbnByaW50ZihpcnFfbmFtZSwgc2l6ZW9mKGlycV9uYW1lKSwgXCYjMzQ7aW50JWRcJiMzNDssIGkpO1xuIFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZV9vcHRpb25hbChwZGV2LCBpcnFfbmFtZSk7XG4tXHRcdGlmIChpcnEgXHUwMDNjIDApXG4tXHRcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpKTtcbi1cdFx0aWYgKGlycSBcdTAwM2MgMCkge1xuJiM0MztcdFx0aWYgKGlycSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgaXJxICE9IC1FTlhJTykge1xuIFx0XHRcdHJldCA9IGlycTtcbiBcdFx0XHRnb3RvIGZhaWxlZF9pcnE7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChpcnEgPT0gLUVOWElPKSB7XG4mIzQzO1x0XHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSk7XG4mIzQzO1x0XHRcdGlmIChpcnEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0XHRyZXQgPSBpcnE7XG4mIzQzO1x0XHRcdFx0Z290byBmYWlsZWRfaXJxO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4gXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlycSwgZmVjX2VuZXRfaW50ZXJydXB0LFxuIFx0XHRcdFx0ICAgICAgIDAsIHBkZXYtXHUwMDNlbmFtZSwgbmRldik7XG4gXHRcdGlmIChyZXQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU1N2E3Njc5N2ViYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5AQCAtNzM2LDcgJiM0Mzs3MzYsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZmVjX3Bwc19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuICAqIGN5Y2xlY291bnRlciBpbml0IHJvdXRpbmUgYW5kIGV4aXRzLlxuICAqL1xuIFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuJiM0MztpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwID0gbmV0ZGV2X3ByaXYobmRldik7XG5AQCAtNzc5LDI2ICYjNDM7Nzc5LDMyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0XHQgICAgICBIUlRJTUVSX01PREVfUkVMKTtcbiBcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwmIzM0O3Bwc1wmIzM0Oyk7XG4tXHRpZiAoaXJxIFx1MDAzYyAwKVxuJiM0MztcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4mIzQzO1x0XHRyZXR1cm4gaXJxO1xuJiM0MztcdGlmIChpcnEgPT0gLUVOWElPKSB7XG4gXHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgaXJxX2lkeCk7XG4tXHQvKiBGYWlsdXJlIHRvIGdldCBhbiBpcnEgaXMgbm90IGZhdGFsLFxuLVx0ICogb25seSB0aGUgUFRQX0NMT0NLX1BQUyBjbG9jayBldmVudHMgc2hvdWxkIHN0b3Bcbi1cdCAqL1xuLVx0aWYgKGlycSBcdTAwM2U9IDApIHtcbiYjNDM7XHRcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4mIzQzO1x0XHRcdHJldHVybiBpcnE7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoaXJxIFx1MDAzZSAwKSB7XG4gXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsXG4gXHRcdFx0XHQgICAgICAgMCwgcGRldi1cdTAwM2VuYW1lLCBuZGV2KTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0XHRkZXZfd2FybihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7cmVxdWVzdCBmb3IgcHBzIGlycSBmYWlsZWQoJWQpXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IHJldCk7XG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRmZXAtXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNmZlcC1cdTAwM2VwdHBfY2FwcywgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIFx0aWYgKElTX0VSUihmZXAtXHUwMDNlcHRwX2Nsb2NrKSkge1xuJiM0MztcdFx0cmV0ID0gUFRSX0VSUihmZXAtXHUwMDNlcHRwX2Nsb2NrKTtcbiBcdFx0ZmVwLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4gXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3B0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZmZXAtXHUwMDNldGltZV9rZWVwLCBIWik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOWFAvRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlciAoRkVDKSBkcml2ZXIgKGZlY19tYWluLmMsIGZlY19wdHAuYyksIHdoaWNoIGlzIGFuIFNvQyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBDb2xkRmlyZSwgaS5NWCwgYW5kIFMzMiBwcm9jZXNzb3JzLiBPbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLCBDT05GSUdfRkVDIGlzIG9ubHkgc2VsZWN0YWJsZSB1bmRlciBDT01QSUxFX1RFU1QgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQwODIxNzdhZTFkNWJhYTJkOTExYTljNDk5NGZmOGFlZjUyMzVlMDgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDA3OjM5OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oCmluZGV4IDcxNzY4MDMxNDZmM2QuLjg4MzFkYTM3MzI2YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgKQEAgLTY5Miw3ICYjNDM7NjkyLDcgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgewogCXU2NCBldGh0b29sX3N0YXRzW107CiB9OwogCi12b2lkIGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7CiYjNDM7aW50IGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7CiB2b2lkIGZlY19wdHBfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTsKIHZvaWQgZmVjX3B0cF9zYXZlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApOwogdm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCmluZGV4IDc5NGVjNDI3YjBlZTYuLmY3NjM2ZjIzZDFlYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCkBAIC01Mzg0LDggJiM0Mzs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIGZhaWxlZF9yZXNldDsKIAogCWlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTsKLQlpZiAoZmVwLSZndDtidWZkZXNjX2V4KQotCQlmZWNfcHRwX2luaXQocGRldiwgaXJxX2NudCk7CiYjNDM7CWlmIChmZXAtJmd0O2J1ZmRlc2NfZXgpIHsKJiM0MzsJCXJldCA9IGZlY19wdHBfaW5pdChwZGV2LCBpcnFfY250KTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJZ290byBmYWlsZWRfcmVzZXQ7CiYjNDM7CX0KIAogCXJldCA9IGZlY19lbmV0X2luaXQobmRldik7CiAJaWYgKHJldCkKQEAgLTUzOTQsMTIgJiM0Mzs1Mzk3LDE3IEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWZvciAoaSA9IDA7IGkgJmx0OyBpcnFfY250OyBpJiM0MzsmIzQzOykgewogCQlzbnByaW50ZihpcnFfbmFtZSwgc2l6ZW9mKGlycV9uYW1lKSwgJiMzNDtpbnQlZCYjMzQ7LCBpKTsKIAkJaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWVfb3B0aW9uYWwocGRldiwgaXJxX25hbWUpOwotCQlpZiAoaXJxICZsdDsgMCkKLQkJCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSk7Ci0JCWlmIChpcnEgJmx0OyAwKSB7CiYjNDM7CQlpZiAoaXJxICZsdDsgMCAmYW1wOyZhbXA7IGlycSAhPSAtRU5YSU8pIHsKIAkJCXJldCA9IGlycTsKIAkJCWdvdG8gZmFpbGVkX2lycTsKIAkJfQomIzQzOwkJaWYgKGlycSA9PSAtRU5YSU8pIHsKJiM0MzsJCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpOwomIzQzOwkJCWlmIChpcnEgJmx0OyAwKSB7CiYjNDM7CQkJCXJldCA9IGlycTsKJiM0MzsJCQkJZ290byBmYWlsZWRfaXJxOwomIzQzOwkJCX0KJiM0MzsJCX0KIAkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmYW1wO3BkZXYtJmd0O2RldiwgaXJxLCBmZWNfZW5ldF9pbnRlcnJ1cHQsCiAJCQkJICAgICAgIDAsIHBkZXYtJmd0O25hbWUsIG5kZXYpOwogCQlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMKaW5kZXggNTY4MDFjMjAwOWQ1OS4uNTU3YTc2Nzk3ZWJhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jCkBAIC03MzYsNyAmIzQzOzczNiw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmZWNfcHBzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAgKiBjeWNsZWNvdW50ZXIgaW5pdCByb3V0aW5lIGFuZCBleGl0cy4KICAqLwogCi12b2lkIGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCkKJiM0MztpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAJc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtNzc5LDI2ICYjNDM7Nzc5LDMyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KQogCQkgICAgICBIUlRJTUVSX01PREVfUkVMKTsKIAogCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsICYjMzQ7cHBzJiMzNDspOwotCWlmIChpcnEgJmx0OyAwKQomIzQzOwlpZiAoaXJxICZsdDsgMCAmYW1wOyZhbXA7IGlycSAhPSAtRU5YSU8pCiYjNDM7CQlyZXR1cm4gaXJxOwomIzQzOwlpZiAoaXJxID09IC1FTlhJTykgewogCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpOwotCS8qIEZhaWx1cmUgdG8gZ2V0IGFuIGlycSBpcyBub3QgZmF0YWwsCi0JICogb25seSB0aGUgUFRQX0NMT0NLX1BQUyBjbG9jayBldmVudHMgc2hvdWxkIHN0b3AKLQkgKi8KLQlpZiAoaXJxICZndDs9IDApIHsKJiM0MzsJCWlmIChpcnEgJmx0OyAwICZhbXA7JmFtcDsgaXJxICE9IC1FTlhJTykKJiM0MzsJCQlyZXR1cm4gaXJxOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChpcnEgJmd0OyAwKSB7CiAJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmFtcDtwZGV2LSZndDtkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsCiAJCQkJICAgICAgIDAsIHBkZXYtJmd0O25hbWUsIG5kZXYpOwogCQlpZiAocmV0ICZsdDsgMCkKLQkJCWRldl93YXJuKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O3JlcXVlc3QgZm9yIHBwcyBpcnEgZmFpbGVkKCVkKVxuJiMzNDssCi0JCQkJIHJldCk7CiYjNDM7CQkJcmV0dXJuIHJldDsKIAl9CiAKIAlmZXAtJmd0O3B0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2ZlcC0mZ3Q7cHRwX2NhcHMsICZhbXA7cGRldi0mZ3Q7ZGV2KTsKIAlpZiAoSVNfRVJSKGZlcC0mZ3Q7cHRwX2Nsb2NrKSkgewomIzQzOwkJcmV0ID0gUFRSX0VSUihmZXAtJmd0O3B0cF9jbG9jayk7CiAJCWZlcC0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKIAkJZGV2X2VycigmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDtwdHBfY2xvY2tfcmVnaXN0ZXIgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwogCX0KIAogCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO2ZlcC0mZ3Q7dGltZV9rZWVwLCBIWik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIFBhdGNoJiMzOTtzIFN1aXRhYmlsaXR5IGZvciBTeXprYWxsZXIgRnV6emluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgZGV0YWlscy4gSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNgLiBUaGF0JiMzOTtzIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgYW5kIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgdGhlIEZyZWVzY2FsZSBGRUMsIHRoZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGlzIGlzIGEgcGxhdGZvcm0gZGV2aWNlIG9yIGEgUENJIGRldmljZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGZlY19tYWluLmNgIHNvdXJjZSBjb2RlLCBwcm9iYWJseSB3aXRoIGEgcXVpY2sgc2NhbiwgYW5kIHRoZW4gY3Jvc3MtcmVmZXJlbmNlIHdpdGggdGhlIEtjb25maWcgZmlsZXMgdG8gY29uZmlybSBkZXZpY2UgdHlwZS4KClRpbWUgdG8gbGV2ZXJhZ2UgbXkgdG9vbHMuIEnigJlsbCBzdGFydCBkaWdnaW5nIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGRUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjE9aWYgTkVUX1ZFTkRPUl9GUkVFU0NBTEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MjM6Y29uZmlnIEZFQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtGRUMgZXRoZXJuZXQgY29udHJvbGxlciAob2YgQ29sZEZpcmUgYW5kIHNvbWUgaS5NWCBDUFVzKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6Mzk6Y29uZmlnIEZFQ19NUEM1Mnh4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O0ZFQyBNUEM1Mnh4IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTA6Y29uZmlnIEZFQ19NUEM1Mnh4X01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtGRUMgTVBDNTJ4eCBNRElPIGJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEZyZWVzY2FsZSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgRnJlZXNjYWxlIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGEgcGFydGljdWxhciBpc3N1ZSBJJiMzOTttIHRyb3VibGVzaG9vdGluZy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGBLY29uZmlnYCBmaWxlLiBJJiMzOTttIHRoaW5raW5nIHRoZSByZWxldmFudCBzZWN0aW9uIGlzIHByb2JhYmx5IGFyb3VuZCBsaW5lcyAyMCB0byAzOCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYC4gVGhhdCByYW5nZSBzaG91bGQgY292ZXIgdGhlIGNvcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiBob3cgdGhpbmdzIGFyZSBzdHJ1Y3R1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gSSYjMzk7bGwgZm9jdXMgb24gd2hhdCYjMzk7cyBkZWZpbmVkIGluIHRoYXQgc2VjdGlvbiB0byBzZWUgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZGl0aW9uYWxseSBjb25maWd1cmVkIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBpbiBxdWVzdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlbGluZSB0byBjb25maXJtIG15IGluaXRpYWwgaHlwb3RoZXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFxuICAyMTpcdGlmIE5FVF9WRU5ET1JfRlJFRVNDQUxFXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIEZFQ1xuICAyNDpcdFx0dHJpc3RhdGUgXCYjMzQ7RkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcJiMzNDtcbiAgMjU6XHRcdGRlcGVuZHMgb24gKE01MjN4IHx8IE01Mjd4IHx8IE01MjcyIHx8IE01Mjh4IHx8IE01MjB4IHx8IE01MzJ4IHx8IFxcXG4gIDI2Olx0XHRcdCAgIEFSQ0hfTVhDIHx8IEFSQ0hfUzMyIHx8IFNPQ19JTVgyOCB8fCBDT01QSUxFX1RFU1QpXG4gIDI3Olx0XHRkZWZhdWx0IEFSQ0hfTVhDIHx8IFNPQ19JTVgyOCBpZiBBUk1cbiAgMjg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMjk6XHRcdHNlbGVjdCBDUkMzMlxuICAzMDpcdFx0c2VsZWN0IFBIWUxJQlxuICAzMTpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICAzMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAzMzpcdFx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4gIDM0Olx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBidWlsdC1pbiAxMC8xMDAgRmFzdCBldGhlcm5ldFxuICAzNzpcdFx0ICBjb250cm9sbGVyIG9uIHNvbWUgTW90b3JvbGEgQ29sZEZpcmUgYW5kIEZyZWVzY2FsZSBpLk1YL1MzMiBwcm9jZXNzb3JzLlxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBGRUNfTVBDNTJ4eFxuICA0MDpcdFx0dHJpc3RhdGUgXCYjMzQ7RkVDIE1QQzUyeHggZHJpdmVyXCYjMzQ7XG4gIDQxOlx0XHRkZXBlbmRzIG9uIFBQQ19NUEM1Mnh4IFx1MDAyNlx1MDAyNiBQUENfQkVTVENPTU1cbiAgNDI6XHRcdHNlbGVjdCBDUkMzMlxuICA0MzpcdFx0c2VsZWN0IFBIWUxJQlxuICA0NDpcdFx0c2VsZWN0IFBQQ19CRVNUQ09NTV9GRUNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjA0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGF0IHF1ZXJ5LCBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEZFQyBEcml2ZXIgUmVnaXN0cmF0aW9uIE1ldGhvZCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaG93IHRoZSBGRUMgZHJpdmVyIGlzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgb2J2aW91cyBmaXJzdCBwbGFjZSB0byBjaGVjayBpcyBgZmVjX21haW4uY2AuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCB0aGUgZnVuZGFtZW50YWwgd2F5cyBkcml2ZXJzIGFyZSBob29rZWQgaW50byB0aGUga2VybmVsLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqcmVnaXN0cmF0aW9uIG1ldGhvZCoqLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIHRocm91Z2ggdGhlIG1vc3QgY29tbW9uIHNjZW5hcmlvczoKCiogICAqKlBsYXRmb3JtIGRyaXZlcjoqKiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBmcmFtZXdvcms/IFRoYXQmIzM5O3MgYSBzdHJvbmcgcG9zc2liaWxpdHkgZm9yIGVtYmVkZGVkIHN5c3RlbXMsIGFuZCBpdCYjMzk7cyBzb21ldGhpbmcgSSYjMzk7ZCBleHBlY3QgdG8gc2VlLiBTbywgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcmAgb3Igc2ltaWxhci4KKiAgICoqRGV2aWNlIFRyZWUgKE9GKSBtYXRjaGluZzoqKiBOZXh0IHVwLCB0aGUgRGV2aWNlIFRyZWUgaXMgYSB2ZXJ5IGNvbW1vbiB3YXkgdG8gZGVzY3JpYmUgaGFyZHdhcmUgaW4gZW1iZWRkZWQgc3lzdGVtcy4gSSYjMzk7bGwgYmUgc2VhcmNoaW5nIGZvciBgb2ZfbWF0Y2hfdGFibGVgIG9yIGZ1bmN0aW9ucyByZWxhdGVkIHRvIERldmljZSBUcmVlIGxvb2t1cHMuCiogICAqKkFDUEk6KiogSWYgdGhpcyBpcyBhIHN5c3RlbSB0aGF0IHVzZXMgQUNQSSwgdGhlcmUmIzM5O3MgYSBzdHJvbmcgY2hhbmNlIGl0JiMzOTtzIHVzaW5nIHRoZSBBQ1BJIGRyaXZlciBmcmFtZXdvcmsuIFRoaXMgbWVhbnMgbG9va2luZyBmb3IgQUNQSS1zcGVjaWZpYyByZWdpc3RyYXRpb24gZnVuY3Rpb25zLgoqICAgKipQQ0k6KiogRmluYWxseSwgZXZlbiB0aG91Z2ggRkVDIGlzIHR5cGljYWxseSBhc3NvY2lhdGVkIHdpdGggZW1iZWRkZWQgc3lzdGVtcywgaXQgKmNvdWxkKiBiZSBhIFBDSSBkZXZpY2UgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucy4gU28gSSYjMzk7bGwgYWxzbyBjaGVjayBmb3IgUENJLXJlbGF0ZWQgcmVnaXN0cmF0aW9uLCBqdXN0IHRvIGNvdmVyIGFsbCB0aGUgYmFzZXMuIEkmIzM5O2QgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBkcml2ZXIgcmVnaXN0cmF0aW9uIGNhbGxzLgoKSSYjMzk7bSBlc3NlbnRpYWxseSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIGNvcmUgbWVjaGFuaXNtIHRoZSBjb2RlIGVtcGxveXMgdG8gYmluZCB0aGUgZHJpdmVyIHRvIHRoZSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZlY19wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2Nzk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZmVjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU2ODAtXHQuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTY5MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY5Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBmZWNfZHJpdmVyYCBTdHJ1Y3R1cmUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIEZFQyBkcml2ZXIgd29ya3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byB0aGUgYGZlY19tYWluLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBhbmQgaXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZWZpbml0aW9ucywgbGlrZWx5IGluY2x1ZGluZyB0aGUgYGZlY19kcml2ZXJgIHN0cnVjdHVyZS4gSSB3YW50IHRvIHNlZSBob3cgdGhhdCBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCwgd2hhdCBmaWVsZHMgaXQgY29udGFpbnMsIGFuZCBtb3N0IGltcG9ydGFudGx5LCBob3cgdGhvc2UgZmllbGRzIGFyZSB1c2VkIHdpdGhpbiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBhbmQgb3BlcmF0aW9uIG9mIHRoZSBkcml2ZXIuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZWxlbWVudHMgdGhhdCBkcml2ZSB0aGUgcGh5c2ljYWwgbGF5ZXIuIEtub3dpbmcgdGhlIGBmZWNfZHJpdmVyYCBzdHJ1Y3R1cmUmIzM5O3MgaW50ZXJuYWxzIGlzIGZ1bmRhbWVudGFsIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemluZy4gSSYjMzk7bGwgZm9jdXMgb24gaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2NzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NTY3NTpcdFx0U1lTVEVNX1NMRUVQX1BNX09QUyhmZWNfc3VzcGVuZCwgZmVjX3Jlc3VtZSlcbjU2NzY6XHRcdFJVTlRJTUVfUE1fT1BTKGZlY19ydW50aW1lX3N1c3BlbmQsIGZlY19ydW50aW1lX3Jlc3VtZSwgTlVMTClcbjU2Nzc6XHR9O1xuNTY3ODpcdFxuNTY3OTpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XG41NjgwOlx0XHQuZHJpdmVyXHQ9IHtcbjU2ODE6XHRcdFx0Lm5hbWVcdD0gRFJJVkVSX05BTUUsXG41NjgyOlx0XHRcdC5wbVx0PSBwbV9wdHIoXHUwMDI2ZmVjX3BtX29wcyksXG41NjgzOlx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IGZlY19kdF9pZHMsXG41Njg0Olx0XHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbjU2ODU6XHRcdH0sXG41Njg2Olx0XHQuaWRfdGFibGUgPSBmZWNfZGV2dHlwZSxcbjU2ODc6XHRcdC5wcm9iZVx0PSBmZWNfcHJvYmUsXG41Njg4Olx0XHQucmVtb3ZlID0gZmVjX2Rydl9yZW1vdmUsXG41Njg5Olx0fTtcbjU2OTA6XHRcbjU2OTE6XHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xuNTY5MjpcdFxuNTY5MzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtOWFAgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlclwmIzM0Oyk7XG41Njk0Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyNwoJCQkJCQkJb3V0cHV0OiAxMzEKCQkJCQkJCXRob3VnaHRzOiA4MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiB0aGUgRnJlZXNjYWxlIEZFQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBGcmVlc2NhbGUgRkVDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZmVjX21haW4uY2AsIGBmZWNfcHRwLmNgLCBhbmQgYGZlYy5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgYmUgcmVhbGlzdGljYWxseSBmdXp6ZWQgb24gb3VyIHN0YW5kYXJkIGFtZDY0IHNldHVwcyBpbiBzeXprYWxsZXIvUUVNVT8mIzM0OyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKRmlyc3QsIEkgc2VlIHRoYXQgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSXQmIzM5O3MgbWF0Y2hlZCB2aWEgRGV2aWNlIFRyZWUgKGBmZWNfZHRfaWRzYCkgb3IgcGxhdGZvcm0gZGV2aWNlIElEIHRhYmxlIChgZmVjX2RldnR5cGVgKS4gQW5kIHRoaXMgZHJpdmVyIGlzICpjbGVhcmx5KiBhbiBlbWJlZGRlZCBwbGF0Zm9ybSBkcml2ZXIsIHRpZWQgdG8gc3BlY2lmaWMgQ29sZEZpcmUsIGkuTVgsIGFuZCBTMzIgU29Dcy4gVGhlIGBkZXBlbmRzIG9uYCBjb25kaXRpb25zIChgTTUyM3ggfHwgLi4uIHx8IEFSQ0hfTVhDIHx8IEFSQ0hfUzMyIHx8IC4uLmApIGNvbmZpcm0gdGhpcy4gT24gYW1kNjQsIGl0JiMzOTtzICpvbmx5KiBjb21waWxlLXRlc3RhYmxlIHZpYSBgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyBpdCYjMzk7cyBub3QgZGVzaWduZWQgdG8gcnVuIG9uIGEgc3RhbmRhcmQgeDg2XzY0IHN5c3RlbS4KCk5vdywgY2FuIHdlIGV2ZW4gKmluc3RhbnRpYXRlKiBhIEZFQyBkZXZpY2Ugb24gYW1kNjQ/IE5vcGUuIE5vIEFDUEkgb3IgUENJIElEIHRhYmxlcy4gSXQmIzM5O3MgYWxsIERUIGFuZCBwbGF0Zm9ybSBJRC4gIEFuZCBzaW5jZSBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCwgZXZlbiBtYW51YWwgc3lzZnMgYmluZGluZyBpcyBhIG5vLWdvLgoKVGhpbmtpbmcgYWJvdXQgb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIHN5emthbGxlciBwcmltYXJpbHkgdXNlcyBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UgYW5kIFFFTVUgZm9yIGFtZDY0LiAgRXZlbiBpZiB3ZSB3ZXJlIHRhcmdldGluZyBBUk0gb3IgQ29sZEZpcmUsIHdlJiMzOTtkIG5lZWQgYSBwaHlzaWNhbCBTb0Mgb3Igc3BlY2lmaWMgU29DIGVtdWxhdGlvbiAoZS5nLiwgaS5NWCBEVCkuIFdlICpkb24mIzM5O3QqIGhhdmUgdGhhdCBvbiB4ODZfNjQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG91ciBmdXp6aW5nIHdvcmtmbG93LgoKTGV0JiMzOTtzIGNoZWNrIHRoZSBzZWN0aW9uIHR3byBpbnN0cnVjdGlvbnMgb2YgdGhlIGRvY3VtZW50LCB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgVW5yZWFjaGFibGUgSGFyZHdhcmUmIzM0OyBwYXJ0LiBZZXAsIGl0IGZpdHMgcGVyZmVjdGx5LiBUaGlzIEZFQyBkcml2ZXIgaXMgYW5hbG9nb3VzIHRvIHRob3NlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBvciBOSUMgZHJpdmVycywgdGhhdCByZXF1aXJlIGhhcmR3YXJlIG9yIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBvdXIgdHlwaWNhbCBRRU1VIHNldHVwcy4gIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gZW1iZWRkZWQgU29DIHBlcmlwaGVyYWwgKENvbGRGaXJlLCBpLk1YLCBTMzIpIHRoYXQgaXNuJiMzOTt0IHByZXNlbnQgb24gYSBzdGFuZGFyZCBQQyBvciB2aXJ0dWFsIG1hY2hpbmUgb2YgdGhlIGtpbmQgdXNlZCBieSBzeXprYWxsZXIuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIG9uIHg4Nl82NC9hbWQ2NCB2aWEgYENPTVBJTEVfVEVTVGAsIGFuZCB0aGF0IHRoaXMgbWVhbnMgd2UgY2FuJiMzOTt0IHRlc3QgaXQsIEkmIzM5O20gY29uZmlkZW50IGluIGNvbmNsdWRpbmcgdGhhdCB0aGlzIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgY29kZSB0aGF0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpIHVuZGVyIG91ciBzdGFuZGFyZCBmdXp6aW5nIGNvbmRpdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIHRvIHJlZmxlY3QgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTlhQL0ZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykgZHJpdmVyIChmZWNfbWFpbi5jLCBmZWNfcHRwLmMpLCB3aGljaCBpcyBhbiBTb0MgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgQ29sZEZpcmUsIGkuTVgsIGFuZCBTMzIgcHJvY2Vzc29ycy4gT24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KSwgQ09ORklHX0ZFQyBpcyBvbmx5IHNlbGVjdGFibGUgdW5kZXIgQ09NUElMRV9URVNUIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOWFAvRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlciAoRkVDKSBkcml2ZXIgKGZlY19tYWluLmMsIGZlY19wdHAuYyksIHdoaWNoIGlzIGFuIFNvQyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBDb2xkRmlyZSwgaS5NWCwgYW5kIFMzMiBwcm9jZXNzb3JzLiBPbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLCBDT05GSUdfRkVDIGlzIG9ubHkgc2VsZWN0YWJsZSB1bmRlciBDT01QSUxFX1RFU1QgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjQwLjE0NTAxNTA1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjE0OTkyMjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzozOTo0MC4xNDUwMjEwNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzAxMTUxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMDgyMTc3YWUxZDViYWEyZDkxMWE5YzQ5OTRmZjhhZWY1MjM1ZTA4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMDc6Mzk6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXFxuaW5kZXggNzE3NjgwMzE0NmYzZC4uODgzMWRhMzczMjZiMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcXG5AQCAtNjkyLDcgKzY5Miw3IEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHtcXG4gXFx0dTY0IGV0aHRvb2xfc3RhdHNbXTtcXG4gfTtcXG4gXFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KTtcXG4raW50IGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7XFxuIHZvaWQgZmVjX3B0cF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApO1xcbiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcXG4gdm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcXG5pbmRleCA3OTRlYzQyN2IwZWU2Li5mNzYzNmYyM2QxZWJiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcXG5AQCAtNTM4NCw4ICs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRnb3RvIGZhaWxlZF9yZXNldDtcXG4gXFxuIFxcdGlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTtcXG4tXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG4tXFx0XFx0ZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xcbitcXHRpZiAoZmVwLVxcdTAwM2VidWZkZXNjX2V4KSB7XFxuK1xcdFxcdHJldCA9IGZlY19wdHBfaW5pdChwZGV2LCBpcnFfY250KTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0Z290byBmYWlsZWRfcmVzZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdHJldCA9IGZlY19lbmV0X2luaXQobmRldik7XFxuIFxcdGlmIChyZXQpXFxuQEAgLTUzOTQsMTIgKzUzOTcsMTcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBpcnFfY250OyBpKyspIHtcXG4gXFx0XFx0c25wcmludGYoaXJxX25hbWUsIHNpemVvZihpcnFfbmFtZSksIFxcXCJpbnQlZFxcXCIsIGkpO1xcbiBcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZV9vcHRpb25hbChwZGV2LCBpcnFfbmFtZSk7XFxuLVxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbi1cXHRcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpO1xcbi1cXHRcXHRpZiAoaXJxIFxcdTAwM2MgMCkge1xcbitcXHRcXHRpZiAoaXJxIFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBpcnEgIT0gLUVOWElPKSB7XFxuIFxcdFxcdFxcdHJldCA9IGlycTtcXG4gXFx0XFx0XFx0Z290byBmYWlsZWRfaXJxO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChpcnEgPT0gLUVOWElPKSB7XFxuK1xcdFxcdFxcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSk7XFxuK1xcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdFxcdHJldCA9IGlycTtcXG4rXFx0XFx0XFx0XFx0Z290byBmYWlsZWRfaXJxO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBpcnEsIGZlY19lbmV0X2ludGVycnVwdCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIDAsIHBkZXYtXFx1MDAzZW5hbWUsIG5kZXYpO1xcbiBcXHRcXHRpZiAocmV0KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU1N2E3Njc5N2ViYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcXG5AQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmZWNfcHBzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuICAqIGN5Y2xlY291bnRlciBpbml0IHJvdXRpbmUgYW5kIGV4aXRzLlxcbiAgKi9cXG4gXFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbitpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuIFxcdHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5AQCAtNzc5LDI2ICs3NzksMzIgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpXFxuIFxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9SRUwpO1xcbiBcXG4gXFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWVfb3B0aW9uYWwocGRldiwgXFxcInBwc1xcXCIpO1xcbi1cXHRpZiAoaXJxIFxcdTAwM2MgMClcXG4rXFx0aWYgKGlycSBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgaXJxICE9IC1FTlhJTylcXG4rXFx0XFx0cmV0dXJuIGlycTtcXG4rXFx0aWYgKGlycSA9PSAtRU5YSU8pIHtcXG4gXFx0XFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCBpcnFfaWR4KTtcXG4tXFx0LyogRmFpbHVyZSB0byBnZXQgYW4gaXJxIGlzIG5vdCBmYXRhbCxcXG4tXFx0ICogb25seSB0aGUgUFRQX0NMT0NLX1BQUyBjbG9jayBldmVudHMgc2hvdWxkIHN0b3BcXG4tXFx0ICovXFxuLVxcdGlmIChpcnEgXFx1MDAzZT0gMCkge1xcbitcXHRcXHRpZiAoaXJxIFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBpcnEgIT0gLUVOWElPKVxcbitcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaXJxIFxcdTAwM2UgMCkge1xcbiBcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsXFxuIFxcdFxcdFxcdFxcdCAgICAgICAwLCBwZGV2LVxcdTAwM2VuYW1lLCBuZGV2KTtcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJyZXF1ZXN0IGZvciBwcHMgaXJxIGZhaWxlZCglZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdCByZXQpO1xcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbiBcXHRmZXAtXFx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcXHUwMDI2ZmVwLVxcdTAwM2VwdHBfY2FwcywgXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIFxcdGlmIChJU19FUlIoZmVwLVxcdTAwM2VwdHBfY2xvY2spKSB7XFxuK1xcdFxcdHJldCA9IFBUUl9FUlIoZmVwLVxcdTAwM2VwdHBfY2xvY2spO1xcbiBcXHRcXHRmZXAtXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInB0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbiBcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNmZlcC1cXHUwMDNldGltZV9rZWVwLCBIWik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gdm9pZCBmZWNfcHRwX3NhdmVfc3RhdGUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6Mzk6NDEuNTE2MDQyODg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNTg0Mzk1MTg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQwODIxNzdhZTFkNWJhYTJkOTExYTljNDk5NGZmOGFlZjUyMzVlMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDA3OjM5OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG5pbmRleCA3MTc2ODAzMTQ2ZjNkLi44ODMxZGEzNzMyNmIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbkBAIC02OTIsNyArNjkyLDcgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUge1xuIFx0dTY0IGV0aHRvb2xfc3RhdHNbXTtcbiB9O1xuIFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KTtcbitpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KTtcbiB2b2lkIGZlY19wdHBfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcbiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcbiB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXG5pbmRleCA3OTRlYzQyN2IwZWU2Li5mNzYzNmYyM2QxZWJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXG5AQCAtNTM4NCw4ICs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRnb3RvIGZhaWxlZF9yZXNldDtcbiBcbiBcdGlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTtcbi1cdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leClcbi1cdFx0ZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xuK1x0aWYgKGZlcC1cdTAwM2VidWZkZXNjX2V4KSB7XG4rXHRcdHJldCA9IGZlY19wdHBfaW5pdChwZGV2LCBpcnFfY250KTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRnb3RvIGZhaWxlZF9yZXNldDtcbitcdH1cbiBcbiBcdHJldCA9IGZlY19lbmV0X2luaXQobmRldik7XG4gXHRpZiAocmV0KVxuQEAgLTUzOTQsMTIgKzUzOTcsMTcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpcnFfY250OyBpKyspIHtcbiBcdFx0c25wcmludGYoaXJxX25hbWUsIHNpemVvZihpcnFfbmFtZSksIFwiaW50JWRcIiwgaSk7XG4gXHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIGlycV9uYW1lKTtcbi1cdFx0aWYgKGlycSBcdTAwM2MgMClcbi1cdFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpO1xuLVx0XHRpZiAoaXJxIFx1MDAzYyAwKSB7XG4rXHRcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pIHtcbiBcdFx0XHRyZXQgPSBpcnE7XG4gXHRcdFx0Z290byBmYWlsZWRfaXJxO1xuIFx0XHR9XG4rXHRcdGlmIChpcnEgPT0gLUVOWElPKSB7XG4rXHRcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpKTtcbitcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKSB7XG4rXHRcdFx0XHRyZXQgPSBpcnE7XG4rXHRcdFx0XHRnb3RvIGZhaWxlZF9pcnE7XG4rXHRcdFx0fVxuK1x0XHR9XG4gXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlycSwgZmVjX2VuZXRfaW50ZXJydXB0LFxuIFx0XHRcdFx0ICAgICAgIDAsIHBkZXYtXHUwMDNlbmFtZSwgbmRldik7XG4gXHRcdGlmIChyZXQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU1N2E3Njc5N2ViYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5AQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmZWNfcHBzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4gICogY3ljbGVjb3VudGVyIGluaXQgcm91dGluZSBhbmQgZXhpdHMuXG4gICovXG4gXG4tdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpXG4raW50IGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeClcbiB7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTc3OSwyNiArNzc5LDMyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0XHQgICAgICBIUlRJTUVSX01PREVfUkVMKTtcbiBcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwicHBzXCIpO1xuLVx0aWYgKGlycSBcdTAwM2MgMClcbitcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4rXHRcdHJldHVybiBpcnE7XG4rXHRpZiAoaXJxID09IC1FTlhJTykge1xuIFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpO1xuLVx0LyogRmFpbHVyZSB0byBnZXQgYW4gaXJxIGlzIG5vdCBmYXRhbCxcbi1cdCAqIG9ubHkgdGhlIFBUUF9DTE9DS19QUFMgY2xvY2sgZXZlbnRzIHNob3VsZCBzdG9wXG4tXHQgKi9cbi1cdGlmIChpcnEgXHUwMDNlPSAwKSB7XG4rXHRcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4rXHRcdFx0cmV0dXJuIGlycTtcbitcdH1cbitcbitcdGlmIChpcnEgXHUwMDNlIDApIHtcbiBcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgaXJxLCBmZWNfcHBzX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgICAgICAwLCBwZGV2LVx1MDAzZW5hbWUsIG5kZXYpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcInJlcXVlc3QgZm9yIHBwcyBpcnEgZmFpbGVkKCVkKVxcblwiLFxuLVx0XHRcdFx0IHJldCk7XG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdGZlcC1cdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXHUwMDI2ZmVwLVx1MDAzZXB0cF9jYXBzLCBcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gXHRpZiAoSVNfRVJSKGZlcC1cdTAwM2VwdHBfY2xvY2spKSB7XG4rXHRcdHJldCA9IFBUUl9FUlIoZmVwLVx1MDAzZXB0cF9jbG9jayk7XG4gXHRcdGZlcC1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuIFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcInB0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2ZmVwLVx1MDAzZXRpbWVfa2VlcCwgSFopO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHZvaWQgZmVjX3B0cF9zYXZlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzozOTo0MS41MTYwNDQ4MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTEwNzI3NDgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFdmFsdWF0aW5nIHRoZSBQYXRjaCdzIFN1aXRhYmlsaXR5IGZvciBTeXprYWxsZXIgRnV6emluZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBkZXRhaWxzLiBJIHNlZSB0aGUgY2hhbmdlcyBhcmUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaGAsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY2AuIFRoYXQncyBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgYW5kIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgdGhlIEZyZWVzY2FsZSBGRUMsIHRoZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGlzIGlzIGEgcGxhdGZvcm0gZGV2aWNlIG9yIGEgUENJIGRldmljZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZmVjX21haW4uY2Agc291cmNlIGNvZGUsIHByb2JhYmx5IHdpdGggYSBxdWljayBzY2FuLCBhbmQgdGhlbiBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyB0byBjb25maXJtIGRldmljZSB0eXBlLlxuXG5UaW1lIHRvIGxldmVyYWdlIG15IHRvb2xzLiBJ4oCZbGwgc3RhcnQgZGlnZ2luZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2MCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjUyLjYyMzMyMjczNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYxNjY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRkVDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMT1pZiBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjIzOmNvbmZpZyBGRUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozOTpjb25maWcgRkVDX01QQzUyeHhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiRkVDIE1QQzUyeHggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTA6Y29uZmlnIEZFQ19NUEM1Mnh4X01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01MS1cXHRib29sIFxcXCJGRUMgTVBDNTJ4eCBNRElPIGJ1cyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjUyLjY2Nzk0MzE1N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDg4MDk4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBGcmVlc2NhbGUgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgRnJlZXNjYWxlIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGEgcGFydGljdWxhciBpc3N1ZSBJJ20gdHJvdWJsZXNob290aW5nLiBMZXQncyBzdGFydCB3aXRoIHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSdtIHRoaW5raW5nIHRoZSByZWxldmFudCBzZWN0aW9uIGlzIHByb2JhYmx5IGFyb3VuZCBsaW5lcyAyMCB0byAzOCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYC4gVGhhdCByYW5nZSBzaG91bGQgY292ZXIgdGhlIGNvcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgSSdtIGludGVyZXN0ZWQgaW4sIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEZyb20gdGhlcmUsIEkgY2FuIGdldCBhIGJldHRlciBncmlwIG9uIGhvdyB0aGluZ3MgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBJJ2xsIGZvY3VzIG9uIHdoYXQncyBkZWZpbmVkIGluIHRoYXQgc2VjdGlvbiB0byBzZWUgd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbmZpZ3VyZWQgYmFzZWQgb24gdGhlIGhhcmR3YXJlIGluIHF1ZXN0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2VsaW5lIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTQwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6Mzk6NTUuMTc2NzU1MzczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFxuICAyMTpcXHRpZiBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcbiAgMjI6XFx0XFxuICAyMzpcXHRjb25maWcgRkVDXFxuICAyNDpcXHRcXHR0cmlzdGF0ZSBcXFwiRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcXFwiXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIChNNTIzeCB8fCBNNTI3eCB8fCBNNTI3MiB8fCBNNTI4eCB8fCBNNTIweCB8fCBNNTMyeCB8fCBcXFxcXFxuICAyNjpcXHRcXHRcXHQgICBBUkNIX01YQyB8fCBBUkNIX1MzMiB8fCBTT0NfSU1YMjggfHwgQ09NUElMRV9URVNUKVxcbiAgMjc6XFx0XFx0ZGVmYXVsdCBBUkNIX01YQyB8fCBTT0NfSU1YMjggaWYgQVJNXFxuICAyODpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyOTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDMxOlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gIDMyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDMzOlxcdFxcdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xcbiAgMzQ6XFx0XFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgYnVpbHQtaW4gMTAvMTAwIEZhc3QgZXRoZXJuZXRcXG4gIDM3OlxcdFxcdCAgY29udHJvbGxlciBvbiBzb21lIE1vdG9yb2xhIENvbGRGaXJlIGFuZCBGcmVlc2NhbGUgaS5NWC9TMzIgcHJvY2Vzc29ycy5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIEZFQ19NUEM1Mnh4XFxuICA0MDpcXHRcXHR0cmlzdGF0ZSBcXFwiRkVDIE1QQzUyeHggZHJpdmVyXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBQUENfTVBDNTJ4eCBcXHUwMDI2XFx1MDAyNiBQUENfQkVTVENPTU1cXG4gIDQyOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDM6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgNDQ6XFx0XFx0c2VsZWN0IFBQQ19CRVNUQ09NTV9GRUNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6Mzk6NTUuMTc2ODM1Mzg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAxNTA3MTA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQgcXVlcnksIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGRUMgRHJpdmVyIFJlZ2lzdHJhdGlvbiBNZXRob2QqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBob3cgdGhlIEZFQyBkcml2ZXIgaXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBvYnZpb3VzIGZpcnN0IHBsYWNlIHRvIGNoZWNrIGlzIGBmZWNfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgcmV2b2x2ZXMgYXJvdW5kIHRoZSBmdW5kYW1lbnRhbCB3YXlzIGRyaXZlcnMgYXJlIGhvb2tlZCBpbnRvIHRoZSBrZXJuZWwuIFdlIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgKipyZWdpc3RyYXRpb24gbWV0aG9kKiouIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyB0aHJvdWdoIHRoZSBtb3N0IGNvbW1vbiBzY2VuYXJpb3M6XG5cbiogICAqKlBsYXRmb3JtIGRyaXZlcjoqKiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBmcmFtZXdvcms/IFRoYXQncyBhIHN0cm9uZyBwb3NzaWJpbGl0eSBmb3IgZW1iZWRkZWQgc3lzdGVtcywgYW5kIGl0J3Mgc29tZXRoaW5nIEknZCBleHBlY3QgdG8gc2VlLiBTbywgSSdsbCBiZSBsb29raW5nIGZvciBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYCBvciBzaW1pbGFyLlxuKiAgICoqRGV2aWNlIFRyZWUgKE9GKSBtYXRjaGluZzoqKiBOZXh0IHVwLCB0aGUgRGV2aWNlIFRyZWUgaXMgYSB2ZXJ5IGNvbW1vbiB3YXkgdG8gZGVzY3JpYmUgaGFyZHdhcmUgaW4gZW1iZWRkZWQgc3lzdGVtcy4gSSdsbCBiZSBzZWFyY2hpbmcgZm9yIGBvZl9tYXRjaF90YWJsZWAgb3IgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gRGV2aWNlIFRyZWUgbG9va3Vwcy5cbiogICAqKkFDUEk6KiogSWYgdGhpcyBpcyBhIHN5c3RlbSB0aGF0IHVzZXMgQUNQSSwgdGhlcmUncyBhIHN0cm9uZyBjaGFuY2UgaXQncyB1c2luZyB0aGUgQUNQSSBkcml2ZXIgZnJhbWV3b3JrLiBUaGlzIG1lYW5zIGxvb2tpbmcgZm9yIEFDUEktc3BlY2lmaWMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiogICAqKlBDSToqKiBGaW5hbGx5LCBldmVuIHRob3VnaCBGRUMgaXMgdHlwaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zLCBpdCAqY291bGQqIGJlIGEgUENJIGRldmljZSBpbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBTbyBJJ2xsIGFsc28gY2hlY2sgZm9yIFBDSS1yZWxhdGVkIHJlZ2lzdHJhdGlvbiwganVzdCB0byBjb3ZlciBhbGwgdGhlIGJhc2VzLiBJJ2QgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBkcml2ZXIgcmVnaXN0cmF0aW9uIGNhbGxzLlxuXG5JJ20gZXNzZW50aWFsbHkgdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSBjb3JlIG1lY2hhbmlzbSB0aGUgY29kZSBlbXBsb3lzIHRvIGJpbmQgdGhlIGRyaXZlciB0byB0aGUgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MDQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjU4LjE5MTkwODY1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkyMTI2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz01Njc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmZWNfcG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1Njc5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY4MC1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihmZWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjkyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzozOTo1OC4yMzc4MzM3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5ODYyNTgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBmZWNfZHJpdmVyYCBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgRkVDIGRyaXZlciB3b3Jrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBgZmVjX21haW4uY2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIGl0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlZmluaXRpb25zLCBsaWtlbHkgaW5jbHVkaW5nIHRoZSBgZmVjX2RyaXZlcmAgc3RydWN0dXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGF0IHN0cnVjdHVyZSBpcyBkZWZpbmVkLCB3aGF0IGZpZWxkcyBpdCBjb250YWlucywgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyB0aG9zZSBmaWVsZHMgYXJlIHVzZWQgd2l0aGluIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGFuZCBvcGVyYXRpb24gb2YgdGhlIGRyaXZlci4gSSdtIGxvb2tpbmcgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGVsZW1lbnRzIHRoYXQgZHJpdmUgdGhlIHBoeXNpY2FsIGxheWVyLiBLbm93aW5nIHRoZSBgZmVjX2RyaXZlcmAgc3RydWN0dXJlJ3MgaW50ZXJuYWxzIGlzIGZ1bmRhbWVudGFsIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemluZy4gSSdsbCBmb2N1cyBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBmcmFtZXdvcmsuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzo0MDowMC40MzY0NjE4NzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2NzUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjU2NzU6XFx0XFx0U1lTVEVNX1NMRUVQX1BNX09QUyhmZWNfc3VzcGVuZCwgZmVjX3Jlc3VtZSlcXG41Njc2OlxcdFxcdFJVTlRJTUVfUE1fT1BTKGZlY19ydW50aW1lX3N1c3BlbmQsIGZlY19ydW50aW1lX3Jlc3VtZSwgTlVMTClcXG41Njc3OlxcdH07XFxuNTY3ODpcXHRcXG41Njc5OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XFxuNTY4MDpcXHRcXHQuZHJpdmVyXFx0PSB7XFxuNTY4MTpcXHRcXHRcXHQubmFtZVxcdD0gRFJJVkVSX05BTUUsXFxuNTY4MjpcXHRcXHRcXHQucG1cXHQ9IHBtX3B0cihcXHUwMDI2ZmVjX3BtX29wcyksXFxuNTY4MzpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBmZWNfZHRfaWRzLFxcbjU2ODQ6XFx0XFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbjU2ODU6XFx0XFx0fSxcXG41Njg2OlxcdFxcdC5pZF90YWJsZSA9IGZlY19kZXZ0eXBlLFxcbjU2ODc6XFx0XFx0LnByb2JlXFx0PSBmZWNfcHJvYmUsXFxuNTY4ODpcXHRcXHQucmVtb3ZlID0gZmVjX2Rydl9yZW1vdmUsXFxuNTY4OTpcXHR9O1xcbjU2OTA6XFx0XFxuNTY5MTpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xcbjU2OTI6XFx0XFxuNTY5MzpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5YUCBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykgZHJpdmVyXFxcIik7XFxuNTY5NDpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjQwOjAwLjQzNjgxNzIwNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTIzMTUxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIEZyZWVzY2FsZSBGRUMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIEZyZWVzY2FsZSBGRUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmZWNfbWFpbi5jYCwgYGZlY19wdHAuY2AsIGFuZCBgZmVjLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gdGhpcyBiZSByZWFsaXN0aWNhbGx5IGZ1enplZCBvbiBvdXIgc3RhbmRhcmQgYW1kNjQgc2V0dXBzIGluIHN5emthbGxlci9RRU1VP1wiIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuRmlyc3QsIEkgc2VlIHRoYXQgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQncyBhIHJlZCBmbGFnLiBJdCdzIG1hdGNoZWQgdmlhIERldmljZSBUcmVlIChgZmVjX2R0X2lkc2ApIG9yIHBsYXRmb3JtIGRldmljZSBJRCB0YWJsZSAoYGZlY19kZXZ0eXBlYCkuIEFuZCB0aGlzIGRyaXZlciBpcyAqY2xlYXJseSogYW4gZW1iZWRkZWQgcGxhdGZvcm0gZHJpdmVyLCB0aWVkIHRvIHNwZWNpZmljIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIFNvQ3MuIFRoZSBgZGVwZW5kcyBvbmAgY29uZGl0aW9ucyAoYE01MjN4IHx8IC4uLiB8fCBBUkNIX01YQyB8fCBBUkNIX1MzMiB8fCAuLi5gKSBjb25maXJtIHRoaXMuIE9uIGFtZDY0LCBpdCdzICpvbmx5KiBjb21waWxlLXRlc3RhYmxlIHZpYSBgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyBpdCdzIG5vdCBkZXNpZ25lZCB0byBydW4gb24gYSBzdGFuZGFyZCB4ODZfNjQgc3lzdGVtLlxuXG5Ob3csIGNhbiB3ZSBldmVuICppbnN0YW50aWF0ZSogYSBGRUMgZGV2aWNlIG9uIGFtZDY0PyBOb3BlLiBObyBBQ1BJIG9yIFBDSSBJRCB0YWJsZXMuIEl0J3MgYWxsIERUIGFuZCBwbGF0Zm9ybSBJRC4gIEFuZCBzaW5jZSBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCwgZXZlbiBtYW51YWwgc3lzZnMgYmluZGluZyBpcyBhIG5vLWdvLlxuXG5UaGlua2luZyBhYm91dCBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgc3l6a2FsbGVyIHByaW1hcmlseSB1c2VzIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBhbmQgUUVNVSBmb3IgYW1kNjQuICBFdmVuIGlmIHdlIHdlcmUgdGFyZ2V0aW5nIEFSTSBvciBDb2xkRmlyZSwgd2UnZCBuZWVkIGEgcGh5c2ljYWwgU29DIG9yIHNwZWNpZmljIFNvQyBlbXVsYXRpb24gKGUuZy4sIGkuTVggRFQpLiBXZSAqZG9uJ3QqIGhhdmUgdGhhdCBvbiB4ODZfNjQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG91ciBmdXp6aW5nIHdvcmtmbG93LlxuXG5MZXQncyBjaGVjayB0aGUgc2VjdGlvbiB0d28gaW5zdHJ1Y3Rpb25zIG9mIHRoZSBkb2N1bWVudCwgdGhlIFwiU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIEhhcmR3YXJlXCIgcGFydC4gWWVwLCBpdCBmaXRzIHBlcmZlY3RseS4gVGhpcyBGRUMgZHJpdmVyIGlzIGFuYWxvZ291cyB0byB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgb3IgTklDIGRyaXZlcnMsIHRoYXQgcmVxdWlyZSBoYXJkd2FyZSBvciBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gb3VyIHR5cGljYWwgUUVNVSBzZXR1cHMuICBXZSdyZSBkZWFsaW5nIHdpdGggYW4gZW1iZWRkZWQgU29DIHBlcmlwaGVyYWwgKENvbGRGaXJlLCBpLk1YLCBTMzIpIHRoYXQgaXNuJ3QgcHJlc2VudCBvbiBhIHN0YW5kYXJkIFBDIG9yIHZpcnR1YWwgbWFjaGluZSBvZiB0aGUga2luZCB1c2VkIGJ5IHN5emthbGxlci5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBvbiB4ODZfNjQvYW1kNjQgdmlhIGBDT01QSUxFX1RFU1RgLCBhbmQgdGhhdCB0aGlzIG1lYW5zIHdlIGNhbid0IHRlc3QgaXQsIEknbSBjb25maWRlbnQgaW4gY29uY2x1ZGluZyB0aGF0IHRoaXMgaXMgKm5vdCogd29ydGggZnV6emluZy4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBjb2RlIHRoYXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkgdW5kZXIgb3VyIHN0YW5kYXJkIGZ1enppbmcgY29uZGl0aW9ucy4gSSdtIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyB0byByZWZsZWN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjcsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6NDA6MDcuMzU5OTcyMjIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTlhQL0ZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykgZHJpdmVyIChmZWNfbWFpbi5jLCBmZWNfcHRwLmMpLCB3aGljaCBpcyBhbiBTb0MgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgQ29sZEZpcmUsIGkuTVgsIGFuZCBTMzIgcHJvY2Vzc29ycy4gT24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KSwgQ09ORklHX0ZFQyBpcyBvbmx5IHNlbGVjdGFibGUgdW5kZXIgQ09NUElMRV9URVNUIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjQwOjA3LjM1OTk5NjYxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n4pb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 06:55:35 +0000 UTC FinishedAt: 2026-09-09 07:40:08 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDA4MjE3N2FlMWQ1YmFhMmQ5MTFhOWM0OTk0ZmY4YWVmNTIzNWUwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDc6Mzk6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG5pbmRleCA3MTc2ODAzMTQ2ZjNkLi44ODMxZGEzNzMyNmIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbkBAIC02OTIsNyAmIzQzOzY5Miw3IEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHtcbiBcdHU2NCBldGh0b29sX3N0YXRzW107XG4gfTtcbiBcbi12b2lkIGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7XG4mIzQzO2ludCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpO1xuIHZvaWQgZmVjX3B0cF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApO1xuIHZvaWQgZmVjX3B0cF9zYXZlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApO1xuIHZvaWQgZmVjX3B0cF9zdG9wKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbmluZGV4IDc5NGVjNDI3YjBlZTYuLmY3NjM2ZjIzZDFlYmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbkBAIC01Mzg0LDggJiM0Mzs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRnb3RvIGZhaWxlZF9yZXNldDtcbiBcbiBcdGlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTtcbi1cdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leClcbi1cdFx0ZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xuJiM0MztcdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leCkge1xuJiM0MztcdFx0cmV0ID0gZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBmYWlsZWRfcmVzZXQ7XG4mIzQzO1x0fVxuIFxuIFx0cmV0ID0gZmVjX2VuZXRfaW5pdChuZGV2KTtcbiBcdGlmIChyZXQpXG5AQCAtNTM5NCwxMiAmIzQzOzUzOTcsMTcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpcnFfY250OyBpJiM0MzsmIzQzOykge1xuIFx0XHRzbnByaW50ZihpcnFfbmFtZSwgc2l6ZW9mKGlycV9uYW1lKSwgXCYjMzQ7aW50JWRcJiMzNDssIGkpO1xuIFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZV9vcHRpb25hbChwZGV2LCBpcnFfbmFtZSk7XG4tXHRcdGlmIChpcnEgXHUwMDNjIDApXG4tXHRcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpKTtcbi1cdFx0aWYgKGlycSBcdTAwM2MgMCkge1xuJiM0MztcdFx0aWYgKGlycSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgaXJxICE9IC1FTlhJTykge1xuIFx0XHRcdHJldCA9IGlycTtcbiBcdFx0XHRnb3RvIGZhaWxlZF9pcnE7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChpcnEgPT0gLUVOWElPKSB7XG4mIzQzO1x0XHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSk7XG4mIzQzO1x0XHRcdGlmIChpcnEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0XHRyZXQgPSBpcnE7XG4mIzQzO1x0XHRcdFx0Z290byBmYWlsZWRfaXJxO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4gXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlycSwgZmVjX2VuZXRfaW50ZXJydXB0LFxuIFx0XHRcdFx0ICAgICAgIDAsIHBkZXYtXHUwMDNlbmFtZSwgbmRldik7XG4gXHRcdGlmIChyZXQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU1N2E3Njc5N2ViYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5AQCAtNzM2LDcgJiM0Mzs3MzYsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZmVjX3Bwc19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuICAqIGN5Y2xlY291bnRlciBpbml0IHJvdXRpbmUgYW5kIGV4aXRzLlxuICAqL1xuIFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuJiM0MztpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwID0gbmV0ZGV2X3ByaXYobmRldik7XG5AQCAtNzc5LDI2ICYjNDM7Nzc5LDMyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0XHQgICAgICBIUlRJTUVSX01PREVfUkVMKTtcbiBcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwmIzM0O3Bwc1wmIzM0Oyk7XG4tXHRpZiAoaXJxIFx1MDAzYyAwKVxuJiM0MztcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4mIzQzO1x0XHRyZXR1cm4gaXJxO1xuJiM0MztcdGlmIChpcnEgPT0gLUVOWElPKSB7XG4gXHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgaXJxX2lkeCk7XG4tXHQvKiBGYWlsdXJlIHRvIGdldCBhbiBpcnEgaXMgbm90IGZhdGFsLFxuLVx0ICogb25seSB0aGUgUFRQX0NMT0NLX1BQUyBjbG9jayBldmVudHMgc2hvdWxkIHN0b3Bcbi1cdCAqL1xuLVx0aWYgKGlycSBcdTAwM2U9IDApIHtcbiYjNDM7XHRcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4mIzQzO1x0XHRcdHJldHVybiBpcnE7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoaXJxIFx1MDAzZSAwKSB7XG4gXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsXG4gXHRcdFx0XHQgICAgICAgMCwgcGRldi1cdTAwM2VuYW1lLCBuZGV2KTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0XHRkZXZfd2FybihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7cmVxdWVzdCBmb3IgcHBzIGlycSBmYWlsZWQoJWQpXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IHJldCk7XG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRmZXAtXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNmZlcC1cdTAwM2VwdHBfY2FwcywgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIFx0aWYgKElTX0VSUihmZXAtXHUwMDNlcHRwX2Nsb2NrKSkge1xuJiM0MztcdFx0cmV0ID0gUFRSX0VSUihmZXAtXHUwMDNlcHRwX2Nsb2NrKTtcbiBcdFx0ZmVwLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4gXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3B0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZmZXAtXHUwMDNldGltZV9rZWVwLCBIWik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOWFAvRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlciAoRkVDKSBkcml2ZXIgKGZlY19tYWluLmMsIGZlY19wdHAuYyksIHdoaWNoIGlzIGFuIFNvQyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBDb2xkRmlyZSwgaS5NWCwgYW5kIFMzMiBwcm9jZXNzb3JzLiBPbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLCBDT05GSUdfRkVDIGlzIG9ubHkgc2VsZWN0YWJsZSB1bmRlciBDT01QSUxFX1RFU1QgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQwODIxNzdhZTFkNWJhYTJkOTExYTljNDk5NGZmOGFlZjUyMzVlMDgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDA3OjM5OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oCmluZGV4IDcxNzY4MDMxNDZmM2QuLjg4MzFkYTM3MzI2YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgKQEAgLTY5Miw3ICYjNDM7NjkyLDcgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgewogCXU2NCBldGh0b29sX3N0YXRzW107CiB9OwogCi12b2lkIGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7CiYjNDM7aW50IGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7CiB2b2lkIGZlY19wdHBfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTsKIHZvaWQgZmVjX3B0cF9zYXZlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApOwogdm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCmluZGV4IDc5NGVjNDI3YjBlZTYuLmY3NjM2ZjIzZDFlYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCkBAIC01Mzg0LDggJiM0Mzs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIGZhaWxlZF9yZXNldDsKIAogCWlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTsKLQlpZiAoZmVwLSZndDtidWZkZXNjX2V4KQotCQlmZWNfcHRwX2luaXQocGRldiwgaXJxX2NudCk7CiYjNDM7CWlmIChmZXAtJmd0O2J1ZmRlc2NfZXgpIHsKJiM0MzsJCXJldCA9IGZlY19wdHBfaW5pdChwZGV2LCBpcnFfY250KTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJZ290byBmYWlsZWRfcmVzZXQ7CiYjNDM7CX0KIAogCXJldCA9IGZlY19lbmV0X2luaXQobmRldik7CiAJaWYgKHJldCkKQEAgLTUzOTQsMTIgJiM0Mzs1Mzk3LDE3IEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWZvciAoaSA9IDA7IGkgJmx0OyBpcnFfY250OyBpJiM0MzsmIzQzOykgewogCQlzbnByaW50ZihpcnFfbmFtZSwgc2l6ZW9mKGlycV9uYW1lKSwgJiMzNDtpbnQlZCYjMzQ7LCBpKTsKIAkJaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWVfb3B0aW9uYWwocGRldiwgaXJxX25hbWUpOwotCQlpZiAoaXJxICZsdDsgMCkKLQkJCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSk7Ci0JCWlmIChpcnEgJmx0OyAwKSB7CiYjNDM7CQlpZiAoaXJxICZsdDsgMCAmYW1wOyZhbXA7IGlycSAhPSAtRU5YSU8pIHsKIAkJCXJldCA9IGlycTsKIAkJCWdvdG8gZmFpbGVkX2lycTsKIAkJfQomIzQzOwkJaWYgKGlycSA9PSAtRU5YSU8pIHsKJiM0MzsJCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpOwomIzQzOwkJCWlmIChpcnEgJmx0OyAwKSB7CiYjNDM7CQkJCXJldCA9IGlycTsKJiM0MzsJCQkJZ290byBmYWlsZWRfaXJxOwomIzQzOwkJCX0KJiM0MzsJCX0KIAkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmYW1wO3BkZXYtJmd0O2RldiwgaXJxLCBmZWNfZW5ldF9pbnRlcnJ1cHQsCiAJCQkJICAgICAgIDAsIHBkZXYtJmd0O25hbWUsIG5kZXYpOwogCQlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMKaW5kZXggNTY4MDFjMjAwOWQ1OS4uNTU3YTc2Nzk3ZWJhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jCkBAIC03MzYsNyAmIzQzOzczNiw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmZWNfcHBzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAgKiBjeWNsZWNvdW50ZXIgaW5pdCByb3V0aW5lIGFuZCBleGl0cy4KICAqLwogCi12b2lkIGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCkKJiM0MztpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAJc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtNzc5LDI2ICYjNDM7Nzc5LDMyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KQogCQkgICAgICBIUlRJTUVSX01PREVfUkVMKTsKIAogCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsICYjMzQ7cHBzJiMzNDspOwotCWlmIChpcnEgJmx0OyAwKQomIzQzOwlpZiAoaXJxICZsdDsgMCAmYW1wOyZhbXA7IGlycSAhPSAtRU5YSU8pCiYjNDM7CQlyZXR1cm4gaXJxOwomIzQzOwlpZiAoaXJxID09IC1FTlhJTykgewogCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpOwotCS8qIEZhaWx1cmUgdG8gZ2V0IGFuIGlycSBpcyBub3QgZmF0YWwsCi0JICogb25seSB0aGUgUFRQX0NMT0NLX1BQUyBjbG9jayBldmVudHMgc2hvdWxkIHN0b3AKLQkgKi8KLQlpZiAoaXJxICZndDs9IDApIHsKJiM0MzsJCWlmIChpcnEgJmx0OyAwICZhbXA7JmFtcDsgaXJxICE9IC1FTlhJTykKJiM0MzsJCQlyZXR1cm4gaXJxOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChpcnEgJmd0OyAwKSB7CiAJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmFtcDtwZGV2LSZndDtkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsCiAJCQkJICAgICAgIDAsIHBkZXYtJmd0O25hbWUsIG5kZXYpOwogCQlpZiAocmV0ICZsdDsgMCkKLQkJCWRldl93YXJuKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O3JlcXVlc3QgZm9yIHBwcyBpcnEgZmFpbGVkKCVkKVxuJiMzNDssCi0JCQkJIHJldCk7CiYjNDM7CQkJcmV0dXJuIHJldDsKIAl9CiAKIAlmZXAtJmd0O3B0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2ZlcC0mZ3Q7cHRwX2NhcHMsICZhbXA7cGRldi0mZ3Q7ZGV2KTsKIAlpZiAoSVNfRVJSKGZlcC0mZ3Q7cHRwX2Nsb2NrKSkgewomIzQzOwkJcmV0ID0gUFRSX0VSUihmZXAtJmd0O3B0cF9jbG9jayk7CiAJCWZlcC0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKIAkJZGV2X2VycigmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDtwdHBfY2xvY2tfcmVnaXN0ZXIgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwogCX0KIAogCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO2ZlcC0mZ3Q7dGltZV9rZWVwLCBIWik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIFBhdGNoJiMzOTtzIFN1aXRhYmlsaXR5IGZvciBTeXprYWxsZXIgRnV6emluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgZGV0YWlscy4gSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNgLiBUaGF0JiMzOTtzIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgYW5kIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgdGhlIEZyZWVzY2FsZSBGRUMsIHRoZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGlzIGlzIGEgcGxhdGZvcm0gZGV2aWNlIG9yIGEgUENJIGRldmljZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGZlY19tYWluLmNgIHNvdXJjZSBjb2RlLCBwcm9iYWJseSB3aXRoIGEgcXVpY2sgc2NhbiwgYW5kIHRoZW4gY3Jvc3MtcmVmZXJlbmNlIHdpdGggdGhlIEtjb25maWcgZmlsZXMgdG8gY29uZmlybSBkZXZpY2UgdHlwZS4KClRpbWUgdG8gbGV2ZXJhZ2UgbXkgdG9vbHMuIEnigJlsbCBzdGFydCBkaWdnaW5nIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGRUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjE9aWYgTkVUX1ZFTkRPUl9GUkVFU0NBTEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MjM6Y29uZmlnIEZFQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtGRUMgZXRoZXJuZXQgY29udHJvbGxlciAob2YgQ29sZEZpcmUgYW5kIHNvbWUgaS5NWCBDUFVzKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6Mzk6Y29uZmlnIEZFQ19NUEM1Mnh4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O0ZFQyBNUEM1Mnh4IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTA6Y29uZmlnIEZFQ19NUEM1Mnh4X01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtGRUMgTVBDNTJ4eCBNRElPIGJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEZyZWVzY2FsZSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgRnJlZXNjYWxlIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGEgcGFydGljdWxhciBpc3N1ZSBJJiMzOTttIHRyb3VibGVzaG9vdGluZy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGBLY29uZmlnYCBmaWxlLiBJJiMzOTttIHRoaW5raW5nIHRoZSByZWxldmFudCBzZWN0aW9uIGlzIHByb2JhYmx5IGFyb3VuZCBsaW5lcyAyMCB0byAzOCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYC4gVGhhdCByYW5nZSBzaG91bGQgY292ZXIgdGhlIGNvcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgZ3JpcCBvbiBob3cgdGhpbmdzIGFyZSBzdHJ1Y3R1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gSSYjMzk7bGwgZm9jdXMgb24gd2hhdCYjMzk7cyBkZWZpbmVkIGluIHRoYXQgc2VjdGlvbiB0byBzZWUgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZGl0aW9uYWxseSBjb25maWd1cmVkIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBpbiBxdWVzdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlbGluZSB0byBjb25maXJtIG15IGluaXRpYWwgaHlwb3RoZXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFxuICAyMTpcdGlmIE5FVF9WRU5ET1JfRlJFRVNDQUxFXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIEZFQ1xuICAyNDpcdFx0dHJpc3RhdGUgXCYjMzQ7RkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcJiMzNDtcbiAgMjU6XHRcdGRlcGVuZHMgb24gKE01MjN4IHx8IE01Mjd4IHx8IE01MjcyIHx8IE01Mjh4IHx8IE01MjB4IHx8IE01MzJ4IHx8IFxcXG4gIDI2Olx0XHRcdCAgIEFSQ0hfTVhDIHx8IEFSQ0hfUzMyIHx8IFNPQ19JTVgyOCB8fCBDT01QSUxFX1RFU1QpXG4gIDI3Olx0XHRkZWZhdWx0IEFSQ0hfTVhDIHx8IFNPQ19JTVgyOCBpZiBBUk1cbiAgMjg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMjk6XHRcdHNlbGVjdCBDUkMzMlxuICAzMDpcdFx0c2VsZWN0IFBIWUxJQlxuICAzMTpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICAzMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAzMzpcdFx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4gIDM0Olx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBidWlsdC1pbiAxMC8xMDAgRmFzdCBldGhlcm5ldFxuICAzNzpcdFx0ICBjb250cm9sbGVyIG9uIHNvbWUgTW90b3JvbGEgQ29sZEZpcmUgYW5kIEZyZWVzY2FsZSBpLk1YL1MzMiBwcm9jZXNzb3JzLlxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBGRUNfTVBDNTJ4eFxuICA0MDpcdFx0dHJpc3RhdGUgXCYjMzQ7RkVDIE1QQzUyeHggZHJpdmVyXCYjMzQ7XG4gIDQxOlx0XHRkZXBlbmRzIG9uIFBQQ19NUEM1Mnh4IFx1MDAyNlx1MDAyNiBQUENfQkVTVENPTU1cbiAgNDI6XHRcdHNlbGVjdCBDUkMzMlxuICA0MzpcdFx0c2VsZWN0IFBIWUxJQlxuICA0NDpcdFx0c2VsZWN0IFBQQ19CRVNUQ09NTV9GRUNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjA0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGF0IHF1ZXJ5LCBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEZFQyBEcml2ZXIgUmVnaXN0cmF0aW9uIE1ldGhvZCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaG93IHRoZSBGRUMgZHJpdmVyIGlzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgb2J2aW91cyBmaXJzdCBwbGFjZSB0byBjaGVjayBpcyBgZmVjX21haW4uY2AuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCB0aGUgZnVuZGFtZW50YWwgd2F5cyBkcml2ZXJzIGFyZSBob29rZWQgaW50byB0aGUga2VybmVsLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqcmVnaXN0cmF0aW9uIG1ldGhvZCoqLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIHRocm91Z2ggdGhlIG1vc3QgY29tbW9uIHNjZW5hcmlvczoKCiogICAqKlBsYXRmb3JtIGRyaXZlcjoqKiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBmcmFtZXdvcms/IFRoYXQmIzM5O3MgYSBzdHJvbmcgcG9zc2liaWxpdHkgZm9yIGVtYmVkZGVkIHN5c3RlbXMsIGFuZCBpdCYjMzk7cyBzb21ldGhpbmcgSSYjMzk7ZCBleHBlY3QgdG8gc2VlLiBTbywgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcmAgb3Igc2ltaWxhci4KKiAgICoqRGV2aWNlIFRyZWUgKE9GKSBtYXRjaGluZzoqKiBOZXh0IHVwLCB0aGUgRGV2aWNlIFRyZWUgaXMgYSB2ZXJ5IGNvbW1vbiB3YXkgdG8gZGVzY3JpYmUgaGFyZHdhcmUgaW4gZW1iZWRkZWQgc3lzdGVtcy4gSSYjMzk7bGwgYmUgc2VhcmNoaW5nIGZvciBgb2ZfbWF0Y2hfdGFibGVgIG9yIGZ1bmN0aW9ucyByZWxhdGVkIHRvIERldmljZSBUcmVlIGxvb2t1cHMuCiogICAqKkFDUEk6KiogSWYgdGhpcyBpcyBhIHN5c3RlbSB0aGF0IHVzZXMgQUNQSSwgdGhlcmUmIzM5O3MgYSBzdHJvbmcgY2hhbmNlIGl0JiMzOTtzIHVzaW5nIHRoZSBBQ1BJIGRyaXZlciBmcmFtZXdvcmsuIFRoaXMgbWVhbnMgbG9va2luZyBmb3IgQUNQSS1zcGVjaWZpYyByZWdpc3RyYXRpb24gZnVuY3Rpb25zLgoqICAgKipQQ0k6KiogRmluYWxseSwgZXZlbiB0aG91Z2ggRkVDIGlzIHR5cGljYWxseSBhc3NvY2lhdGVkIHdpdGggZW1iZWRkZWQgc3lzdGVtcywgaXQgKmNvdWxkKiBiZSBhIFBDSSBkZXZpY2UgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucy4gU28gSSYjMzk7bGwgYWxzbyBjaGVjayBmb3IgUENJLXJlbGF0ZWQgcmVnaXN0cmF0aW9uLCBqdXN0IHRvIGNvdmVyIGFsbCB0aGUgYmFzZXMuIEkmIzM5O2QgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBkcml2ZXIgcmVnaXN0cmF0aW9uIGNhbGxzLgoKSSYjMzk7bSBlc3NlbnRpYWxseSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIGNvcmUgbWVjaGFuaXNtIHRoZSBjb2RlIGVtcGxveXMgdG8gYmluZCB0aGUgZHJpdmVyIHRvIHRoZSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZlY19wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2Nzk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZmVjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU2ODAtXHQuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTY5MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY5Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBmZWNfZHJpdmVyYCBTdHJ1Y3R1cmUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIEZFQyBkcml2ZXIgd29ya3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byB0aGUgYGZlY19tYWluLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBhbmQgaXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZWZpbml0aW9ucywgbGlrZWx5IGluY2x1ZGluZyB0aGUgYGZlY19kcml2ZXJgIHN0cnVjdHVyZS4gSSB3YW50IHRvIHNlZSBob3cgdGhhdCBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCwgd2hhdCBmaWVsZHMgaXQgY29udGFpbnMsIGFuZCBtb3N0IGltcG9ydGFudGx5LCBob3cgdGhvc2UgZmllbGRzIGFyZSB1c2VkIHdpdGhpbiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBhbmQgb3BlcmF0aW9uIG9mIHRoZSBkcml2ZXIuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZWxlbWVudHMgdGhhdCBkcml2ZSB0aGUgcGh5c2ljYWwgbGF5ZXIuIEtub3dpbmcgdGhlIGBmZWNfZHJpdmVyYCBzdHJ1Y3R1cmUmIzM5O3MgaW50ZXJuYWxzIGlzIGZ1bmRhbWVudGFsIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemluZy4gSSYjMzk7bGwgZm9jdXMgb24gaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2NzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NTY3NTpcdFx0U1lTVEVNX1NMRUVQX1BNX09QUyhmZWNfc3VzcGVuZCwgZmVjX3Jlc3VtZSlcbjU2NzY6XHRcdFJVTlRJTUVfUE1fT1BTKGZlY19ydW50aW1lX3N1c3BlbmQsIGZlY19ydW50aW1lX3Jlc3VtZSwgTlVMTClcbjU2Nzc6XHR9O1xuNTY3ODpcdFxuNTY3OTpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XG41NjgwOlx0XHQuZHJpdmVyXHQ9IHtcbjU2ODE6XHRcdFx0Lm5hbWVcdD0gRFJJVkVSX05BTUUsXG41NjgyOlx0XHRcdC5wbVx0PSBwbV9wdHIoXHUwMDI2ZmVjX3BtX29wcyksXG41NjgzOlx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IGZlY19kdF9pZHMsXG41Njg0Olx0XHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbjU2ODU6XHRcdH0sXG41Njg2Olx0XHQuaWRfdGFibGUgPSBmZWNfZGV2dHlwZSxcbjU2ODc6XHRcdC5wcm9iZVx0PSBmZWNfcHJvYmUsXG41Njg4Olx0XHQucmVtb3ZlID0gZmVjX2Rydl9yZW1vdmUsXG41Njg5Olx0fTtcbjU2OTA6XHRcbjU2OTE6XHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xuNTY5MjpcdFxuNTY5MzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtOWFAgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlclwmIzM0Oyk7XG41Njk0Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyNwoJCQkJCQkJb3V0cHV0OiAxMzEKCQkJCQkJCXRob3VnaHRzOiA4MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiB0aGUgRnJlZXNjYWxlIEZFQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBGcmVlc2NhbGUgRkVDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZmVjX21haW4uY2AsIGBmZWNfcHRwLmNgLCBhbmQgYGZlYy5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgYmUgcmVhbGlzdGljYWxseSBmdXp6ZWQgb24gb3VyIHN0YW5kYXJkIGFtZDY0IHNldHVwcyBpbiBzeXprYWxsZXIvUUVNVT8mIzM0OyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKRmlyc3QsIEkgc2VlIHRoYXQgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSXQmIzM5O3MgbWF0Y2hlZCB2aWEgRGV2aWNlIFRyZWUgKGBmZWNfZHRfaWRzYCkgb3IgcGxhdGZvcm0gZGV2aWNlIElEIHRhYmxlIChgZmVjX2RldnR5cGVgKS4gQW5kIHRoaXMgZHJpdmVyIGlzICpjbGVhcmx5KiBhbiBlbWJlZGRlZCBwbGF0Zm9ybSBkcml2ZXIsIHRpZWQgdG8gc3BlY2lmaWMgQ29sZEZpcmUsIGkuTVgsIGFuZCBTMzIgU29Dcy4gVGhlIGBkZXBlbmRzIG9uYCBjb25kaXRpb25zIChgTTUyM3ggfHwgLi4uIHx8IEFSQ0hfTVhDIHx8IEFSQ0hfUzMyIHx8IC4uLmApIGNvbmZpcm0gdGhpcy4gT24gYW1kNjQsIGl0JiMzOTtzICpvbmx5KiBjb21waWxlLXRlc3RhYmxlIHZpYSBgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyBpdCYjMzk7cyBub3QgZGVzaWduZWQgdG8gcnVuIG9uIGEgc3RhbmRhcmQgeDg2XzY0IHN5c3RlbS4KCk5vdywgY2FuIHdlIGV2ZW4gKmluc3RhbnRpYXRlKiBhIEZFQyBkZXZpY2Ugb24gYW1kNjQ/IE5vcGUuIE5vIEFDUEkgb3IgUENJIElEIHRhYmxlcy4gSXQmIzM5O3MgYWxsIERUIGFuZCBwbGF0Zm9ybSBJRC4gIEFuZCBzaW5jZSBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCwgZXZlbiBtYW51YWwgc3lzZnMgYmluZGluZyBpcyBhIG5vLWdvLgoKVGhpbmtpbmcgYWJvdXQgb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIHN5emthbGxlciBwcmltYXJpbHkgdXNlcyBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UgYW5kIFFFTVUgZm9yIGFtZDY0LiAgRXZlbiBpZiB3ZSB3ZXJlIHRhcmdldGluZyBBUk0gb3IgQ29sZEZpcmUsIHdlJiMzOTtkIG5lZWQgYSBwaHlzaWNhbCBTb0Mgb3Igc3BlY2lmaWMgU29DIGVtdWxhdGlvbiAoZS5nLiwgaS5NWCBEVCkuIFdlICpkb24mIzM5O3QqIGhhdmUgdGhhdCBvbiB4ODZfNjQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG91ciBmdXp6aW5nIHdvcmtmbG93LgoKTGV0JiMzOTtzIGNoZWNrIHRoZSBzZWN0aW9uIHR3byBpbnN0cnVjdGlvbnMgb2YgdGhlIGRvY3VtZW50LCB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgVW5yZWFjaGFibGUgSGFyZHdhcmUmIzM0OyBwYXJ0LiBZZXAsIGl0IGZpdHMgcGVyZmVjdGx5LiBUaGlzIEZFQyBkcml2ZXIgaXMgYW5hbG9nb3VzIHRvIHRob3NlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBvciBOSUMgZHJpdmVycywgdGhhdCByZXF1aXJlIGhhcmR3YXJlIG9yIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBvdXIgdHlwaWNhbCBRRU1VIHNldHVwcy4gIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gZW1iZWRkZWQgU29DIHBlcmlwaGVyYWwgKENvbGRGaXJlLCBpLk1YLCBTMzIpIHRoYXQgaXNuJiMzOTt0IHByZXNlbnQgb24gYSBzdGFuZGFyZCBQQyBvciB2aXJ0dWFsIG1hY2hpbmUgb2YgdGhlIGtpbmQgdXNlZCBieSBzeXprYWxsZXIuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIG9uIHg4Nl82NC9hbWQ2NCB2aWEgYENPTVBJTEVfVEVTVGAsIGFuZCB0aGF0IHRoaXMgbWVhbnMgd2UgY2FuJiMzOTt0IHRlc3QgaXQsIEkmIzM5O20gY29uZmlkZW50IGluIGNvbmNsdWRpbmcgdGhhdCB0aGlzIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgY29kZSB0aGF0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpIHVuZGVyIG91ciBzdGFuZGFyZCBmdXp6aW5nIGNvbmRpdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIHRvIHJlZmxlY3QgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTlhQL0ZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykgZHJpdmVyIChmZWNfbWFpbi5jLCBmZWNfcHRwLmMpLCB3aGljaCBpcyBhbiBTb0MgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgQ29sZEZpcmUsIGkuTVgsIGFuZCBTMzIgcHJvY2Vzc29ycy4gT24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KSwgQ09ORklHX0ZFQyBpcyBvbmx5IHNlbGVjdGFibGUgdW5kZXIgQ09NUElMRV9URVNUIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOWFAvRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlciAoRkVDKSBkcml2ZXIgKGZlY19tYWluLmMsIGZlY19wdHAuYyksIHdoaWNoIGlzIGFuIFNvQyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBDb2xkRmlyZSwgaS5NWCwgYW5kIFMzMiBwcm9jZXNzb3JzLiBPbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLCBDT05GSUdfRkVDIGlzIG9ubHkgc2VsZWN0YWJsZSB1bmRlciBDT01QSUxFX1RFU1QgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDc6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjQwLjE0NTAxNTA1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjE0OTkyMjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzozOTo0MC4xNDUwMjEwNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzAxMTUxNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMDgyMTc3YWUxZDViYWEyZDkxMWE5YzQ5OTRmZjhhZWY1MjM1ZTA4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMDc6Mzk6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXFxuaW5kZXggNzE3NjgwMzE0NmYzZC4uODgzMWRhMzczMjZiMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcXG5AQCAtNjkyLDcgKzY5Miw3IEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHtcXG4gXFx0dTY0IGV0aHRvb2xfc3RhdHNbXTtcXG4gfTtcXG4gXFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KTtcXG4raW50IGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeCk7XFxuIHZvaWQgZmVjX3B0cF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApO1xcbiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcXG4gdm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcXG5pbmRleCA3OTRlYzQyN2IwZWU2Li5mNzYzNmYyM2QxZWJiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcXG5AQCAtNTM4NCw4ICs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRnb3RvIGZhaWxlZF9yZXNldDtcXG4gXFxuIFxcdGlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTtcXG4tXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG4tXFx0XFx0ZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xcbitcXHRpZiAoZmVwLVxcdTAwM2VidWZkZXNjX2V4KSB7XFxuK1xcdFxcdHJldCA9IGZlY19wdHBfaW5pdChwZGV2LCBpcnFfY250KTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0Z290byBmYWlsZWRfcmVzZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdHJldCA9IGZlY19lbmV0X2luaXQobmRldik7XFxuIFxcdGlmIChyZXQpXFxuQEAgLTUzOTQsMTIgKzUzOTcsMTcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBpcnFfY250OyBpKyspIHtcXG4gXFx0XFx0c25wcmludGYoaXJxX25hbWUsIHNpemVvZihpcnFfbmFtZSksIFxcXCJpbnQlZFxcXCIsIGkpO1xcbiBcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZV9vcHRpb25hbChwZGV2LCBpcnFfbmFtZSk7XFxuLVxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbi1cXHRcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpO1xcbi1cXHRcXHRpZiAoaXJxIFxcdTAwM2MgMCkge1xcbitcXHRcXHRpZiAoaXJxIFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBpcnEgIT0gLUVOWElPKSB7XFxuIFxcdFxcdFxcdHJldCA9IGlycTtcXG4gXFx0XFx0XFx0Z290byBmYWlsZWRfaXJxO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChpcnEgPT0gLUVOWElPKSB7XFxuK1xcdFxcdFxcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSk7XFxuK1xcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdFxcdHJldCA9IGlycTtcXG4rXFx0XFx0XFx0XFx0Z290byBmYWlsZWRfaXJxO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBpcnEsIGZlY19lbmV0X2ludGVycnVwdCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIDAsIHBkZXYtXFx1MDAzZW5hbWUsIG5kZXYpO1xcbiBcXHRcXHRpZiAocmV0KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU1N2E3Njc5N2ViYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcXG5AQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmZWNfcHBzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuICAqIGN5Y2xlY291bnRlciBpbml0IHJvdXRpbmUgYW5kIGV4aXRzLlxcbiAgKi9cXG4gXFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbitpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuIFxcdHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5AQCAtNzc5LDI2ICs3NzksMzIgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpXFxuIFxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9SRUwpO1xcbiBcXG4gXFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWVfb3B0aW9uYWwocGRldiwgXFxcInBwc1xcXCIpO1xcbi1cXHRpZiAoaXJxIFxcdTAwM2MgMClcXG4rXFx0aWYgKGlycSBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgaXJxICE9IC1FTlhJTylcXG4rXFx0XFx0cmV0dXJuIGlycTtcXG4rXFx0aWYgKGlycSA9PSAtRU5YSU8pIHtcXG4gXFx0XFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCBpcnFfaWR4KTtcXG4tXFx0LyogRmFpbHVyZSB0byBnZXQgYW4gaXJxIGlzIG5vdCBmYXRhbCxcXG4tXFx0ICogb25seSB0aGUgUFRQX0NMT0NLX1BQUyBjbG9jayBldmVudHMgc2hvdWxkIHN0b3BcXG4tXFx0ICovXFxuLVxcdGlmIChpcnEgXFx1MDAzZT0gMCkge1xcbitcXHRcXHRpZiAoaXJxIFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBpcnEgIT0gLUVOWElPKVxcbitcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaXJxIFxcdTAwM2UgMCkge1xcbiBcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsXFxuIFxcdFxcdFxcdFxcdCAgICAgICAwLCBwZGV2LVxcdTAwM2VuYW1lLCBuZGV2KTtcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJyZXF1ZXN0IGZvciBwcHMgaXJxIGZhaWxlZCglZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdCByZXQpO1xcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbiBcXHRmZXAtXFx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcXHUwMDI2ZmVwLVxcdTAwM2VwdHBfY2FwcywgXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIFxcdGlmIChJU19FUlIoZmVwLVxcdTAwM2VwdHBfY2xvY2spKSB7XFxuK1xcdFxcdHJldCA9IFBUUl9FUlIoZmVwLVxcdTAwM2VwdHBfY2xvY2spO1xcbiBcXHRcXHRmZXAtXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInB0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbiBcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNmZlcC1cXHUwMDNldGltZV9rZWVwLCBIWik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gdm9pZCBmZWNfcHRwX3NhdmVfc3RhdGUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6Mzk6NDEuNTE2MDQyODg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNTg0Mzk1MTg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQwODIxNzdhZTFkNWJhYTJkOTExYTljNDk5NGZmOGFlZjUyMzVlMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDA3OjM5OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG5pbmRleCA3MTc2ODAzMTQ2ZjNkLi44ODMxZGEzNzMyNmIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbkBAIC02OTIsNyArNjkyLDcgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUge1xuIFx0dTY0IGV0aHRvb2xfc3RhdHNbXTtcbiB9O1xuIFxuLXZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KTtcbitpbnQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KTtcbiB2b2lkIGZlY19wdHBfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcbiB2b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcbiB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXG5pbmRleCA3OTRlYzQyN2IwZWU2Li5mNzYzNmYyM2QxZWJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXG5AQCAtNTM4NCw4ICs1Mzg0LDExIEBAIGZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRnb3RvIGZhaWxlZF9yZXNldDtcbiBcbiBcdGlycV9jbnQgPSBmZWNfZW5ldF9nZXRfaXJxX2NudChwZGV2KTtcbi1cdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leClcbi1cdFx0ZmVjX3B0cF9pbml0KHBkZXYsIGlycV9jbnQpO1xuK1x0aWYgKGZlcC1cdTAwM2VidWZkZXNjX2V4KSB7XG4rXHRcdHJldCA9IGZlY19wdHBfaW5pdChwZGV2LCBpcnFfY250KTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRnb3RvIGZhaWxlZF9yZXNldDtcbitcdH1cbiBcbiBcdHJldCA9IGZlY19lbmV0X2luaXQobmRldik7XG4gXHRpZiAocmV0KVxuQEAgLTUzOTQsMTIgKzUzOTcsMTcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpcnFfY250OyBpKyspIHtcbiBcdFx0c25wcmludGYoaXJxX25hbWUsIHNpemVvZihpcnFfbmFtZSksIFwiaW50JWRcIiwgaSk7XG4gXHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIGlycV9uYW1lKTtcbi1cdFx0aWYgKGlycSBcdTAwM2MgMClcbi1cdFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpO1xuLVx0XHRpZiAoaXJxIFx1MDAzYyAwKSB7XG4rXHRcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pIHtcbiBcdFx0XHRyZXQgPSBpcnE7XG4gXHRcdFx0Z290byBmYWlsZWRfaXJxO1xuIFx0XHR9XG4rXHRcdGlmIChpcnEgPT0gLUVOWElPKSB7XG4rXHRcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpKTtcbitcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKSB7XG4rXHRcdFx0XHRyZXQgPSBpcnE7XG4rXHRcdFx0XHRnb3RvIGZhaWxlZF9pcnE7XG4rXHRcdFx0fVxuK1x0XHR9XG4gXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlycSwgZmVjX2VuZXRfaW50ZXJydXB0LFxuIFx0XHRcdFx0ICAgICAgIDAsIHBkZXYtXHUwMDNlbmFtZSwgbmRldik7XG4gXHRcdGlmIChyZXQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU1N2E3Njc5N2ViYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5AQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmZWNfcHBzX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4gICogY3ljbGVjb3VudGVyIGluaXQgcm91dGluZSBhbmQgZXhpdHMuXG4gICovXG4gXG4tdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpXG4raW50IGZlY19wdHBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaXJxX2lkeClcbiB7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTc3OSwyNiArNzc5LDMyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0XHQgICAgICBIUlRJTUVSX01PREVfUkVMKTtcbiBcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwicHBzXCIpO1xuLVx0aWYgKGlycSBcdTAwM2MgMClcbitcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4rXHRcdHJldHVybiBpcnE7XG4rXHRpZiAoaXJxID09IC1FTlhJTykge1xuIFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpO1xuLVx0LyogRmFpbHVyZSB0byBnZXQgYW4gaXJxIGlzIG5vdCBmYXRhbCxcbi1cdCAqIG9ubHkgdGhlIFBUUF9DTE9DS19QUFMgY2xvY2sgZXZlbnRzIHNob3VsZCBzdG9wXG4tXHQgKi9cbi1cdGlmIChpcnEgXHUwMDNlPSAwKSB7XG4rXHRcdGlmIChpcnEgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGlycSAhPSAtRU5YSU8pXG4rXHRcdFx0cmV0dXJuIGlycTtcbitcdH1cbitcbitcdGlmIChpcnEgXHUwMDNlIDApIHtcbiBcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgaXJxLCBmZWNfcHBzX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgICAgICAwLCBwZGV2LVx1MDAzZW5hbWUsIG5kZXYpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcInJlcXVlc3QgZm9yIHBwcyBpcnEgZmFpbGVkKCVkKVxcblwiLFxuLVx0XHRcdFx0IHJldCk7XG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdGZlcC1cdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXHUwMDI2ZmVwLVx1MDAzZXB0cF9jYXBzLCBcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gXHRpZiAoSVNfRVJSKGZlcC1cdTAwM2VwdHBfY2xvY2spKSB7XG4rXHRcdHJldCA9IFBUUl9FUlIoZmVwLVx1MDAzZXB0cF9jbG9jayk7XG4gXHRcdGZlcC1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuIFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcInB0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2ZmVwLVx1MDAzZXRpbWVfa2VlcCwgSFopO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHZvaWQgZmVjX3B0cF9zYXZlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzozOTo0MS41MTYwNDQ4MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTEwNzI3NDgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFdmFsdWF0aW5nIHRoZSBQYXRjaCdzIFN1aXRhYmlsaXR5IGZvciBTeXprYWxsZXIgRnV6emluZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBkZXRhaWxzLiBJIHNlZSB0aGUgY2hhbmdlcyBhcmUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaGAsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY2AuIFRoYXQncyBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgYW5kIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgdGhlIEZyZWVzY2FsZSBGRUMsIHRoZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGlzIGlzIGEgcGxhdGZvcm0gZGV2aWNlIG9yIGEgUENJIGRldmljZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZmVjX21haW4uY2Agc291cmNlIGNvZGUsIHByb2JhYmx5IHdpdGggYSBxdWljayBzY2FuLCBhbmQgdGhlbiBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyB0byBjb25maXJtIGRldmljZSB0eXBlLlxuXG5UaW1lIHRvIGxldmVyYWdlIG15IHRvb2xzLiBJ4oCZbGwgc3RhcnQgZGlnZ2luZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2MCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjUyLjYyMzMyMjczNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYxNjY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRkVDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMT1pZiBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjIzOmNvbmZpZyBGRUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozOTpjb25maWcgRkVDX01QQzUyeHhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiRkVDIE1QQzUyeHggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTA6Y29uZmlnIEZFQ19NUEM1Mnh4X01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01MS1cXHRib29sIFxcXCJGRUMgTVBDNTJ4eCBNRElPIGJ1cyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjUyLjY2Nzk0MzE1N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDg4MDk4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBGcmVlc2NhbGUgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgRnJlZXNjYWxlIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGEgcGFydGljdWxhciBpc3N1ZSBJJ20gdHJvdWJsZXNob290aW5nLiBMZXQncyBzdGFydCB3aXRoIHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSdtIHRoaW5raW5nIHRoZSByZWxldmFudCBzZWN0aW9uIGlzIHByb2JhYmx5IGFyb3VuZCBsaW5lcyAyMCB0byAzOCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYC4gVGhhdCByYW5nZSBzaG91bGQgY292ZXIgdGhlIGNvcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgSSdtIGludGVyZXN0ZWQgaW4sIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEZyb20gdGhlcmUsIEkgY2FuIGdldCBhIGJldHRlciBncmlwIG9uIGhvdyB0aGluZ3MgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBJJ2xsIGZvY3VzIG9uIHdoYXQncyBkZWZpbmVkIGluIHRoYXQgc2VjdGlvbiB0byBzZWUgd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbmZpZ3VyZWQgYmFzZWQgb24gdGhlIGhhcmR3YXJlIGluIHF1ZXN0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2VsaW5lIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTQwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6Mzk6NTUuMTc2NzU1MzczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFxuICAyMTpcXHRpZiBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcbiAgMjI6XFx0XFxuICAyMzpcXHRjb25maWcgRkVDXFxuICAyNDpcXHRcXHR0cmlzdGF0ZSBcXFwiRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcXFwiXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIChNNTIzeCB8fCBNNTI3eCB8fCBNNTI3MiB8fCBNNTI4eCB8fCBNNTIweCB8fCBNNTMyeCB8fCBcXFxcXFxuICAyNjpcXHRcXHRcXHQgICBBUkNIX01YQyB8fCBBUkNIX1MzMiB8fCBTT0NfSU1YMjggfHwgQ09NUElMRV9URVNUKVxcbiAgMjc6XFx0XFx0ZGVmYXVsdCBBUkNIX01YQyB8fCBTT0NfSU1YMjggaWYgQVJNXFxuICAyODpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyOTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDMxOlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gIDMyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDMzOlxcdFxcdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xcbiAgMzQ6XFx0XFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgYnVpbHQtaW4gMTAvMTAwIEZhc3QgZXRoZXJuZXRcXG4gIDM3OlxcdFxcdCAgY29udHJvbGxlciBvbiBzb21lIE1vdG9yb2xhIENvbGRGaXJlIGFuZCBGcmVlc2NhbGUgaS5NWC9TMzIgcHJvY2Vzc29ycy5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIEZFQ19NUEM1Mnh4XFxuICA0MDpcXHRcXHR0cmlzdGF0ZSBcXFwiRkVDIE1QQzUyeHggZHJpdmVyXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBQUENfTVBDNTJ4eCBcXHUwMDI2XFx1MDAyNiBQUENfQkVTVENPTU1cXG4gIDQyOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDM6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgNDQ6XFx0XFx0c2VsZWN0IFBQQ19CRVNUQ09NTV9GRUNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6Mzk6NTUuMTc2ODM1Mzg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAxNTA3MTA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQgcXVlcnksIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGRUMgRHJpdmVyIFJlZ2lzdHJhdGlvbiBNZXRob2QqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBob3cgdGhlIEZFQyBkcml2ZXIgaXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBvYnZpb3VzIGZpcnN0IHBsYWNlIHRvIGNoZWNrIGlzIGBmZWNfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgcmV2b2x2ZXMgYXJvdW5kIHRoZSBmdW5kYW1lbnRhbCB3YXlzIGRyaXZlcnMgYXJlIGhvb2tlZCBpbnRvIHRoZSBrZXJuZWwuIFdlIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgKipyZWdpc3RyYXRpb24gbWV0aG9kKiouIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyB0aHJvdWdoIHRoZSBtb3N0IGNvbW1vbiBzY2VuYXJpb3M6XG5cbiogICAqKlBsYXRmb3JtIGRyaXZlcjoqKiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBmcmFtZXdvcms/IFRoYXQncyBhIHN0cm9uZyBwb3NzaWJpbGl0eSBmb3IgZW1iZWRkZWQgc3lzdGVtcywgYW5kIGl0J3Mgc29tZXRoaW5nIEknZCBleHBlY3QgdG8gc2VlLiBTbywgSSdsbCBiZSBsb29raW5nIGZvciBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYCBvciBzaW1pbGFyLlxuKiAgICoqRGV2aWNlIFRyZWUgKE9GKSBtYXRjaGluZzoqKiBOZXh0IHVwLCB0aGUgRGV2aWNlIFRyZWUgaXMgYSB2ZXJ5IGNvbW1vbiB3YXkgdG8gZGVzY3JpYmUgaGFyZHdhcmUgaW4gZW1iZWRkZWQgc3lzdGVtcy4gSSdsbCBiZSBzZWFyY2hpbmcgZm9yIGBvZl9tYXRjaF90YWJsZWAgb3IgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gRGV2aWNlIFRyZWUgbG9va3Vwcy5cbiogICAqKkFDUEk6KiogSWYgdGhpcyBpcyBhIHN5c3RlbSB0aGF0IHVzZXMgQUNQSSwgdGhlcmUncyBhIHN0cm9uZyBjaGFuY2UgaXQncyB1c2luZyB0aGUgQUNQSSBkcml2ZXIgZnJhbWV3b3JrLiBUaGlzIG1lYW5zIGxvb2tpbmcgZm9yIEFDUEktc3BlY2lmaWMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiogICAqKlBDSToqKiBGaW5hbGx5LCBldmVuIHRob3VnaCBGRUMgaXMgdHlwaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zLCBpdCAqY291bGQqIGJlIGEgUENJIGRldmljZSBpbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBTbyBJJ2xsIGFsc28gY2hlY2sgZm9yIFBDSS1yZWxhdGVkIHJlZ2lzdHJhdGlvbiwganVzdCB0byBjb3ZlciBhbGwgdGhlIGJhc2VzLiBJJ2QgYmUgbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIFBDSSBkcml2ZXIgcmVnaXN0cmF0aW9uIGNhbGxzLlxuXG5JJ20gZXNzZW50aWFsbHkgdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSBjb3JlIG1lY2hhbmlzbSB0aGUgY29kZSBlbXBsb3lzIHRvIGJpbmQgdGhlIGRyaXZlciB0byB0aGUgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MDQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjM5OjU4LjE5MTkwODY1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkyMTI2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz01Njc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmZWNfcG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1Njc5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY4MC1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihmZWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjkyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzozOTo1OC4yMzc4MzM3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5ODYyNTgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBmZWNfZHJpdmVyYCBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgRkVDIGRyaXZlciB3b3Jrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBgZmVjX21haW4uY2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIGl0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlZmluaXRpb25zLCBsaWtlbHkgaW5jbHVkaW5nIHRoZSBgZmVjX2RyaXZlcmAgc3RydWN0dXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGF0IHN0cnVjdHVyZSBpcyBkZWZpbmVkLCB3aGF0IGZpZWxkcyBpdCBjb250YWlucywgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyB0aG9zZSBmaWVsZHMgYXJlIHVzZWQgd2l0aGluIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGFuZCBvcGVyYXRpb24gb2YgdGhlIGRyaXZlci4gSSdtIGxvb2tpbmcgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGVsZW1lbnRzIHRoYXQgZHJpdmUgdGhlIHBoeXNpY2FsIGxheWVyLiBLbm93aW5nIHRoZSBgZmVjX2RyaXZlcmAgc3RydWN0dXJlJ3MgaW50ZXJuYWxzIGlzIGZ1bmRhbWVudGFsIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemluZy4gSSdsbCBmb2N1cyBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBmcmFtZXdvcmsuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwNzo0MDowMC40MzY0NjE4NzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2NzUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjU2NzU6XFx0XFx0U1lTVEVNX1NMRUVQX1BNX09QUyhmZWNfc3VzcGVuZCwgZmVjX3Jlc3VtZSlcXG41Njc2OlxcdFxcdFJVTlRJTUVfUE1fT1BTKGZlY19ydW50aW1lX3N1c3BlbmQsIGZlY19ydW50aW1lX3Jlc3VtZSwgTlVMTClcXG41Njc3OlxcdH07XFxuNTY3ODpcXHRcXG41Njc5OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XFxuNTY4MDpcXHRcXHQuZHJpdmVyXFx0PSB7XFxuNTY4MTpcXHRcXHRcXHQubmFtZVxcdD0gRFJJVkVSX05BTUUsXFxuNTY4MjpcXHRcXHRcXHQucG1cXHQ9IHBtX3B0cihcXHUwMDI2ZmVjX3BtX29wcyksXFxuNTY4MzpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBmZWNfZHRfaWRzLFxcbjU2ODQ6XFx0XFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbjU2ODU6XFx0XFx0fSxcXG41Njg2OlxcdFxcdC5pZF90YWJsZSA9IGZlY19kZXZ0eXBlLFxcbjU2ODc6XFx0XFx0LnByb2JlXFx0PSBmZWNfcHJvYmUsXFxuNTY4ODpcXHRcXHQucmVtb3ZlID0gZmVjX2Rydl9yZW1vdmUsXFxuNTY4OTpcXHR9O1xcbjU2OTA6XFx0XFxuNTY5MTpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xcbjU2OTI6XFx0XFxuNTY5MzpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5YUCBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykgZHJpdmVyXFxcIik7XFxuNTY5NDpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjQwOjAwLjQzNjgxNzIwNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTIzMTUxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIEZyZWVzY2FsZSBGRUMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIEZyZWVzY2FsZSBGRUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmZWNfbWFpbi5jYCwgYGZlY19wdHAuY2AsIGFuZCBgZmVjLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gdGhpcyBiZSByZWFsaXN0aWNhbGx5IGZ1enplZCBvbiBvdXIgc3RhbmRhcmQgYW1kNjQgc2V0dXBzIGluIHN5emthbGxlci9RRU1VP1wiIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuRmlyc3QsIEkgc2VlIHRoYXQgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQncyBhIHJlZCBmbGFnLiBJdCdzIG1hdGNoZWQgdmlhIERldmljZSBUcmVlIChgZmVjX2R0X2lkc2ApIG9yIHBsYXRmb3JtIGRldmljZSBJRCB0YWJsZSAoYGZlY19kZXZ0eXBlYCkuIEFuZCB0aGlzIGRyaXZlciBpcyAqY2xlYXJseSogYW4gZW1iZWRkZWQgcGxhdGZvcm0gZHJpdmVyLCB0aWVkIHRvIHNwZWNpZmljIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIFNvQ3MuIFRoZSBgZGVwZW5kcyBvbmAgY29uZGl0aW9ucyAoYE01MjN4IHx8IC4uLiB8fCBBUkNIX01YQyB8fCBBUkNIX1MzMiB8fCAuLi5gKSBjb25maXJtIHRoaXMuIE9uIGFtZDY0LCBpdCdzICpvbmx5KiBjb21waWxlLXRlc3RhYmxlIHZpYSBgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyBpdCdzIG5vdCBkZXNpZ25lZCB0byBydW4gb24gYSBzdGFuZGFyZCB4ODZfNjQgc3lzdGVtLlxuXG5Ob3csIGNhbiB3ZSBldmVuICppbnN0YW50aWF0ZSogYSBGRUMgZGV2aWNlIG9uIGFtZDY0PyBOb3BlLiBObyBBQ1BJIG9yIFBDSSBJRCB0YWJsZXMuIEl0J3MgYWxsIERUIGFuZCBwbGF0Zm9ybSBJRC4gIEFuZCBzaW5jZSBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCwgZXZlbiBtYW51YWwgc3lzZnMgYmluZGluZyBpcyBhIG5vLWdvLlxuXG5UaGlua2luZyBhYm91dCBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgc3l6a2FsbGVyIHByaW1hcmlseSB1c2VzIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBhbmQgUUVNVSBmb3IgYW1kNjQuICBFdmVuIGlmIHdlIHdlcmUgdGFyZ2V0aW5nIEFSTSBvciBDb2xkRmlyZSwgd2UnZCBuZWVkIGEgcGh5c2ljYWwgU29DIG9yIHNwZWNpZmljIFNvQyBlbXVsYXRpb24gKGUuZy4sIGkuTVggRFQpLiBXZSAqZG9uJ3QqIGhhdmUgdGhhdCBvbiB4ODZfNjQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG91ciBmdXp6aW5nIHdvcmtmbG93LlxuXG5MZXQncyBjaGVjayB0aGUgc2VjdGlvbiB0d28gaW5zdHJ1Y3Rpb25zIG9mIHRoZSBkb2N1bWVudCwgdGhlIFwiU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIEhhcmR3YXJlXCIgcGFydC4gWWVwLCBpdCBmaXRzIHBlcmZlY3RseS4gVGhpcyBGRUMgZHJpdmVyIGlzIGFuYWxvZ291cyB0byB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgb3IgTklDIGRyaXZlcnMsIHRoYXQgcmVxdWlyZSBoYXJkd2FyZSBvciBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gb3VyIHR5cGljYWwgUUVNVSBzZXR1cHMuICBXZSdyZSBkZWFsaW5nIHdpdGggYW4gZW1iZWRkZWQgU29DIHBlcmlwaGVyYWwgKENvbGRGaXJlLCBpLk1YLCBTMzIpIHRoYXQgaXNuJ3QgcHJlc2VudCBvbiBhIHN0YW5kYXJkIFBDIG9yIHZpcnR1YWwgbWFjaGluZSBvZiB0aGUga2luZCB1c2VkIGJ5IHN5emthbGxlci5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBvbiB4ODZfNjQvYW1kNjQgdmlhIGBDT01QSUxFX1RFU1RgLCBhbmQgdGhhdCB0aGlzIG1lYW5zIHdlIGNhbid0IHRlc3QgaXQsIEknbSBjb25maWRlbnQgaW4gY29uY2x1ZGluZyB0aGF0IHRoaXMgaXMgKm5vdCogd29ydGggZnV6emluZy4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBjb2RlIHRoYXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkgdW5kZXIgb3VyIHN0YW5kYXJkIGZ1enppbmcgY29uZGl0aW9ucy4gSSdtIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyB0byByZWZsZWN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjcsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDc6NDA6MDcuMzU5OTcyMjIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5YUC9GcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIChGRUMpIGRyaXZlciAoZmVjX21haW4uYywgZmVjX3B0cC5jKSwgd2hpY2ggaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIENvbGRGaXJlLCBpLk1YLCBhbmQgUzMyIHByb2Nlc3NvcnMuIE9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCksIENPTkZJR19GRUMgaXMgb25seSBzZWxlY3RhYmxlIHVuZGVyIENPTVBJTEVfVEVTVCBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTlhQL0ZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykgZHJpdmVyIChmZWNfbWFpbi5jLCBmZWNfcHRwLmMpLCB3aGljaCBpcyBhbiBTb0MgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgQ29sZEZpcmUsIGkuTVgsIGFuZCBTMzIgcHJvY2Vzc29ycy4gT24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KSwgQ09ORklHX0ZFQyBpcyBvbmx5IHNlbGVjdGFibGUgdW5kZXIgQ09NUElMRV9URVNUIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA3OjQwOjA3LjM1OTk5NjYxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n4pb[1] Phase: Running StartedAt: 2026-09-09 07:40:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n4pb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 07:40:18 +0000 UTC FinishedAt: 2026-09-09 07:40:21 +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,}