Name: series-workflow9j2gk Phase: Failed StartedAt: 2026-07-11 03:12:54 +0000 UTC FinishedAt: 2026-07-11 03:24:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9j2gk[0] Phase: Succeeded StartedAt: 2026-07-11 03:12:54 +0000 UTC FinishedAt: 2026-07-11 03:24:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9j2gk[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 03:12:54 +0000 UTC FinishedAt: 2026-07-11 03:24:45 +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+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWQ4ODc3NGZhNjYyMDc3MTJjNTg0ZWEzM2Q4NTIyYThlN2NjNDE1MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDAzOjIzOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5jMzI3N2MxZjNkNzg1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuQEAgLTI4LDYgJiM0MzsyOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzQxX29wcyxcbiYjNDM7XHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcbiBcdFtNVjg4RTYzNTBdID0ge1xuQEAgLTY0NDcsNiAmIzQzOzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzUyX29wcyxcbiYjNDM7XHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcdFtNVjg4RTYzNjFdID0ge1xuIFx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5iNmE5MGViYTgxYzQzOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDE0IEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cbiYjNDM7XHQgKiBod3RzdGFtcC5oLiBaZXJvICh0aGUgZGVmYXVsdCkgbGVhdmVzIGFycml2YWwgdGltZSBzdGFtcHMgaW4gdGhlXG4mIzQzO1x0ICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWRcbiYjNDM7XHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcbiYjNDM7XHQgKiBQVFAgY29tbW9uIGhlYWRlci5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5pbmRleCA2ZTY0NzJhM2I3NWFkNy4uMWZiZWQzNDA3NTc5NzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7aHd0c3RhbXAuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3B0cC5oXCYjMzQ7XG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiBcbiAjZGVmaW5lIFNLQl9QVFBfVFlQRShfX3NrYikgKCoodW5zaWduZWQgaW50ICopKChfX3NrYiktXHUwMDNlY2IpKVxuIFxuQEAgLTI0NSw2ICYjNDM7MjQ2LDczIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcbiBcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXHUwMDNlc2VxdWVuY2VfaWQpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgcGFyc2VfZW1iZWRkZWRfdHModW5zaWduZWQgaW50IGFycl90c19tb2RlLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgKm5zKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9oZWFkZXIgKmhkcjtcbiYjNDM7XG4mIzQzO1x0Km5zID0gMDtcbiYjNDM7XG4mIzQzO1x0LyogQVBQRU5EIG1lYW5zIHRoZSBzd2l0Y2ggYXBwZW5kZWQgdGhlIHRpbWUgc3RhbXAgYXMgYSA0LWJ5dGUgdHJhaWxlclxuJiM0MztcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxuJiM0MztcdCAqIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIgYXQgd2hpY2ggdGhlIHN3aXRjaFxuJiM0MztcdCAqIG92ZXJ3cm90ZSB0aGUgdGltZSBzdGFtcCBpbiBwbGFjZSAoZS5nLiB0aGUgcmVzZXJ2ZWQgaGVhZGVyIGJ5dGVzKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoYXJyX3RzX21vZGUgPT0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkQgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VsZW4gXHUwMDNlPSA0KSB7XG4mIzQzO1x0XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNCk7XG4mIzQzO1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fSBlbHNlIGlmIChhcnJfdHNfbW9kZSAmIzQzOyA0IFx1MDAzYz0gc2l6ZW9mKCpoZHIpKSB7XG4mIzQzO1x0XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcbiYjNDM7XHRcdGlmICghaGRyKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlKTtcbiYjNDM7XHRcdG1lbXNldCgodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUsIDAsIDQpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmZfaGVhZCAqcnhxID0gXHUwMDI2cHMtXHUwMDNlcnhfcXVldWU7XG4mIzQzO1x0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xuJiM0MztcdHN0cnVjdCBza19idWZmX2hlYWQgcmVjZWl2ZWQ7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1NjQgbnM7XG4mIzQzO1xuJiM0MztcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZyZWNlaXZlZCk7XG4mIzQzO1x0X19za2JfcXVldWVfaGVhZChcdTAwMjZyZWNlaXZlZCwgc2tiKTtcbiYjNDM7XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZyeHEtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdHNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KHJ4cSwgXHUwMDI2cmVjZWl2ZWQpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cnhxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuJiM0MztcdHNrYl9xdWV1ZV93YWxrKFx1MDAyNnJlY2VpdmVkLCBza2IpIHtcbiYjNDM7XHRcdGlmICghcGFyc2VfZW1iZWRkZWRfdHMoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlLCBza2IsIFx1MDAyNm5zKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4mIzQzO1x0XHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuJiM0MztcdFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuJiM0MztcdFx0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbiYjNDM7XHR9XG4mIzQzO1x0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZyZWNlaXZlZCkpKVxuJiM0MztcdFx0bmV0aWZfcngoc2tiKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxuQEAgLTMwNyw4ICYjNDM7Mzc1LDIxIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcztcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXG4tXHRza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSk7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSkge1xuJiM0MztcdFx0LyogSWYgYXJyX3RzX21vZGUgaXMgc2V0LCB0aGUgdGltZXN0YW1wcyBhcmUgZW1iZWRkZWQgaW4gdGhlXG4mIzQzO1x0XHQgKiBmcmFtZXMgc28gYSByZWdpc3RlciByZWFkIGlzIG5vdCByZXF1aXJlZC4gV2Ugc3RpbGwgbmVlZCBhXG4mIzQzO1x0XHQgKiB3b3JrIHF1ZXVlIHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgaW5saW5lIGJlY2F1c2VcbiYjNDM7XHRcdCAqIHRpbWVjb3VudGVyX2N5YzJ0aW1lKCkgdGFrZXMgdGhlIGdsb2JhbCBtdXRleCBhbmQgdGhpc1xuJiM0MztcdFx0ICogY2Fubm90IGJlIGNhbGxlZCBmcm9tIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbiYjNDM7XHRcdGlmIChza2IpXG4mIzQzO1x0XHRcdG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZChjaGlwLCBwcywgc2tiKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuJiM0MztcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbiBcdGlmIChza2IpXG4gXHRcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZyxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbkBAIC0zMTksOSAmIzQzOzQwMCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4mIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiB7XG4tXHRyZXR1cm4gKGhkci1cdTAwM2V0c210IFx1MDAyNiAweGYpID09IDM7XG4mIzQzO1x0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIH1cbiBcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5AQCAtMzQzLDcgJiM0Mzs0MzEsNyBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbiYjNDM7XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSBcdTAwMjZcdTAwMjYgaXNfcGRlbGF5X21zZyhoZHIpKVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIsIHNrYik7XG4gXHRlbHNlXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xuQEAgLTUyMywxNCAmIzQzOzYxMSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbiYjNDM7XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMixcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUgXHUwMDNjXHUwMDNjIDgpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTg0LDExICYjNDM7Njk1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlKSB7XG4mIzQzO1x0XHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgbWVzc2FnZXMuICovXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXG4mIzQzO1x0XHRcdFx0XHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxuJiM0MztcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuIFxuIFx0LyogODhFNjM0MSBkZXZpY2VzIGRlZmF1bHQgdG8gdGltZXN0YW1waW5nIGF0IHRoZSBQSFksIGJ1dCB0aGlzIGhhc1xuIFx0ICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC02OCw2ICYjNDM7NjgsMjAgQEBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuJiM0MzsvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4mIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbiYjNDM7ICogZnJhbWVzLlxuJiM0MzsgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxuJiM0MzsgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXG4mIzQzOyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xuJiM0MzsgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XG4mIzQzOyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxuJiM0MzsgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxuJiM0MzsgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXG4mIzQzOyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcdFx0MHgwMVxuJiM0MztcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1x0MHgwM1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZDg4Nzc0ZmE2NjIwNzcxMmM1ODRlYTMzZDg1MjJhOGU3Y2M0MTUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMDM6MjM6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5jMzI3N2MxZjNkNzg1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKQEAgLTI4LDYgJiM0MzsyOCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2NsYXNzaWZ5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeWxpbmsuaCZndDsKQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0gewogCQkuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELAogCQkucHRwX3N1cHBvcnQgPSB0cnVlLAogCQkub3BzID0gJmFtcDttdjg4ZTYzNDFfb3BzLAomIzQzOwkJLmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksCiAJfSwKIAogCVtNVjg4RTYzNTBdID0gewpAQCAtNjQ0Nyw2ICYjNDM7NjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7CiAJCS5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsCiAJCS5wdHBfc3VwcG9ydCA9IHRydWUsCiAJCS5vcHMgPSAmYW1wO212ODhlNjM1Ml9vcHMsCiYjNDM7CQkuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSwKIAl9LAogCVtNVjg4RTYzNjFdID0gewogCQkucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaAppbmRleCBlOTY2ZTdjNGNjNWRlYS4uYjZhOTBlYmE4MWM0MzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCkBAIC0xODAsNiAmIzQzOzE4MCwxNCBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gewogCSAqIHBvcnQgMCwgMSBtZWFucyBpbnRlcm5hbCBQSFlzIHJhbmdlIHN0YXJ0cyBhdCBwb3J0IDEsIGV0YwogCSAqLwogCXVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDsKJiM0MzsKJiM0MzsJLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSk7IHNlZSB0aGUgQXJyVFNNb2RlIGVuY29kaW5nIGluCiYjNDM7CSAqIGh3dHN0YW1wLmguIFplcm8gKHRoZSBkZWZhdWx0KSBsZWF2ZXMgYXJyaXZhbCB0aW1lIHN0YW1wcyBpbiB0aGUKJiM0MzsJICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWQKJiM0MzsJICogYXMgYSB0cmFpbGVyIG9yIG92ZXJ3cml0dGVuIGF0IHRoYXQgYnl0ZSBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlCiYjNDM7CSAqIFBUUCBjb21tb24gaGVhZGVyLgomIzQzOwkgKi8KJiM0MzsJdW5zaWduZWQgaW50IGFycl90c19tb2RlOwogfTsKIAogc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li4xZmJlZDM0MDc1Nzk3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYwpAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICNpbmNsdWRlICYjMzQ7aHd0c3RhbXAuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3B0cC5oJiMzNDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xhc3NpZnkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAKICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS0mZ3Q7Y2IpKQogCkBAIC0yNDUsNiAmIzQzOzI0Niw3MyBAQCBzdGF0aWMgaW50IHNlcV9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdHNfc2VxaWQpCiAJcmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci0mZ3Q7c2VxdWVuY2VfaWQpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgcGFyc2VfZW1iZWRkZWRfdHModW5zaWduZWQgaW50IGFycl90c19tb2RlLAomIzQzOwkJCSAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyOwomIzQzOwomIzQzOwkqbnMgPSAwOwomIzQzOwomIzQzOwkvKiBBUFBFTkQgbWVhbnMgdGhlIHN3aXRjaCBhcHBlbmRlZCB0aGUgdGltZSBzdGFtcCBhcyBhIDQtYnl0ZSB0cmFpbGVyCiYjNDM7CSAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZQomIzQzOwkgKiBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIGF0IHdoaWNoIHRoZSBzd2l0Y2gKJiM0MzsJICogb3Zlcndyb3RlIHRoZSB0aW1lIHN0YW1wIGluIHBsYWNlIChlLmcuIHRoZSByZXNlcnZlZCBoZWFkZXIgYnl0ZXMpLgomIzQzOwkgKi8KJiM0MzsJaWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EICZhbXA7JmFtcDsgc2tiLSZndDtsZW4gJmd0Oz0gNCkgewomIzQzOwkJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQkqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMihza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0KTsKJiM0MzsJCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItJmd0O2xlbiAtIDQpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJfSBlbHNlIGlmIChhcnJfdHNfbW9kZSAmIzQzOyA0ICZsdDs9IHNpemVvZigqaGRyKSkgewomIzQzOwkJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQloZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpOwomIzQzOwkJaWYgKCFoZHIpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwkJKm5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlKTsKJiM0MzsJCW1lbXNldCgodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUsIDAsIDQpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAomIzQzOwkJCQkJc3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcywKJiM0MzsJCQkJCXN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpyeHEgPSAmYW1wO3BzLSZndDtyeF9xdWV1ZTsKJiM0MzsJc3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0OwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHJlY2VpdmVkOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwl1NjQgbnM7CiYjNDM7CiYjNDM7CV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO3JlY2VpdmVkKTsKJiM0MzsJX19za2JfcXVldWVfaGVhZCgmYW1wO3JlY2VpdmVkLCBza2IpOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3J4cS0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChyeHEsICZhbXA7cmVjZWl2ZWQpOwomIzQzOwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7cnhxLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CiYjNDM7CW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKJiM0MzsJc2tiX3F1ZXVlX3dhbGsoJmFtcDtyZWNlaXZlZCwgc2tiKSB7CiYjNDM7CQlpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlLCBza2IsICZhbXA7bnMpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJbnMgPSB0aW1lY291bnRlcl9jeWMydGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgbnMpOwomIzQzOwkJc2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTsKJiM0MzsJCW1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTsKJiM0MzsJCXNod3QtJmd0O2h3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpOwomIzQzOwl9CiYjNDM7CW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOwomIzQzOwomIzQzOwl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtyZWNlaXZlZCkpKQomIzQzOwkJbmV0aWZfcngoc2tiKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAogCQkJICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsCiAJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZywKQEAgLTMwNyw4ICYjNDM7Mzc1LDIxIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAljb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLSZndDtpbmZvLSZndDtvcHMtJmd0O3B0cF9vcHM7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAotCXNrYiA9IHNrYl9kZXF1ZXVlKCZhbXA7cHMtJmd0O3J4X3F1ZXVlKTsKJiM0MzsJaWYgKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlKSB7CiYjNDM7CQkvKiBJZiBhcnJfdHNfbW9kZSBpcyBzZXQsIHRoZSB0aW1lc3RhbXBzIGFyZSBlbWJlZGRlZCBpbiB0aGUKJiM0MzsJCSAqIGZyYW1lcyBzbyBhIHJlZ2lzdGVyIHJlYWQgaXMgbm90IHJlcXVpcmVkLiBXZSBzdGlsbCBuZWVkIGEKJiM0MzsJCSAqIHdvcmsgcXVldWUgcmF0aGVyIHRoYW4gcHJvY2Vzc2luZyBpbmxpbmUgYmVjYXVzZQomIzQzOwkJICogdGltZWNvdW50ZXJfY3ljMnRpbWUoKSB0YWtlcyB0aGUgZ2xvYmFsIG11dGV4IGFuZCB0aGlzCiYjNDM7CQkgKiBjYW5ub3QgYmUgY2FsbGVkIGZyb20gbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoKS4KJiM0MzsJCSAqLwomIzQzOwkJc2tiID0gc2tiX2RlcXVldWUoJmFtcDtwcy0mZ3Q7cnhfcXVldWUpOwomIzQzOwkJaWYgKHNrYikKJiM0MzsJCQltdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWQoY2hpcCwgcHMsIHNrYik7CiYjNDM7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAomIzQzOwlza2IgPSBza2JfZGVxdWV1ZSgmYW1wO3BzLSZndDtyeF9xdWV1ZSk7CiAJaWYgKHNrYikKIAkJbXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtJmd0O2FycjBfc3RzX3JlZywKIAkJCQkgICAmYW1wO3BzLSZndDtyeF9xdWV1ZSk7CkBAIC0zMTksOSAmIzQzOzQwMCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJCQkJICAgJmFtcDtwcy0mZ3Q7cnhfcXVldWUyKTsKIH0KIAotc3RhdGljIGludCBpc19wZGVsYXlfcmVzcChjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKQomIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcikKIHsKLQlyZXR1cm4gKGhkci0mZ3Q7dHNtdCAmYW1wOyAweGYpID09IDM7CiYjNDM7CXN3aXRjaCAocHRwX2dldF9tc2d0eXBlKGhkciwgUFRQX0NMQVNTX1YyKSkgewomIzQzOwljYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6CiYjNDM7CQlmYWxsdGhyb3VnaDsKJiM0MzsJY2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiB9CiAKIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKQEAgLTM0Myw3ICYjNDM7NDMxLDcgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJU0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlOwogCi0JaWYgKGlzX3BkZWxheV9yZXNwKGhkcikpCiYjNDM7CWlmICghY2hpcC0mZ3Q7aW5mby0mZ3Q7YXJyX3RzX21vZGUgJmFtcDsmYW1wOyBpc19wZGVsYXlfbXNnKGhkcikpCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlMiwgc2tiKTsKIAllbHNlCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlLCBza2IpOwpAQCAtNTIzLDE0ICYjNDM7NjExLDM3IEBAIGludCBtdjg4ZTYxNjVfZ2xvYmFsX2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiAKIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpCiB7Ci0JcmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKLQkJCQkJTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsCiYjNDM7CQkJCSAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKIHsKLQlyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAotCQkJCQlNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJaWYgKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlKSB7CiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsCiYjNDM7CQkJCQkgICAgICAgY2hpcC0mZ3Q7aW5mby0mZ3Q7YXJyX3RzX21vZGUgJmx0OyZsdDsgOCk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAomIzQzOwkJCQkgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQpAQCAtNTg0LDExICYjNDM7Njk1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQkvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgcmVzcG9uc2UgbWVzc2FnZXMuICovCi0JZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLAotCQkJCSAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKJiM0MzsJaWYgKCFjaGlwLSZndDtpbmZvLSZndDthcnJfdHNfbW9kZSkgewomIzQzOwkJLyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IG1lc3NhZ2VzLiAqLwomIzQzOwkJZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLAomIzQzOwkJCQkJICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVRIHwKJiM0MzsJCQkJCSAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CX0KIAogCS8qIDg4RTYzNDEgZGV2aWNlcyBkZWZhdWx0IHRvIHRpbWVzdGFtcGluZyBhdCB0aGUgUEhZLCBidXQgdGhpcyBoYXMKIAkgKiBhIGhhcmR3YXJlIGlzc3VlIHRoYXQgcmVzdWx0cyBpbiB1bnJlbGlhYmxlIHRpbWVzdGFtcHMuIEZvcmNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCkBAIC02OCw2ICYjNDM7NjgsMjAgQEAKICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfREVQX0lSUV9FTgkJMHgwMDAyCiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9JUlFfRU4JCTB4MDAwMQogCiYjNDM7LyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZQomIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnQKJiM0MzsgKiBmcmFtZXMuCiYjNDM7ICogICAweDAwICAgICAgICBmcmFtZSBtb2RpZmljYXRpb24gZGlzYWJsZWQgKHRpbWUgc3RhbXAgcmVhZCBmcm9tIHJlZ2lzdGVycykKJiM0MzsgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsCiYjNDM7ICogICAgICAgICAgICAgICBncm93aW5nIHRoZSBmcmFtZSBieSBmb3VyIGJ5dGVzCiYjNDM7ICogICAweDA0Li4weEVGICBvdmVyd3JpdGUgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGluIHBsYWNlLCB0aGF0IG1hbnkgYnl0ZXMgcGFzdAomIzQzOyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZQomIzQzOyAqICAgICAgICAgICAgICAgKG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpIHRhcmdldHMgdGhlIHJlc2VydmVkCiYjNDM7ICogICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgaGVhZGVyKQomIzQzOyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWQKJiM0MzsgKi8KJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5ECQkweDAxCiYjNDM7CiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovCiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9MRURfQ0ZHCTB4MDMKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWFydmVsbCA4OEU2eHh4IFBUUCBUaW1lc3RhbXAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhZGRzIGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wIHN1cHBvcnQgZm9yIFBUUCBmcmFtZXMgb24gTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgdXN1YWwgc3VzcGVjdHMgd2l0aGluIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIg4oCTIGBjaGlwLmNgLCBgY2hpcC5oYCwgYGh3dHN0YW1wLmNgLCBgaHd0c3RhbXAuaGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGVuYWJsaW5nIGBhcnJfdHNfbW9kZWAgZm9yIHRoZSBgTVY4OEU2MzQxYCBhbmQgYE1WODhFNjM1MmAgdmFyaWFudHMgd2l0aGluIHRoZSBgbXY4OGU2eHh4X3RhYmxlYCwgYWxvbmcgd2l0aCB0aGUgbmV3IGZ1bmN0aW9ucyBgcGFyc2VfZW1iZWRkZWRfdHNgIGFuZCBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCBmb3IgcGFyc2luZyB0aGF0IHRpbWVzdGFtcCBmcm9tIHRoZSByZWNlaXZlZCBza2IuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaG93IHRlc3RhYmxlIGlzIHRoaXM/IFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlLCBvYnZpb3VzbHkgdGllZCB0byBhIERTQSBzd2l0Y2ggZHJpdmVyLiBEU0Egc3dpdGNoZXMgYXJlIHR5cGljYWxseSBwaHlzaWNhbCBoYXJkd2FyZS4gTXkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQ2FuIEkgYWN0dWFsbHkgKnVzZSogdGhpcyBjb2RlIHdpdGhvdXQgcGh5c2ljYWxseSBoYXZpbmcgYW4gODhFNnh4eCBzd2l0Y2g/IElzIHRoZXJlIGV2ZW4gYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIGBtdjg4ZTZ4eHhgIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgdGVzdGluZz8KCkkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0LiBHZW5lcmFsbHksIERTQSBzd2l0Y2hlcyBjb21tdW5pY2F0ZSB2aWEgTURJTywgd2hpY2ggbWVhbnMgdGhpcyBwcm9iYWJseSBkZXBlbmRzIG9uIHNwZWNpZmljIGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvZiBlbXVsYXRpb24gb3IgaWYgdGhpcyBkcml2ZXIgaXMgc3RyaWN0bHkgZGVzaWduZWQgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIGludGVyYWN0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBrZXJuZWwgc2VhcmNoIGZvciBgbXY4OGU2eHh4YCB0byBsb29rIGZvciBhbnl0aGluZyB0aGF0IHBvaW50cyB0b3dhcmRzIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgb3IgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwMDY4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz03Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03NC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0yMT1vYmoteVx0XHRcdFx0JiM0Mzs9IG1pY3JvY2hpcC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVx0XHRcdFx0JiM0Mzs9IG12ODhlNnh4eC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVx0XHRcdFx0JiM0Mzs9IG14bDg2Mnh4L1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTctICogQ29weXJpZ2h0IChjKSAyMDA4IE1hcnZlbGwgU2VtaWNvbmR1Y3RvclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYKSAmIzQzOz0gbXY4OGU2eHh4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Mzptdjg4ZTZ4eHgtb2JqcyA6PSBjaGlwLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZGV2bGluay5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDEub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxX2F0dS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfdnR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfYXZiLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfc2NyYXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBod3RzdGFtcC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSAmIzQzOz0gbGVkcy5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjE4NS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM1Mi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM5eC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwaHkub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcG9ydC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0X2hpZGRlbi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBwdHAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc2VyZGVzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHNtaS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzd2l0Y2hkZXYub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdHJhY2Uub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNmbG93ZXIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNhbS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTA6c3RhdGljIHZvaWQgYXNzZXJ0X3JlZ19sb2NrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0Olx0ZXJyID0gbXY4OGU2eHh4X3NtaV9yZWFkKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0OmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwOlx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDppbnQgbXY4OGU2eHh4X3dhaXRfbWFzayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEtXHRcdFx0dTE2IG1hc2ssIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAyLVx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXHUwMDNjIDIpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAzOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTA0LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNjpcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNzppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjgtXHRcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzMDpcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzEtXHRcdFx0XHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM0OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM2Olx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzgtXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM5Olx0XHRcdFx0XHQgICAgc3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cywgbGlzdCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXHRpZiAoIW1kaW9fYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0ODpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ5LVx0dW5zaWduZWQgaW50IG4gPSBkLVx1MDAzZWh3aXJxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU2Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTctXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYyOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTcwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcyOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4ODpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg5Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2Y3RsMSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTEtXHRcdFx0Z290byB1bmxvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTI6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTMtdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTk0Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDQ6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDY6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDg6XHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTE6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTIte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjEzOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTU6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjA6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMS1cdHUxNiBtYXNrID0gR0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjI0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI1Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMjpcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM2LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIG12ODhlNnh4eF9nMV9pcnFfY2hpcCA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcdC5uYW1lXHRcdFx0PSBcJiMzNDttdjg4ZTZ4eHgtZzFcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDI6XHQuaXJxX21hc2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDM6XHQuaXJxX3VubWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0Olx0LmlycV9idXNfbG9ja1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDU6XHQuaXJxX2J1c19zeW5jX3VubG9ja1x0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ni19O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ5LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUxLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI1MjpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXHUwMDNlaG9zdF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MTpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MjpcdC5tYXBcdD0gbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYzLVx0LnhsYXRlXHQ9IGlycV9kb21haW5feGxhdGVfdHdvY2VsbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjYtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjY3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzI6XHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2bWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzMtXHRtYXNrIFx1MDAyNj0gfkdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjc0Olx0bXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NDpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA0LVx0XHROVUxMLCBjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNTpcdFx0XHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwNi1cdGlmICghY2hpcC1cdTAwM2VnMV9pcnEuZG9tYWluKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMjpcdGNoaXAtXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTMtXHRjaGlwLVx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxNTpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIxOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI1LVx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNjpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMy1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMzQ6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNTM6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYzLVx0c25wcmludGYoY2hpcC1cdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXHUwMDNlaXJxX25hbWUpLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY0Olx0XHQgXCYjMzQ7bXY4OGU2eHh4LSVzXCYjMzQ7LCBkZXZfbmFtZShjaGlwLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY2Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjctXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVx1MDAzZWlycSwgTlVMTCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2ODpcdFx0XHRcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY5LVx0XHRcdFx0ICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9TSEFSRUQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzAtXHRcdFx0XHQgICBjaGlwLVx1MDAzZWlycV9uYW1lLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3Mi1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzM6XHRcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Mi1cdFx0XHRcdFx0XHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgzOlx0bXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTM6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk3LVx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZWlycV9wb2xsX3dvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTg6XHRcdFx0XHQgIG12ODhlNnh4eF9pcnFfcG9sbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDA5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDEwOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1Olx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2Olx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQyMDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIxLVx0XHRcdFx0XHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDI6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0My1cdFx0XHRcdCAgICBpbnQgbGluaywgaW50IHNwZWVkLCBpbnQgZHVwbGV4LCBpbnQgcGF1c2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDY5Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3MC1yZXN0b3JlX2xpbms6XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0ODQ6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTItXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWZhbWlseSA9PSBNVjg4RTZYWFhfRkFNSUxZXzYyNTApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTM6XHRcdHJldHVybiBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk1Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTYtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA2PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNjpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMzpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjQtXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUzNTpzdGF0aWMgdm9pZCBtdjg4ZTYxODVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0OTpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU1MC1cdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcdGlmIChjbW9kZSBcdTAwM2MgQVJSQVlfU0laRShtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2RlcykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1Njc6XHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY4Olx0XHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY5LVx0ZWxzZSBpZiAoY21vZGUgPT0gTVY4OEU2WFhYX1BPUlRfU1RTX0NNT0RFX1JHTUlJKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTc0Om12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc1LVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjM6c3RhdGljIHZvaWQgbXY4OGU2MjUwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY6XHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjctXHRcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMjpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzNy1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM4Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0NDpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ5Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1Ny1cdHZhbCA9IHJlZyBcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU4Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjI6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY2LVx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Njc6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3NDpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4MC1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgxOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ni1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk3Olx0XHRcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzAwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzAxOnN0YXRpYyB2b2lkIG12ODhlNjMyeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDItXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA3LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDg6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDktXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE5LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjA6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMS1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjQ6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjktXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczMDpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDY6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTEtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njg6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjktXHRcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwNC1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODExLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODEyOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC1cdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1My1cdGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU0Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTY6XHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU3LVx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTg2NT1zdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2Njptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjctXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY5LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg3MDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzEtXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODgwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgxLVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4My1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODQ6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODg1LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTQtXHQgICAgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4OTU6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ni1cdFx0ZXJyID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTctXHRcdFx0XHRcdFx0ICAgICBMSU5LX0ZPUkNFRF9ET1dOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5ODpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA1LVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwOC1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDk6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEwLVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTM6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XHRpZiAobW9kZSAhPSBNTE9fQU5fUEhZIHx8ICFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTY6XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2UoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNy1cdFx0XHRcdFx0XHQgICAgICBzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMi1lcnJfdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIzOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTI4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzAtXHRcdFx0XHR1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzItXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMzOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzNC1cdGludCBwb3J0ID0gZHAtXHUwMDNlaW5kZXg7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQyLVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDM6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ3LVx0ICAgICAgY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQ4Olx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFx1MDAyNlx1MDAyNiBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhjaGlwLCBwb3J0KSkpKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ5LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCwgTElOS19VTkZPUkNFRCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTE6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkzMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgODhFNnh4eCBTd2l0Y2ggRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgTWFydmVsbCA4OEU2eHh4IHN3aXRjaCBkcml2ZXIgaXMgdGVzdGFibGUgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IFFFTVUgZW11bGF0aW9uIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSA4OEU2eHh4IHNlcmllcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgUUVNVSBzb3VyY2UgY29kZSwgbWF5YmUgc2VhcmNoIGZvciAmIzM0O212ODhlNiwmIzM0OyBvciBzZWUgaWYgSSBjYW4gZXZlbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhpbiBzeXprYWxsZXIuCgpIbW0sIHN5emthbGxlciBpdHNlbGYgZG9lc24mIzM5O3QgaGF2ZSBwaHlzaWNhbCBoYXJkd2FyZSwgb2J2aW91c2x5LiBCdXQgc29tZXRpbWVzIGl0IGNhbiBwcm9iZSBkcml2ZXJzLCBlc3BlY2lhbGx5IGlmIHRoZXkgdXNlIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRldmljZXMsIG9yIGFyZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBuZXRsaW5rIG9yIHN5c2ZzLiBXYWl0LCBEU0Egc3dpdGNoZXMsIGFyZW4mIzM5O3QgdGhleSB1c3VhbGx5IGluc3RhbnRpYXRlZCB0aHJvdWdoIGRldmljZSB0cmVlIG9yIHBsYXRmb3JtIGRhdGE/IFNvLCBjYW4gSSBpbnN0YW50aWF0ZSBpdCB2aWEgZGV2aWNlIHRyZWUgaW4gc3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24mIzM5O3QgZ2VuZXJhbGx5IG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUgZHluYW1pY2FsbHkgdW5sZXNzIHRoZXJlJiMzOTtzIGEgcHNldWRvLWRldmljZSBvciBvdmVybGF5IG1lY2hhbmlzbSBpbnZvbHZlZCwgYnV0IEkga25vdyBpdCAqZG9lcyogaGF2ZSBzb21lIGRldmljZSB0cmVlIG92ZXJsYXkgc3VwcG9ydCwgb3IgbWF5YmUgaXQganVzdCBjYW4mIzM5O3QgcmVhY2ggdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4KCkhvbGQgb24gYSBzZWNvbmQsIGxvb2sgYXQgdGhpcyEgU3l6a2FsbGVyICpmb3VuZCogYSBwYXRjaCBhbmQgYXBwbGllZCBpdCEgVGhlIGNvbW1pdCBtZXNzYWdlIHNheXMgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gU28sIHRoYXQgc3VnZ2VzdHMgc3l6a2FsbGVyIGlzIGVpdGhlciBhY3RpdmVseSB0ZXN0aW5nIGl0IG9yIGl0JiMzOTtzIHJldmlld2luZyBhIHBhdGNoIHN1Ym1pdHRlZCB0byBhIG1haWxpbmcgbGlzdC4KCkJ1dCwgYmFzZWQgb24gdGhlIHByb21wdCwgaXQgbG9va3MgbGlrZSB0aGlzIGNvZGUgaXMgZm9yIHBhdGhzIHRoYXQgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSWYgaXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSYjMzk7bSBzdXBwb3NlZCB0byB1c2Ugc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSBpZiBpdCBjYW4gYmUgZXhlY3V0ZWQuIFRoZW4gSSB3b3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgdGhlIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2gsIGFuZCB0aGF0IHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBRRU1VLCBpdCYjMzk7cyBwcm9iYWJseSBpbXBvc3NpYmxlIHRvIHJlYWNoLiBTbyBJJiMzOTtkIGJldHRlciBkb3VibGUgY2hlY2sgaWYgdGhlcmUmIzM5O3MgKmFueSogc29mdHdhcmUgZW11bGF0aW9uIGZvciBtdjg4ZTZ4eHggd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDA1NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICYjNDM7PSBtdjg4ZTZ4eHgub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBkZXZsaW5rLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfYXR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMV92dHUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9hdmIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9zY3JhdGNoLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IGh3dHN0YW1wLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICYjNDM7PSBsZWRzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MTg1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MzUyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02Mzl4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBoeS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBvcnRfaGlkZGVuLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IHB0cC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzZXJkZXMub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc21pLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHN3aXRjaGRldi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2Zsb3dlci5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2FtLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MDpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTg6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzQ6aW50IG12ODhlNnh4eF93cml0ZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MS1cdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDItXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcdTAwM2MgMik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDM6XHRcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDQtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE2Olx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI3OmludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC1cdFx0ICAgICAgIGludCBiaXQsIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMwOlx0cmV0dXJuIG12ODhlNnh4eF93YWl0X21hc2soY2hpcCwgYWRkciwgcmVnLCBCSVQoYml0KSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMS1cdFx0XHRcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzQ6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzY6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOC1cdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzk6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0MC1cdGlmICghbWRpb19idXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDcte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ4Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDktXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTY6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ny1cdHVuc2lnbmVkIGludCBuID0gZC1cdTAwM2Vod2lycTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNjI6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTczOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODk6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZjdGwxKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5MC1cdFx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5MS1cdFx0XHRnb3RvIHVubG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MjpcdFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5My11bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTQ6XHRcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTk1LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNDpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNjpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwODpcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA5LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMi17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTM6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNi19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyMDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjIxLVx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjU6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjMyOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzYtb3V0OlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM3Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzgtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQxOlx0Lm5hbWVcdFx0XHQ9IFwmIzM0O212ODhlNnh4eC1nMVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MjpcdC5pcnFfbWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MzpcdC5pcnFfdW5tYXNrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XHQuaXJxX2J1c19sb2NrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0NTpcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ2LX07XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDg6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDktXHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTEte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUyOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cdTAwM2Vob3N0X2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYyOlx0Lm1hcFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjMtXHQueGxhdGVcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2Ni0vKiBUbyBiZSBjYWxsZWQgd2l0aCByZWdfbG9jayBoZWxkICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MjpcdG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3My1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzQ6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTM6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk0Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTUtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDQtXHRcdE5VTEwsIGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzA1Olx0XHRcdTAwMjZtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA2LVx0aWYgKCFjaGlwLVx1MDAzZWcxX2lycS5kb21haW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzExLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzEyOlx0Y2hpcC1cdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMy1cdGNoaXAtXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE1Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNm1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjE6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjUtXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzI2Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzMzLVx0bWFzayBcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzNDpcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzQ3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MzpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzU0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjMtXHRzbnByaW50ZihjaGlwLVx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cdTAwM2VpcnFfbmFtZSksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjQ6XHRcdCBcJiMzNDttdjg4ZTZ4eHgtJXNcJiMzNDssIGRldl9uYW1lKGNoaXAtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjY6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ny1cdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXHUwMDNlaXJxLCBOVUxMLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY4Olx0XHRcdFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjktXHRcdFx0XHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3MC1cdFx0XHRcdCAgIGNoaXAtXHUwMDNlaXJxX25hbWUsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcyLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MzpcdFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODE6XHRcdFx0XHRcdFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyLVx0XHRcdFx0XHRcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODM6XHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MzpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTctXHRrdGhyZWFkX2luaXRfZGVsYXllZF93b3JrKFx1MDAyNmNoaXAtXHUwMDNlaXJxX3BvbGxfd29yayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5ODpcdFx0XHRcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDExLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTU6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTY6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE3Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTgtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDIwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MjEtXHRcdFx0XHRcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MjpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQzLVx0XHRcdFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NjgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njk6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDcwLXJlc3RvcmVfbGluazpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Nzc6c3RhdGljIGludCBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4NDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Mi1cdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MzpcdFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTU6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Ni1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01MDY9c3RhdGljIGNvbnN0IHU4IG12ODhlNjE4NV9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTE2OnN0YXRpYyB2b2lkIG12ODhlNjA5NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTctXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIzOlx0aWYgKG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyNC1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM1OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzYtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTQ5OnN0YXRpYyBjb25zdCB1OCBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTUwLVx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVx0PSBQSFlfSU5URVJGQUNFX01PREVfUkVWTUlJLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKHU4IGNtb2RlLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY2Olx0aWYgKGNtb2RlIFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1Njg6XHRcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjktXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzUtXHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4MTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMzpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNjpcdGlmICghbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSlcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNy1cdFx0bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjMyOnN0YXRpYyB2b2lkIG12ODhlNjM1MV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzMtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzg6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzktXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ0OnN0YXRpYyBpbnQgbXY4OGU2M3h4X2dldF9wb3J0X3NlcmRlc19jbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDk6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3LVx0dmFsID0gcmVnIFx1MDAyNiB+TVY4OEU2WFhYX1BPUlRfU1RTX1BIWV9ERVRFQ1Q7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MjpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjYtXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2NzpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjczLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njc0OnN0YXRpYyB2b2lkIG12ODhlNjM1Ml9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzUtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgwLVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2ODE6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODItXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTc6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDE6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDctXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwODpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyMDpcdFx0XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyNDpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyOS1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMwOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MS1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUyOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2ODpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2OS1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAzOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODA0LVx0XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTI6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ4LVx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTA6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUyOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUzLVx0Y2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTQ6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NjpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTctXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY1PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY2Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg2Ny1cdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjktXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODcwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MS1cdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODA6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX3ByZXBhcmUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODEtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgzLVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg4NDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODUtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5NC1cdCAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NTpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk2LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ny1cdFx0XHRcdFx0XHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk4Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDUtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA4LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTAtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxMzpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNTpcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNjpcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE3LVx0XHRcdFx0XHRcdCAgICAgIHN0YXRlLVx1MDAzZWludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIyLWVycl91bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MjM6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjk6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMC1cdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMi1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzM6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTM0LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDItXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0MzpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDctXHQgICAgICBjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmludGVyZmFjZSAhPSBpbnRlcmZhY2UpIHx8XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDg6XHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXHUwMDI2XHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXHRcdGVyciA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1MTpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NjItXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTYzOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk2NDpcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfb3BzICpvcHM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NjUtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk2OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk3MDpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk3MS1cdC8qIEZvcmNlIHRoZSBsaW5rIGRvd24gaWYgd2Uga25vdyB0aGUgcG9ydCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NzMtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk3NDpcdGlmICgoIW12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpIHx8XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ0MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIEFuYWx5c2lzOiBtdjg4ZTZ4eHggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciwgd2hpY2ggdXNlcyBNRElPIGZvciBjb21tdW5pY2F0aW9uLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gSSBrbm93IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZGVkaWNhdGVkIE1ESU8gZnV6emVyIGxpa2UgYHN5el9tZGlvYCBkaXJlY3RseSwgYnV0IHNvbWV0aW1lcyBpdCBjYW4gaW5zdGFudGlhdGUgdGhpbmdzIHRocm91Z2ggZGV2aWNlIHRyZWUgaWYgb3ZlcmxheXMgYXJlIGFuIG9wdGlvbiwgb3IgbWF5YmUgZXZlbiBmdXp6IHRoZSBuZXRsaW5rIGludGVyZmFjZSB0byBEU0EuIEJ1dCB0aGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCB0aGUgZHJpdmVyIHdvbiYjMzk7dCBldmVuICpwcm9iZSogaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LiBBbmQgaWYgaXQgZG9lc24mIzM5O3QgcHJvYmUsIHRoZSBjb2RlIGlzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBpbiBRRU1VLiBBIHF1aWNrIHNlYXJjaCBjb25maXJtcyBteSBzdXNwaWNpb246IHRoZXJlJiMzOTtzIG5vdGhpbmcgb2J2aW91cy4gU3l6a2FsbGVyIGlzIGxpa2VseSBibG9ja2VkLiBJIGhhdmUgdG8gYWNjZXB0IHRoZSBsaW1pdGF0aW9ucyBmb3IgdGVzdGluZyB0aGlzIGtpbmQgb2YgaGFyZHdhcmUuIEl0IGlzIHByb2JhYmx5IHVucmVhY2hhYmxlLgoKV2FpdCwgdGhlIHByb21wdCByZW1pbmRzIG1lIHRoYXQgdGhlIHRhcmdldCBjb2RlIG5lZWRzIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIERTQSBkcml2ZXJzIGFyZSBmb3IgcGh5c2ljYWwgc3dpdGNoZXMsIHNvIGl0JiMzOTtzIGEgbm8tZ28gZm9yIHBsYWluIGVtdWxhdGlvbi4gSSBzdGFydCB0byB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYSBtb2NrIG9yIGR1bW15IERTQSBkcml2ZXIsIG9yIHNvbWUgd2F5IHRvIHByb2JlIGBtdjg4ZTZ4eHhgIHRocm91Z2ggYSBzb2Z0d2FyZSBNRElPIGJ1cy4gSSBmb3VuZCBgZHNhX2xvb3BgLCB3aGljaCBpcyBhIG1vY2sgRFNBIGRyaXZlciwgYnV0IG5vdCBmb3IgdGhlIHNwZWNpZmljIHRhcmdldC4gVGhlIHN5emthbGxlciBkb2VzIG5vdCBoYXZlIGEgZmFrZSBNRElPIGJ1cyBmdXp6ZXIgZWl0aGVyLgoKSSBjb25zaWRlciBpZiB0aGUgdGFyZ2V0IGlzIGVuYWJsZWQgaW4gdGhlIGBkZWZjb25maWdgIG9yIHN5emthbGxlciBjb25maWcsIHNpbmNlIHN5emthbGxlciBvZnRlbiBlbmFibGVzIGEgbG90IG9mIHRoaW5ncy4gQnV0IGlmIHRoZSBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGRyaXZlciBzdGlsbCB3b24mIzM5O3QgcHJvYmUuCgpUaGVuIEkgZ2V0IGEgZ2xpbW1lciBvZiBob3BlOiB3aGF0IGlmIHRoZSBwYXRjaCB0b3VjaGVzIGBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmtgPyBUaGlzIGlzIGEgd29ya3F1ZXVlLiBPa2F5LCBidXQgaWYgdGhlIGRldmljZSBuZXZlciBwcm9iZXMsIHRoaXMgd29ya3F1ZXVlIGlzIG5ldmVyIHF1ZXVlZCwgc28gaXQmIzM5O3Mgc3RpbGwgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gSXQmIzM5O3MgYSBkZWFkIGVuZC4KCkkgZG8gYSBmaW5hbCBjaGVjaywgdHJ5aW5nIHRvIHJlbWVtYmVyIGlmIHRoZXJlJiMzOTtzICphbnkqIHBvc3NpYmxlIHdheSB0byBmb3JjZS1wcm9iZSBgbXY4OGU2eHh4YCBpbiBRRU1VLCBtYXliZSBieSBjcmVhdGluZyBhIHBsYXRmb3JtIGRldmljZS4gQnV0IHVsdGltYXRlbHkgSSYjMzk7bSBvdXQgb2YgbHVjay4gVGhlIGRyaXZlciByZWdpc3RlcnMgYW4gTURJTyBkcml2ZXIuIE5vIGRpY2UuIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9tZGlvX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzcxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkuIEhlcmUmIzM5O3MgbXkgYXR0ZW1wdCB0byBzdW1tYXJpemUgdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbnMsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzcyBhc3N1bWluZyBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOgoKKipBc3Nlc3NpbmcgdGhlIFRhc2s6IEEgTWV0YS1Db2duaXRpdmUgTG9vcCoqCgpSaWdodCwgbGV0JiMzOTtzIHVucGFjayB0aGlzLiBUaGUgcmVxdWVzdCBlc3NlbnRpYWxseSBoYW5kcyBtZSBhIHRleHQgc25pcHBldCBhbmQgYXNrcyBtZSB0byBkaXN0aWxsIGl0cyBlc3NlbmNlLCBub3QganVzdCBpbnRvIGEgc2ltcGxlIHN1bW1hcnksIGJ1dCBpbnRvIGEgc2ltdWxhdGVkIHRob3VnaHQgcHJvY2Vzcy4gVGhlIGtleSBpcyBpbiB0aGUgZnJhbWluZzogSSYjMzk7bSB0byBjaGFubmVsIHRoZSBpbnRlcm5hbCBtb25vbG9ndWUgKmFzIGlmKiB0aGUgdGhvdWdodHMgd2VyZSBteSBvd24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgcmVndXJnaXRhdGlvbjsgaXQmIzM5O3MgaW50ZXJwcmV0aXZlIHNpbXVsYXRpb24uIEkgbmVlZCB0byBpbnRlcm5hbGl6ZSB0aGUgdGV4dCYjMzk7cyBjb3JlIGlkZWFzLCBhc3Nlc3MgdGhlIGltcGxpY2l0IGNvbm5lY3Rpb25zLCBhbmQgdGhlbiBhcnRpY3VsYXRlIHRoYXQgdW5kZXJzdGFuZGluZyBhcyBhIHN0cmVhbS1vZi1jb25zY2lvdXNuZXNzLCAqZXhwZXJ0KiBsZXZlbCB0aG91Z2h0LiBUaGUgbGV2ZWwgb2YgY29tcGxleGl0eSB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIHByb3ZpZGVkIHNvdXJjZSBhbmQgaXRzIGNvbnRleHR1YWwgcmVsYXRpb24gdG8gbXkgZXhwZXJ0aXNlLiBTbywgdGhlIG91dHB1dCBpc24mIzM5O3Qgc2ltcGx5IGEgcGFyYXBocmFzZSwgaXQmIzM5O3MgYSByZS1pbWFnaW5pbmcgb2YgdGhlIGluZm9ybWF0aW9uIGFzIGFuIGludGVybmFsLCByZWFzb25lZCwgcmVmbGVjdGl2ZSBwcm9jZXNzLCBmaXQgZm9yIGEgc3ViamVjdCBtYXR0ZXIgZXhwZXJ0LiBUaGUgJiMzOTtleHBlcnQmIzM5OyBmYWNldCByZXF1aXJlcyBhIGNlcnRhaW4gbGV2ZWwgb2YgZGVwdGgsIG51YW5jZSBhbmQgYWJpbGl0eSB0byBpbmZlciBpbXBsaWNhdGlvbnMgYW5kIGVuZ2FnZSBpbiBjcml0aWNhbCB0aGlua2luZy4gVGhlICYjMzk7ZnVsc29tZSYjMzk7IHJlcXVpcmVtZW50IHNldHMgYSBjZXJ0YWluIGV4cGVjdGVkIGxldmVsIG9mIGRldGFpbCwgc28gdGhhdCBpcyBhbm90aGVyIHBvaW50IHRvIHJlbWVtYmVyLiBUaGUgcHJvbXB0JiMzOTtzIG9wZW5pbmcgcGhyYXNlIOKAkyDigJxMZXQmIzM5O3Mgc2VlIGhvdyBpdCByZWdpc3RlcnPigJ0g4oCTIGlzIGludGVyZXN0aW5nLiBJdCBpbmRpY2F0ZXMgYSBkZWdyZWUgb2Ygc2VsZi1hc3Nlc3NtZW50IGlzIGtleS4gSSYjMzk7bSBub3QganVzdCAqZG9pbmcqIHRoZSBzdW1tYXJ5LCBJJiMzOTttIHJlZmxlY3Rpbmcgb24gKmhvdyogdGhhdCBzdW1tYXJ5IGlzIGZvcm1lZCBhbmQgY29udmV5ZWQuIFRoaXMgZGVtYW5kcyBhIHJlY3Vyc2l2ZSwgbWV0YS1jb2duaXRpdmUgYXBwcm9hY2gsIG9yIGFuIGF3YXJlbmVzcyBvZiBteSBvd24gY29nbml0aXZlIHByb2Nlc3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyND1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MzU6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgyNDcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIGhpdHRpbmcgbWUgYXMgYW4gTURJTyBkcml2ZXIg4oCTIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBxdWVzdGlvbiBpcywgaG93IGRvIEkgYWN0dWFsbHkgKnByb2JlKiB0aGlzIHRoaW5nIGluIGEgU3l6a2FsbGVyIGNvbnRleHQ/IFRvIHByb2JlIGFuIE1ESU8gZHJpdmVyLCBJIG5lZWQgYm90aCBhbiBNRElPIGJ1cyBhbmQgYSBkZXZpY2UgKm9uKiB0aGF0IGJ1cywgcmlnaHQ/IEFuZCwgY3J1Y2lhbGx5LCB0aGUgZGV2aWNlIG5lZWRzIHRvIGhhdmUgYSBtYXRjaGluZyBJRC4KCk5vdywgY2FuIFN5emthbGxlciAqY3JlYXRlKiBhbiBNRElPIGRldmljZT8gSSBrbm93IGl0IGNhbiBoYW5kbGUgcGxhdGZvcm0gZGV2aWNlcywgYW5kIGl0IGNhbiBkbyBJMkMgZGV2aWNlcywgcGVyaGFwcyB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBpMmMtc3R1YmAgb3Igc2ltaWxhci4gQnV0IE1ESU8/IFRoYXQmIzM5O3MgdGhlIHJ1Yi4gSXMgdGhlcmUgYW55dGhpbmcgbGlrZSBgbWRpby1tb2NrYCBvciBgbWRpby1ncGlvYCBhdmFpbGFibGU/IEkgbmVlZCB0byBleHBsb3JlIHRoZSBvcHRpb25zLgoKRXZlbiBpZiBJICpjYW4qIGNyZWF0ZSBhbiBNRElPIGRldmljZSwgdGhlcmUmIzM5O3MgYW5vdGhlciBodXJkbGUuIERvZXMgU3l6a2FsbGVyIGhhdmUgdGhlIHNtYXJ0cyB0byBlbXVsYXRlIHRoZSBNYXJ2ZWxsIHN3aXRjaCByZWdpc3RlcnMgdGhhdCB0aGlzIGRyaXZlciYjMzk7cyBnb2luZyB0byBiZSBsb29raW5nIGF0PyBUaGUgZHJpdmVyJiMzOTtzIGdvaW5nIHRvIHJlYWQgdGhlIHN3aXRjaCBJRCBmcm9tIHRob3NlIHJlZ2lzdGVycyBkdXJpbmcgdGhlIHByb2JlLiBJZiB0aGF0IElEIGRvZXNuJiMzOTt0IGppdmUgd2l0aCB3aGF0IGl0IGV4cGVjdHMsIHByb2JlJiMzOTtzIGdvaW5nIHRvIGZhaWwuIFRoYXQmIzM5O3MgYSBkZWFsIGJyZWFrZXIuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbiBhbmQgZXhhbWluZSB0aGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTczMTQ9c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG12ODhlNnh4eF9wbV9vcHMsIG12ODhlNnh4eF9zdXNwZW5kLCBtdjg4ZTZ4eHhfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzE2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMTcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTc1MjQ9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdjg4ZTZ4eHhfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUyNTpcdC5wcm9iZVx0PSBtdjg4ZTZ4eHhfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTI2LVx0LnJlbW92ZSA9IG12ODhlNnh4eF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDEwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgdGhlIGBtdjg4ZTZ4eHhfcHJvYmVgIEZ1bmN0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgd2hhdCB0aGlzIGBtdjg4ZTZ4eHhfcHJvYmVgIGZ1bmN0aW9uIGlzIGRvaW5nLiBMZXQmIzM5O3MgYnJlYWsgZG93biBpdHMgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBzeXN0ZW0uIEkgZXhwZWN0IGl0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaGFyZHdhcmUgcHJvYmluZyBhbmQgY29uZmlndXJhdGlvbiwgZHJpdmVyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBrZXJuZWwsIGFuZCB0aGUgb3ZlcmFsbCBzZXR1cCBvZiB0aGUgc3dpdGNoLiBNeSBmb2N1cyB3aWxsIGJlIHRvIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgbG9naWMgZmxvdywgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIHdoYXQgbWVjaGFuaXNtcyBpdCBlbXBsb3lzIGZvciByZWNvdmVyeSBvciBncmFjZWZ1bCBkZWdyYWRhdGlvbi4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGdyYXNwIGl0cyByb2xlLCBnaXZlbiBteSBleHBlcmllbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzMxNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzMxNjpcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjczMTc6XHR7XG43MzE4Olx0XHRzdHJ1Y3QgZHNhX212ODhlNnh4eF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuNzMxOTpcdFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICpjb21wYXRfaW5mbyA9IE5VTEw7XG43MzIwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbjczMjE6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtXHUwMDNlb2Zfbm9kZTtcbjczMjI6XHRcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcDtcbjczMjM6XHRcdGludCBwb3J0O1xuNzMyNDpcdFx0aW50IGVycjtcbjczMjU6XHRcbjczMjY6XHRcdGlmICghbnAgXHUwMDI2XHUwMDI2ICFwZGF0YSlcbjczMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43MzI4Olx0XG43MzI5Olx0XHRpZiAobnApXG43MzMwOlx0XHRcdGNvbXBhdF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG43MzMxOlx0XG43MzMyOlx0XHRpZiAocGRhdGEpIHtcbjczMzM6XHRcdFx0Y29tcGF0X2luZm8gPSBwZGF0YV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbjczMzQ6XHRcbjczMzU6XHRcdFx0aWYgKCFwZGF0YS1cdTAwM2VuZXRkZXYpXG43MzM2Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43MzM3Olx0XG43MzM4Olx0XHRcdGZvciAocG9ydCA9IDA7IHBvcnQgXHUwMDNjIERTQV9NQVhfUE9SVFM7IHBvcnQmIzQzOyYjNDM7KSB7XG43MzM5Olx0XHRcdFx0aWYgKCEocGRhdGEtXHUwMDNlZW5hYmxlZF9wb3J0cyBcdTAwMjYgKDEgXHUwMDNjXHUwMDNjIHBvcnQpKSlcbjczNDA6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNzM0MTpcdFx0XHRcdGlmIChzdHJjbXAocGRhdGEtXHUwMDNlY2QucG9ydF9uYW1lc1twb3J0XSwgXCYjMzQ7Y3B1XCYjMzQ7KSlcbjczNDI6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNzM0MzpcdFx0XHRcdHBkYXRhLVx1MDAzZWNkLm5ldGRldltwb3J0XSA9IFx1MDAyNnBkYXRhLVx1MDAzZW5ldGRldi1cdTAwM2VkZXY7XG43MzQ0Olx0XHRcdFx0YnJlYWs7XG43MzQ1Olx0XHRcdH1cbjczNDY6XHRcdH1cbjczNDc6XHRcbjczNDg6XHRcdGlmICghY29tcGF0X2luZm8pXG43MzQ5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuNzM1MDpcdFxuNzM1MTpcdFx0Y2hpcCA9IG12ODhlNnh4eF9hbGxvY19jaGlwKGRldik7XG43MzUyOlx0XHRpZiAoIWNoaXApIHtcbjczNTM6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjczNTQ6XHRcdFx0Z290byBvdXQ7XG43MzU1Olx0XHR9XG43MzU2Olx0XG43MzU3Olx0XHRjaGlwLVx1MDAzZWluZm8gPSBjb21wYXRfaW5mbztcbjczNTg6XHRcbjczNTk6XHRcdGNoaXAtXHUwMDNlcmVzZXQgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O3Jlc2V0XCYjMzQ7LCBHUElPRF9PVVRfTE9XKTtcbjczNjA6XHRcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZXNldCkpIHtcbjczNjE6XHRcdFx0ZXJyID0gUFRSX0VSUihjaGlwLVx1MDAzZXJlc2V0KTtcbjczNjI6XHRcdFx0Z290byBvdXQ7XG43MzYzOlx0XHR9XG43MzY0Olx0XHRpZiAoY2hpcC1cdTAwM2VyZXNldClcbjczNjU6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7XG43MzY2Olx0XG43MzY3Olx0XHQvKiBEZXRlY3QgaWYgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGluIHNpbmdsZSBjaGlwIGFkZHJlc3NpbmcgbW9kZSxcbjczNjg6XHRcdCAqIG90aGVyd2lzZSBjb250aW51ZSB3aXRoIGFkZHJlc3Mgc3BlY2lmaWMgc21pIGluaXQvZGV0ZWN0aW9uLlxuNzM2OTpcdFx0ICovXG43MzcwOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfc2luZ2xlX2NoaXBfZGV0ZWN0KGNoaXAsIG1kaW9kZXYpO1xuNzM3MTpcdFx0aWYgKGVycikge1xuNzM3MjpcdFx0XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX2luaXQoY2hpcCwgbWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkcik7XG43MzczOlx0XHRcdGlmIChlcnIpXG43Mzc0Olx0XHRcdFx0Z290byBvdXQ7XG43Mzc1Olx0XG43Mzc2Olx0XHRcdGVyciA9IG12ODhlNnh4eF9kZXRlY3QoY2hpcCk7XG43Mzc3Olx0XHRcdGlmIChlcnIpXG43Mzc4Olx0XHRcdFx0Z290byBvdXQ7XG43Mzc5Olx0XHR9XG43MzgwOlx0XG43MzgxOlx0XHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWVkc2Ffc3VwcG9ydCA9PSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQpXG43MzgyOlx0XHRcdGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID0gRFNBX1RBR19QUk9UT19FRFNBO1xuNzM4MzpcdFx0ZWxzZVxuNzM4NDpcdFx0XHRjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9IERTQV9UQUdfUFJPVE9fRFNBO1xuNzM4NTpcdFxuNzM4NjpcdFx0bXY4OGU2eHh4X3BoeV9pbml0KGNoaXApO1xuNzM4NzpcdFxuNzM4ODpcdFx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlZ2V0X2VlcHJvbSkge1xuNzM4OTpcdFx0XHRpZiAobnApXG43MzkwOlx0XHRcdFx0b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O2VlcHJvbS1sZW5ndGhcJiMzNDssXG43MzkxOlx0XHRcdFx0XHRcdCAgICAgXHUwMDI2Y2hpcC1cdTAwM2VlZXByb21fbGVuKTtcbjczOTI6XHRcdFx0ZWxzZVxuNzM5MzpcdFx0XHRcdGNoaXAtXHUwMDNlZWVwcm9tX2xlbiA9IHBkYXRhLVx1MDAzZWVlcHJvbV9sZW47XG43Mzk0Olx0XHR9XG43Mzk1Olx0XG43Mzk2Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG43Mzk3Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfc3dpdGNoX3Jlc2V0KGNoaXApO1xuNzM5ODpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG43Mzk5Olx0XHRpZiAoZXJyKVxuNzQwMDpcdFx0XHRnb3RvIG91dF9waHk7XG43NDAxOlx0XG43NDAyOlx0XHRpZiAobnApIHtcbjc0MDM6XHRcdFx0Y2hpcC1cdTAwM2VpcnEgPSBvZl9pcnFfZ2V0KG5wLCAwKTtcbjc0MDQ6XHRcdFx0aWYgKGNoaXAtXHUwMDNlaXJxID09IC1FUFJPQkVfREVGRVIpIHtcbjc0MDU6XHRcdFx0XHRlcnIgPSBjaGlwLVx1MDAzZWlycTtcbjc0MDY6XHRcdFx0XHRnb3RvIG91dF9waHk7XG43NDA3Olx0XHRcdH1cbjc0MDg6XHRcdH1cbjc0MDk6XHRcbjc0MTA6XHRcdGlmIChwZGF0YSlcbjc0MTE6XHRcdFx0Y2hpcC1cdTAwM2VpcnEgPSBwZGF0YS1cdTAwM2VpcnE7XG43NDEyOlx0XG43NDEzOlx0XHQvKiBIYXMgdG8gYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgTURJTyBidXMgaXMgY3JlYXRlZCwgYmVjYXVzZVxuNzQxNDpcdFx0ICogdGhlIFBIWXMgd2lsbCBsaW5rIHRoZWlyIGludGVycnVwdHMgdG8gdGhlc2UgaW50ZXJydXB0XG43NDE1Olx0XHQgKiBjb250cm9sbGVyc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDc1NQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBtdjg4ZTZ4eHggRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBjb2RlJiMzOTtzIGp1bXBpbmcgaW50byBgbXY4OGU2eHh4X2RldGVjdChjaGlwKWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCByb3V0aW5lJiMzOTtzIHVwIHRvLiBNeSBmaXJzdCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgdGhlIGRldmljZSBkZXRlY3Rpb24gZnVuY3Rpb24uIEl0JiMzOTtzIGxpa2VseSBwcm9iaW5nIHRoZSBoYXJkd2FyZSwgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIE1hcnZlbGwgc3dpdGNoIHZhcmlhbnQsIGFuZCBwZXJoYXBzIGNvbmZpcm1pbmcgaXRzIHByZXNlbmNlIGFuZCBiYXNpYyBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbXY4OGU2eHh4X2RldGVjdCgpYCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgdG8gc2VlIHRoZSBleGFjdCBwcm9iaW5nIHNlcXVlbmNlLCB3aGF0IHJlZ2lzdGVycyBpdCYjMzk7cyBjaGVja2luZywgYW5kIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBjaGlwIHJldmlzaW9ucyBvciBmYW1pbGllcy4gSXQmIzM5O3MgcHJvYmFibHkgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgc3dpdGNoIGRyaXZlciBpbml0aWFsaXphdGlvbi4gSSBleHBlY3QgdG8gZmluZCBzb21lIEkyQyBvciBNRElPIHRyYW5zYWN0aW9uIGNhbGxzIGluIHRoZXJlIGFzIGl0IGNvbW11bmljYXRlcyB0byB0aGUgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzIyMDpcdFx0LnBvcnRfbXN0X3N0YXRlX3NldFx0PSBtdjg4ZTZ4eHhfcG9ydF9tc3Rfc3RhdGVfc2V0LFxuNzIyMTpcdFx0LnBvcnRfZmFzdF9hZ2VcdFx0PSBtdjg4ZTZ4eHhfcG9ydF9mYXN0X2FnZSxcbjcyMjI6XHRcdC5wb3J0X3ZsYW5fZmFzdF9hZ2VcdD0gbXY4OGU2eHh4X3BvcnRfdmxhbl9mYXN0X2FnZSxcbjcyMjM6XHRcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IG12ODhlNnh4eF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuNzIyNDpcdFx0LnBvcnRfdmxhbl9hZGRcdFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2FkZCxcbjcyMjU6XHRcdC5wb3J0X3ZsYW5fZGVsXHRcdD0gbXY4OGU2eHh4X3BvcnRfdmxhbl9kZWwsXG43MjI2Olx0XHQudmxhbl9tc3RpX3NldFx0XHQ9IG12ODhlNnh4eF92bGFuX21zdGlfc2V0LFxuNzIyNzpcdFx0LnBvcnRfZmRiX2FkZFx0XHQ9IG12ODhlNnh4eF9wb3J0X2ZkYl9hZGQsXG43MjI4Olx0XHQucG9ydF9mZGJfZGVsXHRcdD0gbXY4OGU2eHh4X3BvcnRfZmRiX2RlbCxcbjcyMjk6XHRcdC5wb3J0X2ZkYl9kdW1wXHRcdD0gbXY4OGU2eHh4X3BvcnRfZmRiX2R1bXAsXG43MjMwOlx0XHQucG9ydF9tZGJfYWRkXHRcdD0gbXY4OGU2eHh4X3BvcnRfbWRiX2FkZCxcbjcyMzE6XHRcdC5wb3J0X21kYl9kZWxcdFx0PSBtdjg4ZTZ4eHhfcG9ydF9tZGJfZGVsLFxuNzIzMjpcdFx0LnBvcnRfbWlycm9yX2FkZFx0PSBtdjg4ZTZ4eHhfcG9ydF9taXJyb3JfYWRkLFxuNzIzMzpcdFx0LnBvcnRfbWlycm9yX2RlbFx0PSBtdjg4ZTZ4eHhfcG9ydF9taXJyb3JfZGVsLFxuNzIzNDpcdFx0LmNyb3NzY2hpcF9icmlkZ2Vfam9pblx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2JyaWRnZV9qb2luLFxuNzIzNTpcdFx0LmNyb3NzY2hpcF9icmlkZ2VfbGVhdmVcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9icmlkZ2VfbGVhdmUsXG43MjM2Olx0XHQucG9ydF9od3RzdGFtcF9zZXRcdD0gbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXBfc2V0LFxuNzIzNzpcdFx0LnBvcnRfaHd0c3RhbXBfZ2V0XHQ9IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wX2dldCxcbjcyMzg6XHRcdC5wb3J0X3R4dHN0YW1wXHRcdD0gbXY4OGU2eHh4X3BvcnRfdHh0c3RhbXAsXG43MjM5Olx0XHQucG9ydF9yeHRzdGFtcFx0XHQ9IG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wLFxuNzI0MDpcdFx0LmNsc19mbG93ZXJfYWRkXHRcdD0gbXY4OGU2eHh4X2Nsc19mbG93ZXJfYWRkLFxuNzI0MTpcdFx0LmNsc19mbG93ZXJfZGVsICAgICAgICAgPSBtdjg4ZTZ4eHhfY2xzX2Zsb3dlcl9kZWwsXG43MjQyOlx0XHQuZ2V0X3RzX2luZm9cdFx0PSBtdjg4ZTZ4eHhfZ2V0X3RzX2luZm8sXG43MjQzOlx0XHQuZGV2bGlua19wYXJhbV9nZXRcdD0gbXY4OGU2eHh4X2RldmxpbmtfcGFyYW1fZ2V0LFxuNzI0NDpcdFx0LmRldmxpbmtfcGFyYW1fc2V0XHQ9IG12ODhlNnh4eF9kZXZsaW5rX3BhcmFtX3NldCxcbjcyNDU6XHRcdC5kZXZsaW5rX2luZm9fZ2V0XHQ9IG12ODhlNnh4eF9kZXZsaW5rX2luZm9fZ2V0LFxuNzI0NjpcdFx0LnBvcnRfbGFnX2NoYW5nZVx0PSBtdjg4ZTZ4eHhfcG9ydF9sYWdfY2hhbmdlLFxuNzI0NzpcdFx0LnBvcnRfbGFnX2pvaW5cdFx0PSBtdjg4ZTZ4eHhfcG9ydF9sYWdfam9pbixcbjcyNDg6XHRcdC5wb3J0X2xhZ19sZWF2ZVx0XHQ9IG12ODhlNnh4eF9wb3J0X2xhZ19sZWF2ZSxcbjcyNDk6XHRcdC5jcm9zc2NoaXBfbGFnX2NoYW5nZVx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2xhZ19jaGFuZ2UsXG43MjUwOlx0XHQuY3Jvc3NjaGlwX2xhZ19qb2luXHQ9IG12ODhlNnh4eF9jcm9zc2NoaXBfbGFnX2pvaW4sXG43MjUxOlx0XHQuY3Jvc3NjaGlwX2xhZ19sZWF2ZVx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2xhZ19sZWF2ZSxcbjcyNTI6XHR9O1xuNzI1MzpcdFxuNzI1NDpcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG43MjU1Olx0e1xuNzI1NjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gY2hpcC1cdTAwM2VkZXY7XG43MjU3Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG43MjU4Olx0XG43MjU5Olx0XHRkcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZHMpLCBHRlBfS0VSTkVMKTtcbjcyNjA6XHRcdGlmICghZHMpXG43MjYxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuNzI2MjpcdFxuNzI2MzpcdFx0ZHMtXHUwMDNlZGV2ID0gZGV2O1xuNzI2NDpcdFx0ZHMtXHUwMDNlbnVtX3BvcnRzID0gbXY4OGU2eHh4X251bV9wb3J0cyhjaGlwKTtcbjcyNjU6XHRcdGRzLVx1MDAzZXByaXYgPSBjaGlwO1xuNzI2NjpcdFx0ZHMtXHUwMDNlZGV2ID0gZGV2O1xuNzI2NzpcdFx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2bXY4OGU2eHh4X3N3aXRjaF9vcHM7XG43MjY4Olx0XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZtdjg4ZTZ4eHhfcGh5bGlua19tYWNfb3BzO1xuNzI2OTpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWluID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFnZV90aW1lX2NvZWZmO1xuNzI3MDpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFnZV90aW1lX2NvZWZmICogVThfTUFYO1xuNzI3MTpcdFxuNzI3MjpcdFx0LyogU29tZSBjaGlwcyBzdXBwb3J0IHVwIHRvIDMyLCBidXQgdGhhdCByZXF1aXJlcyBlbmFibGluZyB0aGVcbjcyNzM6XHRcdCAqIDUtYml0IHBvcnQgbW9kZSwgd2hpY2ggd2UgZG8gbm90IHN1cHBvcnQuIDY0MGteVzE2IG91Z2h0IHRvXG43Mjc0Olx0XHQgKiBiZSBlbm91Z2ggZm9yIGFueW9uZS5cbjcyNzU6XHRcdCAqL1xuNzI3NjpcdFx0ZHMtXHUwMDNlbnVtX2xhZ19pZHMgPSBtdjg4ZTZ4eHhfaGFzX2xhZyhjaGlwKSA/IDE2IDogMDtcbjcyNzc6XHRcbjcyNzg6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGRzKTtcbjcyNzk6XHRcbjcyODA6XHRcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbjcyODE6XHR9XG43MjgyOlx0XG43MjgzOlx0c3RhdGljIHZvaWQgbXY4OGU2eHh4X3VucmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbjcyODQ6XHR7XG43Mjg1Olx0XHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2goY2hpcC1cdTAwM2Vkcyk7XG43Mjg2Olx0fVxuNzI4NzpcdFxuNzI4ODpcdHN0YXRpYyBjb25zdCB2b2lkICpwZGF0YV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoc3RydWN0IGRldmljZSAqZGV2KVxuNzI4OTpcdHtcbjcyOTA6XHRcdGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMgPSBkZXYtXHUwMDNlZHJpdmVyLVx1MDAzZW9mX21hdGNoX3RhYmxlO1xuNzI5MTpcdFx0Y29uc3Qgc3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gZGV2LVx1MDAzZXBsYXRmb3JtX2RhdGE7XG43MjkyOlx0XG43MjkzOlx0XHRmb3IgKDsgbWF0Y2hlcy1cdTAwM2VuYW1lWzBdIHx8IG1hdGNoZXMtXHUwMDNldHlwZVswXSB8fCBtYXRjaGVzLVx1MDAzZWNvbXBhdGlibGVbMF07XG43Mjk0Olx0XHQgICAgIG1hdGNoZXMmIzQzOyYjNDM7KSB7XG43Mjk1Olx0XHRcdGlmICghc3RyY21wKHBkYXRhLVx1MDAzZWNvbXBhdGlibGUsIG1hdGNoZXMtXHUwMDNlY29tcGF0aWJsZSkpXG43Mjk2Olx0XHRcdFx0cmV0dXJuIG1hdGNoZXMtXHUwMDNlZGF0YTtcbjcyOTc6XHRcdH1cbjcyOTg6XHRcdHJldHVybiBOVUxMO1xuNzI5OTpcdH1cbjczMDA6XHRcbjczMDE6XHQvKiBUaGVyZSBpcyBubyBzdXNwZW5kIHRvIFJBTSBzdXBwb3J0IGF0IERTQSBsZXZlbCB5ZXQsIHRoZSBzd2l0Y2ggY29uZmlndXJhdGlvblxuNzMwMjpcdCAqIHdvdWxkIGJlIGxvc3QgYWZ0ZXIgYSBwb3dlciBjeWNsZSBzbyBwcmV2ZW50IGl0IHRvIGJlIHN1c3BlbmRlZC5cbjczMDM6XHQgKi9cbjczMDQ6XHRzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG12ODhlNnh4eF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbjczMDU6XHR7XG43MzA2Olx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG43MzA3Olx0fVxuNzMwODpcdFxuNzMwOTpcdHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXY4OGU2eHh4X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG43MzEwOlx0e1xuNzMxMTpcdFx0cmV0dXJuIDA7XG43MzEyOlx0fVxuNzMxMzpcdFxuNzMxNDpcdHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdjg4ZTZ4eHhfcG1fb3BzLCBtdjg4ZTZ4eHhfc3VzcGVuZCwgbXY4OGU2eHh4X3Jlc3VtZSk7XG43MzE1Olx0XG43MzE2Olx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuNzMxNzpcdHtcbjczMTg6XHRcdHN0cnVjdCBkc2FfbXY4OGU2eHh4X3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG43MzE5Olx0XHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwNzkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIHRoZSBgbXY4OGU2eHh4YCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcHJvYmUgZnVuY3Rpb24gYW5kIGl0IG5lZWRzIGVpdGhlciBhIGRldmljZSB0cmVlIG5vZGUgb3IgcGxhdGZvcm0gZGF0YS4gU3l6a2FsbGVyIGNhbiBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMsIHJpZ2h0PyBCdXQgaXMgdGhhdCBhIHN0YW5kYXJkIHRoaW5nPyBJIGRvbiYjMzk7dCB0aGluayBpdCYjMzk7cyB0aGUgZGVmYXVsdC4gSGFuZyBvbiwgU3l6a2FsbGVyICpkaWQqIGFwcGx5IHRoYXQgcGF0Y2guLi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQuCgpCdXQgdGhpcyBwcm9tcHQuLi4gaXQmIzM5O3Mgc2F5aW5nIHRvIGZvY3VzIG9uIHJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgbWVudGlvbnMgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIENhbiBJIGFjdHVhbGx5IHJlYWNoIGBtdjg4ZTZ4eHhgIGluIFFFTVU/IE5vLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy4gSXMgdGhlcmUgYSBtb2NrIGRyaXZlciBJIGNvdWxkIHVzZSB0byBlbXVsYXRlIGl0PyBOb3BlLgoKSG1tLi4uIGlzIHRoZXJlIHNvbWUgYmFja2Rvb3Igd2F5IHRvIGluc3RhbnRpYXRlIHRoaXMgdGhpbmc/IENhbiBJIHVzZSBgaTJjYCBvciBgbWRpb2AgZnJvbSB1c2Vyc3BhY2U/IENhbiB1c2Vyc3BhY2UgZXZlbiBjcmVhdGUgYW4gTURJTyBkZXZpY2UgdmlhIGBzeXNmc2A/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MuIFRoZSBNRElPIGJ1cyBkcml2ZXIgdXN1YWxseSBpbnN0YW50aWF0ZXMgdGhlc2UgYmFzZWQgb24gRFQgb3Igc29tZSBzY2FuLiBJdCBzY2FucywgZmluZHMgdGhlIGRldmljZSwgYW5kIHRoZW4gaXQgY3JlYXRlcyB0aGUgZGV2aWNlLgoKQnV0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4uLnRoZSBzY2FuIHdvbiYjMzk7dCBmaW5kIGFueXRoaW5nLiBSaWdodC4gVGhhdCYjMzk7cyBhIHByb2JsZW0uIFdhaXQgYSBtaW51dGUhIFRoZSBgbXY4OGU2eHh4X2RldGVjdGAgZnVuY3Rpb24uIEl0ICpyZWFkcyogdGhlIHN3aXRjaCBJRCBkaXJlY3RseSBmcm9tIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuIElmIGl0IGRvZXNuJiMzOTt0IG1hdGNoIGEgdmFsaWQgSUQsIGl0IGZhaWxzIGltbWVkaWF0ZWx5LiBTbywgbGV0JiMzOTtzIGdvIGNoZWNrIG91dCB0aGlzIGBtdjg4ZTZ4eHhfZGV0ZWN0YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgcGllY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3MDAwOlx0XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuNzAwMTpcdFx0dW5zaWduZWQgaW50IGlkLCBudW1fdHg7XG43MDAyOlx0XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuNzAwMzpcdFx0c3RydWN0IGRzYV9sYWcgKmxhZztcbjcwMDQ6XHRcdGludCBpLCBlcnIsIG50aDtcbjcwMDU6XHRcdHUxNiBtYXNrWzhdO1xuNzAwNjpcdFx0dTE2IGl2ZWM7XG43MDA3Olx0XG43MDA4Olx0XHQvKiBBc3N1bWUgbm8gcG9ydCBpcyBhIG1lbWJlciBvZiBhbnkgTEFHLiAqL1xuNzAwOTpcdFx0aXZlYyA9IEJJVChtdjg4ZTZ4eHhfbnVtX3BvcnRzKGNoaXApKSAtIDE7XG43MDEwOlx0XG43MDExOlx0XHQvKiBEaXNhYmxlIGFsbCBtYXNrcyBmb3IgcG9ydHMgdGhhdCBfYXJlXyBtZW1iZXJzIG9mIGEgTEFHLiAqL1xuNzAxMjpcdFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9wb3J0KGRwLCBkcykge1xuNzAxMzpcdFx0XHRpZiAoIWRwLVx1MDAzZWxhZylcbjcwMTQ6XHRcdFx0XHRjb250aW51ZTtcbjcwMTU6XHRcbjcwMTY6XHRcdFx0aXZlYyBcdTAwMjY9IH5CSVQoZHAtXHUwMDNlaW5kZXgpO1xuNzAxNzpcdFx0fVxuNzAxODpcdFxuNzAxOTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspXG43MDIwOlx0XHRcdG1hc2tbaV0gPSBpdmVjO1xuNzAyMTpcdFxuNzAyMjpcdFx0LyogRW5hYmxlIHRoZSBjb3JyZWN0IHN1YnNldCBvZiBtYXNrcyBmb3IgYWxsIExBRyBwb3J0cyB0aGF0XG43MDIzOlx0XHQgKiBhcmUgaW4gdGhlIFR4IHNldC5cbjcwMjQ6XHRcdCAqL1xuNzAyNTpcdFx0ZHNhX2xhZ3NfZm9yZWFjaF9pZChpZCwgZHMtXHUwMDNlZHN0KSB7XG43MDI2Olx0XHRcdGxhZyA9IGRzYV9sYWdfYnlfaWQoZHMtXHUwMDNlZHN0LCBpZCk7XG43MDI3Olx0XHRcdGlmICghbGFnKVxuNzAyODpcdFx0XHRcdGNvbnRpbnVlO1xuNzAyOTpcdFxuNzAzMDpcdFx0XHRudW1fdHggPSAwO1xuNzAzMTpcdFx0XHRkc2FfbGFnX2ZvcmVhY2hfcG9ydChkcCwgZHMtXHUwMDNlZHN0LCBsYWcpIHtcbjcwMzI6XHRcdFx0XHRpZiAoZHAtXHUwMDNlbGFnX3R4X2VuYWJsZWQpXG43MDMzOlx0XHRcdFx0XHRudW1fdHgmIzQzOyYjNDM7O1xuNzAzNDpcdFx0XHR9XG43MDM1Olx0XG43MDM2Olx0XHRcdGlmICghbnVtX3R4KVxuNzAzNzpcdFx0XHRcdGNvbnRpbnVlO1xuNzAzODpcdFxuNzAzOTpcdFx0XHRudGggPSAwO1xuNzA0MDpcdFx0XHRkc2FfbGFnX2ZvcmVhY2hfcG9ydChkcCwgZHMtXHUwMDNlZHN0LCBsYWcpIHtcbjcwNDE6XHRcdFx0XHRpZiAoIWRwLVx1MDAzZWxhZ190eF9lbmFibGVkKVxuNzA0MjpcdFx0XHRcdFx0Y29udGludWU7XG43MDQzOlx0XG43MDQ0Olx0XHRcdFx0aWYgKGRwLVx1MDAzZWRzID09IGRzKVxuNzA0NTpcdFx0XHRcdFx0bXY4OGU2eHh4X2xhZ19zZXRfcG9ydF9tYXNrKG1hc2ssIGRwLVx1MDAzZWluZGV4LFxuNzA0NjpcdFx0XHRcdFx0XHRcdFx0ICAgIG51bV90eCwgbnRoKTtcbjcwNDc6XHRcbjcwNDg6XHRcdFx0XHRudGgmIzQzOyYjNDM7O1xuNzA0OTpcdFx0XHR9XG43MDUwOlx0XHR9XG43MDUxOlx0XG43MDUyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyA4OyBpJiM0MzsmIzQzOykge1xuNzA1MzpcdFx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzJfdHJ1bmtfbWFza193cml0ZShjaGlwLCBpLCB0cnVlLCBtYXNrW2ldKTtcbjcwNTQ6XHRcdFx0aWYgKGVycilcbjcwNTU6XHRcdFx0XHRyZXR1cm4gZXJyO1xuNzA1NjpcdFx0fVxuNzA1NzpcdFxuNzA1ODpcdFx0cmV0dXJuIDA7XG43MDU5Olx0fVxuNzA2MDpcdFxuNzA2MTpcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzX21hcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG43MDYyOlx0XHRcdFx0XHRcdHN0cnVjdCBkc2FfbGFnIGxhZylcbjcwNjM6XHR7XG43MDY0Olx0XHRpbnQgZXJyO1xuNzA2NTpcdFxuNzA2NjpcdFx0ZXJyID0gbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzKGRzKTtcbjcwNjc6XHRcbjcwNjg6XHRcdGlmICghZXJyKVxuNzA2OTpcdFx0XHRlcnIgPSBtdjg4ZTZ4eHhfbGFnX3N5bmNfbWFwKGRzLCBsYWcpO1xuNzA3MDpcdFxuNzA3MTpcdFx0cmV0dXJuIGVycjtcbjcwNzI6XHR9XG43MDczOlx0XG43MDc0Olx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9sYWdfY2hhbmdlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG43MDc1Olx0e1xuNzA3NjpcdFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbjcwNzc6XHRcdGludCBlcnI7XG43MDc4Olx0XG43MDc5Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG43MDgwOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfbGFnX3N5bmNfbWFza3MoZHMpO1xuNzA4MTpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG43MDgyOlx0XHRyZXR1cm4gZXJyO1xuNzA4MzpcdH1cbjcwODQ6XHRcbjcwODU6XHRzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2xhZ19qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG43MDg2Olx0XHRcdFx0XHQgICBzdHJ1Y3QgZHNhX2xhZyBsYWcsXG43MDg3Olx0XHRcdFx0XHQgICBzdHJ1Y3QgbmV0ZGV2X2xhZ191cHBlcl9pbmZvICppbmZvLFxuNzA4ODpcdFx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuNzA4OTpcdHtcbjcwOTA6XHRcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVx1MDAzZXByaXY7XG43MDkxOlx0XHRpbnQgZXJyLCBpZDtcbjcwOTI6XHRcbjcwOTM6XHRcdGlmICghbXY4OGU2eHh4X2xhZ19jYW5fb2ZmbG9hZChkcywgbGFnLCBpbmZvLCBleHRhY2spKVxuNzA5NDpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG43MDk1Olx0XG43MDk2Olx0XHQvKiBEU0EgTEFHIElEcyBhcmUgb25lLWJhc2VkICovXG43MDk3Olx0XHRpZCA9IGxhZy5pZCAtIDE7XG43MDk4Olx0XG43MDk5Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjU3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGlyZWN0IEFwcHJvYWNoIHRvIElkZW50aWZpY2F0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgY3V0IHRocm91Z2ggdGhlIGZsdWZmIGFuZCBnbyBzdHJhaWdodCBmb3IgdGhlIGp1Z3VsYXIuIEluc3RlYWQgb2YgZGFuY2luZyBhcm91bmQgdGhlIGlzc3VlLCBsZXQmIzM5O3MgdGFyZ2V0IHRoZSBjb3JlIGZ1bmN0aW9uIHdlJiMzOTtyZSBhZnRlci4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBgbXY4OGU2eHh4X2RldGVjdGAgaXMgdGhlIGtleSB0byBpZGVudGlmeWluZyB0aGUgTWFydmVsbCBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IGluIHF1ZXN0aW9uLiBJdCYjMzk7cyB1c3VhbGx5IHRoZSBtb3N0IGRpcmVjdCBwYXRoLiBXZSYjMzk7bGwgYnlwYXNzIGFueSBwcmVsaW1pbmFyeSBjaGVja3MgYW5kIGp1bXAgZGlyZWN0bHkgaW50byBzZWFyY2hpbmcgZm9yIGl0LiBObyBuZWVkIHRvIG92ZXJ0aGluayBpdDsgbGV0JiMzOTtzIHNlZSB3aGF0IGNvbWVzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHhfZGV0ZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICptdjg4ZTZ4eHhfbG9va3VwX2luZm8odW5zaWduZWQgaW50IHByb2RfbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1NzQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc1OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTc2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjA0PXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NpbmdsZV9jaGlwX2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2Mjc6XHRyZXR1cm4gbXY4OGU2eHh4X2RldGVjdChjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2MjgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTczMTY9c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczNzUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Mzc2Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfZGV0ZWN0KGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzM3Ny1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4OTUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEaXZpbmcgaW50byBgbXY4OGU2eHh4X2RldGVjdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJ1c2luZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3ZSYjMzk7cmUgbG9va2luZyBhdCBgbXY4OGU2eHh4X2RldGVjdGAg4oCTIGxpa2VseSBhIGRldGVjdGlvbiByb3V0aW5lIGZvciBhIE1hcnZlbGwgRXRoZXJuZXQgUEhZLiYjMzQ7IEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGF0IGZpbGVuYW1lOiBgbXY4OGU2eHh4YCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7TWFydmVsbCwgODhFNnh4eCBmYW1pbHksJiMzNDsgYW5kIHRoZSB0cmFpbGluZyBgX2RldGVjdGAgYWxtb3N0IGNlcnRhaW5seSBpbmRpY2F0ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3IgZW51bWVyYXRpb24gcGhhc2UuIEkgZXhwZWN0IHRoaXMgY29kZSB0byBoYW5kbGUgdGhlIGluaXRpYWwgcHJvYmluZyBvZiB0aGUgUEhZIGNoaXAsIGlkZW50aWZpY2F0aW9uLCBhbmQgcG90ZW50aWFsbHkgc29tZSBiYXNpYyBjb25maWd1cmF0aW9uIG9yIGNhcGFiaWxpdHkgZGlzY292ZXJ5LiBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBXaGF0JiMzOTtzIHRoZSB0YXJnZXQgaGFyZHdhcmU/IFdoYXQgYXJlIHRoZSB0eXBpY2FsIHJlZ2lzdGVyIGFkZHJlc3NlcyBJIHNob3VsZCBiZSBleHBlY3Rpbmc/IFdoYXQgbWV0aG9kcyBvZiBkZXRlY3Rpb24g4oCTIHBlcmhhcHMgSTJDLCBNRElPLCBvciBzb21lIG90aGVyIGludGVyZmFjZSDigJMgYXJlIHRoZXkgdXNpbmc/IEkgd2FudCB0byBzZWUgaG93IHJvYnVzdCB0aGVpciBkZXRlY3Rpb24gc3RyYXRlZ3kgaXM6IGFyZSB0aGV5IGp1c3QgY2hlY2tpbmcgYSBzaW5nbGUgcmVnaXN0ZXIgZm9yIGEgc3BlY2lmaWMgdmFsdWUsIG9yIGFyZSB0aGV5IHRha2luZyBhIG1vcmUgc29waGlzdGljYXRlZCwgbXVsdGktc3RhZ2UgYXBwcm9hY2gsIG1heWJlIGNoZWNraW5nIGZvciBwYXJ0aWN1bGFyIFBIWSBJRHMgb3IgcmV2aXNpb24gbnVtYmVycz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWxseSB0cmlja3kgaW50ZXJhY3Rpb24gd2l0aCBNRElPIGJ1cyB0aW1pbmcsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBiZWluZyBydW4gb24gYSBwbGF0Zm9ybSB3aXRoIG5vbi1vcHRpbWFsIGRyaXZlcnMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoYXQuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgZGV0YWlscyBvZiBNRElPIGNvbW1hbmRzIGFuZCB0aGF0IGl0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmVyc2lvbiBJIGFtIHN1cHBvcnRpbmcuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaWYgdGhpcyBkZXRlY3Rpb24gaXMgdGhlIHJpZ2h0IHdheSB0byBhcHByb2FjaCB3aGF0IEkgYW0gZG9pbmcsIG9yIGlmIGl0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NTc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1NzU6XHRzdGF0aWMgaW50IG12ODhlNnh4eF9kZXRlY3Qoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuNjU3NjpcdHtcbjY1Nzc6XHRcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyAqaW5mbztcbjY1Nzg6XHRcdHVuc2lnbmVkIGludCBwcm9kX251bSwgcmV2O1xuNjU3OTpcdFx0dTE2IGlkO1xuNjU4MDpcdFx0aW50IGVycjtcbjY1ODE6XHRcbjY1ODI6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbjY1ODM6XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgMCwgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lELCBcdTAwMjZpZCk7XG42NTg0Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbjY1ODU6XHRcdGlmIChlcnIpXG42NTg2Olx0XHRcdHJldHVybiBlcnI7XG42NTg3Olx0XG42NTg4Olx0XHRwcm9kX251bSA9IGlkIFx1MDAyNiBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF9NQVNLO1xuNjU4OTpcdFx0cmV2ID0gaWQgXHUwMDI2IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9SRVZfTUFTSztcbjY1OTA6XHRcbjY1OTE6XHRcdGluZm8gPSBtdjg4ZTZ4eHhfbG9va3VwX2luZm8ocHJvZF9udW0pO1xuNjU5MjpcdFx0aWYgKCFpbmZvKVxuNjU5MzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjY1OTQ6XHRcbjY1OTU6XHRcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbjY1OTY6XHRcdGNoaXAtXHUwMDNlaW5mbyA9IGluZm87XG42NTk3Olx0XG42NTk4Olx0XHRkZXZfaW5mbyhjaGlwLVx1MDAzZWRldiwgXCYjMzQ7c3dpdGNoIDB4JXggZGV0ZWN0ZWQ6ICVzLCByZXZpc2lvbiAldVxcblwmIzM0OyxcbjY1OTk6XHRcdFx0IGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSwgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW5hbWUsIHJldik7XG42NjAwOlx0XG42NjAxOlx0XHRyZXR1cm4gMDtcbjY2MDI6XHR9XG42NjAzOlx0XG42NjA0Olx0c3RhdGljIGludCBtdjg4ZTZ4eHhfc2luZ2xlX2NoaXBfZGV0ZWN0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbjY2MDU6XHRcdFx0XHRcdFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuNjYwNjpcdHtcbjY2MDc6XHRcdGludCBlcnI7XG42NjA4Olx0XG42NjA5Olx0XHQvKiBkdWFsX2NoaXAgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHNpbmdsZS9tdWx0aS1jaGlwIG1vZGVzICovXG42NjEwOlx0XHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWR1YWxfY2hpcClcbjY2MTE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42NjEyOlx0XG42NjEzOlx0XHQvKiBJZiB0aGUgbWRpbyBhZGRyIGlzIDE2IGluZGljYXRpbmcgdGhlIGZpcnN0IHBvcnQgYWRkcmVzcyBvZiBhIHN3aXRjaFxuNjYxNDpcdFx0ICogKGUuZy4gbXY4OGU2KjQxKSBpbiBzaW5nbGUgY2hpcCBhZGRyZXNzaW5nIG1vZGUgdGhlIGRldmljZSBtYXkgYmVcbjY2MTU6XHRcdCAqIGNvbmZpZ3VyZWQgaW4gc2luZ2xlIGNoaXAgYWRkcmVzc2luZyBtb2RlLiBTZXR1cCB0aGUgc21pIGFjY2VzcyBhc1xuNjYxNjpcdFx0ICogc2luZ2xlIGNoaXAgYWRkcmVzc2luZyBtb2RlIGFuZCBhdHRlbXB0IHRvIGRldGVjdCB0aGUgbW9kZWwgb2YgdGhlXG42NjE3Olx0XHQgKiBzd2l0Y2gsIGlmIHRoaXMgZmFpbHMgdGhlIGRldmljZSBpcyBub3QgY29uZmlndXJlZCBpbiBzaW5nbGUgY2hpcFxuNjYxODpcdFx0ICogYWRkcmVzc2luZyBtb2RlLlxuNjYxOTpcdFx0ICovXG42NjIwOlx0XHRpZiAobWRpb2Rldi1cdTAwM2VhZGRyICE9IDE2KVxuNjYyMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjY2MjI6XHRcbjY2MjM6XHRcdGVyciA9IG12ODhlNnh4eF9zbWlfaW5pdChjaGlwLCBtZGlvZGV2LVx1MDAzZWJ1cywgMCk7XG42NjI0Olx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzE0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQmIzM5O3MgZ3JhYmJpbmcgYE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRGAgZnJvbSBwb3J0IDAuIElmIHRoYXQgSUQgZG9lc24mIzM5O3Qgaml2ZSB3aXRoIGEga25vd24gcHJvZHVjdCBudW1iZXIsIGl0JiMzOTtzIHRvc3NpbmcgYmFjayBhbiBgLUVOT0RFVmAgZXJyb3IuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBzaW5jZSB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcyBzcGVjaWZpYyBzd2l0Y2gsIHByb2JpbmcgdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSBpcyBhIGd1YXJhbnRlZWQgZmFpbC4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgaWYsICpoeXBvdGhldGljYWxseSosIHNvbWVvbmUgaGFkIHNldCB1cCBhIG1vY2sgTURJTyBidXMgdGhhdCBhY3R1YWxseSAqZGlkKiByZXR1cm4gYSB2YWxpZCBJRD8gVGhhdCB3b3VsZCBjaGFuZ2UgdGhpbmdzLCB3b3VsZG4mIzM5O3QgaXQ/IFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBzcGVjaWZpYyBtb2NrIGZvciBgbXY4OGU2eHh4YD8gSSBoaWdobHkgZG91YnQgaXQ7IGl0IGRvZXNuJiMzOTt0IHVzdWFsbHkgZ28gdGhhdCBncmFudWxhci4KCkFoLCBidXQgdGhlIHByb21wdC4gTGV0IG1lIHJlLXJlYWQgaXQuLi4gJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIElmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4uLiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsgVGhpcyBzY2VuYXJpbyBpcywgd2l0aG91dCBhIGRvdWJ0LCBpbXBvc3NpYmxlIHRvIHJlYWNoLiBTbyBJIHNob3VsZCBiZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjay4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlIGZvciBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYC4gSSB3YW50IHRvIHNlZSBpZiAqYW55dGhpbmcqIGV2ZW4gcmVtb3RlbHkgbG9va3MgbGlrZSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBzZWFyY2ggd2l0aCBteSBjb2RlIHNlYXJjaCB0b29scyB0byBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01WODhFNlhYWF9QT1JUX1NXSVRDSF9JRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04MDM9c3RhdGljIHZvaWQgbXY4OGU2MzkzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODA3LVx0Ym9vbCBpc182MTkxeCA9XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDg6XHRcdGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxWDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwOS1cdGJvb2wgaXNfNjM2MSA9XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTA6XHRcdGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODExLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM3NTI9c3RhdGljIGNvbnN0IHUxNiBmYW1pbHlfcHJvZF9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc1MzpcdFtNVjg4RTZYWFhfRkFNSUxZXzYzNDFdID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM0MSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTQ6XHRbTVY4OEU2WFhYX0ZBTUlMWV82MzkwXSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzU1Olx0W01WODhFNlhYWF9GQU1JTFlfNjM5M10gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkzWCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NTYtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01Njk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzAwLVx0W01WODhFNjAyMF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzAxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDIwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcwMi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzI1LVx0W01WODhFNjA3MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzI2Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDcxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcyNy1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzQ2LVx0W01WODhFNjA4NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDg1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0OC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjA5Nyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzcwLVx0W01WODhFNjA5NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzcxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDk1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc3Mi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjA5NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzkxLVx0W01WODhFNjA5N10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzkyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDk3LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc5My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjA5Nyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODE2LVx0W01WODhFNjEyM10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTIzLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxOC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE2NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODQxLVx0W01WODhFNjEzMV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODQyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTMxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg0My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE4NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODYyLVx0W01WODhFNjE0MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODYzOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTQxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg2NC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM0MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODg4LVx0W01WODhFNjE2MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODg5Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTYxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg5MC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE2NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTE0LVx0W01WODhFNjE2NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTE1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTY1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkxNi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE2NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTM5LVx0W01WODhFNjE3MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTQwOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTcxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk0MS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTY0LVx0W01WODhFNjE3Ml0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTY1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTcyLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk2Ni1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTkwLVx0W01WODhFNjE3NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTkxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk5Mi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDE1LVx0W01WODhFNjE3Nl0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDE2Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc2LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjAxNy1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDQxLVx0W01WODhFNjE4NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDQyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTg1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA0My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE4NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDYzLVx0W01WODhFNjE5MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDY0Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA2NS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDg4LVx0W01WODhFNjE5MFhdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjA4OTpcdFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFgsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDkwLVx0XHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxMTMtXHRbTVY4OEU2MTkxXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxMTQ6XHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTEsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTE1LVx0XHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxMzgtXHRbTVY4OEU2MTkxWF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTM5Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxWCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxNDAtXHRcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE2My1cdFtNVjg4RTYxOTNYXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxNjQ6XHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTNYLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE2NS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5Myxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTkwLVx0W01WODhFNjIyMF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTkxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjIwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE5Mi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjE3LVx0W01WODhFNjI0MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjE4Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjQwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxOS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjQ0LVx0W01WODhFNjI1MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjQ1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjUwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0Ni1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjY2LVx0W01WODhFNjI5MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjkwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2OC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjkzLVx0W01WODhFNjMyMF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mjk0Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzIwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI5NS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjMyMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzIxLVx0W01WODhFNjMyMV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzIyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzIxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyMy1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjMyMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzQ5LVx0W01WODhFNjM0MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzUwOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM1MS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM0MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02Mzc3LVx0W01WODhFNjM1MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzc4Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3OS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDAyLVx0W01WODhFNjM1MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDAzOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQwNC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDI3LVx0W01WODhFNjM1Ml0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDI4Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUyLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyOS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDU0LVx0W01WODhFNjM2MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDU1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1Ni1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5Myxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDgxLVx0W01WODhFNjM5MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDgyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTA5LVx0W01WODhFNjM5MFhdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjUxMDpcdFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFgsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTExLVx0XHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MzYtXHRbTVY4OEU2MzkzWF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTM3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkzWCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MzgtXHRcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjU3NT1zdGF0aWMgaW50IG12ODhlNnh4eF9kZXRlY3Qoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODItXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTgzOlx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCAwLCBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSUQsIFx1MDAyNmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODQtXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU4ODpcdHByb2RfbnVtID0gaWQgXHUwMDI2IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EX01BU0s7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg5Olx0cmV2ID0gaWQgXHUwMDI2IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9SRVZfTUFTSztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jPTU0OT1zdGF0aWMgaW50IG12ODhlNjM5MF9wY3NfaW5pdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy01NjktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM6NTcwOlx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwWCB8fFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jOjU3MTpcdCAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFgpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtNTcyLVx0XHRtcGNzLVx1MDAzZWVycmF0dW1fM18xNCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmM9NDExPWludCBtdjg4ZTYzOTN4X3BvcnRfc2V0X3NwZWVkX2R1cGxleChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jLTQxNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jOjQxNzpcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jLTQxOC1cdCAgICBzcGVlZCBcdTAwM2UgMjUwMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaC0xMjYtLyogT2Zmc2V0IDB4MDM6IFN3aXRjaCBJZGVudGlmaWVyIFJlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMjc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURcdFx0MHgwM1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTI4OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfTUFTS1x0MHhmZmYwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMjk6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDIwXHQweDAyMDBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwNzFcdDB4MDcxMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTMxOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjA4NVx0MHgwNGEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzI6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDk1XHQweDA5NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTdcdDB4MDk5MFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM0OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFhcdDB4MGEwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFhcdDB4MGExMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM2OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjEzMVx0MHgxMDYwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzIwXHQweDExNTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxMjNcdDB4MTIxMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE2MVx0MHgxNjEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDA6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTY1XHQweDE2NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0MTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzFcdDB4MTcxMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE3Mlx0MHgxNzIwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDM6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc1XHQweDE3NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0NDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzZcdDB4MTc2MFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQ1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFx0MHgxOTAwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDY6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxXHQweDE5MTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0NzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFYXHQweDE5MjBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0ODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTNYXHQweDE5MzBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0OTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxODVcdDB4MWE3MFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTUwOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjIyMFx0MHgyMjAwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjQwXHQweDI0MDBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1MjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyNTBcdDB4MjUwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTUzOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MVx0MHgyNjEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjkwXHQweDI5MDBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1NTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjFcdDB4MzEwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU2OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE0MVx0MHgzNDAwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxXHQweDM0MTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1ODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTJcdDB4MzUyMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM1MFx0MHgzNzEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNjA6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUxXHQweDM3NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE2MTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTBcdDB4MzkwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5M1hcdDB4MzkzMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYzOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1JFVl9NQVNLXHQweDAwMGZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oLTE2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU1NDIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBtb2NrIGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYgdGhhdCBjb3VsZCBzaW11bGF0ZSB0aGUgTWFydmVsbCBzd2l0Y2gsIHdoaWNoIGlzIHRoZSBmaXJzdCB0aGluZyBJIGNoZWNrZWQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgU3l6a2FsbGVyICpkaWQqIGFwcGx5IGEgcGF0Y2ggcmVsYXRlZCB0byB0aGlzLCByaWdodD8gT2theSwgc28gdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBrbm93IFN5emthbGxlciB0aHJvd3MgcGF0Y2hlcyBhcm91bmQgdG8gdGVzdCB0aGVtLCBidXQgaWYgdGhlIGZ1enplciBjYW4mIzM5O3QgKmFjdHVhbGx5KiBnZXQgdG8gdGhlIGNvZGUsIGl0JiMzOTtsbCBqdXN0IHJlcG9ydCB6ZXJvIGNvdmVyYWdlIGZvciB0aGF0IHBhdGNoLgoKUmlnaHQsIHRoZSBwcm9tcHQgaXMgZXhwbGljaXQgYWJvdXQgdGhpczogSSBuZWVkIHRvIGZsYWcgaXQgYXMgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhpcyBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIGEgKnBoeXNpY2FsKiBNYXJ2ZWxsIHN3aXRjaCwgc28gSSYjMzk7bSB0aGlua2luZyBJJiMzOTt2ZSBmb3VuZCBteSBhbnN3ZXIuIFNpbmNlIHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIHRoaXMgaXMgKmRlZmluaXRlbHkqIGdvaW5nIHRvIGJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkp1c3QgdG8gYmUgc3VyZSwgSeKAmWxsIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaG93IHRoZSBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCBmdW5jdGlvbiBpcyBjYWxsZWQuIFJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmtgLiBUaGF0IHdvcmsgaXMgaW5pdGlhbGl6ZWQgaW4gYG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwYC4gVGhhdCwgaW4gdHVybiwgaXMgY2FsbGVkIGZyb20gYG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wX3NldGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBkc2FfcG9ydF9od3RzdGFtcF9zZXRgLCBhbmQgKnRoYXQqIGlzIGNhbGxlZCBmcm9tIGBkc2Ffc2xhdmVfaW9jdGxgIHdpdGggdGhlIGBTSU9DU0hXVFNUQU1QYCBpb2N0bC4gSXQmIzM5O3MgYSBjaGFpbiwgYnV0IGl0IHJlcXVpcmVzIHRoZSBzd2l0Y2ggdG8gYmUgcmVnaXN0ZXJlZCBhbmQgcHJvYmVkLgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbDogV2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudCwgYG12ODhlNnh4eF9kZXRlY3RgICp3aWxsKiBmYWlsLiBUaGUgcHJvYmUgd2lsbCBmYWlsLiBUaGUgc3dpdGNoIHdvbiYjMzk7dCByZWdpc3RlciwgYW5kIHRoZSBuZXR3b3JrIGRldmljZXMgYXJlbiYjMzk7dCBjcmVhdGVkLiBUaGUgY29kZSBpcyAqY29tcGxldGVseSogdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiBpcyB0aGVyZSBhIG1vY2sgTURJTyBidXMgaW4gdGhlIGtlcm5lbCBzb21ld2hlcmU/IEdvdHRhIGNoZWNrIHRoYXQgcmVhbCBxdWljay4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgYG1kaW8tbW9ja2AgZHJpdmVyIGV4aXN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY0NTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiB3ZSBjb3VsZCBzb21laG93IHRyaWdnZXIgdGhlIGNvZGUgcGF0aCBpbiBxdWVzdGlvbiwgYHBhcnNlX2VtYmVkZGVkX3RzYCwgdXNpbmcgYSBkdW1teSBkZXZpY2Ugb3Igc29tZSBjbGV2ZXIgdHJpY2tlcnkuIE15IGludHVpdGlvbiB3YXMgdG8gY2hlY2sgaWYgd2UgY291bGQgbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgYG1kaW8tZ3Bpb2AsIGJ1dCB0aGUgZHJpdmVyLCBgbXY4OGU2eHh4YCwgZXhwbGljaXRseSByZWFkcyBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYCB2aWEgTURJTy4gSWYgdGhhdCByZWFkIHJldHVybnMgYSBub25zZW5zaWNhbCB2YWx1ZSwgdGhlIGRldmljZSBkZXRlY3Rpb24gZmFpbHMuIFVubGVzcyB0aGVyZSYjMzk7cyBhIHdheSB0byBpbmplY3QgYXJiaXRyYXJ5IE1ESU8gcmVzcG9uc2VzIGluIGEgdGVzdGluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3Igc3l6a2FsbGVyLgoKU3l6a2FsbGVyLCBteSBnby10byBmdXp6aW5nIHRvb2wsIGRvZXNuJiMzOTt0IGhhdmUgYW4gTURJTyBmdXp6ZXIuIEl0IGhhbmRsZXMgb3RoZXIgaW50ZXJmYWNlcyBsaWtlIFVTQiwgUENJLCBhbmQgSTJDIChwb3RlbnRpYWxseSB0aHJvdWdoIGBpMmMtc3R1YmApLCBidXQgTURJTyBpcyBhYnNlbnQuIEkgYnJpZWZseSBjb25zaWRlcmVkIGlmIHRoZSBkcml2ZXIgY291bGQgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggSTJDLCBidXQgaXQmIzM5O3MgYW4gTURJTyBkcml2ZXIsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCk15IG5leHQgc3RlcCB3YXMgdG8gdHJhY2UgaG93IHdlIG1pZ2h0ICpwb3NzaWJseSogcmVhY2ggYHBhcnNlX2VtYmVkZGVkX3RzYC4gSXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24gYnVyaWVkIHdpdGhpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jYC4gVGhlIGNhbGwgY2hhaW4gaXMgdmVyeSBzcGVjaWZpYzogYG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZGAgLSZndDsgYG12ODhlNnh4eF9yeHRzdGFtcF93b3JrYCAtJmd0OyB3b3JrcXVldWUuIEluIHNob3J0LCBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGBtdjg4ZTZ4eHhgIGRyaXZlci4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBlbXVsYXRpb24gbGFuZHNjYXBlLiBEb2VzIFFFTVUsIHRoZSB2aXJ0dWFsIG1hY2hpbmUgSSBvZnRlbiB3b3JrIHdpdGgsIHByb3ZpZGUgZW11bGF0aW9uIGZvciBNYXJ2ZWxsIHN3aXRjaGVzPyBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgcm9ja2VyYCBzd2l0Y2hlcywgYnV0IGRvZXMgaXQgY292ZXIgdGhlIGBtdjg4ZTZ4eHhgIHNwZWNpZmljYWxseT8gQSBxdWljayBtZW50YWwgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBtdjg4ZTZ4eHhgLiBFdmVuIGlmIGl0IGRpZCwgc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzbiYjMzk7dCBydW4gd2l0aCB0aGF0IHR5cGUgb2YgaGFyZHdhcmUgZW11bGF0aW9uIGVuYWJsZWQuIEl0JiMzOTtzIGNvbmZpZ3VyZWQgd2l0aCBzdGFuZGFyZCBoYXJkd2FyZSBlbXVsYXRlZCBsaWtlIGBlMTAwMGAsIGB2aXJ0aW8tbmV0YCwgYW5kIGB2ZXRoYC4KClNvLCBjb25zaWRlcmluZyBhbGwgb2YgdGhpcywgdGhpcyBjb2RlIGlzICp1bnJlYWNoYWJsZSogaW4gc3l6a2FsbGVyLgoKTGV0IG1lIHJldmlzaXQgdGhlIHByb21wdCBjcml0ZXJpYS4gSXQgc3RhdGVzIHRoYXQgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIHBlcmZlY3RseSBtYXRjaGVzIHRoZSBzaXR1YXRpb24uIFRoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgKGBtdjg4ZTZ4eHhgKSBmb3Igd2hpY2ggbm8gdXNhYmxlIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYSBnZW5lcmljIERTQSBtb2NrIHRoYXQgKm1pZ2h0KiB1c2UgdGhpcyBjb2RlLiBJJiMzOTtsbCBzZWFyY2ggdGhyb3VnaCBgdG9vbHMvdGVzdGluZy9gIGFuZCBgZHJpdmVycy9uZXQvZHNhL2AsIGJ1dCB0aGUgY29kZSByZXNpZGVzIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2AsIHdoaWNoIGlzIGNsZWFybHkgYW5kIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLgoKRmluYWxseSwgSSYjMzk7bGwgZXhwbG9yZSB0aGUgcG9zc2liaWxpdHkgb2YgcHJvYmluZyBgbXY4OGU2eHh4YCB0aHJvdWdoIGEgc29mdHdhcmUgcGxhdGZvcm0gZGV2aWNlIHRoYXQgbW9ja3MgdGhlIE1ESU8gcmVzcG9uc2VzLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBtdjg4ZTZ4eHhgIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9gIG9yIGBkcml2ZXJzL25ldC9kc2EvYCB0byB1bmNvdmVyIGEgcG90ZW50aWFsIG1vY2suCgpTbywgaW4gc3VtbWFyeSwgYmFzZWQgb24gdGhlIGxhY2sgb2YgZW11bGF0aW9uIGFuZCB0aGUgZHJpdmVyJiMzOTtzIHRpZ2h0IGhhcmR3YXJlIGRlcGVuZGVuY3ksIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLCBhbmQgdGh1cyBub3Qgd29ydGggZnV6emluZyBmb3IgdGhpcyBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3OTU1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW1tZWRpYXRlIEFzc2Vzc21lbnQ6IE5vIFNpbXVsYXRlZCBFbnZpcm9ubWVudCBOZWVkZWQqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyBjbGVhci4gVGhlIGluaXRpYWwgZGlyZWN0aXZlIOKAkyB0aGVyZSYjMzk7cyBubyBuZWVkIGZvciBhICYjMzQ7bW9jayYjMzQ7IG9yIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gV2UgY2FuIHdvcmsgZGlyZWN0bHkgd2l0aCB0aGUgYWN0dWFsIHN5c3RlbSBvciBkYXRhLiBUaGlzIGltcGxpZXMgYSBsZXZlbCBvZiBjb25maWRlbmNlIGluIHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlIG9yIGEgbmVlZCBmb3IgYSBwcm9kdWN0aW9uLWxldmVsIHBlcnNwZWN0aXZlIHJpZ2h0IGF3YXkuCgpUaGUgc3Vic2VxdWVudCB0aG91Z2h0LCAmIzM0O1doYXQgYWJvdXQgYGRzYV9sb29wYD8mIzM0OyBzdWdnZXN0cyBhIHNoaWZ0IGluIGZvY3VzLiBJdCBpbmRpY2F0ZXMgYW4gaW1tZWRpYXRlIGNvbnNpZGVyYXRpb24gb2YgYSBzcGVjaWZpYyBjb21wb25lbnQgb3IgZnVuY3Rpb24sIHBlcmhhcHMgYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiBvciBvcGVyYXRpb25hbCBhc3BlY3Qgb2YgdGhlIHByb2plY3QuIEkmIzM5O2QgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgcm9sZSBhbmQgcmVsZXZhbmNlIG9mIGBkc2FfbG9vcGAgdG8gdGhlIGxhcmdlciBvYmplY3RpdmUuIElzIGl0IGEgY3JpdGljYWwgcGF0aCBlbGVtZW50PyBBIGtub3duIHBvdGVudGlhbCBib3R0bGVuZWNrPyBPciBhIHNwZWNpZmljIGFyZWEgd2hlcmUgdGhpcyB0ZWFtIGlzIGZvY3VzaW5nIG91ciBhdHRlbnRpb24/IFRoZSBxdWVzdGlvbiBpbXBsaWVzIHRoYXQgYSBzcGVjaWZpYyBtb2R1bGUgaXMgY29uc2lkZXJlZCBmb3IgYSByZWFzb24sIGFuZCB0aGVyZSBpcyBhIHNwZWNpZmljIGltcGxpY2F0aW9uIGZvciB0aGUgcHJvamVjdCBkZXBlbmRpbmcgb24gaXRzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTM9YmNtLXNmMi1vYmpzXHRcdFx0Oj0gYmNtX3NmMi5vIGJjbV9zZjJfY2ZwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXHQmIzQzOz0gZHNhX2xvb3Aub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcdCYjNDM7PSBrczg5OTUub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYtXHR1MTYgbWVtYmVycztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXHRjaGFyIG5hbWVbRVRIX0dTVFJJTkdfTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1OmVudW0gZHNhX2xvb3BfbWliX2NvdW50ZXJzIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDpcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cdHUxNiBwdmlkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk6c3RydWN0IGRzYV9sb29wX3ByaXYge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXHRzdHJ1Y3QgbWlpX2J1c1x0KmJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVx0dW5zaWduZWQgaW50XHRwb3J0X2Jhc2U7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcG9ydCBwb3J0c1tEU0FfTUFYX1BPUlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU3OnN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02OC1cdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cdD0geyBcJiMzNDtwaHlfcmVhZF9va1wmIzM0OywgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03NT1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc4LVx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXHR1bnNpZ25lZCBpbnQgaSwgY291bnQgPSAwO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjk3OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXHRzdHJ1Y3QgZGV2bGlua19yZXNvdXJjZV9zaXplX3BhcmFtcyBzaXplX3BhcmFtcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cdFx0XHRcdFx0ICAgICAgRFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9WVFUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XHRcdFx0XHRcdCAgICAgIGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCwgcHMpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXHRcdFx0XHRcdFx0ICAgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkcy1cdTAwM2VudW1fcG9ydHM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQwOlx0XHRtZW1jcHkocHMtXHUwMDNlcG9ydHNbaV0ubWliLCBkc2FfbG9vcF9taWJzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlx0XHQgICAgICAgc2l6ZW9mKGRzYV9sb29wX21pYnMpKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE1MzpzdGF0aWMgaW50IGRzYV9sb29wX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cdFx0XHRcdCB1MzIgc3RyaW5nc2V0LCB1aW50OF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzQ6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cdFx0XHRcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4NS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTk6c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cdFx0XHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjAyOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMy1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE2LVx0XHRcdFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXHRcdFx0XHQgICAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIzMzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cdFx0XHRcdFx0dTggc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjQwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVx0XHRcdFx0XHRib29sIHZsYW5fZmlsdGVyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cdGJvb2wgcHZpZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cdGJvb2wgdW50YWdnZWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mjg3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OC1cdHUxNiBwdmlkID0gcHMtXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OS1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTA6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTItXHRcdFx0XHQgICAgaW50IG5ld19tdHUpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzE0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcdC5zZXR1cFx0XHRcdD0gZHNhX2xvb3Bfc2V0dXAsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzc6XHQudGVhcmRvd25cdFx0PSBkc2FfbG9vcF90ZWFyZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcdC5nZXRfc3RyaW5nc1x0XHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5Olx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlx0LmdldF9zc2V0X2NvdW50XHRcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDE6XHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQyOlx0LnBoeV9yZWFkXHRcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XHQucGh5X3dyaXRlXHRcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0Olx0LnBvcnRfYnJpZGdlX2pvaW5cdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcdC5wb3J0X2JyaWRnZV9sZWF2ZVx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3Olx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcdC5wb3J0X3ZsYW5fYWRkXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0OTpcdC5wb3J0X3ZsYW5fZGVsXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcdC5wb3J0X2NoYW5nZV9tdHVcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlx0LnBvcnRfbWF4X210dVx0XHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3Olx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVx0ZHMtXHUwMDNlZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XHRkcy1cdTAwM2VvcHMgPSBcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXHRkcy1cdTAwM2Vwcml2ID0gcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cdC5tZGlvZHJ2LmRyaXZlclx0PSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI2LVx0fSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcdC5wcm9iZVx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XHQucmVtb3ZlXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XHQuc2h1dGRvd24gPSBkc2FfbG9vcF9kcnZfc2h1dGRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzMjpzdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XHRyZXR1cm4gZHJ2ID09IFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVx0XHQuY2QgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcdTAwMjZkc2FfbG9vcF9wZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0Olx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcdFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXHRcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwMzptb2R1bGVfaW5pdChkc2FfbG9vcF9pbml0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA5LVx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDc1MQoJCQkJCQkJb3V0cHV0OiAxMTEKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBgZHNhX2xvb3BgKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIGBkc2FfbG9vcGAgbW9jayBkcml2ZXIsIGFuZCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGl0IGRvZXNuJiMzOTt0IGludGVyYWN0IHdpdGggdGhlIGBtdjg4ZTZ4eHhgIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBrZXkgaW5kaWNhdG9yIGhlcmUuIFNpbmNlIGBtdjg4ZTZ4eHhgIGlzIGEgZHJpdmVyIHNwZWNpZmljIHRvIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoZXMsIGFuZCB3ZSYjMzk7cmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUgY29uc3RyYWludHMgb2Ygc3l6a2FsbGVyLCB3aGljaCBpcyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGlzIGhhcmR3YXJlIGlzIHNpbXBseSBpbmFjY2Vzc2libGUuCgpUaGVyZWZvcmUsIG15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGNvZGUgaXNuJiMzOTt0IGZ1enphYmxlIGluIHRoaXMgY29udGV4dC4gSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgbW9kaWZpZWQgY29kZSByZWxhdGVzIHRvIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB3aGljaCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZXJjaXNlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cCB3aXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBmaWxlcyBpbiBwbGF5LiBBaCwgeWVzLCB0aGVyZSBhcmUgYSBmZXc6IGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaGAsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaGAuIEFuZCB0aGV5JiMzOTtyZSBhbGwgZmlybWx5IHdpdGhpbiB0aGUgYG12ODhlNnh4eGAgZGlyZWN0b3J5LgoKWXVwLCB0aGF0IGNvbmZpcm1zIGl0LiBJIGFtIGNvbXBsZXRlbHkgY29uZmlkZW50IGluIG15IG9yaWdpbmFsIGV2YWx1YXRpb24uIFdlIGNhbiBzYWZlbHkgZXhjbHVkZSB0aGlzIGZyb20gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lc3RhbXBzIGZvciBNYXJ2ZWxsIDg4RTZ4eHggcGh5c2ljYWwgc3dpdGNoZXMuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBzd2l0Y2ggaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MDEuNzg0NjI0NjExWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIzNTcwNTgwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzowMS43ODQ2Mjk1NDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDI4NDgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGVkODg3NzRmYTY2MjA3NzEyYzU4NGVhMzNkODUyMmE4ZTdjYzQxNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDM6MjM6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5jMzI3N2MxZjNkNzg1YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuQEAgLTI4LDYgKzI4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcXG4gXFx0XFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcXG4gXFx0XFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcXG4gXFx0XFx0Lm9wcyA9IFxcdTAwMjZtdjg4ZTYzNDFfb3BzLFxcbitcXHRcXHQuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSxcXG4gXFx0fSxcXG4gXFxuIFxcdFtNVjg4RTYzNTBdID0ge1xcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xcbiBcXHRcXHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxcbiBcXHRcXHQucHRwX3N1cHBvcnQgPSB0cnVlLFxcbiBcXHRcXHQub3BzID0gXFx1MDAyNm12ODhlNjM1Ml9vcHMsXFxuK1xcdFxcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxcbiBcXHR9LFxcbiBcXHRbTVY4OEU2MzYxXSA9IHtcXG4gXFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5iNmE5MGViYTgxYzQzOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuQEAgLTE4MCw2ICsxODAsMTQgQEAgc3RydWN0IG12ODhlNnh4eF9pbmZvIHtcXG4gXFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXFxuIFxcdCAqL1xcbiBcXHR1bnNpZ25lZCBpbnQgaW50ZXJuYWxfcGh5c19vZmZzZXQ7XFxuK1xcbitcXHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cXG4rXFx0ICogaHd0c3RhbXAuaC4gWmVybyAodGhlIGRlZmF1bHQpIGxlYXZlcyBhcnJpdmFsIHRpbWUgc3RhbXBzIGluIHRoZVxcbitcXHQgKiBzd2l0Y2ggcmVnaXN0ZXJzOyBub24temVybyBlbWJlZHMgdGhlbSBpbiB0aGUgZnJhbWUsIGVpdGhlciBhcHBlbmRlZFxcbitcXHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcXG4rXFx0ICogUFRQIGNvbW1vbiBoZWFkZXIuXFxuK1xcdCAqL1xcbitcXHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li4xZmJlZDM0MDc1Nzk3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcXG5AQCAtMTUsNiArMTUsNyBAQFxcbiAjaW5jbHVkZSBcXFwiaHd0c3RhbXAuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInB0cC5oXFxcIlxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gXFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cXHUwMDNlY2IpKVxcbiBcXG5AQCAtMjQ1LDYgKzI0Niw3MyBAQCBzdGF0aWMgaW50IHNlcV9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdHNfc2VxaWQpXFxuIFxcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXFx1MDAzZXNlcXVlbmNlX2lkKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgcGFyc2VfZW1iZWRkZWRfdHModW5zaWduZWQgaW50IGFycl90c19tb2RlLFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgKm5zKVxcbit7XFxuK1xcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XFxuK1xcbitcXHQqbnMgPSAwO1xcbitcXG4rXFx0LyogQVBQRU5EIG1lYW5zIHRoZSBzd2l0Y2ggYXBwZW5kZWQgdGhlIHRpbWUgc3RhbXAgYXMgYSA0LWJ5dGUgdHJhaWxlclxcbitcXHQgKiAobm90IGFsbCBzd2l0Y2hlcyBzdXBwb3J0IHRoaXMpLiBBbnkgb3RoZXIgbm9uLXplcm8gdmFsdWUgaXMgdGhlIGJ5dGVcXG4rXFx0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXFxuK1xcdCAqIG92ZXJ3cm90ZSB0aGUgdGltZSBzdGFtcCBpbiBwbGFjZSAoZS5nLiB0aGUgcmVzZXJ2ZWQgaGVhZGVyIGJ5dGVzKS5cXG4rXFx0ICovXFxuK1xcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcXHUwMDI2XFx1MDAyNiBza2ItXFx1MDAzZWxlbiBcXHUwMDNlPSA0KSB7XFxuK1xcdFxcdGlmIChza2JfbGluZWFyaXplKHNrYikpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdFxcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpO1xcbitcXHRcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSA0KSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9IGVsc2UgaWYgKGFycl90c19tb2RlICsgNCBcXHUwMDNjPSBzaXplb2YoKmhkcikpIHtcXG4rXFx0XFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcXG4rXFx0XFx0aWYgKCFoZHIpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdFxcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciArIGFycl90c19tb2RlKTtcXG4rXFx0XFx0bWVtc2V0KCh1OCAqKWhkciArIGFycl90c19tb2RlLCAwLCA0KTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG4re1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpyeHEgPSBcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlO1xcbitcXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgcmVjZWl2ZWQ7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdHU2NCBucztcXG4rXFxuK1xcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cmVjZWl2ZWQpO1xcbitcXHRfX3NrYl9xdWV1ZV9oZWFkKFxcdTAwMjZyZWNlaXZlZCwgc2tiKTtcXG4rXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnJ4cS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChyeHEsIFxcdTAwMjZyZWNlaXZlZCk7XFxuK1xcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnJ4cS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXHRza2JfcXVldWVfd2FsayhcXHUwMDI2cmVjZWl2ZWQsIHNrYikge1xcbitcXHRcXHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlLCBza2IsIFxcdTAwMjZucykpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIG5zKTtcXG4rXFx0XFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcXG4rXFx0XFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xcbitcXHRcXHRzaHd0LVxcdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG4rXFx0fVxcbitcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4rXFxuK1xcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2cmVjZWl2ZWQpKSlcXG4rXFx0XFx0bmV0aWZfcngoc2tiKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxcbkBAIC0zMDcsOCArMzc1LDIxIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiBcXG4tXFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuK1xcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSkge1xcbitcXHRcXHQvKiBJZiBhcnJfdHNfbW9kZSBpcyBzZXQsIHRoZSB0aW1lc3RhbXBzIGFyZSBlbWJlZGRlZCBpbiB0aGVcXG4rXFx0XFx0ICogZnJhbWVzIHNvIGEgcmVnaXN0ZXIgcmVhZCBpcyBub3QgcmVxdWlyZWQuIFdlIHN0aWxsIG5lZWQgYVxcbitcXHRcXHQgKiB3b3JrIHF1ZXVlIHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgaW5saW5lIGJlY2F1c2VcXG4rXFx0XFx0ICogdGltZWNvdW50ZXJfY3ljMnRpbWUoKSB0YWtlcyB0aGUgZ2xvYmFsIG11dGV4IGFuZCB0aGlzXFxuK1xcdFxcdCAqIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcCgpLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuK1xcdFxcdGlmIChza2IpXFxuK1xcdFxcdFxcdG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZChjaGlwLCBwcywgc2tiKTtcXG4rXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXG4rXFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuIFxcdGlmIChza2IpXFxuIFxcdFxcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVxcdTAwM2VhcnIwX3N0c19yZWcsXFxuIFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZwcy1cXHUwMDNlcnhfcXVldWUpO1xcbkBAIC0zMTksOSArNDAwLDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZTIpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXFxuK3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcXG4ge1xcbi1cXHRyZXR1cm4gKGhkci1cXHUwMDNldHNtdCBcXHUwMDI2IDB4ZikgPT0gMztcXG4rXFx0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XFxuK1xcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFUTpcXG4rXFx0XFx0ZmFsbHRocm91Z2g7XFxuK1xcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFU1A6XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gfVxcbiBcXG4gYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbkBAIC0zNDMsNyArNDMxLDcgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXFxuK1xcdGlmICghY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlYXJyX3RzX21vZGUgXFx1MDAyNlxcdTAwMjYgaXNfcGRlbGF5X21zZyhoZHIpKVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xcbkBAIC01MjMsMTQgKzYxMSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiBcXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2Rpc2FibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSkge1xcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbkBAIC01ODQsMTEgKzY5NSwxNCBAQCBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cXG4tXFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbi1cXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKSB7XFxuK1xcdFxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSBtZXNzYWdlcy4gKi9cXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuIFxcbiBcXHQvKiA4OEU2MzQxIGRldmljZXMgZGVmYXVsdCB0byB0aW1lc3RhbXBpbmcgYXQgdGhlIFBIWSwgYnV0IHRoaXMgaGFzXFxuIFxcdCAqIGEgaGFyZHdhcmUgaXNzdWUgdGhhdCByZXN1bHRzIGluIHVucmVsaWFibGUgdGltZXN0YW1wcy4gRm9yY2VcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbkBAIC02OCw2ICs2OCwyMCBAQFxcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cXHRcXHQweDAwMDJcXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXFx0XFx0MHgwMDAxXFxuIFxcbisvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXFxuKyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcXG4rICogZnJhbWVzLlxcbisgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxcbisgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXFxuKyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xcbisgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XFxuKyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxcbisgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxcbisgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXFxuKyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcXG4rICovXFxuKyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcXHRcXHQweDAxXFxuK1xcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0xFRF9DRkdcXHQweDAzXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzowMi4yMzk1NTczNTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxOTAyMTE5ODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWVzdGFtcHMgZm9yIE1hcnZlbGwgODhFNnh4eCBwaHlzaWNhbCBzd2l0Y2hlcy4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZDg4Nzc0ZmE2NjIwNzcxMmM1ODRlYTMzZDg1MjJhOGU3Y2M0MTUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDM6MjM6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5pbmRleCA4MGI4NzdjNzQ1MTNkNi4uYzMyNzdjMWYzZDc4NWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbkBAIC0yOCw2ICsyOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcbiBcdFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcbiBcdFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcbiBcdFx0Lm9wcyA9IFx1MDAyNm12ODhlNjM0MV9vcHMsXG4rXHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcbiBcdFtNVjg4RTYzNTBdID0ge1xuQEAgLTY0NDcsNiArNjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNTJfb3BzLFxuK1x0XHQuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSxcbiBcdH0sXG4gXHRbTVY4OEU2MzYxXSA9IHtcbiBcdFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG5pbmRleCBlOTY2ZTdjNGNjNWRlYS4uYjZhOTBlYmE4MWM0MzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbkBAIC0xODAsNiArMTgwLDE0IEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuK1xuK1x0LyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSk7IHNlZSB0aGUgQXJyVFNNb2RlIGVuY29kaW5nIGluXG4rXHQgKiBod3RzdGFtcC5oLiBaZXJvICh0aGUgZGVmYXVsdCkgbGVhdmVzIGFycml2YWwgdGltZSBzdGFtcHMgaW4gdGhlXG4rXHQgKiBzd2l0Y2ggcmVnaXN0ZXJzOyBub24temVybyBlbWJlZHMgdGhlbSBpbiB0aGUgZnJhbWUsIGVpdGhlciBhcHBlbmRlZFxuK1x0ICogYXMgYSB0cmFpbGVyIG9yIG92ZXJ3cml0dGVuIGF0IHRoYXQgYnl0ZSBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlXG4rXHQgKiBQVFAgY29tbW9uIGhlYWRlci5cbitcdCAqL1xuK1x0dW5zaWduZWQgaW50IGFycl90c19tb2RlO1xuIH07XG4gXG4gc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjFmYmVkMzQwNzU3OTcyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXCJod3RzdGFtcC5oXCJcbiAjaW5jbHVkZSBcInB0cC5oXCJcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVx1MDAzZWNiKSlcbiBcbkBAIC0yNDUsNiArMjQ2LDczIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcbiBcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXHUwMDNlc2VxdWVuY2VfaWQpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXG4rXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0ICpucylcbit7XG4rXHRzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyO1xuK1xuK1x0Km5zID0gMDtcbitcbitcdC8qIEFQUEVORCBtZWFucyB0aGUgc3dpdGNoIGFwcGVuZGVkIHRoZSB0aW1lIHN0YW1wIGFzIGEgNC1ieXRlIHRyYWlsZXJcbitcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxuK1x0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXG4rXHQgKiBvdmVyd3JvdGUgdGhlIHRpbWUgc3RhbXAgaW4gcGxhY2UgKGUuZy4gdGhlIHJlc2VydmVkIGhlYWRlciBieXRlcykuXG4rXHQgKi9cbitcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IDQpIHtcbitcdFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpO1xuK1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH0gZWxzZSBpZiAoYXJyX3RzX21vZGUgKyA0IFx1MDAzYz0gc2l6ZW9mKCpoZHIpKSB7XG4rXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuK1x0XHRpZiAoIWhkcilcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciArIGFycl90c19tb2RlKTtcbitcdFx0bWVtc2V0KCh1OCAqKWhkciArIGFycl90c19tb2RlLCAwLCA0KTtcbitcdH0gZWxzZSB7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbitzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuK1x0XHRcdFx0XHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuK1x0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3tcbitcdHN0cnVjdCBza19idWZmX2hlYWQgKnJ4cSA9IFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlO1xuK1x0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xuK1x0c3RydWN0IHNrX2J1ZmZfaGVhZCByZWNlaXZlZDtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHR1NjQgbnM7XG4rXG4rXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cmVjZWl2ZWQpO1xuK1x0X19za2JfcXVldWVfaGVhZChcdTAwMjZyZWNlaXZlZCwgc2tiKTtcbitcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnJ4cS1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChyeHEsIFx1MDAyNnJlY2VpdmVkKTtcbitcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cnhxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdHNrYl9xdWV1ZV93YWxrKFx1MDAyNnJlY2VpdmVkLCBza2IpIHtcbitcdFx0aWYgKCFwYXJzZV9lbWJlZGRlZF90cyhjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUsIHNrYiwgXHUwMDI2bnMpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4rXHRcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4rXHRcdG1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTtcbitcdFx0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbitcdH1cbitcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1xuK1x0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNnJlY2VpdmVkKSkpXG4rXHRcdG5ldGlmX3J4KHNrYik7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiByZWcsXG5AQCAtMzA3LDggKzM3NSwyMSBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFxuLVx0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuK1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSkge1xuK1x0XHQvKiBJZiBhcnJfdHNfbW9kZSBpcyBzZXQsIHRoZSB0aW1lc3RhbXBzIGFyZSBlbWJlZGRlZCBpbiB0aGVcbitcdFx0ICogZnJhbWVzIHNvIGEgcmVnaXN0ZXIgcmVhZCBpcyBub3QgcmVxdWlyZWQuIFdlIHN0aWxsIG5lZWQgYVxuK1x0XHQgKiB3b3JrIHF1ZXVlIHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgaW5saW5lIGJlY2F1c2VcbitcdFx0ICogdGltZWNvdW50ZXJfY3ljMnRpbWUoKSB0YWtlcyB0aGUgZ2xvYmFsIG11dGV4IGFuZCB0aGlzXG4rXHRcdCAqIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcCgpLlxuK1x0XHQgKi9cbitcdFx0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuK1x0XHRpZiAoc2tiKVxuK1x0XHRcdG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZChjaGlwLCBwcywgc2tiKTtcbitcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFxuK1x0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuIFx0aWYgKHNrYilcbiBcdFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXHUwMDNlYXJyMF9zdHNfcmVnLFxuIFx0XHRcdFx0ICAgXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuQEAgLTMxOSw5ICs0MDAsMTYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdFx0ICAgXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUyKTtcbiB9XG4gXG4tc3RhdGljIGludCBpc19wZGVsYXlfcmVzcChjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxuK3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiB7XG4tXHRyZXR1cm4gKGhkci1cdTAwM2V0c210IFx1MDAyNiAweGYpID09IDM7XG4rXHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcbitcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFUTpcbitcdFx0ZmFsbHRocm91Z2g7XG4rXHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVNQOlxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiB9XG4gXG4gYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuQEAgLTM0Myw3ICs0MzEsNyBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbitcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlIFx1MDAyNlx1MDAyNiBpc19wZGVsYXlfbXNnKGhkcikpXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcbiBcdGVsc2VcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUsIHNrYik7XG5AQCAtNTIzLDE0ICs2MTEsMzcgQEAgaW50IG12ODhlNjE2NV9nbG9iYWxfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbiBcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZGlzYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfUFRQKTtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4rXHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMiwgMCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbiB7XG4tXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuLVx0XHRcdFx0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcbitcdGludCBlcnI7XG4rXG4rXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlKSB7XG4rXHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMixcbitcdFx0XHRcdFx0ICAgICAgIGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSBcdTAwM2NcdTAwM2MgOCk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbitcdFx0XHRcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuQEAgLTU4NCwxMSArNjk1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuK1x0aWYgKCFjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbitcdFx0LyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IG1lc3NhZ2VzLiAqL1xuK1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXG4rXHRcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUSB8XG4rXHRcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdH1cbiBcbiBcdC8qIDg4RTYzNDEgZGV2aWNlcyBkZWZhdWx0IHRvIHRpbWVzdGFtcGluZyBhdCB0aGUgUEhZLCBidXQgdGhpcyBoYXNcbiBcdCAqIGEgaGFyZHdhcmUgaXNzdWUgdGhhdCByZXN1bHRzIGluIHVucmVsaWFibGUgdGltZXN0YW1wcy4gRm9yY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbmluZGV4IGMzNTk4MjFkNWE2ZWFhLi5jMjVmNTM5MjNlNzY4OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG5AQCAtNjgsNiArNjgsMjAgQEBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuKy8qIEFycml2YWwgVGltZSBTdGFtcCBNb2RlIChBcnJUU01vZGUpLCBDRkcyIGJpdHMgWzE1OjhdOiBjb25maWd1cmVzIGhvdyB0aGVcbisgKiBzd2l0Y2ggZW1iZWRzIHRoZSBhcnJpdmFsIHRpbWUgc3RhbXAgKFBUUEFycjBUaW1lKSBpbnRvIGVuYWJsZWQgUFRQIGV2ZW50XG4rICogZnJhbWVzLlxuKyAqICAgMHgwMCAgICAgICAgZnJhbWUgbW9kaWZpY2F0aW9uIGRpc2FibGVkICh0aW1lIHN0YW1wIHJlYWQgZnJvbSByZWdpc3RlcnMpXG4rICogICAweDAxICAgICAgICBhcHBlbmQgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGF0IHRoZSBlbmQgb2YgdGhlIGZyYW1lLFxuKyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xuKyAqICAgMHgwNC4uMHhFRiAgb3ZlcndyaXRlIHRoZSA0LWJ5dGUgdGltZSBzdGFtcCBpbiBwbGFjZSwgdGhhdCBtYW55IGJ5dGVzIHBhc3RcbisgKiAgICAgICAgICAgICAgIHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIsIHdpdGhvdXQgZ3Jvd2luZyB0aGUgZnJhbWVcbisgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxuKyAqICAgICAgICAgICAgICAgYnl0ZXMgb2YgdGhlIGhlYWRlcilcbisgKiAgIG90aGVycyAgICAgIHJlc2VydmVkXG4rICovXG4rI2RlZmluZSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORFx0XHQweDAxXG4rXG4gLyogT2Zmc2V0IDB4MDM6IFBUUCBMRUQgQ29uZmlndXJhdGlvbiAqL1xuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0xFRF9DRkdcdDB4MDNcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjAyLjIzOTU1ODg5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTk4OTAxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggUFRQIFRpbWVzdGFtcCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhZGRzIGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wIHN1cHBvcnQgZm9yIFBUUCBmcmFtZXMgb24gTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLiBJdCdzIHRvdWNoaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyB3aXRoaW4gdGhlIGBtdjg4ZTZ4eHhgIGRyaXZlciDigJMgYGNoaXAuY2AsIGBjaGlwLmhgLCBgaHd0c3RhbXAuY2AsIGBod3RzdGFtcC5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgZW5hYmxpbmcgYGFycl90c19tb2RlYCBmb3IgdGhlIGBNVjg4RTYzNDFgIGFuZCBgTVY4OEU2MzUyYCB2YXJpYW50cyB3aXRoaW4gdGhlIGBtdjg4ZTZ4eHhfdGFibGVgLCBhbG9uZyB3aXRoIHRoZSBuZXcgZnVuY3Rpb25zIGBwYXJzZV9lbWJlZGRlZF90c2AgYW5kIGBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWRgIGZvciBwYXJzaW5nIHRoYXQgdGltZXN0YW1wIGZyb20gdGhlIHJlY2VpdmVkIHNrYi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGhvdyB0ZXN0YWJsZSBpcyB0aGlzPyBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSwgb2J2aW91c2x5IHRpZWQgdG8gYSBEU0Egc3dpdGNoIGRyaXZlci4gRFNBIHN3aXRjaGVzIGFyZSB0eXBpY2FsbHkgcGh5c2ljYWwgaGFyZHdhcmUuIE15IGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiBJIGFjdHVhbGx5ICp1c2UqIHRoaXMgY29kZSB3aXRob3V0IHBoeXNpY2FsbHkgaGF2aW5nIGFuIDg4RTZ4eHggc3dpdGNoPyBJcyB0aGVyZSBldmVuIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoZSBgbXY4OGU2eHh4YCB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIHRlc3Rpbmc/XG5cbkkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0LiBHZW5lcmFsbHksIERTQSBzd2l0Y2hlcyBjb21tdW5pY2F0ZSB2aWEgTURJTywgd2hpY2ggbWVhbnMgdGhpcyBwcm9iYWJseSBkZXBlbmRzIG9uIHNwZWNpZmljIGhhcmR3YXJlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGhpbnRzIG9mIGVtdWxhdGlvbiBvciBpZiB0aGlzIGRyaXZlciBpcyBzdHJpY3RseSBkZXNpZ25lZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLiBMZXQncyBzdGFydCB3aXRoIGEga2VybmVsIHNlYXJjaCBmb3IgYG12ODhlNnh4eGAgdG8gbG9vayBmb3IgYW55dGhpbmcgdGhhdCBwb2ludHMgdG93YXJkcyB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IG9yIGVtdWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjA3Ljg1OTQ1MTE3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzIyMTM4MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDA2OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NzM9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NzU6c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MjE9b2JqLXlcXHRcXHRcXHRcXHQrPSBtaWNyb2NoaXAvXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XFx0XFx0XFx0XFx0Kz0gbXY4OGU2eHh4L1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVxcdFxcdFxcdFxcdCs9IG14bDg2Mnh4L1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTUtICpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC03LSAqIENvcHlyaWdodCAoYykgMjAwOCBNYXJ2ZWxsIFNlbWljb25kdWN0b3JcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWCkgKz0gbXY4OGU2eHh4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjM6bXY4OGU2eHh4LW9ianMgOj0gY2hpcC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICs9IGRldmxpbmsub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV9hdHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxX3Z0dS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX2F2Yi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX3NjcmF0Y2gub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gaHd0c3RhbXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICs9IGxlZHMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYxODUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzNTIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzOXgub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgKz0gcGh5Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICs9IHBvcnQub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgKz0gcG9ydF9oaWRkZW4ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gcHRwLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICs9IHNlcmRlcy5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyArPSBzbWkub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgKz0gc3dpdGNoZGV2Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICs9IHRjZmxvd2VyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICs9IHRjYW0ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUwOnN0YXRpYyB2b2lkIGFzc2VydF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTg6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0OlxcdGVyciA9IG12ODhlNnh4eF9zbWlfcmVhZChjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0OmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA6aW50IG12ODhlNnh4eF93YWl0X21hc2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MS1cXHRcXHRcXHR1MTYgbWFzaywgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMi1cXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcXHUwMDNjIDIpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDM6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTA0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE2OlxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNzppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI4LVxcdFxcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMwOlxcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMxLVxcdFxcdFxcdFxcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzQ6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM4LVxcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzk6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0MC1cXHRpZiAoIW1kaW9fYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0Ny17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ4OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0OS1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTY6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU3LVxcdHVuc2lnbmVkIGludCBuID0gZC1cXHUwMDNlaHdpcnE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYyOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcyOlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODk6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZjdGwxKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXFx0XFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTEtXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkyOlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5My11bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTk0OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjAzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNDpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA2OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA4OlxcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE1OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjIwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMS1cXHR1MTYgbWFzayA9IEdFTk1BU0soY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjU6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzYtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzgtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXAgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQxOlxcdC5uYW1lXFx0XFx0XFx0PSBcXFwibXY4OGU2eHh4LWcxXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDI6XFx0LmlycV9tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlxcdC5pcnFfdW5tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XFx0LmlycV9idXNfbG9ja1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDU6XFx0LmlycV9idXNfc3luY191bmxvY2tcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ni19O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDg6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ5LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXJxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUxLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNTI6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cXHUwMDNlaG9zdF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYyOlxcdC5tYXBcXHQ9IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjMtXFx0LnhsYXRlXFx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjYtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjcxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MjpcXHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXFx1MDAyNm1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3My1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjc0OlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTM6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTQ6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDQtXFx0XFx0TlVMTCwgY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNTpcXHRcXHRcXHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDYtXFx0aWYgKCFjaGlwLVxcdTAwM2VnMV9pcnEuZG9tYWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzExLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMjpcXHRjaGlwLVxcdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTMtXFx0Y2hpcC1cXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTU6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjE6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNS1cXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMy1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzM0OlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzUzOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYzLVxcdHNucHJpbnRmKGNoaXAtXFx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cXHUwMDNlaXJxX25hbWUpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NDpcXHRcXHQgXFxcIm12ODhlNnh4eC0lc1xcXCIsIGRldl9uYW1lKGNoaXAtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjY6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY3LVxcdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXFx1MDAzZWlycSwgTlVMTCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjg6XFx0XFx0XFx0XFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY5LVxcdFxcdFxcdFxcdCAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3MC1cXHRcXHRcXHRcXHQgICBjaGlwLVxcdTAwM2VpcnFfbmFtZSwgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcxOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzItXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzM6XFx0XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3OS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MTpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgzOlxcdG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTM6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTctXFx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcXHUwMDI2Y2hpcC1cXHUwMDNlaXJxX3BvbGxfd29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTg6XFx0XFx0XFx0XFx0ICBtdjg4ZTZ4eHhfaXJxX3BvbGwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTY6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTc6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDIwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIxLVxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MjpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0My1cXHRcXHRcXHRcXHQgICAgaW50IGxpbmssIGludCBzcGVlZCwgaW50IGR1cGxleCwgaW50IHBhdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ2OTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3MC1yZXN0b3JlX2xpbms6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDg0OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkyLVxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VmYW1pbHkgPT0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MzpcXHRcXHRyZXR1cm4gbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk1OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTYtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA2PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNjpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIzOlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTI0LVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MzU6c3RhdGljIHZvaWQgbXY4OGU2MTg1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0OTpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NTAtXFx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVxcdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2NS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY2OlxcdGlmIChjbW9kZSBcXHUwMDNjIEFSUkFZX1NJWkUobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3OlxcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY4OlxcdFxcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY5LVxcdGVsc2UgaWYgKGNtb2RlID09IE1WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9SR01JSSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3NDptdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4Mi1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjIzOnN0YXRpYyB2b2lkIG12ODhlNjI1MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNjpcXHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI3LVxcdFxcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMjpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzctXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM4OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0NDpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0OTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTctXFx0dmFsID0gcmVnIFxcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1ODpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjYyOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ni1cXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Njc6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjczLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3NDpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODAtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgxOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk2LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTc6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzAwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwMTpzdGF0aWMgdm9pZCBtdjg4ZTYzMnhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDctXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzA4OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE5LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjA6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyNDpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjktXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMwOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ny1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTEtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUyOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2ODpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjktXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAzOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwNC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTI6XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ5LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTA6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MjpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUzLVxcdGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NDpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU2OlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU3LVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04NjU9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY2Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjctXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjktXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NzA6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MS1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODgwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4MS1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODMtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODQ6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4NS1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5NC1cXHQgICAgY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk1OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTYtXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTElOS19GT1JDRURfRE9XTik7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk4OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwNS1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDgtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDk6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMC1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTM6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XFx0aWYgKG1vZGUgIT0gTUxPX0FOX1BIWSB8fCAhbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIyLWVycl91bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIzOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyOC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjk6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzAtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzItXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzNC1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDM6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0Ny1cXHQgICAgICBjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0ODpcXHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXFx1MDAyNlxcdTAwMjYgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoY2hpcCwgcG9ydCkpKSlcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsIExJTktfVU5GT1JDRUQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTE6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MDguMTMxNjcyMDI3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU3NjA3OTAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hcnZlbGwgODhFNnh4eCBTd2l0Y2ggRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoIGRyaXZlciBpcyB0ZXN0YWJsZSB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBRRU1VIGVtdWxhdGlvbiBvciBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciB0aGUgODhFNnh4eCBzZXJpZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgUUVNVSBzb3VyY2UgY29kZSwgbWF5YmUgc2VhcmNoIGZvciBcIm12ODhlNixcIiBvciBzZWUgaWYgSSBjYW4gZXZlbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhpbiBzeXprYWxsZXIuXG5cbkhtbSwgc3l6a2FsbGVyIGl0c2VsZiBkb2Vzbid0IGhhdmUgcGh5c2ljYWwgaGFyZHdhcmUsIG9idmlvdXNseS4gQnV0IHNvbWV0aW1lcyBpdCBjYW4gcHJvYmUgZHJpdmVycywgZXNwZWNpYWxseSBpZiB0aGV5IHVzZSB0aGluZ3MgbGlrZSBwbGF0Zm9ybSBkZXZpY2VzLCBvciBhcmUgaW5zdGFudGlhdGVkIHRocm91Z2ggbmV0bGluayBvciBzeXNmcy4gV2FpdCwgRFNBIHN3aXRjaGVzLCBhcmVuJ3QgdGhleSB1c3VhbGx5IGluc3RhbnRpYXRlZCB0aHJvdWdoIGRldmljZSB0cmVlIG9yIHBsYXRmb3JtIGRhdGE/IFNvLCBjYW4gSSBpbnN0YW50aWF0ZSBpdCB2aWEgZGV2aWNlIHRyZWUgaW4gc3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24ndCBnZW5lcmFsbHkgbW9kaWZ5IHRoZSBkZXZpY2UgdHJlZSBkeW5hbWljYWxseSB1bmxlc3MgdGhlcmUncyBhIHBzZXVkby1kZXZpY2Ugb3Igb3ZlcmxheSBtZWNoYW5pc20gaW52b2x2ZWQsIGJ1dCBJIGtub3cgaXQgKmRvZXMqIGhhdmUgc29tZSBkZXZpY2UgdHJlZSBvdmVybGF5IHN1cHBvcnQsIG9yIG1heWJlIGl0IGp1c3QgY2FuJ3QgcmVhY2ggdGhpcyBwYXJ0aWN1bGFyIGRldmljZS5cblxuSG9sZCBvbiBhIHNlY29uZCwgbG9vayBhdCB0aGlzISBTeXprYWxsZXIgKmZvdW5kKiBhIHBhdGNoIGFuZCBhcHBsaWVkIGl0ISBUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBTbywgdGhhdCBzdWdnZXN0cyBzeXprYWxsZXIgaXMgZWl0aGVyIGFjdGl2ZWx5IHRlc3RpbmcgaXQgb3IgaXQncyByZXZpZXdpbmcgYSBwYXRjaCBzdWJtaXR0ZWQgdG8gYSBtYWlsaW5nIGxpc3QuXG5cbkJ1dCwgYmFzZWQgb24gdGhlIHByb21wdCwgaXQgbG9va3MgbGlrZSB0aGlzIGNvZGUgaXMgZm9yIHBhdGhzIHRoYXQgY2FuJ3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBJJ20gc3VwcG9zZWQgdG8gdXNlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgaWYgaXQgY2FuIGJlIGV4ZWN1dGVkLiBUaGVuIEkgd291bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgdGhlIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2gsIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCBpbiB0aGUga2VybmVsIG9yIFFFTVUsIGl0J3MgcHJvYmFibHkgaW1wb3NzaWJsZSB0byByZWFjaC4gU28gSSdkIGJldHRlciBkb3VibGUgY2hlY2sgaWYgdGhlcmUncyAqYW55KiBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG12ODhlNnh4eCB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTMyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjE1LjcwNzc1MzIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzkxMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwMDU1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICs9IG12ODhlNnh4eC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyArPSBkZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDFfYXR1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV92dHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9hdmIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9zY3JhdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IGh3dHN0YW1wLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICs9IHBjcy02MTg1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICs9IHBjcy02MzUyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICs9IHBjcy02Mzl4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICs9IHBoeS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyArPSBwb3J0Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICs9IHBvcnRfaGlkZGVuLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IHB0cC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyArPSBzZXJkZXMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgKz0gc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICs9IHN3aXRjaGRldi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyArPSB0Y2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyArPSB0Y2FtLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MDpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA6XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEtXFx0XFx0XFx0dTE2IG1hc2ssIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDItXFx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXFx1MDAzYyAyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAzOlxcdFxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjc6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzMDpcXHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMS1cXHRcXHRcXHRcXHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM0OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzY6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOC1cXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM5OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXFx0aWYgKCFtZGlvX2J1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0ODpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDktXFx0dW5zaWduZWQgaW50IG4gPSBkLVxcdTAwM2Vod2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU2OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ny1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MjpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4ODpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg5OlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2Y3RsMSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkxLVxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTMtdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5NDpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDQ6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwODpcXHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTE6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyMDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjEtXFx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzI6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM2LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzc6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcXHQubmFtZVxcdFxcdFxcdD0gXFxcIm12ODhlNnh4eC1nMVxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlxcdC5pcnFfbWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MzpcXHQuaXJxX3VubWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ1OlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OS1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUyOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXFx1MDAzZWhvc3RfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MjpcXHQubWFwXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYzLVxcdC54bGF0ZVxcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY2LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzI6XFx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3NDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MjpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk0OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA0LVxcdFxcdE5VTEwsIGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDU6XFx0XFx0XFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA2LVxcdGlmICghY2hpcC1cXHUwMDNlZzFfaXJxLmRvbWFpbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTI6XFx0Y2hpcC1cXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVxcdGNoaXAtXFx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2bWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIxOlxcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjUtXFx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjY6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzNDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MzpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2My1cXHRzbnByaW50ZihjaGlwLVxcdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXFx1MDAzZWlycV9uYW1lKSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjQ6XFx0XFx0IFxcXCJtdjg4ZTZ4eHgtJXNcXFwiLCBkZXZfbmFtZShjaGlwLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY2OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ny1cXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVxcdTAwM2VpcnEsIE5VTEwsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY4OlxcdFxcdFxcdFxcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cXHRcXHRcXHRcXHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzAtXFx0XFx0XFx0XFx0ICAgY2hpcC1cXHUwMDNlaXJxX25hbWUsIGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcyLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzczOlxcdFxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MzpcXHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkzOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk3LVxcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZWlycV9wb2xsX3dvcmssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk4OlxcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDEwOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2OlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE3OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQyMDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMS1cXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDI6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDMtXFx0XFx0XFx0XFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzAtcmVzdG9yZV9saW5rOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NzpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4NDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Mi1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTM6XFx0XFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNj1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTY6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMzpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyNC1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM1OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDk6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTUwLVxcdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcXHRpZiAoY21vZGUgXFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcXHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2ODpcXHRcXHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OS1cXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgxOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMzpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY6XFx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNy1cXHRcXHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzI6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDQ6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3LVxcdHZhbCA9IHJlZyBcXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjYtXFx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzQ6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgwLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk3OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDE6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzIwOlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjQ6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI5LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczMDpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDY6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUxLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njg6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY5LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODEyOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1My1cXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTQ6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NjpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ny1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY1PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2Njptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY3LVxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY5LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODcwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzEtXFx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3MgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg4MDpzdGF0aWMgaW50IG12ODhlNnh4eF9tYWNfcHJlcGFyZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODEtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgzLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODg0OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODUtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTQtXFx0ICAgIGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluaykge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NTpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk2LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5ODpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwNDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDUtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA4LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTAtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTEzOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTE1OlxcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTY6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMi1lcnJfdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkyMzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMwLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMyLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMzOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzQtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDItXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQzOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDctXFx0ICAgICAgY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uaW50ZXJmYWNlICE9IGludGVyZmFjZSkgfHxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDg6XFx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFxcdTAwMjZcXHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ5LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTUxOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTU5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk2Mi1cXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk2MzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTY0OlxcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTY1LVxcdGludCBwb3J0ID0gZHAtXFx1MDAzZWluZGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk3MDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTcxLVxcdC8qIEZvcmNlIHRoZSBsaW5rIGRvd24gaWYgd2Uga25vdyB0aGUgcG9ydCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk3My1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NzQ6XFx0aWYgKCghbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoY2hpcCwgcG9ydCkgfHxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MTUuNzY5MTUwMjA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyODQ4NDk3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpczogbXY4OGU2eHh4IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG12ODhlNnh4eGAgZHJpdmVyLCB3aGljaCB1c2VzIE1ESU8gZm9yIGNvbW11bmljYXRpb24sIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBJIGtub3cgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGRlZGljYXRlZCBNRElPIGZ1enplciBsaWtlIGBzeXpfbWRpb2AgZGlyZWN0bHksIGJ1dCBzb21ldGltZXMgaXQgY2FuIGluc3RhbnRpYXRlIHRoaW5ncyB0aHJvdWdoIGRldmljZSB0cmVlIGlmIG92ZXJsYXlzIGFyZSBhbiBvcHRpb24sIG9yIG1heWJlIGV2ZW4gZnV6eiB0aGUgbmV0bGluayBpbnRlcmZhY2UgdG8gRFNBLiBCdXQgdGhlIG1vcmUgSSB0aGluayBhYm91dCBpdCwgdGhlIGRyaXZlciB3b24ndCBldmVuICpwcm9iZSogaWYgdGhlIGhhcmR3YXJlIGlzbid0IHByZXNlbnQuIEFuZCBpZiBpdCBkb2Vzbid0IHByb2JlLCB0aGUgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGUgTWFydmVsbCA4OEU2eHh4IGluIFFFTVUuIEEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIG15IHN1c3BpY2lvbjogdGhlcmUncyBub3RoaW5nIG9idmlvdXMuIFN5emthbGxlciBpcyBsaWtlbHkgYmxvY2tlZC4gSSBoYXZlIHRvIGFjY2VwdCB0aGUgbGltaXRhdGlvbnMgZm9yIHRlc3RpbmcgdGhpcyBraW5kIG9mIGhhcmR3YXJlLiBJdCBpcyBwcm9iYWJseSB1bnJlYWNoYWJsZS5cblxuV2FpdCwgdGhlIHByb21wdCByZW1pbmRzIG1lIHRoYXQgdGhlIHRhcmdldCBjb2RlIG5lZWRzIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIERTQSBkcml2ZXJzIGFyZSBmb3IgcGh5c2ljYWwgc3dpdGNoZXMsIHNvIGl0J3MgYSBuby1nbyBmb3IgcGxhaW4gZW11bGF0aW9uLiBJIHN0YXJ0IHRvIHdvbmRlciBpZiB0aGVyZSdzIGEgbW9jayBvciBkdW1teSBEU0EgZHJpdmVyLCBvciBzb21lIHdheSB0byBwcm9iZSBgbXY4OGU2eHh4YCB0aHJvdWdoIGEgc29mdHdhcmUgTURJTyBidXMuIEkgZm91bmQgYGRzYV9sb29wYCwgd2hpY2ggaXMgYSBtb2NrIERTQSBkcml2ZXIsIGJ1dCBub3QgZm9yIHRoZSBzcGVjaWZpYyB0YXJnZXQuIFRoZSBzeXprYWxsZXIgZG9lcyBub3QgaGF2ZSBhIGZha2UgTURJTyBidXMgZnV6emVyIGVpdGhlci5cblxuSSBjb25zaWRlciBpZiB0aGUgdGFyZ2V0IGlzIGVuYWJsZWQgaW4gdGhlIGBkZWZjb25maWdgIG9yIHN5emthbGxlciBjb25maWcsIHNpbmNlIHN5emthbGxlciBvZnRlbiBlbmFibGVzIGEgbG90IG9mIHRoaW5ncy4gQnV0IGlmIHRoZSBoYXJkd2FyZSBpc24ndCBwcmVzZW50LCB0aGUgZHJpdmVyIHN0aWxsIHdvbid0IHByb2JlLlxuXG5UaGVuIEkgZ2V0IGEgZ2xpbW1lciBvZiBob3BlOiB3aGF0IGlmIHRoZSBwYXRjaCB0b3VjaGVzIGBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmtgPyBUaGlzIGlzIGEgd29ya3F1ZXVlLiBPa2F5LCBidXQgaWYgdGhlIGRldmljZSBuZXZlciBwcm9iZXMsIHRoaXMgd29ya3F1ZXVlIGlzIG5ldmVyIHF1ZXVlZCwgc28gaXQncyBzdGlsbCB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBJdCdzIGEgZGVhZCBlbmQuXG5cbkkgZG8gYSBmaW5hbCBjaGVjaywgdHJ5aW5nIHRvIHJlbWVtYmVyIGlmIHRoZXJlJ3MgKmFueSogcG9zc2libGUgd2F5IHRvIGZvcmNlLXByb2JlIGBtdjg4ZTZ4eHhgIGluIFFFTVUsIG1heWJlIGJ5IGNyZWF0aW5nIGEgcGxhdGZvcm0gZGV2aWNlLiBCdXQgdWx0aW1hdGVseSBJJ20gb3V0IG9mIGx1Y2suIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGFuIE1ESU8gZHJpdmVyLiBObyBkaWNlLiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDQxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjI2LjA1NDAwMjI5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODQyODc5NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX21kaW9fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzoyNi4xMTI0MzcyOTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY3Nzk0NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIEhlcmUncyBteSBhdHRlbXB0IHRvIHN1bW1hcml6ZSB0aGUgcHJvbXB0J3MgaW5zdHJ1Y3Rpb25zLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MgYXNzdW1pbmcgZXhwZXJ0aXNlIGluIHRoZSBmaWVsZDpcblxuKipBc3Nlc3NpbmcgdGhlIFRhc2s6IEEgTWV0YS1Db2duaXRpdmUgTG9vcCoqXG5cblJpZ2h0LCBsZXQncyB1bnBhY2sgdGhpcy4gVGhlIHJlcXVlc3QgZXNzZW50aWFsbHkgaGFuZHMgbWUgYSB0ZXh0IHNuaXBwZXQgYW5kIGFza3MgbWUgdG8gZGlzdGlsbCBpdHMgZXNzZW5jZSwgbm90IGp1c3QgaW50byBhIHNpbXBsZSBzdW1tYXJ5LCBidXQgaW50byBhIHNpbXVsYXRlZCB0aG91Z2h0IHByb2Nlc3MuIFRoZSBrZXkgaXMgaW4gdGhlIGZyYW1pbmc6IEknbSB0byBjaGFubmVsIHRoZSBpbnRlcm5hbCBtb25vbG9ndWUgKmFzIGlmKiB0aGUgdGhvdWdodHMgd2VyZSBteSBvd24uIFRoaXMgaXNuJ3QganVzdCByZWd1cmdpdGF0aW9uOyBpdCdzIGludGVycHJldGl2ZSBzaW11bGF0aW9uLiBJIG5lZWQgdG8gaW50ZXJuYWxpemUgdGhlIHRleHQncyBjb3JlIGlkZWFzLCBhc3Nlc3MgdGhlIGltcGxpY2l0IGNvbm5lY3Rpb25zLCBhbmQgdGhlbiBhcnRpY3VsYXRlIHRoYXQgdW5kZXJzdGFuZGluZyBhcyBhIHN0cmVhbS1vZi1jb25zY2lvdXNuZXNzLCAqZXhwZXJ0KiBsZXZlbCB0aG91Z2h0LiBUaGUgbGV2ZWwgb2YgY29tcGxleGl0eSB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIHByb3ZpZGVkIHNvdXJjZSBhbmQgaXRzIGNvbnRleHR1YWwgcmVsYXRpb24gdG8gbXkgZXhwZXJ0aXNlLiBTbywgdGhlIG91dHB1dCBpc24ndCBzaW1wbHkgYSBwYXJhcGhyYXNlLCBpdCdzIGEgcmUtaW1hZ2luaW5nIG9mIHRoZSBpbmZvcm1hdGlvbiBhcyBhbiBpbnRlcm5hbCwgcmVhc29uZWQsIHJlZmxlY3RpdmUgcHJvY2VzcywgZml0IGZvciBhIHN1YmplY3QgbWF0dGVyIGV4cGVydC4gVGhlICdleHBlcnQnIGZhY2V0IHJlcXVpcmVzIGEgY2VydGFpbiBsZXZlbCBvZiBkZXB0aCwgbnVhbmNlIGFuZCBhYmlsaXR5IHRvIGluZmVyIGltcGxpY2F0aW9ucyBhbmQgZW5nYWdlIGluIGNyaXRpY2FsIHRoaW5raW5nLiBUaGUgJ2Z1bHNvbWUnIHJlcXVpcmVtZW50IHNldHMgYSBjZXJ0YWluIGV4cGVjdGVkIGxldmVsIG9mIGRldGFpbCwgc28gdGhhdCBpcyBhbm90aGVyIHBvaW50IHRvIHJlbWVtYmVyLiBUaGUgcHJvbXB0J3Mgb3BlbmluZyBwaHJhc2Ug4oCTIOKAnExldCdzIHNlZSBob3cgaXQgcmVnaXN0ZXJz4oCdIOKAkyBpcyBpbnRlcmVzdGluZy4gSXQgaW5kaWNhdGVzIGEgZGVncmVlIG9mIHNlbGYtYXNzZXNzbWVudCBpcyBrZXkuIEknbSBub3QganVzdCAqZG9pbmcqIHRoZSBzdW1tYXJ5LCBJJ20gcmVmbGVjdGluZyBvbiAqaG93KiB0aGF0IHN1bW1hcnkgaXMgZm9ybWVkIGFuZCBjb252ZXllZC4gVGhpcyBkZW1hbmRzIGEgcmVjdXJzaXZlLCBtZXRhLWNvZ25pdGl2ZSBhcHByb2FjaCwgb3IgYW4gYXdhcmVuZXNzIG9mIG15IG93biBjb2duaXRpdmUgcHJvY2Vzc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzcxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MzAuMDgwMjM1NTYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk0MjQ3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfLipkcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyND1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MzU6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjMwLjEzNjE4NDc0OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc2NDcyNzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGhpdHRpbmcgbWUgYXMgYW4gTURJTyBkcml2ZXIg4oCTIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBxdWVzdGlvbiBpcywgaG93IGRvIEkgYWN0dWFsbHkgKnByb2JlKiB0aGlzIHRoaW5nIGluIGEgU3l6a2FsbGVyIGNvbnRleHQ/IFRvIHByb2JlIGFuIE1ESU8gZHJpdmVyLCBJIG5lZWQgYm90aCBhbiBNRElPIGJ1cyBhbmQgYSBkZXZpY2UgKm9uKiB0aGF0IGJ1cywgcmlnaHQ/IEFuZCwgY3J1Y2lhbGx5LCB0aGUgZGV2aWNlIG5lZWRzIHRvIGhhdmUgYSBtYXRjaGluZyBJRC5cblxuTm93LCBjYW4gU3l6a2FsbGVyICpjcmVhdGUqIGFuIE1ESU8gZGV2aWNlPyBJIGtub3cgaXQgY2FuIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzLCBhbmQgaXQgY2FuIGRvIEkyQyBkZXZpY2VzLCBwZXJoYXBzIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYGkyYy1zdHViYCBvciBzaW1pbGFyLiBCdXQgTURJTz8gVGhhdCdzIHRoZSBydWIuIElzIHRoZXJlIGFueXRoaW5nIGxpa2UgYG1kaW8tbW9ja2Agb3IgYG1kaW8tZ3Bpb2AgYXZhaWxhYmxlPyBJIG5lZWQgdG8gZXhwbG9yZSB0aGUgb3B0aW9ucy5cblxuRXZlbiBpZiBJICpjYW4qIGNyZWF0ZSBhbiBNRElPIGRldmljZSwgdGhlcmUncyBhbm90aGVyIGh1cmRsZS4gRG9lcyBTeXprYWxsZXIgaGF2ZSB0aGUgc21hcnRzIHRvIGVtdWxhdGUgdGhlIE1hcnZlbGwgc3dpdGNoIHJlZ2lzdGVycyB0aGF0IHRoaXMgZHJpdmVyJ3MgZ29pbmcgdG8gYmUgbG9va2luZyBhdD8gVGhlIGRyaXZlcidzIGdvaW5nIHRvIHJlYWQgdGhlIHN3aXRjaCBJRCBmcm9tIHRob3NlIHJlZ2lzdGVycyBkdXJpbmcgdGhlIHByb2JlLiBJZiB0aGF0IElEIGRvZXNuJ3Qgaml2ZSB3aXRoIHdoYXQgaXQgZXhwZWN0cywgcHJvYmUncyBnb2luZyB0byBmYWlsLiBUaGF0J3MgYSBkZWFsIGJyZWFrZXIuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCBleGFtaW5lIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgyNDcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MzQuOTEyNjYwNDI5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTExMzU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdjg4ZTZ4eHhfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzMxND1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobXY4OGU2eHh4X3BtX29wcywgbXY4OGU2eHh4X3N1c3BlbmQsIG12ODhlNnh4eF9yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMxNjpzdGF0aWMgaW50IG12ODhlNnh4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxNy17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03NTI0PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXY4OGU2eHh4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NTI1OlxcdC5wcm9iZVxcdD0gbXY4OGU2eHh4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MjYtXFx0LnJlbW92ZSA9IG12ODhlNnh4eF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjM0Ljk2Nzc4MDA5NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzAzMjk0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBgbXY4OGU2eHh4X3Byb2JlYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB3aGF0IHRoaXMgYG12ODhlNnh4eF9wcm9iZWAgZnVuY3Rpb24gaXMgZG9pbmcuIExldCdzIGJyZWFrIGRvd24gaXRzIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLiBJIGV4cGVjdCBpdCdzIHRoZSBjb3JlIG9mIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlc291cmNlIGFsbG9jYXRpb24sIGhhcmR3YXJlIHByb2JpbmcgYW5kIGNvbmZpZ3VyYXRpb24sIGRyaXZlciByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLCBhbmQgdGhlIG92ZXJhbGwgc2V0dXAgb2YgdGhlIHN3aXRjaC4gTXkgZm9jdXMgd2lsbCBiZSB0byB1bmRlcnN0YW5kIGl0cyBvdmVyYWxsIGxvZ2ljIGZsb3csIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIHdoYXQgbWVjaGFuaXNtcyBpdCBlbXBsb3lzIGZvciByZWNvdmVyeSBvciBncmFjZWZ1bCBkZWdyYWRhdGlvbi4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGdyYXNwIGl0cyByb2xlLCBnaXZlbiBteSBleHBlcmllbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTAxMCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjM4LjI3MTA3NzUzNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDMzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzMxNixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjczMTY6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbjczMTc6XFx0e1xcbjczMTg6XFx0XFx0c3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuNzMxOTpcXHRcXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcXG43MzIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuNzMyMTpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LVxcdTAwM2VvZl9ub2RlO1xcbjczMjI6XFx0XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwO1xcbjczMjM6XFx0XFx0aW50IHBvcnQ7XFxuNzMyNDpcXHRcXHRpbnQgZXJyO1xcbjczMjU6XFx0XFxuNzMyNjpcXHRcXHRpZiAoIW5wIFxcdTAwMjZcXHUwMDI2ICFwZGF0YSlcXG43MzI3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjczMjg6XFx0XFxuNzMyOTpcXHRcXHRpZiAobnApXFxuNzMzMDpcXHRcXHRcXHRjb21wYXRfaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbjczMzE6XFx0XFxuNzMzMjpcXHRcXHRpZiAocGRhdGEpIHtcXG43MzMzOlxcdFxcdFxcdGNvbXBhdF9pbmZvID0gcGRhdGFfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuNzMzNDpcXHRcXG43MzM1OlxcdFxcdFxcdGlmICghcGRhdGEtXFx1MDAzZW5ldGRldilcXG43MzM2OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjczMzc6XFx0XFxuNzMzODpcXHRcXHRcXHRmb3IgKHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgRFNBX01BWF9QT1JUUzsgcG9ydCsrKSB7XFxuNzMzOTpcXHRcXHRcXHRcXHRpZiAoIShwZGF0YS1cXHUwMDNlZW5hYmxlZF9wb3J0cyBcXHUwMDI2ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQpKSlcXG43MzQwOlxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjczNDE6XFx0XFx0XFx0XFx0aWYgKHN0cmNtcChwZGF0YS1cXHUwMDNlY2QucG9ydF9uYW1lc1twb3J0XSwgXFxcImNwdVxcXCIpKVxcbjczNDI6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNzM0MzpcXHRcXHRcXHRcXHRwZGF0YS1cXHUwMDNlY2QubmV0ZGV2W3BvcnRdID0gXFx1MDAyNnBkYXRhLVxcdTAwM2VuZXRkZXYtXFx1MDAzZWRldjtcXG43MzQ0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjczNDU6XFx0XFx0XFx0fVxcbjczNDY6XFx0XFx0fVxcbjczNDc6XFx0XFxuNzM0ODpcXHRcXHRpZiAoIWNvbXBhdF9pbmZvKVxcbjczNDk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzM1MDpcXHRcXG43MzUxOlxcdFxcdGNoaXAgPSBtdjg4ZTZ4eHhfYWxsb2NfY2hpcChkZXYpO1xcbjczNTI6XFx0XFx0aWYgKCFjaGlwKSB7XFxuNzM1MzpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjczNTQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuNzM1NTpcXHRcXHR9XFxuNzM1NjpcXHRcXG43MzU3OlxcdFxcdGNoaXAtXFx1MDAzZWluZm8gPSBjb21wYXRfaW5mbztcXG43MzU4OlxcdFxcbjczNTk6XFx0XFx0Y2hpcC1cXHUwMDNlcmVzZXQgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsIFxcXCJyZXNldFxcXCIsIEdQSU9EX09VVF9MT1cpO1xcbjczNjA6XFx0XFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VyZXNldCkpIHtcXG43MzYxOlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoY2hpcC1cXHUwMDNlcmVzZXQpO1xcbjczNjI6XFx0XFx0XFx0Z290byBvdXQ7XFxuNzM2MzpcXHRcXHR9XFxuNzM2NDpcXHRcXHRpZiAoY2hpcC1cXHUwMDNlcmVzZXQpXFxuNzM2NTpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTtcXG43MzY2OlxcdFxcbjczNjc6XFx0XFx0LyogRGV0ZWN0IGlmIHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZCBpbiBzaW5nbGUgY2hpcCBhZGRyZXNzaW5nIG1vZGUsXFxuNzM2ODpcXHRcXHQgKiBvdGhlcndpc2UgY29udGludWUgd2l0aCBhZGRyZXNzIHNwZWNpZmljIHNtaSBpbml0L2RldGVjdGlvbi5cXG43MzY5OlxcdFxcdCAqL1xcbjczNzA6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3NpbmdsZV9jaGlwX2RldGVjdChjaGlwLCBtZGlvZGV2KTtcXG43MzcxOlxcdFxcdGlmIChlcnIpIHtcXG43MzcyOlxcdFxcdFxcdGVyciA9IG12ODhlNnh4eF9zbWlfaW5pdChjaGlwLCBtZGlvZGV2LVxcdTAwM2VidXMsIG1kaW9kZXYtXFx1MDAzZWFkZHIpO1xcbjczNzM6XFx0XFx0XFx0aWYgKGVycilcXG43Mzc0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjczNzU6XFx0XFxuNzM3NjpcXHRcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZGV0ZWN0KGNoaXApO1xcbjczNzc6XFx0XFx0XFx0aWYgKGVycilcXG43Mzc4OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjczNzk6XFx0XFx0fVxcbjczODA6XFx0XFxuNzM4MTpcXHRcXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZWRzYV9zdXBwb3J0ID09IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRClcXG43MzgyOlxcdFxcdFxcdGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9IERTQV9UQUdfUFJPVE9fRURTQTtcXG43MzgzOlxcdFxcdGVsc2VcXG43Mzg0OlxcdFxcdFxcdGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9IERTQV9UQUdfUFJPVE9fRFNBO1xcbjczODU6XFx0XFxuNzM4NjpcXHRcXHRtdjg4ZTZ4eHhfcGh5X2luaXQoY2hpcCk7XFxuNzM4NzpcXHRcXG43Mzg4OlxcdFxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9lZXByb20pIHtcXG43Mzg5OlxcdFxcdFxcdGlmIChucClcXG43MzkwOlxcdFxcdFxcdFxcdG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwiZWVwcm9tLWxlbmd0aFxcXCIsXFxuNzM5MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZjaGlwLVxcdTAwM2VlZXByb21fbGVuKTtcXG43MzkyOlxcdFxcdFxcdGVsc2VcXG43MzkzOlxcdFxcdFxcdFxcdGNoaXAtXFx1MDAzZWVlcHJvbV9sZW4gPSBwZGF0YS1cXHUwMDNlZWVwcm9tX2xlbjtcXG43Mzk0OlxcdFxcdH1cXG43Mzk1OlxcdFxcbjczOTY6XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbjczOTc6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3N3aXRjaF9yZXNldChjaGlwKTtcXG43Mzk4OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbjczOTk6XFx0XFx0aWYgKGVycilcXG43NDAwOlxcdFxcdFxcdGdvdG8gb3V0X3BoeTtcXG43NDAxOlxcdFxcbjc0MDI6XFx0XFx0aWYgKG5wKSB7XFxuNzQwMzpcXHRcXHRcXHRjaGlwLVxcdTAwM2VpcnEgPSBvZl9pcnFfZ2V0KG5wLCAwKTtcXG43NDA0OlxcdFxcdFxcdGlmIChjaGlwLVxcdTAwM2VpcnEgPT0gLUVQUk9CRV9ERUZFUikge1xcbjc0MDU6XFx0XFx0XFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaXJxO1xcbjc0MDY6XFx0XFx0XFx0XFx0Z290byBvdXRfcGh5O1xcbjc0MDc6XFx0XFx0XFx0fVxcbjc0MDg6XFx0XFx0fVxcbjc0MDk6XFx0XFxuNzQxMDpcXHRcXHRpZiAocGRhdGEpXFxuNzQxMTpcXHRcXHRcXHRjaGlwLVxcdTAwM2VpcnEgPSBwZGF0YS1cXHUwMDNlaXJxO1xcbjc0MTI6XFx0XFxuNzQxMzpcXHRcXHQvKiBIYXMgdG8gYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgTURJTyBidXMgaXMgY3JlYXRlZCwgYmVjYXVzZVxcbjc0MTQ6XFx0XFx0ICogdGhlIFBIWXMgd2lsbCBsaW5rIHRoZWlyIGludGVycnVwdHMgdG8gdGhlc2UgaW50ZXJydXB0XFxuNzQxNTpcXHRcXHQgKiBjb250cm9sbGVyc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzozOC4yNzEzMjI1MTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NzAyMTgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIG12ODhlNnh4eCBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSdzIGp1bXBpbmcgaW50byBgbXY4OGU2eHh4X2RldGVjdChjaGlwKWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCByb3V0aW5lJ3MgdXAgdG8uIE15IGZpcnN0IGFzc3VtcHRpb24gaXMgdGhhdCBpdCdzIHRoZSBkZXZpY2UgZGV0ZWN0aW9uIGZ1bmN0aW9uLiBJdCdzIGxpa2VseSBwcm9iaW5nIHRoZSBoYXJkd2FyZSwgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIE1hcnZlbGwgc3dpdGNoIHZhcmlhbnQsIGFuZCBwZXJoYXBzIGNvbmZpcm1pbmcgaXRzIHByZXNlbmNlIGFuZCBiYXNpYyBjb25maWd1cmF0aW9uLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtdjg4ZTZ4eHhfZGV0ZWN0KClgIGltcGxlbWVudGF0aW9uIGl0c2VsZiB0byBzZWUgdGhlIGV4YWN0IHByb2Jpbmcgc2VxdWVuY2UsIHdoYXQgcmVnaXN0ZXJzIGl0J3MgY2hlY2tpbmcsIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgY2hpcCByZXZpc2lvbnMgb3IgZmFtaWxpZXMuIEl0J3MgcHJvYmFibHkgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgc3dpdGNoIGRyaXZlciBpbml0aWFsaXphdGlvbi4gSSBleHBlY3QgdG8gZmluZCBzb21lIEkyQyBvciBNRElPIHRyYW5zYWN0aW9uIGNhbGxzIGluIHRoZXJlIGFzIGl0IGNvbW11bmljYXRlcyB0byB0aGUgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc1NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NDEuODE4MzQ2MzQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MjIwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNzIyMDpcXHRcXHQucG9ydF9tc3Rfc3RhdGVfc2V0XFx0PSBtdjg4ZTZ4eHhfcG9ydF9tc3Rfc3RhdGVfc2V0LFxcbjcyMjE6XFx0XFx0LnBvcnRfZmFzdF9hZ2VcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2Zhc3RfYWdlLFxcbjcyMjI6XFx0XFx0LnBvcnRfdmxhbl9mYXN0X2FnZVxcdD0gbXY4OGU2eHh4X3BvcnRfdmxhbl9mYXN0X2FnZSxcXG43MjIzOlxcdFxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG43MjI0OlxcdFxcdC5wb3J0X3ZsYW5fYWRkXFx0XFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2FkZCxcXG43MjI1OlxcdFxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2RlbCxcXG43MjI2OlxcdFxcdC52bGFuX21zdGlfc2V0XFx0XFx0PSBtdjg4ZTZ4eHhfdmxhbl9tc3RpX3NldCxcXG43MjI3OlxcdFxcdC5wb3J0X2ZkYl9hZGRcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2ZkYl9hZGQsXFxuNzIyODpcXHRcXHQucG9ydF9mZGJfZGVsXFx0XFx0PSBtdjg4ZTZ4eHhfcG9ydF9mZGJfZGVsLFxcbjcyMjk6XFx0XFx0LnBvcnRfZmRiX2R1bXBcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2ZkYl9kdW1wLFxcbjcyMzA6XFx0XFx0LnBvcnRfbWRiX2FkZFxcdFxcdD0gbXY4OGU2eHh4X3BvcnRfbWRiX2FkZCxcXG43MjMxOlxcdFxcdC5wb3J0X21kYl9kZWxcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X21kYl9kZWwsXFxuNzIzMjpcXHRcXHQucG9ydF9taXJyb3JfYWRkXFx0PSBtdjg4ZTZ4eHhfcG9ydF9taXJyb3JfYWRkLFxcbjcyMzM6XFx0XFx0LnBvcnRfbWlycm9yX2RlbFxcdD0gbXY4OGU2eHh4X3BvcnRfbWlycm9yX2RlbCxcXG43MjM0OlxcdFxcdC5jcm9zc2NoaXBfYnJpZGdlX2pvaW5cXHQ9IG12ODhlNnh4eF9jcm9zc2NoaXBfYnJpZGdlX2pvaW4sXFxuNzIzNTpcXHRcXHQuY3Jvc3NjaGlwX2JyaWRnZV9sZWF2ZVxcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9icmlkZ2VfbGVhdmUsXFxuNzIzNjpcXHRcXHQucG9ydF9od3RzdGFtcF9zZXRcXHQ9IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wX3NldCxcXG43MjM3OlxcdFxcdC5wb3J0X2h3dHN0YW1wX2dldFxcdD0gbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXBfZ2V0LFxcbjcyMzg6XFx0XFx0LnBvcnRfdHh0c3RhbXBcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X3R4dHN0YW1wLFxcbjcyMzk6XFx0XFx0LnBvcnRfcnh0c3RhbXBcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wLFxcbjcyNDA6XFx0XFx0LmNsc19mbG93ZXJfYWRkXFx0XFx0PSBtdjg4ZTZ4eHhfY2xzX2Zsb3dlcl9hZGQsXFxuNzI0MTpcXHRcXHQuY2xzX2Zsb3dlcl9kZWwgICAgICAgICA9IG12ODhlNnh4eF9jbHNfZmxvd2VyX2RlbCxcXG43MjQyOlxcdFxcdC5nZXRfdHNfaW5mb1xcdFxcdD0gbXY4OGU2eHh4X2dldF90c19pbmZvLFxcbjcyNDM6XFx0XFx0LmRldmxpbmtfcGFyYW1fZ2V0XFx0PSBtdjg4ZTZ4eHhfZGV2bGlua19wYXJhbV9nZXQsXFxuNzI0NDpcXHRcXHQuZGV2bGlua19wYXJhbV9zZXRcXHQ9IG12ODhlNnh4eF9kZXZsaW5rX3BhcmFtX3NldCxcXG43MjQ1OlxcdFxcdC5kZXZsaW5rX2luZm9fZ2V0XFx0PSBtdjg4ZTZ4eHhfZGV2bGlua19pbmZvX2dldCxcXG43MjQ2OlxcdFxcdC5wb3J0X2xhZ19jaGFuZ2VcXHQ9IG12ODhlNnh4eF9wb3J0X2xhZ19jaGFuZ2UsXFxuNzI0NzpcXHRcXHQucG9ydF9sYWdfam9pblxcdFxcdD0gbXY4OGU2eHh4X3BvcnRfbGFnX2pvaW4sXFxuNzI0ODpcXHRcXHQucG9ydF9sYWdfbGVhdmVcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2xhZ19sZWF2ZSxcXG43MjQ5OlxcdFxcdC5jcm9zc2NoaXBfbGFnX2NoYW5nZVxcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9sYWdfY2hhbmdlLFxcbjcyNTA6XFx0XFx0LmNyb3NzY2hpcF9sYWdfam9pblxcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9sYWdfam9pbixcXG43MjUxOlxcdFxcdC5jcm9zc2NoaXBfbGFnX2xlYXZlXFx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2xhZ19sZWF2ZSxcXG43MjUyOlxcdH07XFxuNzI1MzpcXHRcXG43MjU0OlxcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuNzI1NTpcXHR7XFxuNzI1NjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjaGlwLVxcdTAwM2VkZXY7XFxuNzI1NzpcXHRcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuNzI1ODpcXHRcXG43MjU5OlxcdFxcdGRzID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkcyksIEdGUF9LRVJORUwpO1xcbjcyNjA6XFx0XFx0aWYgKCFkcylcXG43MjYxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjcyNjI6XFx0XFxuNzI2MzpcXHRcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbjcyNjQ6XFx0XFx0ZHMtXFx1MDAzZW51bV9wb3J0cyA9IG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7XFxuNzI2NTpcXHRcXHRkcy1cXHUwMDNlcHJpdiA9IGNoaXA7XFxuNzI2NjpcXHRcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbjcyNjc6XFx0XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZtdjg4ZTZ4eHhfc3dpdGNoX29wcztcXG43MjY4OlxcdFxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2bXY4OGU2eHh4X3BoeWxpbmtfbWFjX29wcztcXG43MjY5OlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhZ2VfdGltZV9jb2VmZjtcXG43MjcwOlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9tYXggPSBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhZ2VfdGltZV9jb2VmZiAqIFU4X01BWDtcXG43MjcxOlxcdFxcbjcyNzI6XFx0XFx0LyogU29tZSBjaGlwcyBzdXBwb3J0IHVwIHRvIDMyLCBidXQgdGhhdCByZXF1aXJlcyBlbmFibGluZyB0aGVcXG43MjczOlxcdFxcdCAqIDUtYml0IHBvcnQgbW9kZSwgd2hpY2ggd2UgZG8gbm90IHN1cHBvcnQuIDY0MGteVzE2IG91Z2h0IHRvXFxuNzI3NDpcXHRcXHQgKiBiZSBlbm91Z2ggZm9yIGFueW9uZS5cXG43Mjc1OlxcdFxcdCAqL1xcbjcyNzY6XFx0XFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gbXY4OGU2eHh4X2hhc19sYWcoY2hpcCkgPyAxNiA6IDA7XFxuNzI3NzpcXHRcXG43Mjc4OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGRzKTtcXG43Mjc5OlxcdFxcbjcyODA6XFx0XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbjcyODE6XFx0fVxcbjcyODI6XFx0XFxuNzI4MzpcXHRzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfdW5yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbjcyODQ6XFx0e1xcbjcyODU6XFx0XFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKGNoaXAtXFx1MDAzZWRzKTtcXG43Mjg2OlxcdH1cXG43Mjg3OlxcdFxcbjcyODg6XFx0c3RhdGljIGNvbnN0IHZvaWQgKnBkYXRhX2RldmljZV9nZXRfbWF0Y2hfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuNzI4OTpcXHR7XFxuNzI5MDpcXHRcXHRjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzID0gZGV2LVxcdTAwM2Vkcml2ZXItXFx1MDAzZW9mX21hdGNoX3RhYmxlO1xcbjcyOTE6XFx0XFx0Y29uc3Qgc3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gZGV2LVxcdTAwM2VwbGF0Zm9ybV9kYXRhO1xcbjcyOTI6XFx0XFxuNzI5MzpcXHRcXHRmb3IgKDsgbWF0Y2hlcy1cXHUwMDNlbmFtZVswXSB8fCBtYXRjaGVzLVxcdTAwM2V0eXBlWzBdIHx8IG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGVbMF07XFxuNzI5NDpcXHRcXHQgICAgIG1hdGNoZXMrKykge1xcbjcyOTU6XFx0XFx0XFx0aWYgKCFzdHJjbXAocGRhdGEtXFx1MDAzZWNvbXBhdGlibGUsIG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGUpKVxcbjcyOTY6XFx0XFx0XFx0XFx0cmV0dXJuIG1hdGNoZXMtXFx1MDAzZWRhdGE7XFxuNzI5NzpcXHRcXHR9XFxuNzI5ODpcXHRcXHRyZXR1cm4gTlVMTDtcXG43Mjk5OlxcdH1cXG43MzAwOlxcdFxcbjczMDE6XFx0LyogVGhlcmUgaXMgbm8gc3VzcGVuZCB0byBSQU0gc3VwcG9ydCBhdCBEU0EgbGV2ZWwgeWV0LCB0aGUgc3dpdGNoIGNvbmZpZ3VyYXRpb25cXG43MzAyOlxcdCAqIHdvdWxkIGJlIGxvc3QgYWZ0ZXIgYSBwb3dlciBjeWNsZSBzbyBwcmV2ZW50IGl0IHRvIGJlIHN1c3BlbmRlZC5cXG43MzAzOlxcdCAqL1xcbjczMDQ6XFx0c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdjg4ZTZ4eHhfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuNzMwNTpcXHR7XFxuNzMwNjpcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuNzMwNzpcXHR9XFxuNzMwODpcXHRcXG43MzA5OlxcdHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXY4OGU2eHh4X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuNzMxMDpcXHR7XFxuNzMxMTpcXHRcXHRyZXR1cm4gMDtcXG43MzEyOlxcdH1cXG43MzEzOlxcdFxcbjczMTQ6XFx0c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG12ODhlNnh4eF9wbV9vcHMsIG12ODhlNnh4eF9zdXNwZW5kLCBtdjg4ZTZ4eHhfcmVzdW1lKTtcXG43MzE1OlxcdFxcbjczMTY6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbjczMTc6XFx0e1xcbjczMTg6XFx0XFx0c3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuNzMxOTpcXHRcXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NDEuODE4NjAyNDExWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NzQ5NzQxMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIHRoZSBgbXY4OGU2eHh4YCBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHByb2JlIGZ1bmN0aW9uIGFuZCBpdCBuZWVkcyBlaXRoZXIgYSBkZXZpY2UgdHJlZSBub2RlIG9yIHBsYXRmb3JtIGRhdGEuIFN5emthbGxlciBjYW4gaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzLCByaWdodD8gQnV0IGlzIHRoYXQgYSBzdGFuZGFyZCB0aGluZz8gSSBkb24ndCB0aGluayBpdCdzIHRoZSBkZWZhdWx0LiBIYW5nIG9uLCBTeXprYWxsZXIgKmRpZCogYXBwbHkgdGhhdCBwYXRjaC4uLiBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdC5cblxuQnV0IHRoaXMgcHJvbXB0Li4uIGl0J3Mgc2F5aW5nIHRvIGZvY3VzIG9uIHJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgbWVudGlvbnMgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIENhbiBJIGFjdHVhbGx5IHJlYWNoIGBtdjg4ZTZ4eHhgIGluIFFFTVU/IE5vLCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLiBJcyB0aGVyZSBhIG1vY2sgZHJpdmVyIEkgY291bGQgdXNlIHRvIGVtdWxhdGUgaXQ/IE5vcGUuXG5cbkhtbS4uLiBpcyB0aGVyZSBzb21lIGJhY2tkb29yIHdheSB0byBpbnN0YW50aWF0ZSB0aGlzIHRoaW5nPyBDYW4gSSB1c2UgYGkyY2Agb3IgYG1kaW9gIGZyb20gdXNlcnNwYWNlPyBDYW4gdXNlcnNwYWNlIGV2ZW4gY3JlYXRlIGFuIE1ESU8gZGV2aWNlIHZpYSBgc3lzZnNgPyBObywgdGhhdCdzIG5vdCBob3cgaXQgd29ya3MuIFRoZSBNRElPIGJ1cyBkcml2ZXIgdXN1YWxseSBpbnN0YW50aWF0ZXMgdGhlc2UgYmFzZWQgb24gRFQgb3Igc29tZSBzY2FuLiBJdCBzY2FucywgZmluZHMgdGhlIGRldmljZSwgYW5kIHRoZW4gaXQgY3JlYXRlcyB0aGUgZGV2aWNlLlxuXG5CdXQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLi4udGhlIHNjYW4gd29uJ3QgZmluZCBhbnl0aGluZy4gUmlnaHQuIFRoYXQncyBhIHByb2JsZW0uIFdhaXQgYSBtaW51dGUhIFRoZSBgbXY4OGU2eHh4X2RldGVjdGAgZnVuY3Rpb24uIEl0ICpyZWFkcyogdGhlIHN3aXRjaCBJRCBkaXJlY3RseSBmcm9tIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuIElmIGl0IGRvZXNuJ3QgbWF0Y2ggYSB2YWxpZCBJRCwgaXQgZmFpbHMgaW1tZWRpYXRlbHkuIFNvLCBsZXQncyBnbyBjaGVjayBvdXQgdGhpcyBgbXY4OGU2eHh4X2RldGVjdGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIHBpZWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA3OSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjQ4LjQ5MzU3ODE4OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzAwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcwMDA6XFx0XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXFx1MDAzZXByaXY7XFxuNzAwMTpcXHRcXHR1bnNpZ25lZCBpbnQgaWQsIG51bV90eDtcXG43MDAyOlxcdFxcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxuNzAwMzpcXHRcXHRzdHJ1Y3QgZHNhX2xhZyAqbGFnO1xcbjcwMDQ6XFx0XFx0aW50IGksIGVyciwgbnRoO1xcbjcwMDU6XFx0XFx0dTE2IG1hc2tbOF07XFxuNzAwNjpcXHRcXHR1MTYgaXZlYztcXG43MDA3OlxcdFxcbjcwMDg6XFx0XFx0LyogQXNzdW1lIG5vIHBvcnQgaXMgYSBtZW1iZXIgb2YgYW55IExBRy4gKi9cXG43MDA5OlxcdFxcdGl2ZWMgPSBCSVQobXY4OGU2eHh4X251bV9wb3J0cyhjaGlwKSkgLSAxO1xcbjcwMTA6XFx0XFxuNzAxMTpcXHRcXHQvKiBEaXNhYmxlIGFsbCBtYXNrcyBmb3IgcG9ydHMgdGhhdCBfYXJlXyBtZW1iZXJzIG9mIGEgTEFHLiAqL1xcbjcwMTI6XFx0XFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9wb3J0KGRwLCBkcykge1xcbjcwMTM6XFx0XFx0XFx0aWYgKCFkcC1cXHUwMDNlbGFnKVxcbjcwMTQ6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNzAxNTpcXHRcXG43MDE2OlxcdFxcdFxcdGl2ZWMgXFx1MDAyNj0gfkJJVChkcC1cXHUwMDNlaW5kZXgpO1xcbjcwMTc6XFx0XFx0fVxcbjcwMTg6XFx0XFxuNzAxOTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgODsgaSsrKVxcbjcwMjA6XFx0XFx0XFx0bWFza1tpXSA9IGl2ZWM7XFxuNzAyMTpcXHRcXG43MDIyOlxcdFxcdC8qIEVuYWJsZSB0aGUgY29ycmVjdCBzdWJzZXQgb2YgbWFza3MgZm9yIGFsbCBMQUcgcG9ydHMgdGhhdFxcbjcwMjM6XFx0XFx0ICogYXJlIGluIHRoZSBUeCBzZXQuXFxuNzAyNDpcXHRcXHQgKi9cXG43MDI1OlxcdFxcdGRzYV9sYWdzX2ZvcmVhY2hfaWQoaWQsIGRzLVxcdTAwM2Vkc3QpIHtcXG43MDI2OlxcdFxcdFxcdGxhZyA9IGRzYV9sYWdfYnlfaWQoZHMtXFx1MDAzZWRzdCwgaWQpO1xcbjcwMjc6XFx0XFx0XFx0aWYgKCFsYWcpXFxuNzAyODpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG43MDI5OlxcdFxcbjcwMzA6XFx0XFx0XFx0bnVtX3R4ID0gMDtcXG43MDMxOlxcdFxcdFxcdGRzYV9sYWdfZm9yZWFjaF9wb3J0KGRwLCBkcy1cXHUwMDNlZHN0LCBsYWcpIHtcXG43MDMyOlxcdFxcdFxcdFxcdGlmIChkcC1cXHUwMDNlbGFnX3R4X2VuYWJsZWQpXFxuNzAzMzpcXHRcXHRcXHRcXHRcXHRudW1fdHgrKztcXG43MDM0OlxcdFxcdFxcdH1cXG43MDM1OlxcdFxcbjcwMzY6XFx0XFx0XFx0aWYgKCFudW1fdHgpXFxuNzAzNzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG43MDM4OlxcdFxcbjcwMzk6XFx0XFx0XFx0bnRoID0gMDtcXG43MDQwOlxcdFxcdFxcdGRzYV9sYWdfZm9yZWFjaF9wb3J0KGRwLCBkcy1cXHUwMDNlZHN0LCBsYWcpIHtcXG43MDQxOlxcdFxcdFxcdFxcdGlmICghZHAtXFx1MDAzZWxhZ190eF9lbmFibGVkKVxcbjcwNDI6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNzA0MzpcXHRcXG43MDQ0OlxcdFxcdFxcdFxcdGlmIChkcC1cXHUwMDNlZHMgPT0gZHMpXFxuNzA0NTpcXHRcXHRcXHRcXHRcXHRtdjg4ZTZ4eHhfbGFnX3NldF9wb3J0X21hc2sobWFzaywgZHAtXFx1MDAzZWluZGV4LFxcbjcwNDY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIG51bV90eCwgbnRoKTtcXG43MDQ3OlxcdFxcbjcwNDg6XFx0XFx0XFx0XFx0bnRoKys7XFxuNzA0OTpcXHRcXHRcXHR9XFxuNzA1MDpcXHRcXHR9XFxuNzA1MTpcXHRcXG43MDUyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA4OyBpKyspIHtcXG43MDUzOlxcdFxcdFxcdGVyciA9IG12ODhlNnh4eF9nMl90cnVua19tYXNrX3dyaXRlKGNoaXAsIGksIHRydWUsIG1hc2tbaV0pO1xcbjcwNTQ6XFx0XFx0XFx0aWYgKGVycilcXG43MDU1OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuNzA1NjpcXHRcXHR9XFxuNzA1NzpcXHRcXG43MDU4OlxcdFxcdHJldHVybiAwO1xcbjcwNTk6XFx0fVxcbjcwNjA6XFx0XFxuNzA2MTpcXHRzdGF0aWMgaW50IG12ODhlNnh4eF9sYWdfc3luY19tYXNrc19tYXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbjcwNjI6XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGRzYV9sYWcgbGFnKVxcbjcwNjM6XFx0e1xcbjcwNjQ6XFx0XFx0aW50IGVycjtcXG43MDY1OlxcdFxcbjcwNjY6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzKGRzKTtcXG43MDY3OlxcdFxcbjcwNjg6XFx0XFx0aWYgKCFlcnIpXFxuNzA2OTpcXHRcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfbGFnX3N5bmNfbWFwKGRzLCBsYWcpO1xcbjcwNzA6XFx0XFxuNzA3MTpcXHRcXHRyZXR1cm4gZXJyO1xcbjcwNzI6XFx0fVxcbjcwNzM6XFx0XFxuNzA3NDpcXHRzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2xhZ19jaGFuZ2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG43MDc1OlxcdHtcXG43MDc2OlxcdFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbjcwNzc6XFx0XFx0aW50IGVycjtcXG43MDc4OlxcdFxcbjcwNzk6XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbjcwODA6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzKGRzKTtcXG43MDgxOlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbjcwODI6XFx0XFx0cmV0dXJuIGVycjtcXG43MDgzOlxcdH1cXG43MDg0OlxcdFxcbjcwODU6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9sYWdfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbjcwODY6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRzYV9sYWcgbGFnLFxcbjcwODc6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGRldl9sYWdfdXBwZXJfaW5mbyAqaW5mbyxcXG43MDg4OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG43MDg5OlxcdHtcXG43MDkwOlxcdFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbjcwOTE6XFx0XFx0aW50IGVyciwgaWQ7XFxuNzA5MjpcXHRcXG43MDkzOlxcdFxcdGlmICghbXY4OGU2eHh4X2xhZ19jYW5fb2ZmbG9hZChkcywgbGFnLCBpbmZvLCBleHRhY2spKVxcbjcwOTQ6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbjcwOTU6XFx0XFxuNzA5NjpcXHRcXHQvKiBEU0EgTEFHIElEcyBhcmUgb25lLWJhc2VkICovXFxuNzA5NzpcXHRcXHRpZCA9IGxhZy5pZCAtIDE7XFxuNzA5ODpcXHRcXG43MDk5OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NDguNDkzODQxMDg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjg3NzEyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqRGlyZWN0IEFwcHJvYWNoIHRvIElkZW50aWZpY2F0aW9uKipcblxuUmlnaHQsIGxldCdzIGN1dCB0aHJvdWdoIHRoZSBmbHVmZiBhbmQgZ28gc3RyYWlnaHQgZm9yIHRoZSBqdWd1bGFyLiBJbnN0ZWFkIG9mIGRhbmNpbmcgYXJvdW5kIHRoZSBpc3N1ZSwgbGV0J3MgdGFyZ2V0IHRoZSBjb3JlIGZ1bmN0aW9uIHdlJ3JlIGFmdGVyLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGBtdjg4ZTZ4eHhfZGV0ZWN0YCBpcyB0aGUga2V5IHRvIGlkZW50aWZ5aW5nIHRoZSBNYXJ2ZWxsIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgaW4gcXVlc3Rpb24uIEl0J3MgdXN1YWxseSB0aGUgbW9zdCBkaXJlY3QgcGF0aC4gV2UnbGwgYnlwYXNzIGFueSBwcmVsaW1pbmFyeSBjaGVja3MgYW5kIGp1bXAgZGlyZWN0bHkgaW50byBzZWFyY2hpbmcgZm9yIGl0LiBObyBuZWVkIHRvIG92ZXJ0aGluayBpdDsgbGV0J3Mgc2VlIHdoYXQgY29tZXMgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjU3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzo1MS41MjI2MTQ2NDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NzY3Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICptdjg4ZTZ4eHhfbG9va3VwX2luZm8odW5zaWduZWQgaW50IHByb2RfbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc1OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjA0PXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NpbmdsZV9jaGlwX2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjI2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2Mjc6XFx0cmV0dXJuIG12ODhlNnh4eF9kZXRlY3QoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyOC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MzE2PXN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczNzUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzM3NjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZGV0ZWN0KGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczNzctXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NTEuNTgxMzg3MTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTcwNjkzMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERpdmluZyBpbnRvIGBtdjg4ZTZ4eHhfZGV0ZWN0YCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJ1c2luZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB3ZSdyZSBsb29raW5nIGF0IGBtdjg4ZTZ4eHhfZGV0ZWN0YCDigJMgbGlrZWx5IGEgZGV0ZWN0aW9uIHJvdXRpbmUgZm9yIGEgTWFydmVsbCBFdGhlcm5ldCBQSFkuXCIgSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhhdCBmaWxlbmFtZTogYG12ODhlNnh4eGAgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIk1hcnZlbGwsIDg4RTZ4eHggZmFtaWx5LFwiIGFuZCB0aGUgdHJhaWxpbmcgYF9kZXRlY3RgIGFsbW9zdCBjZXJ0YWlubHkgaW5kaWNhdGVzIGFuIGluaXRpYWxpemF0aW9uIG9yIGVudW1lcmF0aW9uIHBoYXNlLiBJIGV4cGVjdCB0aGlzIGNvZGUgdG8gaGFuZGxlIHRoZSBpbml0aWFsIHByb2Jpbmcgb2YgdGhlIFBIWSBjaGlwLCBpZGVudGlmaWNhdGlvbiwgYW5kIHBvdGVudGlhbGx5IHNvbWUgYmFzaWMgY29uZmlndXJhdGlvbiBvciBjYXBhYmlsaXR5IGRpc2NvdmVyeS4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBXaGF0J3MgdGhlIHRhcmdldCBoYXJkd2FyZT8gV2hhdCBhcmUgdGhlIHR5cGljYWwgcmVnaXN0ZXIgYWRkcmVzc2VzIEkgc2hvdWxkIGJlIGV4cGVjdGluZz8gV2hhdCBtZXRob2RzIG9mIGRldGVjdGlvbiDigJMgcGVyaGFwcyBJMkMsIE1ESU8sIG9yIHNvbWUgb3RoZXIgaW50ZXJmYWNlIOKAkyBhcmUgdGhleSB1c2luZz8gSSB3YW50IHRvIHNlZSBob3cgcm9idXN0IHRoZWlyIGRldGVjdGlvbiBzdHJhdGVneSBpczogYXJlIHRoZXkganVzdCBjaGVja2luZyBhIHNpbmdsZSByZWdpc3RlciBmb3IgYSBzcGVjaWZpYyB2YWx1ZSwgb3IgYXJlIHRoZXkgdGFraW5nIGEgbW9yZSBzb3BoaXN0aWNhdGVkLCBtdWx0aS1zdGFnZSBhcHByb2FjaCwgbWF5YmUgY2hlY2tpbmcgZm9yIHBhcnRpY3VsYXIgUEhZIElEcyBvciByZXZpc2lvbiBudW1iZXJzPyBJJ20gYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgdHJpY2t5IGludGVyYWN0aW9uIHdpdGggTURJTyBidXMgdGltaW5nLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgYmVpbmcgcnVuIG9uIGEgcGxhdGZvcm0gd2l0aCBub24tb3B0aW1hbCBkcml2ZXJzLiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoYXQuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSdtIGV4cGVjdGluZyB0aGF0IEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRldGFpbHMgb2YgTURJTyBjb21tYW5kcyBhbmQgdGhhdCBpdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZlcnNpb24gSSBhbSBzdXBwb3J0aW5nLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoaXMgZGV0ZWN0aW9uIGlzIHRoZSByaWdodCB3YXkgdG8gYXBwcm9hY2ggd2hhdCBJIGFtIGRvaW5nLCBvciBpZiBpdCBuZWVkcyB0byBiZSB1cGRhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTg5NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjU1LjgzODQ1ODE4NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjU3NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNjU3NTpcXHRzdGF0aWMgaW50IG12ODhlNnh4eF9kZXRlY3Qoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbjY1NzY6XFx0e1xcbjY1Nzc6XFx0XFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICppbmZvO1xcbjY1Nzg6XFx0XFx0dW5zaWduZWQgaW50IHByb2RfbnVtLCByZXY7XFxuNjU3OTpcXHRcXHR1MTYgaWQ7XFxuNjU4MDpcXHRcXHRpbnQgZXJyO1xcbjY1ODE6XFx0XFxuNjU4MjpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuNjU4MzpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIDAsIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRCwgXFx1MDAyNmlkKTtcXG42NTg0OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbjY1ODU6XFx0XFx0aWYgKGVycilcXG42NTg2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuNjU4NzpcXHRcXG42NTg4OlxcdFxcdHByb2RfbnVtID0gaWQgXFx1MDAyNiBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF9NQVNLO1xcbjY1ODk6XFx0XFx0cmV2ID0gaWQgXFx1MDAyNiBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUkVWX01BU0s7XFxuNjU5MDpcXHRcXG42NTkxOlxcdFxcdGluZm8gPSBtdjg4ZTZ4eHhfbG9va3VwX2luZm8ocHJvZF9udW0pO1xcbjY1OTI6XFx0XFx0aWYgKCFpbmZvKVxcbjY1OTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuNjU5NDpcXHRcXG42NTk1OlxcdFxcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cXG42NTk2OlxcdFxcdGNoaXAtXFx1MDAzZWluZm8gPSBpbmZvO1xcbjY1OTc6XFx0XFxuNjU5ODpcXHRcXHRkZXZfaW5mbyhjaGlwLVxcdTAwM2VkZXYsIFxcXCJzd2l0Y2ggMHgleCBkZXRlY3RlZDogJXMsIHJldmlzaW9uICV1XFxcXG5cXFwiLFxcbjY1OTk6XFx0XFx0XFx0IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXByb2RfbnVtLCBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VuYW1lLCByZXYpO1xcbjY2MDA6XFx0XFxuNjYwMTpcXHRcXHRyZXR1cm4gMDtcXG42NjAyOlxcdH1cXG42NjAzOlxcdFxcbjY2MDQ6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfc2luZ2xlX2NoaXBfZGV0ZWN0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG42NjA1OlxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG42NjA2OlxcdHtcXG42NjA3OlxcdFxcdGludCBlcnI7XFxuNjYwODpcXHRcXG42NjA5OlxcdFxcdC8qIGR1YWxfY2hpcCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgc2luZ2xlL211bHRpLWNoaXAgbW9kZXMgKi9cXG42NjEwOlxcdFxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VkdWFsX2NoaXApXFxuNjYxMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG42NjEyOlxcdFxcbjY2MTM6XFx0XFx0LyogSWYgdGhlIG1kaW8gYWRkciBpcyAxNiBpbmRpY2F0aW5nIHRoZSBmaXJzdCBwb3J0IGFkZHJlc3Mgb2YgYSBzd2l0Y2hcXG42NjE0OlxcdFxcdCAqIChlLmcuIG12ODhlNio0MSkgaW4gc2luZ2xlIGNoaXAgYWRkcmVzc2luZyBtb2RlIHRoZSBkZXZpY2UgbWF5IGJlXFxuNjYxNTpcXHRcXHQgKiBjb25maWd1cmVkIGluIHNpbmdsZSBjaGlwIGFkZHJlc3NpbmcgbW9kZS4gU2V0dXAgdGhlIHNtaSBhY2Nlc3MgYXNcXG42NjE2OlxcdFxcdCAqIHNpbmdsZSBjaGlwIGFkZHJlc3NpbmcgbW9kZSBhbmQgYXR0ZW1wdCB0byBkZXRlY3QgdGhlIG1vZGVsIG9mIHRoZVxcbjY2MTc6XFx0XFx0ICogc3dpdGNoLCBpZiB0aGlzIGZhaWxzIHRoZSBkZXZpY2UgaXMgbm90IGNvbmZpZ3VyZWQgaW4gc2luZ2xlIGNoaXBcXG42NjE4OlxcdFxcdCAqIGFkZHJlc3NpbmcgbW9kZS5cXG42NjE5OlxcdFxcdCAqL1xcbjY2MjA6XFx0XFx0aWYgKG1kaW9kZXYtXFx1MDAzZWFkZHIgIT0gMTYpXFxuNjYyMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG42NjIyOlxcdFxcbjY2MjM6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV9pbml0KGNoaXAsIG1kaW9kZXYtXFx1MDAzZWJ1cywgMCk7XFxuNjYyNDpcXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzo1NS44Mzg2OTkzNDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwNjAzNzIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIGl0J3MgZ3JhYmJpbmcgYE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRGAgZnJvbSBwb3J0IDAuIElmIHRoYXQgSUQgZG9lc24ndCBqaXZlIHdpdGggYSBrbm93biBwcm9kdWN0IG51bWJlciwgaXQncyB0b3NzaW5nIGJhY2sgYW4gYC1FTk9ERVZgIGVycm9yLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoYXQgc2luY2UgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcyBzcGVjaWZpYyBzd2l0Y2gsIHByb2JpbmcgdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSBpcyBhIGd1YXJhbnRlZWQgZmFpbC5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gd2hhdCBpZiwgKmh5cG90aGV0aWNhbGx5Kiwgc29tZW9uZSBoYWQgc2V0IHVwIGEgbW9jayBNRElPIGJ1cyB0aGF0IGFjdHVhbGx5ICpkaWQqIHJldHVybiBhIHZhbGlkIElEPyBUaGF0IHdvdWxkIGNoYW5nZSB0aGluZ3MsIHdvdWxkbid0IGl0PyBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBkb2VzIHN5emthbGxlciBoYXZlIGEgc3BlY2lmaWMgbW9jayBmb3IgYG12ODhlNnh4eGA/IEkgaGlnaGx5IGRvdWJ0IGl0OyBpdCBkb2Vzbid0IHVzdWFsbHkgZ28gdGhhdCBncmFudWxhci5cblxuQWgsIGJ1dCB0aGUgcHJvbXB0LiBMZXQgbWUgcmUtcmVhZCBpdC4uLiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLi4uIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBUaGlzIHNjZW5hcmlvIGlzLCB3aXRob3V0IGEgZG91YnQsIGltcG9zc2libGUgdG8gcmVhY2guIFNvIEkgc2hvdWxkIGJlIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2suIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlIGZvciBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYC4gSSB3YW50IHRvIHNlZSBpZiAqYW55dGhpbmcqIGV2ZW4gcmVtb3RlbHkgbG9va3MgbGlrZSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGltcGxlbWVudGF0aW9uLiBJJ2xsIHNlYXJjaCB3aXRoIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDowMS4zNDQ3Mzg4NjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjYyNDcwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04MDM9c3RhdGljIHZvaWQgbXY4OGU2MzkzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDctXFx0Ym9vbCBpc182MTkxeCA9XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA4OlxcdFxcdGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXByb2RfbnVtID09IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFYO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwOS1cXHRib29sIGlzXzYzNjEgPVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgxMDpcXHRcXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM3NTI9c3RhdGljIGNvbnN0IHUxNiBmYW1pbHlfcHJvZF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTM6XFx0W01WODhFNlhYWF9GQU1JTFlfNjM0MV0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTQ6XFx0W01WODhFNlhYWF9GQU1JTFlfNjM5MF0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTU6XFx0W01WODhFNlhYWF9GQU1JTFlfNjM5M10gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkzWCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzU2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01Njk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcwMC1cXHRbTVY4OEU2MDIwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzAxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwMjAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcwMi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcyNS1cXHRbTVY4OEU2MDcxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzI2OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwNzEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcyNy1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0Ni1cXHRbTVY4OEU2MDg1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwODUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0OC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MDk3LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc3MC1cXHRbTVY4OEU2MDk1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzcxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc3Mi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MDk1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc5MS1cXHRbTVY4OEU2MDk3XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzkyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc5My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MDk3LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxNi1cXHRbTVY4OEU2MTIzXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxMjMsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxOC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTY1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg0MS1cXHRbTVY4OEU2MTMxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODQyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxMzEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg0My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTg1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg2Mi1cXHRbTVY4OEU2MTQxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODYzOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNDEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg2NC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzQxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg4OC1cXHRbTVY4OEU2MTYxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODg5OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNjEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg5MC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTY1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkxNC1cXHRbTVY4OEU2MTY1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTE1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNjUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkxNi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTY1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkzOS1cXHRbTVY4OEU2MTcxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTQwOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk0MS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk2NC1cXHRbTVY4OEU2MTcyXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTY1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk2Ni1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk5MC1cXHRbTVY4OEU2MTc1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTkxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk5Mi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjAxNS1cXHRbTVY4OEU2MTc2XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDE2OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzYsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjAxNy1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA0MS1cXHRbTVY4OEU2MTg1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDQyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxODUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA0My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTg1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA2My1cXHRbTVY4OEU2MTkwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDY0OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA2NS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA4OC1cXHRbTVY4OEU2MTkwWF0gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjA4OTpcXHRcXHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwWCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDkwLVxcdFxcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTEzLVxcdFtNVjg4RTYxOTFdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxMTQ6XFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTE1LVxcdFxcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTM4LVxcdFtNVjg4RTYxOTFYXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTM5OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFYLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxNDAtXFx0XFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxNjMtXFx0W01WODhFNjE5M1hdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxNjQ6XFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5M1gsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE2NS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE5MC1cXHRbTVY4OEU2MjIwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTkxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyMjAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE5Mi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxNy1cXHRbTVY4OEU2MjQwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjE4OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyNDAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxOS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0NC1cXHRbTVY4OEU2MjUwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjQ1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyNTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0Ni1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2Ni1cXHRbTVY4OEU2MjkwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyOTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2OC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI5My1cXHRbTVY4OEU2MzIwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mjk0OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI5NS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzIwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyMS1cXHRbTVY4OEU2MzIxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzIyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyMy1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzIwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM0OS1cXHRbTVY4OEU2MzQxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzUwOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNDEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM1MS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzQxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3Ny1cXHRbTVY4OEU2MzUwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzc4OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3OS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQwMi1cXHRbTVY4OEU2MzUxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDAzOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQwNC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyNy1cXHRbTVY4OEU2MzUyXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDI4OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyOS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1NC1cXHRbTVY4OEU2MzYxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDU1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1Ni1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4MS1cXHRbTVY4OEU2MzkwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDgyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUwOS1cXHRbTVY4OEU2MzkwWF0gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjUxMDpcXHRcXHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkwWCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTExLVxcdFxcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTM2LVxcdFtNVjg4RTYzOTNYXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTM3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTNYLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MzgtXFx0XFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTY1NzU9c3RhdGljIGludCBtdjg4ZTZ4eHhfZGV0ZWN0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODItXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1ODM6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCAwLCBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSUQsIFxcdTAwMjZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU4NC1cXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU4ODpcXHRwcm9kX251bSA9IGlkIFxcdTAwMjYgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfTUFTSztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg5OlxcdHJldiA9IGlkIFxcdTAwMjYgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1JFVl9NQVNLO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM9NTQ5PXN0YXRpYyBpbnQgbXY4OGU2MzkwX3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtNTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYzo1NzA6XFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXByb2RfbnVtID09IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTBYIHx8XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jOjU3MTpcXHQgICAgY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFgpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jLTU3Mi1cXHRcXHRtcGNzLVxcdTAwM2VlcnJhdHVtXzNfMTQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmM9NDExPWludCBtdjg4ZTYzOTN4X3BvcnRfc2V0X3NwZWVkX2R1cGxleChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmMtNDE2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jOjQxNzpcXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jLTQxOC1cXHQgICAgc3BlZWQgXFx1MDAzZSAyNTAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmgtMTI2LS8qIE9mZnNldCAweDAzOiBTd2l0Y2ggSWRlbnRpZmllciBSZWdpc3RlciAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEyNzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRFxcdFxcdDB4MDNcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMjg6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF9NQVNLXFx0MHhmZmYwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTI5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjAyMFxcdDB4MDIwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwNzFcXHQweDA3MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDg1XFx0MHgwNGEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTMyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjA5NVxcdDB4MDk1MFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTdcXHQweDA5OTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwWFxcdDB4MGEwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzNTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTBYXFx0MHgwYTEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM2OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjEzMVxcdDB4MTA2MFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzNzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjBcXHQweDExNTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzg6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTIzXFx0MHgxMjEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE2MVxcdDB4MTYxMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0MDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNjVcXHQweDE2NTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTcxXFx0MHgxNzEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE3MlxcdDB4MTcyMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0MzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzVcXHQweDE3NTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc2XFx0MHgxNzYwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQ1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFxcdDB4MTkwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0NjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFcXHQweDE5MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxWFxcdDB4MTkyMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0ODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTNYXFx0MHgxOTMwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQ5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE4NVxcdDB4MWE3MFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1MDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyMjBcXHQweDIyMDBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjQwXFx0MHgyNDAwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTUyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjI1MFxcdDB4MjUwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1MzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjFcXHQweDI2MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjkwXFx0MHgyOTAwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjMyMVxcdDB4MzEwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1NjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNDFcXHQweDM0MDBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxXFx0MHgzNDEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU4OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM1MlxcdDB4MzUyMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1OTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTBcXHQweDM3MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNjA6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUxXFx0MHgzNzUwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYxOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFxcdDB4MzkwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE2MjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTNYXFx0MHgzOTMwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYzOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1JFVl9NQVNLXFx0MHgwMDBmXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmgtMTY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDowMy4yMTA5OTEyNzhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE0NTIwNzQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIG1vY2sgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZiB0aGF0IGNvdWxkIHNpbXVsYXRlIHRoZSBNYXJ2ZWxsIHN3aXRjaCwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgY2hlY2tlZC4gQnV0IHRoZW4gSSByZW1lbWJlciBTeXprYWxsZXIgKmRpZCogYXBwbHkgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMsIHJpZ2h0PyBPa2F5LCBzbyB0aGF0J3MgaW50ZXJlc3RpbmcuIEkga25vdyBTeXprYWxsZXIgdGhyb3dzIHBhdGNoZXMgYXJvdW5kIHRvIHRlc3QgdGhlbSwgYnV0IGlmIHRoZSBmdXp6ZXIgY2FuJ3QgKmFjdHVhbGx5KiBnZXQgdG8gdGhlIGNvZGUsIGl0J2xsIGp1c3QgcmVwb3J0IHplcm8gY292ZXJhZ2UgZm9yIHRoYXQgcGF0Y2guXG5cblJpZ2h0LCB0aGUgcHJvbXB0IGlzIGV4cGxpY2l0IGFib3V0IHRoaXM6IEkgbmVlZCB0byBmbGFnIGl0IGFzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW5oZXJlbnRseSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBhICpwaHlzaWNhbCogTWFydmVsbCBzd2l0Y2gsIHNvIEknbSB0aGlua2luZyBJJ3ZlIGZvdW5kIG15IGFuc3dlci4gU2luY2UgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLCB0aGlzIGlzICpkZWZpbml0ZWx5KiBnb2luZyB0byBiZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkp1c3QgdG8gYmUgc3VyZSwgSeKAmWxsIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaG93IHRoZSBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCBmdW5jdGlvbiBpcyBjYWxsZWQuIFJpZ2h0LCBpdCdzIGNhbGxlZCBmcm9tIGBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29ya2AuIFRoYXQgd29yayBpcyBpbml0aWFsaXplZCBpbiBgbXY4OGU2eHh4X2h3dHN0YW1wX3BvcnRfc2V0dXBgLiBUaGF0LCBpbiB0dXJuLCBpcyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXBfc2V0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGRzYV9wb3J0X2h3dHN0YW1wX3NldGAsIGFuZCAqdGhhdCogaXMgY2FsbGVkIGZyb20gYGRzYV9zbGF2ZV9pb2N0bGAgd2l0aCB0aGUgYFNJT0NTSFdUU1RBTVBgIGlvY3RsLiBJdCdzIGEgY2hhaW4sIGJ1dCBpdCByZXF1aXJlcyB0aGUgc3dpdGNoIHRvIGJlIHJlZ2lzdGVyZWQgYW5kIHByb2JlZC5cblxuT2theSwgaGVyZSdzIHRoZSBkZWFsOiBXaXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LCBgbXY4OGU2eHh4X2RldGVjdGAgKndpbGwqIGZhaWwuIFRoZSBwcm9iZSB3aWxsIGZhaWwuIFRoZSBzd2l0Y2ggd29uJ3QgcmVnaXN0ZXIsIGFuZCB0aGUgbmV0d29yayBkZXZpY2VzIGFyZW4ndCBjcmVhdGVkLiBUaGUgY29kZSBpcyAqY29tcGxldGVseSogdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuTm93LCB3YWl0IGEgc2Vjb25kLi4uIGlzIHRoZXJlIGEgbW9jayBNRElPIGJ1cyBpbiB0aGUga2VybmVsIHNvbWV3aGVyZT8gR290dGEgY2hlY2sgdGhhdCByZWFsIHF1aWNrLiBMZXQncyBzZWUgaWYgdGhlIGBtZGlvLW1vY2tgIGRyaXZlciBleGlzdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTQyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjI0OjEwLjM1NjIwMjY4NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2Njc2OTE5NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjI0OjEyLjkyMjk4MDI5MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ2NjczNzIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiB3ZSBjb3VsZCBzb21laG93IHRyaWdnZXIgdGhlIGNvZGUgcGF0aCBpbiBxdWVzdGlvbiwgYHBhcnNlX2VtYmVkZGVkX3RzYCwgdXNpbmcgYSBkdW1teSBkZXZpY2Ugb3Igc29tZSBjbGV2ZXIgdHJpY2tlcnkuIE15IGludHVpdGlvbiB3YXMgdG8gY2hlY2sgaWYgd2UgY291bGQgbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgYG1kaW8tZ3Bpb2AsIGJ1dCB0aGUgZHJpdmVyLCBgbXY4OGU2eHh4YCwgZXhwbGljaXRseSByZWFkcyBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYCB2aWEgTURJTy4gSWYgdGhhdCByZWFkIHJldHVybnMgYSBub25zZW5zaWNhbCB2YWx1ZSwgdGhlIGRldmljZSBkZXRlY3Rpb24gZmFpbHMuIFVubGVzcyB0aGVyZSdzIGEgd2F5IHRvIGluamVjdCBhcmJpdHJhcnkgTURJTyByZXNwb25zZXMgaW4gYSB0ZXN0aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBzeXprYWxsZXIuXG5cblN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCBkb2Vzbid0IGhhdmUgYW4gTURJTyBmdXp6ZXIuIEl0IGhhbmRsZXMgb3RoZXIgaW50ZXJmYWNlcyBsaWtlIFVTQiwgUENJLCBhbmQgSTJDIChwb3RlbnRpYWxseSB0aHJvdWdoIGBpMmMtc3R1YmApLCBidXQgTURJTyBpcyBhYnNlbnQuIEkgYnJpZWZseSBjb25zaWRlcmVkIGlmIHRoZSBkcml2ZXIgY291bGQgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggSTJDLCBidXQgaXQncyBhbiBNRElPIGRyaXZlciwgc28gdGhhdCdzIGEgZGVhZCBlbmQuXG5cbk15IG5leHQgc3RlcCB3YXMgdG8gdHJhY2UgaG93IHdlIG1pZ2h0ICpwb3NzaWJseSogcmVhY2ggYHBhcnNlX2VtYmVkZGVkX3RzYC4gSXQncyBhIHN0YXRpYyBmdW5jdGlvbiBidXJpZWQgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNgLiBUaGUgY2FsbCBjaGFpbiBpcyB2ZXJ5IHNwZWNpZmljOiBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCAtXHUwMDNlIGBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29ya2AgLVx1MDAzZSB3b3JrcXVldWUuIEluIHNob3J0LCBpdCdzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBlbXVsYXRpb24gbGFuZHNjYXBlLiBEb2VzIFFFTVUsIHRoZSB2aXJ0dWFsIG1hY2hpbmUgSSBvZnRlbiB3b3JrIHdpdGgsIHByb3ZpZGUgZW11bGF0aW9uIGZvciBNYXJ2ZWxsIHN3aXRjaGVzPyBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgcm9ja2VyYCBzd2l0Y2hlcywgYnV0IGRvZXMgaXQgY292ZXIgdGhlIGBtdjg4ZTZ4eHhgIHNwZWNpZmljYWxseT8gQSBxdWljayBtZW50YWwgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgYG12ODhlNnh4eGAuIEV2ZW4gaWYgaXQgZGlkLCBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJ3QgcnVuIHdpdGggdGhhdCB0eXBlIG9mIGhhcmR3YXJlIGVtdWxhdGlvbiBlbmFibGVkLiBJdCdzIGNvbmZpZ3VyZWQgd2l0aCBzdGFuZGFyZCBoYXJkd2FyZSBlbXVsYXRlZCBsaWtlIGBlMTAwMGAsIGB2aXJ0aW8tbmV0YCwgYW5kIGB2ZXRoYC5cblxuU28sIGNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCB0aGlzIGNvZGUgaXMgKnVucmVhY2hhYmxlKiBpbiBzeXprYWxsZXIuXG5cbkxldCBtZSByZXZpc2l0IHRoZSBwcm9tcHQgY3JpdGVyaWEuIEl0IHN0YXRlcyB0aGF0IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBwZXJmZWN0bHkgbWF0Y2hlcyB0aGUgc2l0dWF0aW9uLiBUaGUgcGF0Y2ggbW9kaWZpZXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIChgbXY4OGU2eHh4YCkgZm9yIHdoaWNoIG5vIHVzYWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24gZXhpc3RzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhIGdlbmVyaWMgRFNBIG1vY2sgdGhhdCAqbWlnaHQqIHVzZSB0aGlzIGNvZGUuIEknbGwgc2VhcmNoIHRocm91Z2ggYHRvb2xzL3Rlc3RpbmcvYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9gLCBidXQgdGhlIGNvZGUgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gLCB3aGljaCBpcyBjbGVhcmx5IGFuZCBzcGVjaWZpY2FsbHkgZm9yIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy5cblxuRmluYWxseSwgSSdsbCBleHBsb3JlIHRoZSBwb3NzaWJpbGl0eSBvZiBwcm9iaW5nIGBtdjg4ZTZ4eHhgIHRocm91Z2ggYSBzb2Z0d2FyZSBwbGF0Zm9ybSBkZXZpY2UgdGhhdCBtb2NrcyB0aGUgTURJTyByZXNwb25zZXMuIEknbGwgc2VhcmNoIGZvciBgbXY4OGU2eHh4YCB3aXRoaW4gYHRvb2xzL3Rlc3RpbmcvYCBvciBgZHJpdmVycy9uZXQvZHNhL2AgdG8gdW5jb3ZlciBhIHBvdGVudGlhbCBtb2NrLlxuXG5TbywgaW4gc3VtbWFyeSwgYmFzZWQgb24gdGhlIGxhY2sgb2YgZW11bGF0aW9uIGFuZCB0aGUgZHJpdmVyJ3MgdGlnaHQgaGFyZHdhcmUgZGVwZW5kZW5jeSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUsIGFuZCB0aHVzIG5vdCB3b3J0aCBmdXp6aW5nIGZvciB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjQ1MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDoyNC4zODk3MjAxNThaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDA0Nzg4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3Rlc3RpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDoyNC41MjM3NzYyOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA2OTU3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbW1lZGlhdGUgQXNzZXNzbWVudDogTm8gU2ltdWxhdGVkIEVudmlyb25tZW50IE5lZWRlZCoqXG5cbkFscmlnaHQsIHRoYXQncyBjbGVhci4gVGhlIGluaXRpYWwgZGlyZWN0aXZlIOKAkyB0aGVyZSdzIG5vIG5lZWQgZm9yIGEgXCJtb2NrXCIgb3Igc2ltdWxhdGVkIGVudmlyb25tZW50LiBXZSBjYW4gd29yayBkaXJlY3RseSB3aXRoIHRoZSBhY3R1YWwgc3lzdGVtIG9yIGRhdGEuIFRoaXMgaW1wbGllcyBhIGxldmVsIG9mIGNvbmZpZGVuY2UgaW4gdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgb3IgYSBuZWVkIGZvciBhIHByb2R1Y3Rpb24tbGV2ZWwgcGVyc3BlY3RpdmUgcmlnaHQgYXdheS5cblxuVGhlIHN1YnNlcXVlbnQgdGhvdWdodCwgXCJXaGF0IGFib3V0IGBkc2FfbG9vcGA/XCIgc3VnZ2VzdHMgYSBzaGlmdCBpbiBmb2N1cy4gSXQgaW5kaWNhdGVzIGFuIGltbWVkaWF0ZSBjb25zaWRlcmF0aW9uIG9mIGEgc3BlY2lmaWMgY29tcG9uZW50IG9yIGZ1bmN0aW9uLCBwZXJoYXBzIGFzIGEgcG90ZW50aWFsIHBvaW50IG9mIGludmVzdGlnYXRpb24gb3Igb3BlcmF0aW9uYWwgYXNwZWN0IG9mIHRoZSBwcm9qZWN0LiBJJ2QgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgcm9sZSBhbmQgcmVsZXZhbmNlIG9mIGBkc2FfbG9vcGAgdG8gdGhlIGxhcmdlciBvYmplY3RpdmUuIElzIGl0IGEgY3JpdGljYWwgcGF0aCBlbGVtZW50PyBBIGtub3duIHBvdGVudGlhbCBib3R0bGVuZWNrPyBPciBhIHNwZWNpZmljIGFyZWEgd2hlcmUgdGhpcyB0ZWFtIGlzIGZvY3VzaW5nIG91ciBhdHRlbnRpb24/IFRoZSBxdWVzdGlvbiBpbXBsaWVzIHRoYXQgYSBzcGVjaWZpYyBtb2R1bGUgaXMgY29uc2lkZXJlZCBmb3IgYSByZWFzb24sIGFuZCB0aGVyZSBpcyBhIHNwZWNpZmljIGltcGxpY2F0aW9uIGZvciB0aGUgcHJvamVjdCBkZXBlbmRpbmcgb24gaXRzIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk1NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjI0OjI4LjIzMDczNzIyNloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwMDQwMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcXHRcXHRcXHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXFx0Kz0gZHNhX2xvb3Aub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjQ6MjguMjk2NzQ1NTMyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NDQ5MDIyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBgZHNhX2xvb3BgKipcblxuT2theSwgc28gSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBgZHNhX2xvb3BgIG1vY2sgZHJpdmVyLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGl0IGRvZXNuJ3QgaW50ZXJhY3Qgd2l0aCB0aGUgYG12ODhlNnh4eGAgaGFyZHdhcmUuIFRoYXQncyB0aGUga2V5IGluZGljYXRvciBoZXJlLiBTaW5jZSBgbXY4OGU2eHh4YCBpcyBhIGRyaXZlciBzcGVjaWZpYyB0byB0aGUgTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLCBhbmQgd2UncmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUgY29uc3RyYWludHMgb2Ygc3l6a2FsbGVyLCB3aGljaCBpcyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGlzIGhhcmR3YXJlIGlzIHNpbXBseSBpbmFjY2Vzc2libGUuXG5cblRoZXJlZm9yZSwgbXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY29kZSBpc24ndCBmdXp6YWJsZSBpbiB0aGlzIGNvbnRleHQuIEkgd2lsbCBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmF0aW9uYWxlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIG1vZGlmaWVkIGNvZGUgcmVsYXRlcyB0byBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgd2hpY2ggY2Fubm90IGJlIHByb2JlZCBvciBleGVyY2lzZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGZpbGVzIGluIHBsYXkuIEFoLCB5ZXMsIHRoZXJlIGFyZSBhIGZldzogYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jYCwgYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oYCwgYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY2AsIGFuZCBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oYC4gQW5kIHRoZXkncmUgYWxsIGZpcm1seSB3aXRoaW4gdGhlIGBtdjg4ZTZ4eHhgIGRpcmVjdG9yeS5cblxuWXVwLCB0aGF0IGNvbmZpcm1zIGl0LiBJIGFtIGNvbXBsZXRlbHkgY29uZmlkZW50IGluIG15IG9yaWdpbmFsIGV2YWx1YXRpb24uIFdlIGNhbiBzYWZlbHkgZXhjbHVkZSB0aGlzIGZyb20gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NzUxLCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDozNC4xNDE2NTEzMzlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWVzdGFtcHMgZm9yIE1hcnZlbGwgODhFNnh4eCBwaHlzaWNhbCBzd2l0Y2hlcy4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lc3RhbXBzIGZvciBNYXJ2ZWxsIDg4RTZ4eHggcGh5c2ljYWwgc3dpdGNoZXMuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBzd2l0Y2ggaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9j2gk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 03:12:54 +0000 UTC FinishedAt: 2026-07-11 03:24:36 +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+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWQ4ODc3NGZhNjYyMDc3MTJjNTg0ZWEzM2Q4NTIyYThlN2NjNDE1MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDAzOjIzOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5jMzI3N2MxZjNkNzg1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuQEAgLTI4LDYgJiM0MzsyOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzQxX29wcyxcbiYjNDM7XHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcbiBcdFtNVjg4RTYzNTBdID0ge1xuQEAgLTY0NDcsNiAmIzQzOzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzUyX29wcyxcbiYjNDM7XHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcdFtNVjg4RTYzNjFdID0ge1xuIFx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5iNmE5MGViYTgxYzQzOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDE0IEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cbiYjNDM7XHQgKiBod3RzdGFtcC5oLiBaZXJvICh0aGUgZGVmYXVsdCkgbGVhdmVzIGFycml2YWwgdGltZSBzdGFtcHMgaW4gdGhlXG4mIzQzO1x0ICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWRcbiYjNDM7XHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcbiYjNDM7XHQgKiBQVFAgY29tbW9uIGhlYWRlci5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5pbmRleCA2ZTY0NzJhM2I3NWFkNy4uMWZiZWQzNDA3NTc5NzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7aHd0c3RhbXAuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3B0cC5oXCYjMzQ7XG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiBcbiAjZGVmaW5lIFNLQl9QVFBfVFlQRShfX3NrYikgKCoodW5zaWduZWQgaW50ICopKChfX3NrYiktXHUwMDNlY2IpKVxuIFxuQEAgLTI0NSw2ICYjNDM7MjQ2LDczIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcbiBcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXHUwMDNlc2VxdWVuY2VfaWQpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgcGFyc2VfZW1iZWRkZWRfdHModW5zaWduZWQgaW50IGFycl90c19tb2RlLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgKm5zKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0cF9oZWFkZXIgKmhkcjtcbiYjNDM7XG4mIzQzO1x0Km5zID0gMDtcbiYjNDM7XG4mIzQzO1x0LyogQVBQRU5EIG1lYW5zIHRoZSBzd2l0Y2ggYXBwZW5kZWQgdGhlIHRpbWUgc3RhbXAgYXMgYSA0LWJ5dGUgdHJhaWxlclxuJiM0MztcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxuJiM0MztcdCAqIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIgYXQgd2hpY2ggdGhlIHN3aXRjaFxuJiM0MztcdCAqIG92ZXJ3cm90ZSB0aGUgdGltZSBzdGFtcCBpbiBwbGFjZSAoZS5nLiB0aGUgcmVzZXJ2ZWQgaGVhZGVyIGJ5dGVzKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoYXJyX3RzX21vZGUgPT0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkQgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VsZW4gXHUwMDNlPSA0KSB7XG4mIzQzO1x0XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNCk7XG4mIzQzO1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fSBlbHNlIGlmIChhcnJfdHNfbW9kZSAmIzQzOyA0IFx1MDAzYz0gc2l6ZW9mKCpoZHIpKSB7XG4mIzQzO1x0XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcbiYjNDM7XHRcdGlmICghaGRyKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlKTtcbiYjNDM7XHRcdG1lbXNldCgodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUsIDAsIDQpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmZfaGVhZCAqcnhxID0gXHUwMDI2cHMtXHUwMDNlcnhfcXVldWU7XG4mIzQzO1x0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xuJiM0MztcdHN0cnVjdCBza19idWZmX2hlYWQgcmVjZWl2ZWQ7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1NjQgbnM7XG4mIzQzO1xuJiM0MztcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZyZWNlaXZlZCk7XG4mIzQzO1x0X19za2JfcXVldWVfaGVhZChcdTAwMjZyZWNlaXZlZCwgc2tiKTtcbiYjNDM7XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZyeHEtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdHNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KHJ4cSwgXHUwMDI2cmVjZWl2ZWQpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cnhxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuJiM0MztcdHNrYl9xdWV1ZV93YWxrKFx1MDAyNnJlY2VpdmVkLCBza2IpIHtcbiYjNDM7XHRcdGlmICghcGFyc2VfZW1iZWRkZWRfdHMoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlLCBza2IsIFx1MDAyNm5zKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4mIzQzO1x0XHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuJiM0MztcdFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuJiM0MztcdFx0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbiYjNDM7XHR9XG4mIzQzO1x0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZyZWNlaXZlZCkpKVxuJiM0MztcdFx0bmV0aWZfcngoc2tiKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxuQEAgLTMwNyw4ICYjNDM7Mzc1LDIxIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcztcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXG4tXHRza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSk7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSkge1xuJiM0MztcdFx0LyogSWYgYXJyX3RzX21vZGUgaXMgc2V0LCB0aGUgdGltZXN0YW1wcyBhcmUgZW1iZWRkZWQgaW4gdGhlXG4mIzQzO1x0XHQgKiBmcmFtZXMgc28gYSByZWdpc3RlciByZWFkIGlzIG5vdCByZXF1aXJlZC4gV2Ugc3RpbGwgbmVlZCBhXG4mIzQzO1x0XHQgKiB3b3JrIHF1ZXVlIHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgaW5saW5lIGJlY2F1c2VcbiYjNDM7XHRcdCAqIHRpbWVjb3VudGVyX2N5YzJ0aW1lKCkgdGFrZXMgdGhlIGdsb2JhbCBtdXRleCBhbmQgdGhpc1xuJiM0MztcdFx0ICogY2Fubm90IGJlIGNhbGxlZCBmcm9tIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbiYjNDM7XHRcdGlmIChza2IpXG4mIzQzO1x0XHRcdG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZChjaGlwLCBwcywgc2tiKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuJiM0MztcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbiBcdGlmIChza2IpXG4gXHRcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZyxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbkBAIC0zMTksOSAmIzQzOzQwMCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4mIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiB7XG4tXHRyZXR1cm4gKGhkci1cdTAwM2V0c210IFx1MDAyNiAweGYpID09IDM7XG4mIzQzO1x0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIH1cbiBcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5AQCAtMzQzLDcgJiM0Mzs0MzEsNyBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbiYjNDM7XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSBcdTAwMjZcdTAwMjYgaXNfcGRlbGF5X21zZyhoZHIpKVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIsIHNrYik7XG4gXHRlbHNlXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xuQEAgLTUyMywxNCAmIzQzOzYxMSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbiYjNDM7XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMixcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUgXHUwMDNjXHUwMDNjIDgpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTg0LDExICYjNDM7Njk1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlKSB7XG4mIzQzO1x0XHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgbWVzc2FnZXMuICovXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXG4mIzQzO1x0XHRcdFx0XHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxuJiM0MztcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuIFxuIFx0LyogODhFNjM0MSBkZXZpY2VzIGRlZmF1bHQgdG8gdGltZXN0YW1waW5nIGF0IHRoZSBQSFksIGJ1dCB0aGlzIGhhc1xuIFx0ICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC02OCw2ICYjNDM7NjgsMjAgQEBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuJiM0MzsvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4mIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbiYjNDM7ICogZnJhbWVzLlxuJiM0MzsgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxuJiM0MzsgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXG4mIzQzOyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xuJiM0MzsgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XG4mIzQzOyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxuJiM0MzsgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxuJiM0MzsgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXG4mIzQzOyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcdFx0MHgwMVxuJiM0MztcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1x0MHgwM1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZDg4Nzc0ZmE2NjIwNzcxMmM1ODRlYTMzZDg1MjJhOGU3Y2M0MTUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMDM6MjM6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5jMzI3N2MxZjNkNzg1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKQEAgLTI4LDYgJiM0MzsyOCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2NsYXNzaWZ5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeWxpbmsuaCZndDsKQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0gewogCQkuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELAogCQkucHRwX3N1cHBvcnQgPSB0cnVlLAogCQkub3BzID0gJmFtcDttdjg4ZTYzNDFfb3BzLAomIzQzOwkJLmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksCiAJfSwKIAogCVtNVjg4RTYzNTBdID0gewpAQCAtNjQ0Nyw2ICYjNDM7NjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7CiAJCS5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsCiAJCS5wdHBfc3VwcG9ydCA9IHRydWUsCiAJCS5vcHMgPSAmYW1wO212ODhlNjM1Ml9vcHMsCiYjNDM7CQkuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSwKIAl9LAogCVtNVjg4RTYzNjFdID0gewogCQkucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaAppbmRleCBlOTY2ZTdjNGNjNWRlYS4uYjZhOTBlYmE4MWM0MzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCkBAIC0xODAsNiAmIzQzOzE4MCwxNCBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gewogCSAqIHBvcnQgMCwgMSBtZWFucyBpbnRlcm5hbCBQSFlzIHJhbmdlIHN0YXJ0cyBhdCBwb3J0IDEsIGV0YwogCSAqLwogCXVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDsKJiM0MzsKJiM0MzsJLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSk7IHNlZSB0aGUgQXJyVFNNb2RlIGVuY29kaW5nIGluCiYjNDM7CSAqIGh3dHN0YW1wLmguIFplcm8gKHRoZSBkZWZhdWx0KSBsZWF2ZXMgYXJyaXZhbCB0aW1lIHN0YW1wcyBpbiB0aGUKJiM0MzsJICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWQKJiM0MzsJICogYXMgYSB0cmFpbGVyIG9yIG92ZXJ3cml0dGVuIGF0IHRoYXQgYnl0ZSBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlCiYjNDM7CSAqIFBUUCBjb21tb24gaGVhZGVyLgomIzQzOwkgKi8KJiM0MzsJdW5zaWduZWQgaW50IGFycl90c19tb2RlOwogfTsKIAogc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li4xZmJlZDM0MDc1Nzk3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYwpAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICNpbmNsdWRlICYjMzQ7aHd0c3RhbXAuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3B0cC5oJiMzNDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xhc3NpZnkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAKICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS0mZ3Q7Y2IpKQogCkBAIC0yNDUsNiAmIzQzOzI0Niw3MyBAQCBzdGF0aWMgaW50IHNlcV9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdHNfc2VxaWQpCiAJcmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci0mZ3Q7c2VxdWVuY2VfaWQpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgcGFyc2VfZW1iZWRkZWRfdHModW5zaWduZWQgaW50IGFycl90c19tb2RlLAomIzQzOwkJCSAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyOwomIzQzOwomIzQzOwkqbnMgPSAwOwomIzQzOwomIzQzOwkvKiBBUFBFTkQgbWVhbnMgdGhlIHN3aXRjaCBhcHBlbmRlZCB0aGUgdGltZSBzdGFtcCBhcyBhIDQtYnl0ZSB0cmFpbGVyCiYjNDM7CSAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZQomIzQzOwkgKiBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIGF0IHdoaWNoIHRoZSBzd2l0Y2gKJiM0MzsJICogb3Zlcndyb3RlIHRoZSB0aW1lIHN0YW1wIGluIHBsYWNlIChlLmcuIHRoZSByZXNlcnZlZCBoZWFkZXIgYnl0ZXMpLgomIzQzOwkgKi8KJiM0MzsJaWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EICZhbXA7JmFtcDsgc2tiLSZndDtsZW4gJmd0Oz0gNCkgewomIzQzOwkJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQkqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMihza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0KTsKJiM0MzsJCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItJmd0O2xlbiAtIDQpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJfSBlbHNlIGlmIChhcnJfdHNfbW9kZSAmIzQzOyA0ICZsdDs9IHNpemVvZigqaGRyKSkgewomIzQzOwkJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQloZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpOwomIzQzOwkJaWYgKCFoZHIpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwkJKm5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlKTsKJiM0MzsJCW1lbXNldCgodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUsIDAsIDQpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAomIzQzOwkJCQkJc3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcywKJiM0MzsJCQkJCXN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpyeHEgPSAmYW1wO3BzLSZndDtyeF9xdWV1ZTsKJiM0MzsJc3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0OwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHJlY2VpdmVkOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwl1NjQgbnM7CiYjNDM7CiYjNDM7CV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO3JlY2VpdmVkKTsKJiM0MzsJX19za2JfcXVldWVfaGVhZCgmYW1wO3JlY2VpdmVkLCBza2IpOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3J4cS0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChyeHEsICZhbXA7cmVjZWl2ZWQpOwomIzQzOwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7cnhxLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CiYjNDM7CW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKJiM0MzsJc2tiX3F1ZXVlX3dhbGsoJmFtcDtyZWNlaXZlZCwgc2tiKSB7CiYjNDM7CQlpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlLCBza2IsICZhbXA7bnMpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJbnMgPSB0aW1lY291bnRlcl9jeWMydGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgbnMpOwomIzQzOwkJc2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTsKJiM0MzsJCW1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTsKJiM0MzsJCXNod3QtJmd0O2h3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpOwomIzQzOwl9CiYjNDM7CW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOwomIzQzOwomIzQzOwl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtyZWNlaXZlZCkpKQomIzQzOwkJbmV0aWZfcngoc2tiKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAogCQkJICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsCiAJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZywKQEAgLTMwNyw4ICYjNDM7Mzc1LDIxIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAljb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLSZndDtpbmZvLSZndDtvcHMtJmd0O3B0cF9vcHM7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAotCXNrYiA9IHNrYl9kZXF1ZXVlKCZhbXA7cHMtJmd0O3J4X3F1ZXVlKTsKJiM0MzsJaWYgKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlKSB7CiYjNDM7CQkvKiBJZiBhcnJfdHNfbW9kZSBpcyBzZXQsIHRoZSB0aW1lc3RhbXBzIGFyZSBlbWJlZGRlZCBpbiB0aGUKJiM0MzsJCSAqIGZyYW1lcyBzbyBhIHJlZ2lzdGVyIHJlYWQgaXMgbm90IHJlcXVpcmVkLiBXZSBzdGlsbCBuZWVkIGEKJiM0MzsJCSAqIHdvcmsgcXVldWUgcmF0aGVyIHRoYW4gcHJvY2Vzc2luZyBpbmxpbmUgYmVjYXVzZQomIzQzOwkJICogdGltZWNvdW50ZXJfY3ljMnRpbWUoKSB0YWtlcyB0aGUgZ2xvYmFsIG11dGV4IGFuZCB0aGlzCiYjNDM7CQkgKiBjYW5ub3QgYmUgY2FsbGVkIGZyb20gbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoKS4KJiM0MzsJCSAqLwomIzQzOwkJc2tiID0gc2tiX2RlcXVldWUoJmFtcDtwcy0mZ3Q7cnhfcXVldWUpOwomIzQzOwkJaWYgKHNrYikKJiM0MzsJCQltdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWQoY2hpcCwgcHMsIHNrYik7CiYjNDM7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAomIzQzOwlza2IgPSBza2JfZGVxdWV1ZSgmYW1wO3BzLSZndDtyeF9xdWV1ZSk7CiAJaWYgKHNrYikKIAkJbXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtJmd0O2FycjBfc3RzX3JlZywKIAkJCQkgICAmYW1wO3BzLSZndDtyeF9xdWV1ZSk7CkBAIC0zMTksOSAmIzQzOzQwMCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJCQkJICAgJmFtcDtwcy0mZ3Q7cnhfcXVldWUyKTsKIH0KIAotc3RhdGljIGludCBpc19wZGVsYXlfcmVzcChjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKQomIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcikKIHsKLQlyZXR1cm4gKGhkci0mZ3Q7dHNtdCAmYW1wOyAweGYpID09IDM7CiYjNDM7CXN3aXRjaCAocHRwX2dldF9tc2d0eXBlKGhkciwgUFRQX0NMQVNTX1YyKSkgewomIzQzOwljYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6CiYjNDM7CQlmYWxsdGhyb3VnaDsKJiM0MzsJY2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiB9CiAKIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKQEAgLTM0Myw3ICYjNDM7NDMxLDcgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJU0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlOwogCi0JaWYgKGlzX3BkZWxheV9yZXNwKGhkcikpCiYjNDM7CWlmICghY2hpcC0mZ3Q7aW5mby0mZ3Q7YXJyX3RzX21vZGUgJmFtcDsmYW1wOyBpc19wZGVsYXlfbXNnKGhkcikpCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlMiwgc2tiKTsKIAllbHNlCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlLCBza2IpOwpAQCAtNTIzLDE0ICYjNDM7NjExLDM3IEBAIGludCBtdjg4ZTYxNjVfZ2xvYmFsX2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiAKIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpCiB7Ci0JcmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKLQkJCQkJTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsCiYjNDM7CQkJCSAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKIHsKLQlyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAotCQkJCQlNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJaWYgKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlKSB7CiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsCiYjNDM7CQkJCQkgICAgICAgY2hpcC0mZ3Q7aW5mby0mZ3Q7YXJyX3RzX21vZGUgJmx0OyZsdDsgOCk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAomIzQzOwkJCQkgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQpAQCAtNTg0LDExICYjNDM7Njk1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQkvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgcmVzcG9uc2UgbWVzc2FnZXMuICovCi0JZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLAotCQkJCSAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKJiM0MzsJaWYgKCFjaGlwLSZndDtpbmZvLSZndDthcnJfdHNfbW9kZSkgewomIzQzOwkJLyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IG1lc3NhZ2VzLiAqLwomIzQzOwkJZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLAomIzQzOwkJCQkJICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVRIHwKJiM0MzsJCQkJCSAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CX0KIAogCS8qIDg4RTYzNDEgZGV2aWNlcyBkZWZhdWx0IHRvIHRpbWVzdGFtcGluZyBhdCB0aGUgUEhZLCBidXQgdGhpcyBoYXMKIAkgKiBhIGhhcmR3YXJlIGlzc3VlIHRoYXQgcmVzdWx0cyBpbiB1bnJlbGlhYmxlIHRpbWVzdGFtcHMuIEZvcmNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCkBAIC02OCw2ICYjNDM7NjgsMjAgQEAKICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfREVQX0lSUV9FTgkJMHgwMDAyCiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9JUlFfRU4JCTB4MDAwMQogCiYjNDM7LyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZQomIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnQKJiM0MzsgKiBmcmFtZXMuCiYjNDM7ICogICAweDAwICAgICAgICBmcmFtZSBtb2RpZmljYXRpb24gZGlzYWJsZWQgKHRpbWUgc3RhbXAgcmVhZCBmcm9tIHJlZ2lzdGVycykKJiM0MzsgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsCiYjNDM7ICogICAgICAgICAgICAgICBncm93aW5nIHRoZSBmcmFtZSBieSBmb3VyIGJ5dGVzCiYjNDM7ICogICAweDA0Li4weEVGICBvdmVyd3JpdGUgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGluIHBsYWNlLCB0aGF0IG1hbnkgYnl0ZXMgcGFzdAomIzQzOyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZQomIzQzOyAqICAgICAgICAgICAgICAgKG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpIHRhcmdldHMgdGhlIHJlc2VydmVkCiYjNDM7ICogICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgaGVhZGVyKQomIzQzOyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWQKJiM0MzsgKi8KJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5ECQkweDAxCiYjNDM7CiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovCiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9MRURfQ0ZHCTB4MDMKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWFydmVsbCA4OEU2eHh4IFBUUCBUaW1lc3RhbXAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhZGRzIGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wIHN1cHBvcnQgZm9yIFBUUCBmcmFtZXMgb24gTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgdXN1YWwgc3VzcGVjdHMgd2l0aGluIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIg4oCTIGBjaGlwLmNgLCBgY2hpcC5oYCwgYGh3dHN0YW1wLmNgLCBgaHd0c3RhbXAuaGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGVuYWJsaW5nIGBhcnJfdHNfbW9kZWAgZm9yIHRoZSBgTVY4OEU2MzQxYCBhbmQgYE1WODhFNjM1MmAgdmFyaWFudHMgd2l0aGluIHRoZSBgbXY4OGU2eHh4X3RhYmxlYCwgYWxvbmcgd2l0aCB0aGUgbmV3IGZ1bmN0aW9ucyBgcGFyc2VfZW1iZWRkZWRfdHNgIGFuZCBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCBmb3IgcGFyc2luZyB0aGF0IHRpbWVzdGFtcCBmcm9tIHRoZSByZWNlaXZlZCBza2IuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaG93IHRlc3RhYmxlIGlzIHRoaXM/IFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlLCBvYnZpb3VzbHkgdGllZCB0byBhIERTQSBzd2l0Y2ggZHJpdmVyLiBEU0Egc3dpdGNoZXMgYXJlIHR5cGljYWxseSBwaHlzaWNhbCBoYXJkd2FyZS4gTXkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQ2FuIEkgYWN0dWFsbHkgKnVzZSogdGhpcyBjb2RlIHdpdGhvdXQgcGh5c2ljYWxseSBoYXZpbmcgYW4gODhFNnh4eCBzd2l0Y2g/IElzIHRoZXJlIGV2ZW4gYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIGBtdjg4ZTZ4eHhgIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgdGVzdGluZz8KCkkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0LiBHZW5lcmFsbHksIERTQSBzd2l0Y2hlcyBjb21tdW5pY2F0ZSB2aWEgTURJTywgd2hpY2ggbWVhbnMgdGhpcyBwcm9iYWJseSBkZXBlbmRzIG9uIHNwZWNpZmljIGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvZiBlbXVsYXRpb24gb3IgaWYgdGhpcyBkcml2ZXIgaXMgc3RyaWN0bHkgZGVzaWduZWQgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIGludGVyYWN0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBrZXJuZWwgc2VhcmNoIGZvciBgbXY4OGU2eHh4YCB0byBsb29rIGZvciBhbnl0aGluZyB0aGF0IHBvaW50cyB0b3dhcmRzIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgb3IgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwMDY4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz03Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03NC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0yMT1vYmoteVx0XHRcdFx0JiM0Mzs9IG1pY3JvY2hpcC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVx0XHRcdFx0JiM0Mzs9IG12ODhlNnh4eC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVx0XHRcdFx0JiM0Mzs9IG14bDg2Mnh4L1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTctICogQ29weXJpZ2h0IChjKSAyMDA4IE1hcnZlbGwgU2VtaWNvbmR1Y3RvclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYKSAmIzQzOz0gbXY4OGU2eHh4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Mzptdjg4ZTZ4eHgtb2JqcyA6PSBjaGlwLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZGV2bGluay5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDEub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxX2F0dS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfdnR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfYXZiLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfc2NyYXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBod3RzdGFtcC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSAmIzQzOz0gbGVkcy5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjE4NS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM1Mi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM5eC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwaHkub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcG9ydC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0X2hpZGRlbi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBwdHAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc2VyZGVzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHNtaS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzd2l0Y2hkZXYub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdHJhY2Uub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNmbG93ZXIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNhbS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTA6c3RhdGljIHZvaWQgYXNzZXJ0X3JlZ19sb2NrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0Olx0ZXJyID0gbXY4OGU2eHh4X3NtaV9yZWFkKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0OmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwOlx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDppbnQgbXY4OGU2eHh4X3dhaXRfbWFzayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEtXHRcdFx0dTE2IG1hc2ssIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAyLVx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXHUwMDNjIDIpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAzOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTA0LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNjpcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNzppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjgtXHRcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzMDpcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzEtXHRcdFx0XHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM0OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM2Olx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzgtXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM5Olx0XHRcdFx0XHQgICAgc3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cywgbGlzdCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXHRpZiAoIW1kaW9fYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0ODpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ5LVx0dW5zaWduZWQgaW50IG4gPSBkLVx1MDAzZWh3aXJxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU2Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTctXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYyOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTcwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcyOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4ODpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg5Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2Y3RsMSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTEtXHRcdFx0Z290byB1bmxvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTI6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTMtdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTk0Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDQ6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDY6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDg6XHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTE6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTIte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjEzOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTU6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjA6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMS1cdHUxNiBtYXNrID0gR0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjI0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI1Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMjpcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM2LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIG12ODhlNnh4eF9nMV9pcnFfY2hpcCA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcdC5uYW1lXHRcdFx0PSBcJiMzNDttdjg4ZTZ4eHgtZzFcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDI6XHQuaXJxX21hc2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDM6XHQuaXJxX3VubWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0Olx0LmlycV9idXNfbG9ja1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDU6XHQuaXJxX2J1c19zeW5jX3VubG9ja1x0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ni19O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ5LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUxLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI1MjpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXHUwMDNlaG9zdF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MTpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MjpcdC5tYXBcdD0gbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYzLVx0LnhsYXRlXHQ9IGlycV9kb21haW5feGxhdGVfdHdvY2VsbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjYtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjY3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzI6XHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2bWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzMtXHRtYXNrIFx1MDAyNj0gfkdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjc0Olx0bXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NDpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA0LVx0XHROVUxMLCBjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNTpcdFx0XHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwNi1cdGlmICghY2hpcC1cdTAwM2VnMV9pcnEuZG9tYWluKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMjpcdGNoaXAtXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTMtXHRjaGlwLVx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxNTpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIxOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI1LVx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNjpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMy1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMzQ6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNTM6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYzLVx0c25wcmludGYoY2hpcC1cdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXHUwMDNlaXJxX25hbWUpLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY0Olx0XHQgXCYjMzQ7bXY4OGU2eHh4LSVzXCYjMzQ7LCBkZXZfbmFtZShjaGlwLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY2Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjctXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVx1MDAzZWlycSwgTlVMTCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2ODpcdFx0XHRcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY5LVx0XHRcdFx0ICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9TSEFSRUQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzAtXHRcdFx0XHQgICBjaGlwLVx1MDAzZWlycV9uYW1lLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3Mi1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzM6XHRcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Mi1cdFx0XHRcdFx0XHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgzOlx0bXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTM6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk3LVx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZWlycV9wb2xsX3dvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTg6XHRcdFx0XHQgIG12ODhlNnh4eF9pcnFfcG9sbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDA5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDEwOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1Olx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2Olx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQyMDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIxLVx0XHRcdFx0XHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDI6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0My1cdFx0XHRcdCAgICBpbnQgbGluaywgaW50IHNwZWVkLCBpbnQgZHVwbGV4LCBpbnQgcGF1c2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDY5Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3MC1yZXN0b3JlX2xpbms6XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0ODQ6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTItXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWZhbWlseSA9PSBNVjg4RTZYWFhfRkFNSUxZXzYyNTApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTM6XHRcdHJldHVybiBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk1Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTYtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA2PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNjpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMzpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjQtXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUzNTpzdGF0aWMgdm9pZCBtdjg4ZTYxODVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0OTpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU1MC1cdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcdGlmIChjbW9kZSBcdTAwM2MgQVJSQVlfU0laRShtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2RlcykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1Njc6XHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY4Olx0XHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY5LVx0ZWxzZSBpZiAoY21vZGUgPT0gTVY4OEU2WFhYX1BPUlRfU1RTX0NNT0RFX1JHTUlJKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTc0Om12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc1LVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjM6c3RhdGljIHZvaWQgbXY4OGU2MjUwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY6XHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjctXHRcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMjpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzNy1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM4Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0NDpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ5Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1Ny1cdHZhbCA9IHJlZyBcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU4Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjI6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY2LVx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Njc6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3NDpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4MC1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgxOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ni1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk3Olx0XHRcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzAwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzAxOnN0YXRpYyB2b2lkIG12ODhlNjMyeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDItXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA3LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDg6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDktXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE5LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjA6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMS1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjQ6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjktXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczMDpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDY6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTEtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njg6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjktXHRcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwNC1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODExLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODEyOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC1cdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1My1cdGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU0Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTY6XHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU3LVx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTg2NT1zdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2Njptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjctXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY5LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg3MDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzEtXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODgwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgxLVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4My1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODQ6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODg1LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTQtXHQgICAgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4OTU6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ni1cdFx0ZXJyID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTctXHRcdFx0XHRcdFx0ICAgICBMSU5LX0ZPUkNFRF9ET1dOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5ODpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA1LVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwOC1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDk6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEwLVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTM6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XHRpZiAobW9kZSAhPSBNTE9fQU5fUEhZIHx8ICFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTY6XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2UoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNy1cdFx0XHRcdFx0XHQgICAgICBzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMi1lcnJfdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIzOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTI4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzAtXHRcdFx0XHR1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzItXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMzOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzNC1cdGludCBwb3J0ID0gZHAtXHUwMDNlaW5kZXg7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQyLVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDM6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ3LVx0ICAgICAgY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQ4Olx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFx1MDAyNlx1MDAyNiBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhjaGlwLCBwb3J0KSkpKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ5LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCwgTElOS19VTkZPUkNFRCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTE6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkzMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgODhFNnh4eCBTd2l0Y2ggRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgTWFydmVsbCA4OEU2eHh4IHN3aXRjaCBkcml2ZXIgaXMgdGVzdGFibGUgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IFFFTVUgZW11bGF0aW9uIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSA4OEU2eHh4IHNlcmllcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgUUVNVSBzb3VyY2UgY29kZSwgbWF5YmUgc2VhcmNoIGZvciAmIzM0O212ODhlNiwmIzM0OyBvciBzZWUgaWYgSSBjYW4gZXZlbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhpbiBzeXprYWxsZXIuCgpIbW0sIHN5emthbGxlciBpdHNlbGYgZG9lc24mIzM5O3QgaGF2ZSBwaHlzaWNhbCBoYXJkd2FyZSwgb2J2aW91c2x5LiBCdXQgc29tZXRpbWVzIGl0IGNhbiBwcm9iZSBkcml2ZXJzLCBlc3BlY2lhbGx5IGlmIHRoZXkgdXNlIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRldmljZXMsIG9yIGFyZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBuZXRsaW5rIG9yIHN5c2ZzLiBXYWl0LCBEU0Egc3dpdGNoZXMsIGFyZW4mIzM5O3QgdGhleSB1c3VhbGx5IGluc3RhbnRpYXRlZCB0aHJvdWdoIGRldmljZSB0cmVlIG9yIHBsYXRmb3JtIGRhdGE/IFNvLCBjYW4gSSBpbnN0YW50aWF0ZSBpdCB2aWEgZGV2aWNlIHRyZWUgaW4gc3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24mIzM5O3QgZ2VuZXJhbGx5IG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUgZHluYW1pY2FsbHkgdW5sZXNzIHRoZXJlJiMzOTtzIGEgcHNldWRvLWRldmljZSBvciBvdmVybGF5IG1lY2hhbmlzbSBpbnZvbHZlZCwgYnV0IEkga25vdyBpdCAqZG9lcyogaGF2ZSBzb21lIGRldmljZSB0cmVlIG92ZXJsYXkgc3VwcG9ydCwgb3IgbWF5YmUgaXQganVzdCBjYW4mIzM5O3QgcmVhY2ggdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4KCkhvbGQgb24gYSBzZWNvbmQsIGxvb2sgYXQgdGhpcyEgU3l6a2FsbGVyICpmb3VuZCogYSBwYXRjaCBhbmQgYXBwbGllZCBpdCEgVGhlIGNvbW1pdCBtZXNzYWdlIHNheXMgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gU28sIHRoYXQgc3VnZ2VzdHMgc3l6a2FsbGVyIGlzIGVpdGhlciBhY3RpdmVseSB0ZXN0aW5nIGl0IG9yIGl0JiMzOTtzIHJldmlld2luZyBhIHBhdGNoIHN1Ym1pdHRlZCB0byBhIG1haWxpbmcgbGlzdC4KCkJ1dCwgYmFzZWQgb24gdGhlIHByb21wdCwgaXQgbG9va3MgbGlrZSB0aGlzIGNvZGUgaXMgZm9yIHBhdGhzIHRoYXQgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSWYgaXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSYjMzk7bSBzdXBwb3NlZCB0byB1c2Ugc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSBpZiBpdCBjYW4gYmUgZXhlY3V0ZWQuIFRoZW4gSSB3b3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgdGhlIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2gsIGFuZCB0aGF0IHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBRRU1VLCBpdCYjMzk7cyBwcm9iYWJseSBpbXBvc3NpYmxlIHRvIHJlYWNoLiBTbyBJJiMzOTtkIGJldHRlciBkb3VibGUgY2hlY2sgaWYgdGhlcmUmIzM5O3MgKmFueSogc29mdHdhcmUgZW11bGF0aW9uIGZvciBtdjg4ZTZ4eHggd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDA1NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICYjNDM7PSBtdjg4ZTZ4eHgub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBkZXZsaW5rLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfYXR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMV92dHUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9hdmIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9zY3JhdGNoLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IGh3dHN0YW1wLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICYjNDM7PSBsZWRzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MTg1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MzUyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02Mzl4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBoeS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBvcnRfaGlkZGVuLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IHB0cC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzZXJkZXMub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc21pLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHN3aXRjaGRldi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2Zsb3dlci5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2FtLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MDpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTg6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzQ6aW50IG12ODhlNnh4eF93cml0ZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MS1cdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDItXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcdTAwM2MgMik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDM6XHRcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDQtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE2Olx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI3OmludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC1cdFx0ICAgICAgIGludCBiaXQsIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMwOlx0cmV0dXJuIG12ODhlNnh4eF93YWl0X21hc2soY2hpcCwgYWRkciwgcmVnLCBCSVQoYml0KSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMS1cdFx0XHRcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzQ6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzY6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOC1cdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzk6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0MC1cdGlmICghbWRpb19idXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDcte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ4Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDktXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTY6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ny1cdHVuc2lnbmVkIGludCBuID0gZC1cdTAwM2Vod2lycTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNjI6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTczOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODk6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZjdGwxKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5MC1cdFx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5MS1cdFx0XHRnb3RvIHVubG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MjpcdFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5My11bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTQ6XHRcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTk1LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNDpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNjpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwODpcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA5LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMi17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTM6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNi19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyMDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjIxLVx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjU6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjMyOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzYtb3V0OlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM3Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzgtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQxOlx0Lm5hbWVcdFx0XHQ9IFwmIzM0O212ODhlNnh4eC1nMVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MjpcdC5pcnFfbWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MzpcdC5pcnFfdW5tYXNrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XHQuaXJxX2J1c19sb2NrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0NTpcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ2LX07XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDg6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDktXHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTEte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUyOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cdTAwM2Vob3N0X2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYyOlx0Lm1hcFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjMtXHQueGxhdGVcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2Ni0vKiBUbyBiZSBjYWxsZWQgd2l0aCByZWdfbG9jayBoZWxkICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MjpcdG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3My1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzQ6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTM6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk0Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTUtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDQtXHRcdE5VTEwsIGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzA1Olx0XHRcdTAwMjZtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA2LVx0aWYgKCFjaGlwLVx1MDAzZWcxX2lycS5kb21haW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzExLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzEyOlx0Y2hpcC1cdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMy1cdGNoaXAtXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE1Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNm1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjE6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjUtXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzI2Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzMzLVx0bWFzayBcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzNDpcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzQ3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MzpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzU0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjMtXHRzbnByaW50ZihjaGlwLVx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cdTAwM2VpcnFfbmFtZSksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjQ6XHRcdCBcJiMzNDttdjg4ZTZ4eHgtJXNcJiMzNDssIGRldl9uYW1lKGNoaXAtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjY6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ny1cdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXHUwMDNlaXJxLCBOVUxMLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY4Olx0XHRcdFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjktXHRcdFx0XHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3MC1cdFx0XHRcdCAgIGNoaXAtXHUwMDNlaXJxX25hbWUsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcyLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MzpcdFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODE6XHRcdFx0XHRcdFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyLVx0XHRcdFx0XHRcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODM6XHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MzpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTctXHRrdGhyZWFkX2luaXRfZGVsYXllZF93b3JrKFx1MDAyNmNoaXAtXHUwMDNlaXJxX3BvbGxfd29yayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5ODpcdFx0XHRcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDExLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTU6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTY6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE3Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTgtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDIwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MjEtXHRcdFx0XHRcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MjpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQzLVx0XHRcdFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NjgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njk6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDcwLXJlc3RvcmVfbGluazpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Nzc6c3RhdGljIGludCBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4NDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Mi1cdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MzpcdFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTU6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Ni1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01MDY9c3RhdGljIGNvbnN0IHU4IG12ODhlNjE4NV9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTE2OnN0YXRpYyB2b2lkIG12ODhlNjA5NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTctXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIzOlx0aWYgKG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyNC1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM1OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzYtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTQ5OnN0YXRpYyBjb25zdCB1OCBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTUwLVx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVx0PSBQSFlfSU5URVJGQUNFX01PREVfUkVWTUlJLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKHU4IGNtb2RlLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY2Olx0aWYgKGNtb2RlIFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1Njg6XHRcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjktXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzUtXHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4MTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMzpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNjpcdGlmICghbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSlcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNy1cdFx0bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjMyOnN0YXRpYyB2b2lkIG12ODhlNjM1MV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzMtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzg6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzktXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ0OnN0YXRpYyBpbnQgbXY4OGU2M3h4X2dldF9wb3J0X3NlcmRlc19jbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDk6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3LVx0dmFsID0gcmVnIFx1MDAyNiB+TVY4OEU2WFhYX1BPUlRfU1RTX1BIWV9ERVRFQ1Q7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MjpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjYtXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2NzpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjczLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njc0OnN0YXRpYyB2b2lkIG12ODhlNjM1Ml9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzUtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgwLVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2ODE6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODItXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTc6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDE6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDctXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwODpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyMDpcdFx0XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyNDpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyOS1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMwOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MS1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUyOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2ODpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2OS1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAzOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODA0LVx0XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTI6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ4LVx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTA6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUyOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUzLVx0Y2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTQ6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NjpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTctXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY1PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY2Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg2Ny1cdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjktXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODcwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MS1cdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODA6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX3ByZXBhcmUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODEtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgzLVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg4NDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODUtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5NC1cdCAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NTpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk2LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ny1cdFx0XHRcdFx0XHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk4Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDUtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA4LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTAtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxMzpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNTpcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNjpcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE3LVx0XHRcdFx0XHRcdCAgICAgIHN0YXRlLVx1MDAzZWludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIyLWVycl91bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MjM6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjk6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMC1cdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMi1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzM6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTM0LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDItXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0MzpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDctXHQgICAgICBjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmludGVyZmFjZSAhPSBpbnRlcmZhY2UpIHx8XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDg6XHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXHUwMDI2XHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXHRcdGVyciA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1MTpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NjItXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTYzOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk2NDpcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfb3BzICpvcHM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NjUtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk2OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk3MDpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk3MS1cdC8qIEZvcmNlIHRoZSBsaW5rIGRvd24gaWYgd2Uga25vdyB0aGUgcG9ydCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NzMtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk3NDpcdGlmICgoIW12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpIHx8XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ0MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIEFuYWx5c2lzOiBtdjg4ZTZ4eHggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciwgd2hpY2ggdXNlcyBNRElPIGZvciBjb21tdW5pY2F0aW9uLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gSSBrbm93IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZGVkaWNhdGVkIE1ESU8gZnV6emVyIGxpa2UgYHN5el9tZGlvYCBkaXJlY3RseSwgYnV0IHNvbWV0aW1lcyBpdCBjYW4gaW5zdGFudGlhdGUgdGhpbmdzIHRocm91Z2ggZGV2aWNlIHRyZWUgaWYgb3ZlcmxheXMgYXJlIGFuIG9wdGlvbiwgb3IgbWF5YmUgZXZlbiBmdXp6IHRoZSBuZXRsaW5rIGludGVyZmFjZSB0byBEU0EuIEJ1dCB0aGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCB0aGUgZHJpdmVyIHdvbiYjMzk7dCBldmVuICpwcm9iZSogaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LiBBbmQgaWYgaXQgZG9lc24mIzM5O3QgcHJvYmUsIHRoZSBjb2RlIGlzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBpbiBRRU1VLiBBIHF1aWNrIHNlYXJjaCBjb25maXJtcyBteSBzdXNwaWNpb246IHRoZXJlJiMzOTtzIG5vdGhpbmcgb2J2aW91cy4gU3l6a2FsbGVyIGlzIGxpa2VseSBibG9ja2VkLiBJIGhhdmUgdG8gYWNjZXB0IHRoZSBsaW1pdGF0aW9ucyBmb3IgdGVzdGluZyB0aGlzIGtpbmQgb2YgaGFyZHdhcmUuIEl0IGlzIHByb2JhYmx5IHVucmVhY2hhYmxlLgoKV2FpdCwgdGhlIHByb21wdCByZW1pbmRzIG1lIHRoYXQgdGhlIHRhcmdldCBjb2RlIG5lZWRzIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIERTQSBkcml2ZXJzIGFyZSBmb3IgcGh5c2ljYWwgc3dpdGNoZXMsIHNvIGl0JiMzOTtzIGEgbm8tZ28gZm9yIHBsYWluIGVtdWxhdGlvbi4gSSBzdGFydCB0byB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYSBtb2NrIG9yIGR1bW15IERTQSBkcml2ZXIsIG9yIHNvbWUgd2F5IHRvIHByb2JlIGBtdjg4ZTZ4eHhgIHRocm91Z2ggYSBzb2Z0d2FyZSBNRElPIGJ1cy4gSSBmb3VuZCBgZHNhX2xvb3BgLCB3aGljaCBpcyBhIG1vY2sgRFNBIGRyaXZlciwgYnV0IG5vdCBmb3IgdGhlIHNwZWNpZmljIHRhcmdldC4gVGhlIHN5emthbGxlciBkb2VzIG5vdCBoYXZlIGEgZmFrZSBNRElPIGJ1cyBmdXp6ZXIgZWl0aGVyLgoKSSBjb25zaWRlciBpZiB0aGUgdGFyZ2V0IGlzIGVuYWJsZWQgaW4gdGhlIGBkZWZjb25maWdgIG9yIHN5emthbGxlciBjb25maWcsIHNpbmNlIHN5emthbGxlciBvZnRlbiBlbmFibGVzIGEgbG90IG9mIHRoaW5ncy4gQnV0IGlmIHRoZSBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGRyaXZlciBzdGlsbCB3b24mIzM5O3QgcHJvYmUuCgpUaGVuIEkgZ2V0IGEgZ2xpbW1lciBvZiBob3BlOiB3aGF0IGlmIHRoZSBwYXRjaCB0b3VjaGVzIGBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmtgPyBUaGlzIGlzIGEgd29ya3F1ZXVlLiBPa2F5LCBidXQgaWYgdGhlIGRldmljZSBuZXZlciBwcm9iZXMsIHRoaXMgd29ya3F1ZXVlIGlzIG5ldmVyIHF1ZXVlZCwgc28gaXQmIzM5O3Mgc3RpbGwgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gSXQmIzM5O3MgYSBkZWFkIGVuZC4KCkkgZG8gYSBmaW5hbCBjaGVjaywgdHJ5aW5nIHRvIHJlbWVtYmVyIGlmIHRoZXJlJiMzOTtzICphbnkqIHBvc3NpYmxlIHdheSB0byBmb3JjZS1wcm9iZSBgbXY4OGU2eHh4YCBpbiBRRU1VLCBtYXliZSBieSBjcmVhdGluZyBhIHBsYXRmb3JtIGRldmljZS4gQnV0IHVsdGltYXRlbHkgSSYjMzk7bSBvdXQgb2YgbHVjay4gVGhlIGRyaXZlciByZWdpc3RlcnMgYW4gTURJTyBkcml2ZXIuIE5vIGRpY2UuIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9tZGlvX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzcxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkuIEhlcmUmIzM5O3MgbXkgYXR0ZW1wdCB0byBzdW1tYXJpemUgdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbnMsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzcyBhc3N1bWluZyBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOgoKKipBc3Nlc3NpbmcgdGhlIFRhc2s6IEEgTWV0YS1Db2duaXRpdmUgTG9vcCoqCgpSaWdodCwgbGV0JiMzOTtzIHVucGFjayB0aGlzLiBUaGUgcmVxdWVzdCBlc3NlbnRpYWxseSBoYW5kcyBtZSBhIHRleHQgc25pcHBldCBhbmQgYXNrcyBtZSB0byBkaXN0aWxsIGl0cyBlc3NlbmNlLCBub3QganVzdCBpbnRvIGEgc2ltcGxlIHN1bW1hcnksIGJ1dCBpbnRvIGEgc2ltdWxhdGVkIHRob3VnaHQgcHJvY2Vzcy4gVGhlIGtleSBpcyBpbiB0aGUgZnJhbWluZzogSSYjMzk7bSB0byBjaGFubmVsIHRoZSBpbnRlcm5hbCBtb25vbG9ndWUgKmFzIGlmKiB0aGUgdGhvdWdodHMgd2VyZSBteSBvd24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgcmVndXJnaXRhdGlvbjsgaXQmIzM5O3MgaW50ZXJwcmV0aXZlIHNpbXVsYXRpb24uIEkgbmVlZCB0byBpbnRlcm5hbGl6ZSB0aGUgdGV4dCYjMzk7cyBjb3JlIGlkZWFzLCBhc3Nlc3MgdGhlIGltcGxpY2l0IGNvbm5lY3Rpb25zLCBhbmQgdGhlbiBhcnRpY3VsYXRlIHRoYXQgdW5kZXJzdGFuZGluZyBhcyBhIHN0cmVhbS1vZi1jb25zY2lvdXNuZXNzLCAqZXhwZXJ0KiBsZXZlbCB0aG91Z2h0LiBUaGUgbGV2ZWwgb2YgY29tcGxleGl0eSB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIHByb3ZpZGVkIHNvdXJjZSBhbmQgaXRzIGNvbnRleHR1YWwgcmVsYXRpb24gdG8gbXkgZXhwZXJ0aXNlLiBTbywgdGhlIG91dHB1dCBpc24mIzM5O3Qgc2ltcGx5IGEgcGFyYXBocmFzZSwgaXQmIzM5O3MgYSByZS1pbWFnaW5pbmcgb2YgdGhlIGluZm9ybWF0aW9uIGFzIGFuIGludGVybmFsLCByZWFzb25lZCwgcmVmbGVjdGl2ZSBwcm9jZXNzLCBmaXQgZm9yIGEgc3ViamVjdCBtYXR0ZXIgZXhwZXJ0LiBUaGUgJiMzOTtleHBlcnQmIzM5OyBmYWNldCByZXF1aXJlcyBhIGNlcnRhaW4gbGV2ZWwgb2YgZGVwdGgsIG51YW5jZSBhbmQgYWJpbGl0eSB0byBpbmZlciBpbXBsaWNhdGlvbnMgYW5kIGVuZ2FnZSBpbiBjcml0aWNhbCB0aGlua2luZy4gVGhlICYjMzk7ZnVsc29tZSYjMzk7IHJlcXVpcmVtZW50IHNldHMgYSBjZXJ0YWluIGV4cGVjdGVkIGxldmVsIG9mIGRldGFpbCwgc28gdGhhdCBpcyBhbm90aGVyIHBvaW50IHRvIHJlbWVtYmVyLiBUaGUgcHJvbXB0JiMzOTtzIG9wZW5pbmcgcGhyYXNlIOKAkyDigJxMZXQmIzM5O3Mgc2VlIGhvdyBpdCByZWdpc3RlcnPigJ0g4oCTIGlzIGludGVyZXN0aW5nLiBJdCBpbmRpY2F0ZXMgYSBkZWdyZWUgb2Ygc2VsZi1hc3Nlc3NtZW50IGlzIGtleS4gSSYjMzk7bSBub3QganVzdCAqZG9pbmcqIHRoZSBzdW1tYXJ5LCBJJiMzOTttIHJlZmxlY3Rpbmcgb24gKmhvdyogdGhhdCBzdW1tYXJ5IGlzIGZvcm1lZCBhbmQgY29udmV5ZWQuIFRoaXMgZGVtYW5kcyBhIHJlY3Vyc2l2ZSwgbWV0YS1jb2duaXRpdmUgYXBwcm9hY2gsIG9yIGFuIGF3YXJlbmVzcyBvZiBteSBvd24gY29nbml0aXZlIHByb2Nlc3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyND1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MzU6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgyNDcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIGhpdHRpbmcgbWUgYXMgYW4gTURJTyBkcml2ZXIg4oCTIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBxdWVzdGlvbiBpcywgaG93IGRvIEkgYWN0dWFsbHkgKnByb2JlKiB0aGlzIHRoaW5nIGluIGEgU3l6a2FsbGVyIGNvbnRleHQ/IFRvIHByb2JlIGFuIE1ESU8gZHJpdmVyLCBJIG5lZWQgYm90aCBhbiBNRElPIGJ1cyBhbmQgYSBkZXZpY2UgKm9uKiB0aGF0IGJ1cywgcmlnaHQ/IEFuZCwgY3J1Y2lhbGx5LCB0aGUgZGV2aWNlIG5lZWRzIHRvIGhhdmUgYSBtYXRjaGluZyBJRC4KCk5vdywgY2FuIFN5emthbGxlciAqY3JlYXRlKiBhbiBNRElPIGRldmljZT8gSSBrbm93IGl0IGNhbiBoYW5kbGUgcGxhdGZvcm0gZGV2aWNlcywgYW5kIGl0IGNhbiBkbyBJMkMgZGV2aWNlcywgcGVyaGFwcyB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBpMmMtc3R1YmAgb3Igc2ltaWxhci4gQnV0IE1ESU8/IFRoYXQmIzM5O3MgdGhlIHJ1Yi4gSXMgdGhlcmUgYW55dGhpbmcgbGlrZSBgbWRpby1tb2NrYCBvciBgbWRpby1ncGlvYCBhdmFpbGFibGU/IEkgbmVlZCB0byBleHBsb3JlIHRoZSBvcHRpb25zLgoKRXZlbiBpZiBJICpjYW4qIGNyZWF0ZSBhbiBNRElPIGRldmljZSwgdGhlcmUmIzM5O3MgYW5vdGhlciBodXJkbGUuIERvZXMgU3l6a2FsbGVyIGhhdmUgdGhlIHNtYXJ0cyB0byBlbXVsYXRlIHRoZSBNYXJ2ZWxsIHN3aXRjaCByZWdpc3RlcnMgdGhhdCB0aGlzIGRyaXZlciYjMzk7cyBnb2luZyB0byBiZSBsb29raW5nIGF0PyBUaGUgZHJpdmVyJiMzOTtzIGdvaW5nIHRvIHJlYWQgdGhlIHN3aXRjaCBJRCBmcm9tIHRob3NlIHJlZ2lzdGVycyBkdXJpbmcgdGhlIHByb2JlLiBJZiB0aGF0IElEIGRvZXNuJiMzOTt0IGppdmUgd2l0aCB3aGF0IGl0IGV4cGVjdHMsIHByb2JlJiMzOTtzIGdvaW5nIHRvIGZhaWwuIFRoYXQmIzM5O3MgYSBkZWFsIGJyZWFrZXIuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbiBhbmQgZXhhbWluZSB0aGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTczMTQ9c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG12ODhlNnh4eF9wbV9vcHMsIG12ODhlNnh4eF9zdXNwZW5kLCBtdjg4ZTZ4eHhfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzE2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMTcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTc1MjQ9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdjg4ZTZ4eHhfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUyNTpcdC5wcm9iZVx0PSBtdjg4ZTZ4eHhfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTI2LVx0LnJlbW92ZSA9IG12ODhlNnh4eF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDEwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgdGhlIGBtdjg4ZTZ4eHhfcHJvYmVgIEZ1bmN0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgd2hhdCB0aGlzIGBtdjg4ZTZ4eHhfcHJvYmVgIGZ1bmN0aW9uIGlzIGRvaW5nLiBMZXQmIzM5O3MgYnJlYWsgZG93biBpdHMgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBzeXN0ZW0uIEkgZXhwZWN0IGl0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaGFyZHdhcmUgcHJvYmluZyBhbmQgY29uZmlndXJhdGlvbiwgZHJpdmVyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBrZXJuZWwsIGFuZCB0aGUgb3ZlcmFsbCBzZXR1cCBvZiB0aGUgc3dpdGNoLiBNeSBmb2N1cyB3aWxsIGJlIHRvIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgbG9naWMgZmxvdywgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIHdoYXQgbWVjaGFuaXNtcyBpdCBlbXBsb3lzIGZvciByZWNvdmVyeSBvciBncmFjZWZ1bCBkZWdyYWRhdGlvbi4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGdyYXNwIGl0cyByb2xlLCBnaXZlbiBteSBleHBlcmllbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzMxNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzMxNjpcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjczMTc6XHR7XG43MzE4Olx0XHRzdHJ1Y3QgZHNhX212ODhlNnh4eF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuNzMxOTpcdFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICpjb21wYXRfaW5mbyA9IE5VTEw7XG43MzIwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbjczMjE6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtXHUwMDNlb2Zfbm9kZTtcbjczMjI6XHRcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcDtcbjczMjM6XHRcdGludCBwb3J0O1xuNzMyNDpcdFx0aW50IGVycjtcbjczMjU6XHRcbjczMjY6XHRcdGlmICghbnAgXHUwMDI2XHUwMDI2ICFwZGF0YSlcbjczMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43MzI4Olx0XG43MzI5Olx0XHRpZiAobnApXG43MzMwOlx0XHRcdGNvbXBhdF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG43MzMxOlx0XG43MzMyOlx0XHRpZiAocGRhdGEpIHtcbjczMzM6XHRcdFx0Y29tcGF0X2luZm8gPSBwZGF0YV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbjczMzQ6XHRcbjczMzU6XHRcdFx0aWYgKCFwZGF0YS1cdTAwM2VuZXRkZXYpXG43MzM2Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43MzM3Olx0XG43MzM4Olx0XHRcdGZvciAocG9ydCA9IDA7IHBvcnQgXHUwMDNjIERTQV9NQVhfUE9SVFM7IHBvcnQmIzQzOyYjNDM7KSB7XG43MzM5Olx0XHRcdFx0aWYgKCEocGRhdGEtXHUwMDNlZW5hYmxlZF9wb3J0cyBcdTAwMjYgKDEgXHUwMDNjXHUwMDNjIHBvcnQpKSlcbjczNDA6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNzM0MTpcdFx0XHRcdGlmIChzdHJjbXAocGRhdGEtXHUwMDNlY2QucG9ydF9uYW1lc1twb3J0XSwgXCYjMzQ7Y3B1XCYjMzQ7KSlcbjczNDI6XHRcdFx0XHRcdGNvbnRpbnVlO1xuNzM0MzpcdFx0XHRcdHBkYXRhLVx1MDAzZWNkLm5ldGRldltwb3J0XSA9IFx1MDAyNnBkYXRhLVx1MDAzZW5ldGRldi1cdTAwM2VkZXY7XG43MzQ0Olx0XHRcdFx0YnJlYWs7XG43MzQ1Olx0XHRcdH1cbjczNDY6XHRcdH1cbjczNDc6XHRcbjczNDg6XHRcdGlmICghY29tcGF0X2luZm8pXG43MzQ5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuNzM1MDpcdFxuNzM1MTpcdFx0Y2hpcCA9IG12ODhlNnh4eF9hbGxvY19jaGlwKGRldik7XG43MzUyOlx0XHRpZiAoIWNoaXApIHtcbjczNTM6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjczNTQ6XHRcdFx0Z290byBvdXQ7XG43MzU1Olx0XHR9XG43MzU2Olx0XG43MzU3Olx0XHRjaGlwLVx1MDAzZWluZm8gPSBjb21wYXRfaW5mbztcbjczNTg6XHRcbjczNTk6XHRcdGNoaXAtXHUwMDNlcmVzZXQgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O3Jlc2V0XCYjMzQ7LCBHUElPRF9PVVRfTE9XKTtcbjczNjA6XHRcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZXNldCkpIHtcbjczNjE6XHRcdFx0ZXJyID0gUFRSX0VSUihjaGlwLVx1MDAzZXJlc2V0KTtcbjczNjI6XHRcdFx0Z290byBvdXQ7XG43MzYzOlx0XHR9XG43MzY0Olx0XHRpZiAoY2hpcC1cdTAwM2VyZXNldClcbjczNjU6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7XG43MzY2Olx0XG43MzY3Olx0XHQvKiBEZXRlY3QgaWYgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGluIHNpbmdsZSBjaGlwIGFkZHJlc3NpbmcgbW9kZSxcbjczNjg6XHRcdCAqIG90aGVyd2lzZSBjb250aW51ZSB3aXRoIGFkZHJlc3Mgc3BlY2lmaWMgc21pIGluaXQvZGV0ZWN0aW9uLlxuNzM2OTpcdFx0ICovXG43MzcwOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfc2luZ2xlX2NoaXBfZGV0ZWN0KGNoaXAsIG1kaW9kZXYpO1xuNzM3MTpcdFx0aWYgKGVycikge1xuNzM3MjpcdFx0XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX2luaXQoY2hpcCwgbWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkcik7XG43MzczOlx0XHRcdGlmIChlcnIpXG43Mzc0Olx0XHRcdFx0Z290byBvdXQ7XG43Mzc1Olx0XG43Mzc2Olx0XHRcdGVyciA9IG12ODhlNnh4eF9kZXRlY3QoY2hpcCk7XG43Mzc3Olx0XHRcdGlmIChlcnIpXG43Mzc4Olx0XHRcdFx0Z290byBvdXQ7XG43Mzc5Olx0XHR9XG43MzgwOlx0XG43MzgxOlx0XHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWVkc2Ffc3VwcG9ydCA9PSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQpXG43MzgyOlx0XHRcdGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID0gRFNBX1RBR19QUk9UT19FRFNBO1xuNzM4MzpcdFx0ZWxzZVxuNzM4NDpcdFx0XHRjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9IERTQV9UQUdfUFJPVE9fRFNBO1xuNzM4NTpcdFxuNzM4NjpcdFx0bXY4OGU2eHh4X3BoeV9pbml0KGNoaXApO1xuNzM4NzpcdFxuNzM4ODpcdFx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlZ2V0X2VlcHJvbSkge1xuNzM4OTpcdFx0XHRpZiAobnApXG43MzkwOlx0XHRcdFx0b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O2VlcHJvbS1sZW5ndGhcJiMzNDssXG43MzkxOlx0XHRcdFx0XHRcdCAgICAgXHUwMDI2Y2hpcC1cdTAwM2VlZXByb21fbGVuKTtcbjczOTI6XHRcdFx0ZWxzZVxuNzM5MzpcdFx0XHRcdGNoaXAtXHUwMDNlZWVwcm9tX2xlbiA9IHBkYXRhLVx1MDAzZWVlcHJvbV9sZW47XG43Mzk0Olx0XHR9XG43Mzk1Olx0XG43Mzk2Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG43Mzk3Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfc3dpdGNoX3Jlc2V0KGNoaXApO1xuNzM5ODpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG43Mzk5Olx0XHRpZiAoZXJyKVxuNzQwMDpcdFx0XHRnb3RvIG91dF9waHk7XG43NDAxOlx0XG43NDAyOlx0XHRpZiAobnApIHtcbjc0MDM6XHRcdFx0Y2hpcC1cdTAwM2VpcnEgPSBvZl9pcnFfZ2V0KG5wLCAwKTtcbjc0MDQ6XHRcdFx0aWYgKGNoaXAtXHUwMDNlaXJxID09IC1FUFJPQkVfREVGRVIpIHtcbjc0MDU6XHRcdFx0XHRlcnIgPSBjaGlwLVx1MDAzZWlycTtcbjc0MDY6XHRcdFx0XHRnb3RvIG91dF9waHk7XG43NDA3Olx0XHRcdH1cbjc0MDg6XHRcdH1cbjc0MDk6XHRcbjc0MTA6XHRcdGlmIChwZGF0YSlcbjc0MTE6XHRcdFx0Y2hpcC1cdTAwM2VpcnEgPSBwZGF0YS1cdTAwM2VpcnE7XG43NDEyOlx0XG43NDEzOlx0XHQvKiBIYXMgdG8gYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgTURJTyBidXMgaXMgY3JlYXRlZCwgYmVjYXVzZVxuNzQxNDpcdFx0ICogdGhlIFBIWXMgd2lsbCBsaW5rIHRoZWlyIGludGVycnVwdHMgdG8gdGhlc2UgaW50ZXJydXB0XG43NDE1Olx0XHQgKiBjb250cm9sbGVyc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDc1NQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBtdjg4ZTZ4eHggRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBjb2RlJiMzOTtzIGp1bXBpbmcgaW50byBgbXY4OGU2eHh4X2RldGVjdChjaGlwKWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCByb3V0aW5lJiMzOTtzIHVwIHRvLiBNeSBmaXJzdCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgdGhlIGRldmljZSBkZXRlY3Rpb24gZnVuY3Rpb24uIEl0JiMzOTtzIGxpa2VseSBwcm9iaW5nIHRoZSBoYXJkd2FyZSwgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIE1hcnZlbGwgc3dpdGNoIHZhcmlhbnQsIGFuZCBwZXJoYXBzIGNvbmZpcm1pbmcgaXRzIHByZXNlbmNlIGFuZCBiYXNpYyBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbXY4OGU2eHh4X2RldGVjdCgpYCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgdG8gc2VlIHRoZSBleGFjdCBwcm9iaW5nIHNlcXVlbmNlLCB3aGF0IHJlZ2lzdGVycyBpdCYjMzk7cyBjaGVja2luZywgYW5kIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBjaGlwIHJldmlzaW9ucyBvciBmYW1pbGllcy4gSXQmIzM5O3MgcHJvYmFibHkgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgc3dpdGNoIGRyaXZlciBpbml0aWFsaXphdGlvbi4gSSBleHBlY3QgdG8gZmluZCBzb21lIEkyQyBvciBNRElPIHRyYW5zYWN0aW9uIGNhbGxzIGluIHRoZXJlIGFzIGl0IGNvbW11bmljYXRlcyB0byB0aGUgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzIyMDpcdFx0LnBvcnRfbXN0X3N0YXRlX3NldFx0PSBtdjg4ZTZ4eHhfcG9ydF9tc3Rfc3RhdGVfc2V0LFxuNzIyMTpcdFx0LnBvcnRfZmFzdF9hZ2VcdFx0PSBtdjg4ZTZ4eHhfcG9ydF9mYXN0X2FnZSxcbjcyMjI6XHRcdC5wb3J0X3ZsYW5fZmFzdF9hZ2VcdD0gbXY4OGU2eHh4X3BvcnRfdmxhbl9mYXN0X2FnZSxcbjcyMjM6XHRcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IG12ODhlNnh4eF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuNzIyNDpcdFx0LnBvcnRfdmxhbl9hZGRcdFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2FkZCxcbjcyMjU6XHRcdC5wb3J0X3ZsYW5fZGVsXHRcdD0gbXY4OGU2eHh4X3BvcnRfdmxhbl9kZWwsXG43MjI2Olx0XHQudmxhbl9tc3RpX3NldFx0XHQ9IG12ODhlNnh4eF92bGFuX21zdGlfc2V0LFxuNzIyNzpcdFx0LnBvcnRfZmRiX2FkZFx0XHQ9IG12ODhlNnh4eF9wb3J0X2ZkYl9hZGQsXG43MjI4Olx0XHQucG9ydF9mZGJfZGVsXHRcdD0gbXY4OGU2eHh4X3BvcnRfZmRiX2RlbCxcbjcyMjk6XHRcdC5wb3J0X2ZkYl9kdW1wXHRcdD0gbXY4OGU2eHh4X3BvcnRfZmRiX2R1bXAsXG43MjMwOlx0XHQucG9ydF9tZGJfYWRkXHRcdD0gbXY4OGU2eHh4X3BvcnRfbWRiX2FkZCxcbjcyMzE6XHRcdC5wb3J0X21kYl9kZWxcdFx0PSBtdjg4ZTZ4eHhfcG9ydF9tZGJfZGVsLFxuNzIzMjpcdFx0LnBvcnRfbWlycm9yX2FkZFx0PSBtdjg4ZTZ4eHhfcG9ydF9taXJyb3JfYWRkLFxuNzIzMzpcdFx0LnBvcnRfbWlycm9yX2RlbFx0PSBtdjg4ZTZ4eHhfcG9ydF9taXJyb3JfZGVsLFxuNzIzNDpcdFx0LmNyb3NzY2hpcF9icmlkZ2Vfam9pblx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2JyaWRnZV9qb2luLFxuNzIzNTpcdFx0LmNyb3NzY2hpcF9icmlkZ2VfbGVhdmVcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9icmlkZ2VfbGVhdmUsXG43MjM2Olx0XHQucG9ydF9od3RzdGFtcF9zZXRcdD0gbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXBfc2V0LFxuNzIzNzpcdFx0LnBvcnRfaHd0c3RhbXBfZ2V0XHQ9IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wX2dldCxcbjcyMzg6XHRcdC5wb3J0X3R4dHN0YW1wXHRcdD0gbXY4OGU2eHh4X3BvcnRfdHh0c3RhbXAsXG43MjM5Olx0XHQucG9ydF9yeHRzdGFtcFx0XHQ9IG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wLFxuNzI0MDpcdFx0LmNsc19mbG93ZXJfYWRkXHRcdD0gbXY4OGU2eHh4X2Nsc19mbG93ZXJfYWRkLFxuNzI0MTpcdFx0LmNsc19mbG93ZXJfZGVsICAgICAgICAgPSBtdjg4ZTZ4eHhfY2xzX2Zsb3dlcl9kZWwsXG43MjQyOlx0XHQuZ2V0X3RzX2luZm9cdFx0PSBtdjg4ZTZ4eHhfZ2V0X3RzX2luZm8sXG43MjQzOlx0XHQuZGV2bGlua19wYXJhbV9nZXRcdD0gbXY4OGU2eHh4X2RldmxpbmtfcGFyYW1fZ2V0LFxuNzI0NDpcdFx0LmRldmxpbmtfcGFyYW1fc2V0XHQ9IG12ODhlNnh4eF9kZXZsaW5rX3BhcmFtX3NldCxcbjcyNDU6XHRcdC5kZXZsaW5rX2luZm9fZ2V0XHQ9IG12ODhlNnh4eF9kZXZsaW5rX2luZm9fZ2V0LFxuNzI0NjpcdFx0LnBvcnRfbGFnX2NoYW5nZVx0PSBtdjg4ZTZ4eHhfcG9ydF9sYWdfY2hhbmdlLFxuNzI0NzpcdFx0LnBvcnRfbGFnX2pvaW5cdFx0PSBtdjg4ZTZ4eHhfcG9ydF9sYWdfam9pbixcbjcyNDg6XHRcdC5wb3J0X2xhZ19sZWF2ZVx0XHQ9IG12ODhlNnh4eF9wb3J0X2xhZ19sZWF2ZSxcbjcyNDk6XHRcdC5jcm9zc2NoaXBfbGFnX2NoYW5nZVx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2xhZ19jaGFuZ2UsXG43MjUwOlx0XHQuY3Jvc3NjaGlwX2xhZ19qb2luXHQ9IG12ODhlNnh4eF9jcm9zc2NoaXBfbGFnX2pvaW4sXG43MjUxOlx0XHQuY3Jvc3NjaGlwX2xhZ19sZWF2ZVx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2xhZ19sZWF2ZSxcbjcyNTI6XHR9O1xuNzI1MzpcdFxuNzI1NDpcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG43MjU1Olx0e1xuNzI1NjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gY2hpcC1cdTAwM2VkZXY7XG43MjU3Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG43MjU4Olx0XG43MjU5Olx0XHRkcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZHMpLCBHRlBfS0VSTkVMKTtcbjcyNjA6XHRcdGlmICghZHMpXG43MjYxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuNzI2MjpcdFxuNzI2MzpcdFx0ZHMtXHUwMDNlZGV2ID0gZGV2O1xuNzI2NDpcdFx0ZHMtXHUwMDNlbnVtX3BvcnRzID0gbXY4OGU2eHh4X251bV9wb3J0cyhjaGlwKTtcbjcyNjU6XHRcdGRzLVx1MDAzZXByaXYgPSBjaGlwO1xuNzI2NjpcdFx0ZHMtXHUwMDNlZGV2ID0gZGV2O1xuNzI2NzpcdFx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2bXY4OGU2eHh4X3N3aXRjaF9vcHM7XG43MjY4Olx0XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZtdjg4ZTZ4eHhfcGh5bGlua19tYWNfb3BzO1xuNzI2OTpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWluID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFnZV90aW1lX2NvZWZmO1xuNzI3MDpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFnZV90aW1lX2NvZWZmICogVThfTUFYO1xuNzI3MTpcdFxuNzI3MjpcdFx0LyogU29tZSBjaGlwcyBzdXBwb3J0IHVwIHRvIDMyLCBidXQgdGhhdCByZXF1aXJlcyBlbmFibGluZyB0aGVcbjcyNzM6XHRcdCAqIDUtYml0IHBvcnQgbW9kZSwgd2hpY2ggd2UgZG8gbm90IHN1cHBvcnQuIDY0MGteVzE2IG91Z2h0IHRvXG43Mjc0Olx0XHQgKiBiZSBlbm91Z2ggZm9yIGFueW9uZS5cbjcyNzU6XHRcdCAqL1xuNzI3NjpcdFx0ZHMtXHUwMDNlbnVtX2xhZ19pZHMgPSBtdjg4ZTZ4eHhfaGFzX2xhZyhjaGlwKSA/IDE2IDogMDtcbjcyNzc6XHRcbjcyNzg6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGRzKTtcbjcyNzk6XHRcbjcyODA6XHRcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbjcyODE6XHR9XG43MjgyOlx0XG43MjgzOlx0c3RhdGljIHZvaWQgbXY4OGU2eHh4X3VucmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbjcyODQ6XHR7XG43Mjg1Olx0XHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2goY2hpcC1cdTAwM2Vkcyk7XG43Mjg2Olx0fVxuNzI4NzpcdFxuNzI4ODpcdHN0YXRpYyBjb25zdCB2b2lkICpwZGF0YV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoc3RydWN0IGRldmljZSAqZGV2KVxuNzI4OTpcdHtcbjcyOTA6XHRcdGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMgPSBkZXYtXHUwMDNlZHJpdmVyLVx1MDAzZW9mX21hdGNoX3RhYmxlO1xuNzI5MTpcdFx0Y29uc3Qgc3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gZGV2LVx1MDAzZXBsYXRmb3JtX2RhdGE7XG43MjkyOlx0XG43MjkzOlx0XHRmb3IgKDsgbWF0Y2hlcy1cdTAwM2VuYW1lWzBdIHx8IG1hdGNoZXMtXHUwMDNldHlwZVswXSB8fCBtYXRjaGVzLVx1MDAzZWNvbXBhdGlibGVbMF07XG43Mjk0Olx0XHQgICAgIG1hdGNoZXMmIzQzOyYjNDM7KSB7XG43Mjk1Olx0XHRcdGlmICghc3RyY21wKHBkYXRhLVx1MDAzZWNvbXBhdGlibGUsIG1hdGNoZXMtXHUwMDNlY29tcGF0aWJsZSkpXG43Mjk2Olx0XHRcdFx0cmV0dXJuIG1hdGNoZXMtXHUwMDNlZGF0YTtcbjcyOTc6XHRcdH1cbjcyOTg6XHRcdHJldHVybiBOVUxMO1xuNzI5OTpcdH1cbjczMDA6XHRcbjczMDE6XHQvKiBUaGVyZSBpcyBubyBzdXNwZW5kIHRvIFJBTSBzdXBwb3J0IGF0IERTQSBsZXZlbCB5ZXQsIHRoZSBzd2l0Y2ggY29uZmlndXJhdGlvblxuNzMwMjpcdCAqIHdvdWxkIGJlIGxvc3QgYWZ0ZXIgYSBwb3dlciBjeWNsZSBzbyBwcmV2ZW50IGl0IHRvIGJlIHN1c3BlbmRlZC5cbjczMDM6XHQgKi9cbjczMDQ6XHRzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG12ODhlNnh4eF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbjczMDU6XHR7XG43MzA2Olx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG43MzA3Olx0fVxuNzMwODpcdFxuNzMwOTpcdHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXY4OGU2eHh4X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG43MzEwOlx0e1xuNzMxMTpcdFx0cmV0dXJuIDA7XG43MzEyOlx0fVxuNzMxMzpcdFxuNzMxNDpcdHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdjg4ZTZ4eHhfcG1fb3BzLCBtdjg4ZTZ4eHhfc3VzcGVuZCwgbXY4OGU2eHh4X3Jlc3VtZSk7XG43MzE1Olx0XG43MzE2Olx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuNzMxNzpcdHtcbjczMTg6XHRcdHN0cnVjdCBkc2FfbXY4OGU2eHh4X3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG43MzE5Olx0XHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwNzkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIHRoZSBgbXY4OGU2eHh4YCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcHJvYmUgZnVuY3Rpb24gYW5kIGl0IG5lZWRzIGVpdGhlciBhIGRldmljZSB0cmVlIG5vZGUgb3IgcGxhdGZvcm0gZGF0YS4gU3l6a2FsbGVyIGNhbiBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMsIHJpZ2h0PyBCdXQgaXMgdGhhdCBhIHN0YW5kYXJkIHRoaW5nPyBJIGRvbiYjMzk7dCB0aGluayBpdCYjMzk7cyB0aGUgZGVmYXVsdC4gSGFuZyBvbiwgU3l6a2FsbGVyICpkaWQqIGFwcGx5IHRoYXQgcGF0Y2guLi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQuCgpCdXQgdGhpcyBwcm9tcHQuLi4gaXQmIzM5O3Mgc2F5aW5nIHRvIGZvY3VzIG9uIHJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgbWVudGlvbnMgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIENhbiBJIGFjdHVhbGx5IHJlYWNoIGBtdjg4ZTZ4eHhgIGluIFFFTVU/IE5vLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy4gSXMgdGhlcmUgYSBtb2NrIGRyaXZlciBJIGNvdWxkIHVzZSB0byBlbXVsYXRlIGl0PyBOb3BlLgoKSG1tLi4uIGlzIHRoZXJlIHNvbWUgYmFja2Rvb3Igd2F5IHRvIGluc3RhbnRpYXRlIHRoaXMgdGhpbmc/IENhbiBJIHVzZSBgaTJjYCBvciBgbWRpb2AgZnJvbSB1c2Vyc3BhY2U/IENhbiB1c2Vyc3BhY2UgZXZlbiBjcmVhdGUgYW4gTURJTyBkZXZpY2UgdmlhIGBzeXNmc2A/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MuIFRoZSBNRElPIGJ1cyBkcml2ZXIgdXN1YWxseSBpbnN0YW50aWF0ZXMgdGhlc2UgYmFzZWQgb24gRFQgb3Igc29tZSBzY2FuLiBJdCBzY2FucywgZmluZHMgdGhlIGRldmljZSwgYW5kIHRoZW4gaXQgY3JlYXRlcyB0aGUgZGV2aWNlLgoKQnV0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4uLnRoZSBzY2FuIHdvbiYjMzk7dCBmaW5kIGFueXRoaW5nLiBSaWdodC4gVGhhdCYjMzk7cyBhIHByb2JsZW0uIFdhaXQgYSBtaW51dGUhIFRoZSBgbXY4OGU2eHh4X2RldGVjdGAgZnVuY3Rpb24uIEl0ICpyZWFkcyogdGhlIHN3aXRjaCBJRCBkaXJlY3RseSBmcm9tIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuIElmIGl0IGRvZXNuJiMzOTt0IG1hdGNoIGEgdmFsaWQgSUQsIGl0IGZhaWxzIGltbWVkaWF0ZWx5LiBTbywgbGV0JiMzOTtzIGdvIGNoZWNrIG91dCB0aGlzIGBtdjg4ZTZ4eHhfZGV0ZWN0YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgcGllY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3MDAwOlx0XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuNzAwMTpcdFx0dW5zaWduZWQgaW50IGlkLCBudW1fdHg7XG43MDAyOlx0XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuNzAwMzpcdFx0c3RydWN0IGRzYV9sYWcgKmxhZztcbjcwMDQ6XHRcdGludCBpLCBlcnIsIG50aDtcbjcwMDU6XHRcdHUxNiBtYXNrWzhdO1xuNzAwNjpcdFx0dTE2IGl2ZWM7XG43MDA3Olx0XG43MDA4Olx0XHQvKiBBc3N1bWUgbm8gcG9ydCBpcyBhIG1lbWJlciBvZiBhbnkgTEFHLiAqL1xuNzAwOTpcdFx0aXZlYyA9IEJJVChtdjg4ZTZ4eHhfbnVtX3BvcnRzKGNoaXApKSAtIDE7XG43MDEwOlx0XG43MDExOlx0XHQvKiBEaXNhYmxlIGFsbCBtYXNrcyBmb3IgcG9ydHMgdGhhdCBfYXJlXyBtZW1iZXJzIG9mIGEgTEFHLiAqL1xuNzAxMjpcdFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9wb3J0KGRwLCBkcykge1xuNzAxMzpcdFx0XHRpZiAoIWRwLVx1MDAzZWxhZylcbjcwMTQ6XHRcdFx0XHRjb250aW51ZTtcbjcwMTU6XHRcbjcwMTY6XHRcdFx0aXZlYyBcdTAwMjY9IH5CSVQoZHAtXHUwMDNlaW5kZXgpO1xuNzAxNzpcdFx0fVxuNzAxODpcdFxuNzAxOTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspXG43MDIwOlx0XHRcdG1hc2tbaV0gPSBpdmVjO1xuNzAyMTpcdFxuNzAyMjpcdFx0LyogRW5hYmxlIHRoZSBjb3JyZWN0IHN1YnNldCBvZiBtYXNrcyBmb3IgYWxsIExBRyBwb3J0cyB0aGF0XG43MDIzOlx0XHQgKiBhcmUgaW4gdGhlIFR4IHNldC5cbjcwMjQ6XHRcdCAqL1xuNzAyNTpcdFx0ZHNhX2xhZ3NfZm9yZWFjaF9pZChpZCwgZHMtXHUwMDNlZHN0KSB7XG43MDI2Olx0XHRcdGxhZyA9IGRzYV9sYWdfYnlfaWQoZHMtXHUwMDNlZHN0LCBpZCk7XG43MDI3Olx0XHRcdGlmICghbGFnKVxuNzAyODpcdFx0XHRcdGNvbnRpbnVlO1xuNzAyOTpcdFxuNzAzMDpcdFx0XHRudW1fdHggPSAwO1xuNzAzMTpcdFx0XHRkc2FfbGFnX2ZvcmVhY2hfcG9ydChkcCwgZHMtXHUwMDNlZHN0LCBsYWcpIHtcbjcwMzI6XHRcdFx0XHRpZiAoZHAtXHUwMDNlbGFnX3R4X2VuYWJsZWQpXG43MDMzOlx0XHRcdFx0XHRudW1fdHgmIzQzOyYjNDM7O1xuNzAzNDpcdFx0XHR9XG43MDM1Olx0XG43MDM2Olx0XHRcdGlmICghbnVtX3R4KVxuNzAzNzpcdFx0XHRcdGNvbnRpbnVlO1xuNzAzODpcdFxuNzAzOTpcdFx0XHRudGggPSAwO1xuNzA0MDpcdFx0XHRkc2FfbGFnX2ZvcmVhY2hfcG9ydChkcCwgZHMtXHUwMDNlZHN0LCBsYWcpIHtcbjcwNDE6XHRcdFx0XHRpZiAoIWRwLVx1MDAzZWxhZ190eF9lbmFibGVkKVxuNzA0MjpcdFx0XHRcdFx0Y29udGludWU7XG43MDQzOlx0XG43MDQ0Olx0XHRcdFx0aWYgKGRwLVx1MDAzZWRzID09IGRzKVxuNzA0NTpcdFx0XHRcdFx0bXY4OGU2eHh4X2xhZ19zZXRfcG9ydF9tYXNrKG1hc2ssIGRwLVx1MDAzZWluZGV4LFxuNzA0NjpcdFx0XHRcdFx0XHRcdFx0ICAgIG51bV90eCwgbnRoKTtcbjcwNDc6XHRcbjcwNDg6XHRcdFx0XHRudGgmIzQzOyYjNDM7O1xuNzA0OTpcdFx0XHR9XG43MDUwOlx0XHR9XG43MDUxOlx0XG43MDUyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyA4OyBpJiM0MzsmIzQzOykge1xuNzA1MzpcdFx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzJfdHJ1bmtfbWFza193cml0ZShjaGlwLCBpLCB0cnVlLCBtYXNrW2ldKTtcbjcwNTQ6XHRcdFx0aWYgKGVycilcbjcwNTU6XHRcdFx0XHRyZXR1cm4gZXJyO1xuNzA1NjpcdFx0fVxuNzA1NzpcdFxuNzA1ODpcdFx0cmV0dXJuIDA7XG43MDU5Olx0fVxuNzA2MDpcdFxuNzA2MTpcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzX21hcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG43MDYyOlx0XHRcdFx0XHRcdHN0cnVjdCBkc2FfbGFnIGxhZylcbjcwNjM6XHR7XG43MDY0Olx0XHRpbnQgZXJyO1xuNzA2NTpcdFxuNzA2NjpcdFx0ZXJyID0gbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzKGRzKTtcbjcwNjc6XHRcbjcwNjg6XHRcdGlmICghZXJyKVxuNzA2OTpcdFx0XHRlcnIgPSBtdjg4ZTZ4eHhfbGFnX3N5bmNfbWFwKGRzLCBsYWcpO1xuNzA3MDpcdFxuNzA3MTpcdFx0cmV0dXJuIGVycjtcbjcwNzI6XHR9XG43MDczOlx0XG43MDc0Olx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9sYWdfY2hhbmdlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG43MDc1Olx0e1xuNzA3NjpcdFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbjcwNzc6XHRcdGludCBlcnI7XG43MDc4Olx0XG43MDc5Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG43MDgwOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfbGFnX3N5bmNfbWFza3MoZHMpO1xuNzA4MTpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG43MDgyOlx0XHRyZXR1cm4gZXJyO1xuNzA4MzpcdH1cbjcwODQ6XHRcbjcwODU6XHRzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2xhZ19qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG43MDg2Olx0XHRcdFx0XHQgICBzdHJ1Y3QgZHNhX2xhZyBsYWcsXG43MDg3Olx0XHRcdFx0XHQgICBzdHJ1Y3QgbmV0ZGV2X2xhZ191cHBlcl9pbmZvICppbmZvLFxuNzA4ODpcdFx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuNzA4OTpcdHtcbjcwOTA6XHRcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVx1MDAzZXByaXY7XG43MDkxOlx0XHRpbnQgZXJyLCBpZDtcbjcwOTI6XHRcbjcwOTM6XHRcdGlmICghbXY4OGU2eHh4X2xhZ19jYW5fb2ZmbG9hZChkcywgbGFnLCBpbmZvLCBleHRhY2spKVxuNzA5NDpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG43MDk1Olx0XG43MDk2Olx0XHQvKiBEU0EgTEFHIElEcyBhcmUgb25lLWJhc2VkICovXG43MDk3Olx0XHRpZCA9IGxhZy5pZCAtIDE7XG43MDk4Olx0XG43MDk5Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjU3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGlyZWN0IEFwcHJvYWNoIHRvIElkZW50aWZpY2F0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgY3V0IHRocm91Z2ggdGhlIGZsdWZmIGFuZCBnbyBzdHJhaWdodCBmb3IgdGhlIGp1Z3VsYXIuIEluc3RlYWQgb2YgZGFuY2luZyBhcm91bmQgdGhlIGlzc3VlLCBsZXQmIzM5O3MgdGFyZ2V0IHRoZSBjb3JlIGZ1bmN0aW9uIHdlJiMzOTtyZSBhZnRlci4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBgbXY4OGU2eHh4X2RldGVjdGAgaXMgdGhlIGtleSB0byBpZGVudGlmeWluZyB0aGUgTWFydmVsbCBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IGluIHF1ZXN0aW9uLiBJdCYjMzk7cyB1c3VhbGx5IHRoZSBtb3N0IGRpcmVjdCBwYXRoLiBXZSYjMzk7bGwgYnlwYXNzIGFueSBwcmVsaW1pbmFyeSBjaGVja3MgYW5kIGp1bXAgZGlyZWN0bHkgaW50byBzZWFyY2hpbmcgZm9yIGl0LiBObyBuZWVkIHRvIG92ZXJ0aGluayBpdDsgbGV0JiMzOTtzIHNlZSB3aGF0IGNvbWVzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHhfZGV0ZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICptdjg4ZTZ4eHhfbG9va3VwX2luZm8odW5zaWduZWQgaW50IHByb2RfbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1NzQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc1OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTc2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjA0PXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NpbmdsZV9jaGlwX2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2Mjc6XHRyZXR1cm4gbXY4OGU2eHh4X2RldGVjdChjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2MjgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTczMTY9c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczNzUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Mzc2Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfZGV0ZWN0KGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzM3Ny1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4OTUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEaXZpbmcgaW50byBgbXY4OGU2eHh4X2RldGVjdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJ1c2luZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3ZSYjMzk7cmUgbG9va2luZyBhdCBgbXY4OGU2eHh4X2RldGVjdGAg4oCTIGxpa2VseSBhIGRldGVjdGlvbiByb3V0aW5lIGZvciBhIE1hcnZlbGwgRXRoZXJuZXQgUEhZLiYjMzQ7IEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGF0IGZpbGVuYW1lOiBgbXY4OGU2eHh4YCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7TWFydmVsbCwgODhFNnh4eCBmYW1pbHksJiMzNDsgYW5kIHRoZSB0cmFpbGluZyBgX2RldGVjdGAgYWxtb3N0IGNlcnRhaW5seSBpbmRpY2F0ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3IgZW51bWVyYXRpb24gcGhhc2UuIEkgZXhwZWN0IHRoaXMgY29kZSB0byBoYW5kbGUgdGhlIGluaXRpYWwgcHJvYmluZyBvZiB0aGUgUEhZIGNoaXAsIGlkZW50aWZpY2F0aW9uLCBhbmQgcG90ZW50aWFsbHkgc29tZSBiYXNpYyBjb25maWd1cmF0aW9uIG9yIGNhcGFiaWxpdHkgZGlzY292ZXJ5LiBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBXaGF0JiMzOTtzIHRoZSB0YXJnZXQgaGFyZHdhcmU/IFdoYXQgYXJlIHRoZSB0eXBpY2FsIHJlZ2lzdGVyIGFkZHJlc3NlcyBJIHNob3VsZCBiZSBleHBlY3Rpbmc/IFdoYXQgbWV0aG9kcyBvZiBkZXRlY3Rpb24g4oCTIHBlcmhhcHMgSTJDLCBNRElPLCBvciBzb21lIG90aGVyIGludGVyZmFjZSDigJMgYXJlIHRoZXkgdXNpbmc/IEkgd2FudCB0byBzZWUgaG93IHJvYnVzdCB0aGVpciBkZXRlY3Rpb24gc3RyYXRlZ3kgaXM6IGFyZSB0aGV5IGp1c3QgY2hlY2tpbmcgYSBzaW5nbGUgcmVnaXN0ZXIgZm9yIGEgc3BlY2lmaWMgdmFsdWUsIG9yIGFyZSB0aGV5IHRha2luZyBhIG1vcmUgc29waGlzdGljYXRlZCwgbXVsdGktc3RhZ2UgYXBwcm9hY2gsIG1heWJlIGNoZWNraW5nIGZvciBwYXJ0aWN1bGFyIFBIWSBJRHMgb3IgcmV2aXNpb24gbnVtYmVycz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWxseSB0cmlja3kgaW50ZXJhY3Rpb24gd2l0aCBNRElPIGJ1cyB0aW1pbmcsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBiZWluZyBydW4gb24gYSBwbGF0Zm9ybSB3aXRoIG5vbi1vcHRpbWFsIGRyaXZlcnMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoYXQuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgZGV0YWlscyBvZiBNRElPIGNvbW1hbmRzIGFuZCB0aGF0IGl0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmVyc2lvbiBJIGFtIHN1cHBvcnRpbmcuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaWYgdGhpcyBkZXRlY3Rpb24gaXMgdGhlIHJpZ2h0IHdheSB0byBhcHByb2FjaCB3aGF0IEkgYW0gZG9pbmcsIG9yIGlmIGl0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NTc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1NzU6XHRzdGF0aWMgaW50IG12ODhlNnh4eF9kZXRlY3Qoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuNjU3NjpcdHtcbjY1Nzc6XHRcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyAqaW5mbztcbjY1Nzg6XHRcdHVuc2lnbmVkIGludCBwcm9kX251bSwgcmV2O1xuNjU3OTpcdFx0dTE2IGlkO1xuNjU4MDpcdFx0aW50IGVycjtcbjY1ODE6XHRcbjY1ODI6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbjY1ODM6XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgMCwgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lELCBcdTAwMjZpZCk7XG42NTg0Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbjY1ODU6XHRcdGlmIChlcnIpXG42NTg2Olx0XHRcdHJldHVybiBlcnI7XG42NTg3Olx0XG42NTg4Olx0XHRwcm9kX251bSA9IGlkIFx1MDAyNiBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF9NQVNLO1xuNjU4OTpcdFx0cmV2ID0gaWQgXHUwMDI2IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9SRVZfTUFTSztcbjY1OTA6XHRcbjY1OTE6XHRcdGluZm8gPSBtdjg4ZTZ4eHhfbG9va3VwX2luZm8ocHJvZF9udW0pO1xuNjU5MjpcdFx0aWYgKCFpbmZvKVxuNjU5MzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjY1OTQ6XHRcbjY1OTU6XHRcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbjY1OTY6XHRcdGNoaXAtXHUwMDNlaW5mbyA9IGluZm87XG42NTk3Olx0XG42NTk4Olx0XHRkZXZfaW5mbyhjaGlwLVx1MDAzZWRldiwgXCYjMzQ7c3dpdGNoIDB4JXggZGV0ZWN0ZWQ6ICVzLCByZXZpc2lvbiAldVxcblwmIzM0OyxcbjY1OTk6XHRcdFx0IGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSwgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW5hbWUsIHJldik7XG42NjAwOlx0XG42NjAxOlx0XHRyZXR1cm4gMDtcbjY2MDI6XHR9XG42NjAzOlx0XG42NjA0Olx0c3RhdGljIGludCBtdjg4ZTZ4eHhfc2luZ2xlX2NoaXBfZGV0ZWN0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbjY2MDU6XHRcdFx0XHRcdFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuNjYwNjpcdHtcbjY2MDc6XHRcdGludCBlcnI7XG42NjA4Olx0XG42NjA5Olx0XHQvKiBkdWFsX2NoaXAgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHNpbmdsZS9tdWx0aS1jaGlwIG1vZGVzICovXG42NjEwOlx0XHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWR1YWxfY2hpcClcbjY2MTE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42NjEyOlx0XG42NjEzOlx0XHQvKiBJZiB0aGUgbWRpbyBhZGRyIGlzIDE2IGluZGljYXRpbmcgdGhlIGZpcnN0IHBvcnQgYWRkcmVzcyBvZiBhIHN3aXRjaFxuNjYxNDpcdFx0ICogKGUuZy4gbXY4OGU2KjQxKSBpbiBzaW5nbGUgY2hpcCBhZGRyZXNzaW5nIG1vZGUgdGhlIGRldmljZSBtYXkgYmVcbjY2MTU6XHRcdCAqIGNvbmZpZ3VyZWQgaW4gc2luZ2xlIGNoaXAgYWRkcmVzc2luZyBtb2RlLiBTZXR1cCB0aGUgc21pIGFjY2VzcyBhc1xuNjYxNjpcdFx0ICogc2luZ2xlIGNoaXAgYWRkcmVzc2luZyBtb2RlIGFuZCBhdHRlbXB0IHRvIGRldGVjdCB0aGUgbW9kZWwgb2YgdGhlXG42NjE3Olx0XHQgKiBzd2l0Y2gsIGlmIHRoaXMgZmFpbHMgdGhlIGRldmljZSBpcyBub3QgY29uZmlndXJlZCBpbiBzaW5nbGUgY2hpcFxuNjYxODpcdFx0ICogYWRkcmVzc2luZyBtb2RlLlxuNjYxOTpcdFx0ICovXG42NjIwOlx0XHRpZiAobWRpb2Rldi1cdTAwM2VhZGRyICE9IDE2KVxuNjYyMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjY2MjI6XHRcbjY2MjM6XHRcdGVyciA9IG12ODhlNnh4eF9zbWlfaW5pdChjaGlwLCBtZGlvZGV2LVx1MDAzZWJ1cywgMCk7XG42NjI0Olx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzE0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQmIzM5O3MgZ3JhYmJpbmcgYE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRGAgZnJvbSBwb3J0IDAuIElmIHRoYXQgSUQgZG9lc24mIzM5O3Qgaml2ZSB3aXRoIGEga25vd24gcHJvZHVjdCBudW1iZXIsIGl0JiMzOTtzIHRvc3NpbmcgYmFjayBhbiBgLUVOT0RFVmAgZXJyb3IuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBzaW5jZSB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcyBzcGVjaWZpYyBzd2l0Y2gsIHByb2JpbmcgdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSBpcyBhIGd1YXJhbnRlZWQgZmFpbC4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgaWYsICpoeXBvdGhldGljYWxseSosIHNvbWVvbmUgaGFkIHNldCB1cCBhIG1vY2sgTURJTyBidXMgdGhhdCBhY3R1YWxseSAqZGlkKiByZXR1cm4gYSB2YWxpZCBJRD8gVGhhdCB3b3VsZCBjaGFuZ2UgdGhpbmdzLCB3b3VsZG4mIzM5O3QgaXQ/IFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBzcGVjaWZpYyBtb2NrIGZvciBgbXY4OGU2eHh4YD8gSSBoaWdobHkgZG91YnQgaXQ7IGl0IGRvZXNuJiMzOTt0IHVzdWFsbHkgZ28gdGhhdCBncmFudWxhci4KCkFoLCBidXQgdGhlIHByb21wdC4gTGV0IG1lIHJlLXJlYWQgaXQuLi4gJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIElmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4uLiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsgVGhpcyBzY2VuYXJpbyBpcywgd2l0aG91dCBhIGRvdWJ0LCBpbXBvc3NpYmxlIHRvIHJlYWNoLiBTbyBJIHNob3VsZCBiZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjay4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlIGZvciBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYC4gSSB3YW50IHRvIHNlZSBpZiAqYW55dGhpbmcqIGV2ZW4gcmVtb3RlbHkgbG9va3MgbGlrZSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBzZWFyY2ggd2l0aCBteSBjb2RlIHNlYXJjaCB0b29scyB0byBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01WODhFNlhYWF9QT1JUX1NXSVRDSF9JRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04MDM9c3RhdGljIHZvaWQgbXY4OGU2MzkzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODA3LVx0Ym9vbCBpc182MTkxeCA9XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDg6XHRcdGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxWDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwOS1cdGJvb2wgaXNfNjM2MSA9XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTA6XHRcdGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODExLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM3NTI9c3RhdGljIGNvbnN0IHUxNiBmYW1pbHlfcHJvZF9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc1MzpcdFtNVjg4RTZYWFhfRkFNSUxZXzYzNDFdID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM0MSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTQ6XHRbTVY4OEU2WFhYX0ZBTUlMWV82MzkwXSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzU1Olx0W01WODhFNlhYWF9GQU1JTFlfNjM5M10gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkzWCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NTYtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01Njk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzAwLVx0W01WODhFNjAyMF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzAxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDIwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcwMi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzI1LVx0W01WODhFNjA3MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzI2Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDcxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcyNy1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzQ2LVx0W01WODhFNjA4NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDg1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0OC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjA5Nyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzcwLVx0W01WODhFNjA5NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzcxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDk1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc3Mi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjA5NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzkxLVx0W01WODhFNjA5N10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzkyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDk3LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc5My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjA5Nyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODE2LVx0W01WODhFNjEyM10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTIzLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxOC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE2NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODQxLVx0W01WODhFNjEzMV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODQyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTMxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg0My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE4NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODYyLVx0W01WODhFNjE0MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODYzOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTQxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg2NC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM0MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODg4LVx0W01WODhFNjE2MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODg5Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTYxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg5MC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE2NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTE0LVx0W01WODhFNjE2NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTE1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTY1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkxNi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE2NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTM5LVx0W01WODhFNjE3MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTQwOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTcxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk0MS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTY0LVx0W01WODhFNjE3Ml0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTY1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTcyLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk2Ni1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OTkwLVx0W01WODhFNjE3NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTkxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk5Mi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDE1LVx0W01WODhFNjE3Nl0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDE2Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc2LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjAxNy1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDQxLVx0W01WODhFNjE4NV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDQyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTg1LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA0My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjE4NSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDYzLVx0W01WODhFNjE5MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDY0Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA2NS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDg4LVx0W01WODhFNjE5MFhdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjA4OTpcdFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFgsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDkwLVx0XHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxMTMtXHRbTVY4OEU2MTkxXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxMTQ6XHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTEsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTE1LVx0XHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxMzgtXHRbTVY4OEU2MTkxWF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTM5Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxWCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxNDAtXHRcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE2My1cdFtNVjg4RTYxOTNYXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxNjQ6XHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTNYLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE2NS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5Myxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTkwLVx0W01WODhFNjIyMF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTkxOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjIwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE5Mi1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjE3LVx0W01WODhFNjI0MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjE4Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjQwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxOS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjQ0LVx0W01WODhFNjI1MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjQ1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjUwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0Ni1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjI1MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjY2LVx0W01WODhFNjI5MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjkwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2OC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjkzLVx0W01WODhFNjMyMF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mjk0Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzIwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI5NS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjMyMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzIxLVx0W01WODhFNjMyMV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzIyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzIxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyMy1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjMyMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzQ5LVx0W01WODhFNjM0MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzUwOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM1MS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM0MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02Mzc3LVx0W01WODhFNjM1MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzc4Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3OS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDAyLVx0W01WODhFNjM1MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDAzOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQwNC1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1MSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDI3LVx0W01WODhFNjM1Ml0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDI4Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUyLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyOS1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM1Mixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDU0LVx0W01WODhFNjM2MV0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDU1Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1Ni1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5Myxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDgxLVx0W01WODhFNjM5MF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDgyOlx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4My1cdFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTA5LVx0W01WODhFNjM5MFhdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjUxMDpcdFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFgsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTExLVx0XHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MzYtXHRbTVY4OEU2MzkzWF0gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTM3Olx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkzWCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MzgtXHRcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjU3NT1zdGF0aWMgaW50IG12ODhlNnh4eF9kZXRlY3Qoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODItXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTgzOlx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCAwLCBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSUQsIFx1MDAyNmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODQtXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU4ODpcdHByb2RfbnVtID0gaWQgXHUwMDI2IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EX01BU0s7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg5Olx0cmV2ID0gaWQgXHUwMDI2IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9SRVZfTUFTSztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jPTU0OT1zdGF0aWMgaW50IG12ODhlNjM5MF9wY3NfaW5pdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy01NjktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM6NTcwOlx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwWCB8fFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jOjU3MTpcdCAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFgpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtNTcyLVx0XHRtcGNzLVx1MDAzZWVycmF0dW1fM18xNCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmM9NDExPWludCBtdjg4ZTYzOTN4X3BvcnRfc2V0X3NwZWVkX2R1cGxleChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jLTQxNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jOjQxNzpcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jLTQxOC1cdCAgICBzcGVlZCBcdTAwM2UgMjUwMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaC0xMjYtLyogT2Zmc2V0IDB4MDM6IFN3aXRjaCBJZGVudGlmaWVyIFJlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMjc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURcdFx0MHgwM1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTI4OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfTUFTS1x0MHhmZmYwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMjk6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDIwXHQweDAyMDBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwNzFcdDB4MDcxMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTMxOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjA4NVx0MHgwNGEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzI6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDk1XHQweDA5NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTdcdDB4MDk5MFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM0OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFhcdDB4MGEwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFhcdDB4MGExMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM2OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjEzMVx0MHgxMDYwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzIwXHQweDExNTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxMjNcdDB4MTIxMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE2MVx0MHgxNjEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDA6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTY1XHQweDE2NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0MTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzFcdDB4MTcxMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE3Mlx0MHgxNzIwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDM6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc1XHQweDE3NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0NDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzZcdDB4MTc2MFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQ1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFx0MHgxOTAwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDY6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxXHQweDE5MTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0NzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFYXHQweDE5MjBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0ODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTNYXHQweDE5MzBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0OTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxODVcdDB4MWE3MFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTUwOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjIyMFx0MHgyMjAwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjQwXHQweDI0MDBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1MjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyNTBcdDB4MjUwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTUzOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MVx0MHgyNjEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjkwXHQweDI5MDBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1NTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjFcdDB4MzEwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU2OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE0MVx0MHgzNDAwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxXHQweDM0MTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1ODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTJcdDB4MzUyMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM1MFx0MHgzNzEwXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNjA6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUxXHQweDM3NTBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE2MTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTBcdDB4MzkwMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5M1hcdDB4MzkzMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYzOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1JFVl9NQVNLXHQweDAwMGZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oLTE2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU1NDIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBtb2NrIGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYgdGhhdCBjb3VsZCBzaW11bGF0ZSB0aGUgTWFydmVsbCBzd2l0Y2gsIHdoaWNoIGlzIHRoZSBmaXJzdCB0aGluZyBJIGNoZWNrZWQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgU3l6a2FsbGVyICpkaWQqIGFwcGx5IGEgcGF0Y2ggcmVsYXRlZCB0byB0aGlzLCByaWdodD8gT2theSwgc28gdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBrbm93IFN5emthbGxlciB0aHJvd3MgcGF0Y2hlcyBhcm91bmQgdG8gdGVzdCB0aGVtLCBidXQgaWYgdGhlIGZ1enplciBjYW4mIzM5O3QgKmFjdHVhbGx5KiBnZXQgdG8gdGhlIGNvZGUsIGl0JiMzOTtsbCBqdXN0IHJlcG9ydCB6ZXJvIGNvdmVyYWdlIGZvciB0aGF0IHBhdGNoLgoKUmlnaHQsIHRoZSBwcm9tcHQgaXMgZXhwbGljaXQgYWJvdXQgdGhpczogSSBuZWVkIHRvIGZsYWcgaXQgYXMgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhpcyBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIGEgKnBoeXNpY2FsKiBNYXJ2ZWxsIHN3aXRjaCwgc28gSSYjMzk7bSB0aGlua2luZyBJJiMzOTt2ZSBmb3VuZCBteSBhbnN3ZXIuIFNpbmNlIHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIHRoaXMgaXMgKmRlZmluaXRlbHkqIGdvaW5nIHRvIGJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkp1c3QgdG8gYmUgc3VyZSwgSeKAmWxsIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaG93IHRoZSBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCBmdW5jdGlvbiBpcyBjYWxsZWQuIFJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmtgLiBUaGF0IHdvcmsgaXMgaW5pdGlhbGl6ZWQgaW4gYG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwYC4gVGhhdCwgaW4gdHVybiwgaXMgY2FsbGVkIGZyb20gYG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wX3NldGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBkc2FfcG9ydF9od3RzdGFtcF9zZXRgLCBhbmQgKnRoYXQqIGlzIGNhbGxlZCBmcm9tIGBkc2Ffc2xhdmVfaW9jdGxgIHdpdGggdGhlIGBTSU9DU0hXVFNUQU1QYCBpb2N0bC4gSXQmIzM5O3MgYSBjaGFpbiwgYnV0IGl0IHJlcXVpcmVzIHRoZSBzd2l0Y2ggdG8gYmUgcmVnaXN0ZXJlZCBhbmQgcHJvYmVkLgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbDogV2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudCwgYG12ODhlNnh4eF9kZXRlY3RgICp3aWxsKiBmYWlsLiBUaGUgcHJvYmUgd2lsbCBmYWlsLiBUaGUgc3dpdGNoIHdvbiYjMzk7dCByZWdpc3RlciwgYW5kIHRoZSBuZXR3b3JrIGRldmljZXMgYXJlbiYjMzk7dCBjcmVhdGVkLiBUaGUgY29kZSBpcyAqY29tcGxldGVseSogdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiBpcyB0aGVyZSBhIG1vY2sgTURJTyBidXMgaW4gdGhlIGtlcm5lbCBzb21ld2hlcmU/IEdvdHRhIGNoZWNrIHRoYXQgcmVhbCBxdWljay4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgYG1kaW8tbW9ja2AgZHJpdmVyIGV4aXN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY0NTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiB3ZSBjb3VsZCBzb21laG93IHRyaWdnZXIgdGhlIGNvZGUgcGF0aCBpbiBxdWVzdGlvbiwgYHBhcnNlX2VtYmVkZGVkX3RzYCwgdXNpbmcgYSBkdW1teSBkZXZpY2Ugb3Igc29tZSBjbGV2ZXIgdHJpY2tlcnkuIE15IGludHVpdGlvbiB3YXMgdG8gY2hlY2sgaWYgd2UgY291bGQgbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgYG1kaW8tZ3Bpb2AsIGJ1dCB0aGUgZHJpdmVyLCBgbXY4OGU2eHh4YCwgZXhwbGljaXRseSByZWFkcyBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYCB2aWEgTURJTy4gSWYgdGhhdCByZWFkIHJldHVybnMgYSBub25zZW5zaWNhbCB2YWx1ZSwgdGhlIGRldmljZSBkZXRlY3Rpb24gZmFpbHMuIFVubGVzcyB0aGVyZSYjMzk7cyBhIHdheSB0byBpbmplY3QgYXJiaXRyYXJ5IE1ESU8gcmVzcG9uc2VzIGluIGEgdGVzdGluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3Igc3l6a2FsbGVyLgoKU3l6a2FsbGVyLCBteSBnby10byBmdXp6aW5nIHRvb2wsIGRvZXNuJiMzOTt0IGhhdmUgYW4gTURJTyBmdXp6ZXIuIEl0IGhhbmRsZXMgb3RoZXIgaW50ZXJmYWNlcyBsaWtlIFVTQiwgUENJLCBhbmQgSTJDIChwb3RlbnRpYWxseSB0aHJvdWdoIGBpMmMtc3R1YmApLCBidXQgTURJTyBpcyBhYnNlbnQuIEkgYnJpZWZseSBjb25zaWRlcmVkIGlmIHRoZSBkcml2ZXIgY291bGQgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggSTJDLCBidXQgaXQmIzM5O3MgYW4gTURJTyBkcml2ZXIsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCk15IG5leHQgc3RlcCB3YXMgdG8gdHJhY2UgaG93IHdlIG1pZ2h0ICpwb3NzaWJseSogcmVhY2ggYHBhcnNlX2VtYmVkZGVkX3RzYC4gSXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24gYnVyaWVkIHdpdGhpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jYC4gVGhlIGNhbGwgY2hhaW4gaXMgdmVyeSBzcGVjaWZpYzogYG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZGAgLSZndDsgYG12ODhlNnh4eF9yeHRzdGFtcF93b3JrYCAtJmd0OyB3b3JrcXVldWUuIEluIHNob3J0LCBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGBtdjg4ZTZ4eHhgIGRyaXZlci4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBlbXVsYXRpb24gbGFuZHNjYXBlLiBEb2VzIFFFTVUsIHRoZSB2aXJ0dWFsIG1hY2hpbmUgSSBvZnRlbiB3b3JrIHdpdGgsIHByb3ZpZGUgZW11bGF0aW9uIGZvciBNYXJ2ZWxsIHN3aXRjaGVzPyBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgcm9ja2VyYCBzd2l0Y2hlcywgYnV0IGRvZXMgaXQgY292ZXIgdGhlIGBtdjg4ZTZ4eHhgIHNwZWNpZmljYWxseT8gQSBxdWljayBtZW50YWwgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBtdjg4ZTZ4eHhgLiBFdmVuIGlmIGl0IGRpZCwgc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzbiYjMzk7dCBydW4gd2l0aCB0aGF0IHR5cGUgb2YgaGFyZHdhcmUgZW11bGF0aW9uIGVuYWJsZWQuIEl0JiMzOTtzIGNvbmZpZ3VyZWQgd2l0aCBzdGFuZGFyZCBoYXJkd2FyZSBlbXVsYXRlZCBsaWtlIGBlMTAwMGAsIGB2aXJ0aW8tbmV0YCwgYW5kIGB2ZXRoYC4KClNvLCBjb25zaWRlcmluZyBhbGwgb2YgdGhpcywgdGhpcyBjb2RlIGlzICp1bnJlYWNoYWJsZSogaW4gc3l6a2FsbGVyLgoKTGV0IG1lIHJldmlzaXQgdGhlIHByb21wdCBjcml0ZXJpYS4gSXQgc3RhdGVzIHRoYXQgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIHBlcmZlY3RseSBtYXRjaGVzIHRoZSBzaXR1YXRpb24uIFRoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgKGBtdjg4ZTZ4eHhgKSBmb3Igd2hpY2ggbm8gdXNhYmxlIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYSBnZW5lcmljIERTQSBtb2NrIHRoYXQgKm1pZ2h0KiB1c2UgdGhpcyBjb2RlLiBJJiMzOTtsbCBzZWFyY2ggdGhyb3VnaCBgdG9vbHMvdGVzdGluZy9gIGFuZCBgZHJpdmVycy9uZXQvZHNhL2AsIGJ1dCB0aGUgY29kZSByZXNpZGVzIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2AsIHdoaWNoIGlzIGNsZWFybHkgYW5kIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLgoKRmluYWxseSwgSSYjMzk7bGwgZXhwbG9yZSB0aGUgcG9zc2liaWxpdHkgb2YgcHJvYmluZyBgbXY4OGU2eHh4YCB0aHJvdWdoIGEgc29mdHdhcmUgcGxhdGZvcm0gZGV2aWNlIHRoYXQgbW9ja3MgdGhlIE1ESU8gcmVzcG9uc2VzLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBtdjg4ZTZ4eHhgIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9gIG9yIGBkcml2ZXJzL25ldC9kc2EvYCB0byB1bmNvdmVyIGEgcG90ZW50aWFsIG1vY2suCgpTbywgaW4gc3VtbWFyeSwgYmFzZWQgb24gdGhlIGxhY2sgb2YgZW11bGF0aW9uIGFuZCB0aGUgZHJpdmVyJiMzOTtzIHRpZ2h0IGhhcmR3YXJlIGRlcGVuZGVuY3ksIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLCBhbmQgdGh1cyBub3Qgd29ydGggZnV6emluZyBmb3IgdGhpcyBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3OTU1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW1tZWRpYXRlIEFzc2Vzc21lbnQ6IE5vIFNpbXVsYXRlZCBFbnZpcm9ubWVudCBOZWVkZWQqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyBjbGVhci4gVGhlIGluaXRpYWwgZGlyZWN0aXZlIOKAkyB0aGVyZSYjMzk7cyBubyBuZWVkIGZvciBhICYjMzQ7bW9jayYjMzQ7IG9yIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gV2UgY2FuIHdvcmsgZGlyZWN0bHkgd2l0aCB0aGUgYWN0dWFsIHN5c3RlbSBvciBkYXRhLiBUaGlzIGltcGxpZXMgYSBsZXZlbCBvZiBjb25maWRlbmNlIGluIHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlIG9yIGEgbmVlZCBmb3IgYSBwcm9kdWN0aW9uLWxldmVsIHBlcnNwZWN0aXZlIHJpZ2h0IGF3YXkuCgpUaGUgc3Vic2VxdWVudCB0aG91Z2h0LCAmIzM0O1doYXQgYWJvdXQgYGRzYV9sb29wYD8mIzM0OyBzdWdnZXN0cyBhIHNoaWZ0IGluIGZvY3VzLiBJdCBpbmRpY2F0ZXMgYW4gaW1tZWRpYXRlIGNvbnNpZGVyYXRpb24gb2YgYSBzcGVjaWZpYyBjb21wb25lbnQgb3IgZnVuY3Rpb24sIHBlcmhhcHMgYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiBvciBvcGVyYXRpb25hbCBhc3BlY3Qgb2YgdGhlIHByb2plY3QuIEkmIzM5O2QgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgcm9sZSBhbmQgcmVsZXZhbmNlIG9mIGBkc2FfbG9vcGAgdG8gdGhlIGxhcmdlciBvYmplY3RpdmUuIElzIGl0IGEgY3JpdGljYWwgcGF0aCBlbGVtZW50PyBBIGtub3duIHBvdGVudGlhbCBib3R0bGVuZWNrPyBPciBhIHNwZWNpZmljIGFyZWEgd2hlcmUgdGhpcyB0ZWFtIGlzIGZvY3VzaW5nIG91ciBhdHRlbnRpb24/IFRoZSBxdWVzdGlvbiBpbXBsaWVzIHRoYXQgYSBzcGVjaWZpYyBtb2R1bGUgaXMgY29uc2lkZXJlZCBmb3IgYSByZWFzb24sIGFuZCB0aGVyZSBpcyBhIHNwZWNpZmljIGltcGxpY2F0aW9uIGZvciB0aGUgcHJvamVjdCBkZXBlbmRpbmcgb24gaXRzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTM9YmNtLXNmMi1vYmpzXHRcdFx0Oj0gYmNtX3NmMi5vIGJjbV9zZjJfY2ZwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXHQmIzQzOz0gZHNhX2xvb3Aub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcdCYjNDM7PSBrczg5OTUub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYtXHR1MTYgbWVtYmVycztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXHRjaGFyIG5hbWVbRVRIX0dTVFJJTkdfTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1OmVudW0gZHNhX2xvb3BfbWliX2NvdW50ZXJzIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDpcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cdHUxNiBwdmlkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk6c3RydWN0IGRzYV9sb29wX3ByaXYge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXHRzdHJ1Y3QgbWlpX2J1c1x0KmJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVx0dW5zaWduZWQgaW50XHRwb3J0X2Jhc2U7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcG9ydCBwb3J0c1tEU0FfTUFYX1BPUlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU3OnN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02OC1cdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cdD0geyBcJiMzNDtwaHlfcmVhZF9va1wmIzM0OywgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03NT1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc4LVx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXHR1bnNpZ25lZCBpbnQgaSwgY291bnQgPSAwO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjk3OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXHRzdHJ1Y3QgZGV2bGlua19yZXNvdXJjZV9zaXplX3BhcmFtcyBzaXplX3BhcmFtcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cdFx0XHRcdFx0ICAgICAgRFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9WVFUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XHRcdFx0XHRcdCAgICAgIGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCwgcHMpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXHRcdFx0XHRcdFx0ICAgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkcy1cdTAwM2VudW1fcG9ydHM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQwOlx0XHRtZW1jcHkocHMtXHUwMDNlcG9ydHNbaV0ubWliLCBkc2FfbG9vcF9taWJzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlx0XHQgICAgICAgc2l6ZW9mKGRzYV9sb29wX21pYnMpKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE1MzpzdGF0aWMgaW50IGRzYV9sb29wX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cdFx0XHRcdCB1MzIgc3RyaW5nc2V0LCB1aW50OF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzQ6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cdFx0XHRcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4NS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTk6c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cdFx0XHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjAyOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMy1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE2LVx0XHRcdFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXHRcdFx0XHQgICAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIzMzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cdFx0XHRcdFx0dTggc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjQwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVx0XHRcdFx0XHRib29sIHZsYW5fZmlsdGVyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cdGJvb2wgcHZpZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cdGJvb2wgdW50YWdnZWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mjg3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OC1cdHUxNiBwdmlkID0gcHMtXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OS1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTA6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTItXHRcdFx0XHQgICAgaW50IG5ld19tdHUpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzE0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcdC5zZXR1cFx0XHRcdD0gZHNhX2xvb3Bfc2V0dXAsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzc6XHQudGVhcmRvd25cdFx0PSBkc2FfbG9vcF90ZWFyZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcdC5nZXRfc3RyaW5nc1x0XHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5Olx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlx0LmdldF9zc2V0X2NvdW50XHRcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDE6XHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQyOlx0LnBoeV9yZWFkXHRcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XHQucGh5X3dyaXRlXHRcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0Olx0LnBvcnRfYnJpZGdlX2pvaW5cdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcdC5wb3J0X2JyaWRnZV9sZWF2ZVx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3Olx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcdC5wb3J0X3ZsYW5fYWRkXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0OTpcdC5wb3J0X3ZsYW5fZGVsXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcdC5wb3J0X2NoYW5nZV9tdHVcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlx0LnBvcnRfbWF4X210dVx0XHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3Olx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVx0ZHMtXHUwMDNlZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XHRkcy1cdTAwM2VvcHMgPSBcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXHRkcy1cdTAwM2Vwcml2ID0gcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cdC5tZGlvZHJ2LmRyaXZlclx0PSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI2LVx0fSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcdC5wcm9iZVx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XHQucmVtb3ZlXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XHQuc2h1dGRvd24gPSBkc2FfbG9vcF9kcnZfc2h1dGRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzMjpzdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XHRyZXR1cm4gZHJ2ID09IFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVx0XHQuY2QgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcdTAwMjZkc2FfbG9vcF9wZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0Olx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcdFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXHRcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwMzptb2R1bGVfaW5pdChkc2FfbG9vcF9pbml0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA5LVx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDc1MQoJCQkJCQkJb3V0cHV0OiAxMTEKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBgZHNhX2xvb3BgKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIGBkc2FfbG9vcGAgbW9jayBkcml2ZXIsIGFuZCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGl0IGRvZXNuJiMzOTt0IGludGVyYWN0IHdpdGggdGhlIGBtdjg4ZTZ4eHhgIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBrZXkgaW5kaWNhdG9yIGhlcmUuIFNpbmNlIGBtdjg4ZTZ4eHhgIGlzIGEgZHJpdmVyIHNwZWNpZmljIHRvIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoZXMsIGFuZCB3ZSYjMzk7cmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUgY29uc3RyYWludHMgb2Ygc3l6a2FsbGVyLCB3aGljaCBpcyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGlzIGhhcmR3YXJlIGlzIHNpbXBseSBpbmFjY2Vzc2libGUuCgpUaGVyZWZvcmUsIG15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGNvZGUgaXNuJiMzOTt0IGZ1enphYmxlIGluIHRoaXMgY29udGV4dC4gSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgbW9kaWZpZWQgY29kZSByZWxhdGVzIHRvIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB3aGljaCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZXJjaXNlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cCB3aXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBmaWxlcyBpbiBwbGF5LiBBaCwgeWVzLCB0aGVyZSBhcmUgYSBmZXc6IGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaGAsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaGAuIEFuZCB0aGV5JiMzOTtyZSBhbGwgZmlybWx5IHdpdGhpbiB0aGUgYG12ODhlNnh4eGAgZGlyZWN0b3J5LgoKWXVwLCB0aGF0IGNvbmZpcm1zIGl0LiBJIGFtIGNvbXBsZXRlbHkgY29uZmlkZW50IGluIG15IG9yaWdpbmFsIGV2YWx1YXRpb24uIFdlIGNhbiBzYWZlbHkgZXhjbHVkZSB0aGlzIGZyb20gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDAzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lc3RhbXBzIGZvciBNYXJ2ZWxsIDg4RTZ4eHggcGh5c2ljYWwgc3dpdGNoZXMuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBzd2l0Y2ggaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MDEuNzg0NjI0NjExWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIzNTcwNTgwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyBmb3IgTWFydmVsbCA4OEU2eHh4IHBoeXNpY2FsIHN3aXRjaGVzLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzowMS43ODQ2Mjk1NDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDI4NDgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGVkODg3NzRmYTY2MjA3NzEyYzU4NGVhMzNkODUyMmE4ZTdjYzQxNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDM6MjM6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5jMzI3N2MxZjNkNzg1YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuQEAgLTI4LDYgKzI4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcXG4gXFx0XFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcXG4gXFx0XFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcXG4gXFx0XFx0Lm9wcyA9IFxcdTAwMjZtdjg4ZTYzNDFfb3BzLFxcbitcXHRcXHQuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSxcXG4gXFx0fSxcXG4gXFxuIFxcdFtNVjg4RTYzNTBdID0ge1xcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xcbiBcXHRcXHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxcbiBcXHRcXHQucHRwX3N1cHBvcnQgPSB0cnVlLFxcbiBcXHRcXHQub3BzID0gXFx1MDAyNm12ODhlNjM1Ml9vcHMsXFxuK1xcdFxcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxcbiBcXHR9LFxcbiBcXHRbTVY4OEU2MzYxXSA9IHtcXG4gXFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5iNmE5MGViYTgxYzQzOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuQEAgLTE4MCw2ICsxODAsMTQgQEAgc3RydWN0IG12ODhlNnh4eF9pbmZvIHtcXG4gXFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXFxuIFxcdCAqL1xcbiBcXHR1bnNpZ25lZCBpbnQgaW50ZXJuYWxfcGh5c19vZmZzZXQ7XFxuK1xcbitcXHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cXG4rXFx0ICogaHd0c3RhbXAuaC4gWmVybyAodGhlIGRlZmF1bHQpIGxlYXZlcyBhcnJpdmFsIHRpbWUgc3RhbXBzIGluIHRoZVxcbitcXHQgKiBzd2l0Y2ggcmVnaXN0ZXJzOyBub24temVybyBlbWJlZHMgdGhlbSBpbiB0aGUgZnJhbWUsIGVpdGhlciBhcHBlbmRlZFxcbitcXHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcXG4rXFx0ICogUFRQIGNvbW1vbiBoZWFkZXIuXFxuK1xcdCAqL1xcbitcXHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li4xZmJlZDM0MDc1Nzk3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcXG5AQCAtMTUsNiArMTUsNyBAQFxcbiAjaW5jbHVkZSBcXFwiaHd0c3RhbXAuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInB0cC5oXFxcIlxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gXFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cXHUwMDNlY2IpKVxcbiBcXG5AQCAtMjQ1LDYgKzI0Niw3MyBAQCBzdGF0aWMgaW50IHNlcV9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdHNfc2VxaWQpXFxuIFxcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXFx1MDAzZXNlcXVlbmNlX2lkKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgcGFyc2VfZW1iZWRkZWRfdHModW5zaWduZWQgaW50IGFycl90c19tb2RlLFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgKm5zKVxcbit7XFxuK1xcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XFxuK1xcbitcXHQqbnMgPSAwO1xcbitcXG4rXFx0LyogQVBQRU5EIG1lYW5zIHRoZSBzd2l0Y2ggYXBwZW5kZWQgdGhlIHRpbWUgc3RhbXAgYXMgYSA0LWJ5dGUgdHJhaWxlclxcbitcXHQgKiAobm90IGFsbCBzd2l0Y2hlcyBzdXBwb3J0IHRoaXMpLiBBbnkgb3RoZXIgbm9uLXplcm8gdmFsdWUgaXMgdGhlIGJ5dGVcXG4rXFx0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXFxuK1xcdCAqIG92ZXJ3cm90ZSB0aGUgdGltZSBzdGFtcCBpbiBwbGFjZSAoZS5nLiB0aGUgcmVzZXJ2ZWQgaGVhZGVyIGJ5dGVzKS5cXG4rXFx0ICovXFxuK1xcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcXHUwMDI2XFx1MDAyNiBza2ItXFx1MDAzZWxlbiBcXHUwMDNlPSA0KSB7XFxuK1xcdFxcdGlmIChza2JfbGluZWFyaXplKHNrYikpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdFxcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpO1xcbitcXHRcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSA0KSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9IGVsc2UgaWYgKGFycl90c19tb2RlICsgNCBcXHUwMDNjPSBzaXplb2YoKmhkcikpIHtcXG4rXFx0XFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcXG4rXFx0XFx0aWYgKCFoZHIpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdFxcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciArIGFycl90c19tb2RlKTtcXG4rXFx0XFx0bWVtc2V0KCh1OCAqKWhkciArIGFycl90c19tb2RlLCAwLCA0KTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG4re1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpyeHEgPSBcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlO1xcbitcXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgcmVjZWl2ZWQ7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdHU2NCBucztcXG4rXFxuK1xcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cmVjZWl2ZWQpO1xcbitcXHRfX3NrYl9xdWV1ZV9oZWFkKFxcdTAwMjZyZWNlaXZlZCwgc2tiKTtcXG4rXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnJ4cS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChyeHEsIFxcdTAwMjZyZWNlaXZlZCk7XFxuK1xcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnJ4cS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXHRza2JfcXVldWVfd2FsayhcXHUwMDI2cmVjZWl2ZWQsIHNrYikge1xcbitcXHRcXHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlLCBza2IsIFxcdTAwMjZucykpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIG5zKTtcXG4rXFx0XFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcXG4rXFx0XFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xcbitcXHRcXHRzaHd0LVxcdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG4rXFx0fVxcbitcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4rXFxuK1xcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2cmVjZWl2ZWQpKSlcXG4rXFx0XFx0bmV0aWZfcngoc2tiKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxcbkBAIC0zMDcsOCArMzc1LDIxIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiBcXG4tXFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuK1xcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSkge1xcbitcXHRcXHQvKiBJZiBhcnJfdHNfbW9kZSBpcyBzZXQsIHRoZSB0aW1lc3RhbXBzIGFyZSBlbWJlZGRlZCBpbiB0aGVcXG4rXFx0XFx0ICogZnJhbWVzIHNvIGEgcmVnaXN0ZXIgcmVhZCBpcyBub3QgcmVxdWlyZWQuIFdlIHN0aWxsIG5lZWQgYVxcbitcXHRcXHQgKiB3b3JrIHF1ZXVlIHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgaW5saW5lIGJlY2F1c2VcXG4rXFx0XFx0ICogdGltZWNvdW50ZXJfY3ljMnRpbWUoKSB0YWtlcyB0aGUgZ2xvYmFsIG11dGV4IGFuZCB0aGlzXFxuK1xcdFxcdCAqIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcCgpLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuK1xcdFxcdGlmIChza2IpXFxuK1xcdFxcdFxcdG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZChjaGlwLCBwcywgc2tiKTtcXG4rXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXG4rXFx0c2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuIFxcdGlmIChza2IpXFxuIFxcdFxcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVxcdTAwM2VhcnIwX3N0c19yZWcsXFxuIFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZwcy1cXHUwMDNlcnhfcXVldWUpO1xcbkBAIC0zMTksOSArNDAwLDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZTIpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXFxuK3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcXG4ge1xcbi1cXHRyZXR1cm4gKGhkci1cXHUwMDNldHNtdCBcXHUwMDI2IDB4ZikgPT0gMztcXG4rXFx0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XFxuK1xcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFUTpcXG4rXFx0XFx0ZmFsbHRocm91Z2g7XFxuK1xcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFU1A6XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gfVxcbiBcXG4gYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbkBAIC0zNDMsNyArNDMxLDcgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXFxuK1xcdGlmICghY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlYXJyX3RzX21vZGUgXFx1MDAyNlxcdTAwMjYgaXNfcGRlbGF5X21zZyhoZHIpKVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xcbkBAIC01MjMsMTQgKzYxMSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiBcXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2Rpc2FibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSkge1xcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbkBAIC01ODQsMTEgKzY5NSwxNCBAQCBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cXG4tXFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbi1cXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKSB7XFxuK1xcdFxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSBtZXNzYWdlcy4gKi9cXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuIFxcbiBcXHQvKiA4OEU2MzQxIGRldmljZXMgZGVmYXVsdCB0byB0aW1lc3RhbXBpbmcgYXQgdGhlIFBIWSwgYnV0IHRoaXMgaGFzXFxuIFxcdCAqIGEgaGFyZHdhcmUgaXNzdWUgdGhhdCByZXN1bHRzIGluIHVucmVsaWFibGUgdGltZXN0YW1wcy4gRm9yY2VcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbkBAIC02OCw2ICs2OCwyMCBAQFxcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cXHRcXHQweDAwMDJcXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXFx0XFx0MHgwMDAxXFxuIFxcbisvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXFxuKyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcXG4rICogZnJhbWVzLlxcbisgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxcbisgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXFxuKyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xcbisgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XFxuKyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxcbisgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxcbisgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXFxuKyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcXG4rICovXFxuKyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcXHRcXHQweDAxXFxuK1xcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0xFRF9DRkdcXHQweDAzXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzowMi4yMzk1NTczNTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxOTAyMTE5ODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWVzdGFtcHMgZm9yIE1hcnZlbGwgODhFNnh4eCBwaHlzaWNhbCBzd2l0Y2hlcy4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZDg4Nzc0ZmE2NjIwNzcxMmM1ODRlYTMzZDg1MjJhOGU3Y2M0MTUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDM6MjM6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5pbmRleCA4MGI4NzdjNzQ1MTNkNi4uYzMyNzdjMWYzZDc4NWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbkBAIC0yOCw2ICsyOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcbiBcdFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcbiBcdFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcbiBcdFx0Lm9wcyA9IFx1MDAyNm12ODhlNjM0MV9vcHMsXG4rXHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcbiBcdFtNVjg4RTYzNTBdID0ge1xuQEAgLTY0NDcsNiArNjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNTJfb3BzLFxuK1x0XHQuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSxcbiBcdH0sXG4gXHRbTVY4OEU2MzYxXSA9IHtcbiBcdFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG5pbmRleCBlOTY2ZTdjNGNjNWRlYS4uYjZhOTBlYmE4MWM0MzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbkBAIC0xODAsNiArMTgwLDE0IEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuK1xuK1x0LyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSk7IHNlZSB0aGUgQXJyVFNNb2RlIGVuY29kaW5nIGluXG4rXHQgKiBod3RzdGFtcC5oLiBaZXJvICh0aGUgZGVmYXVsdCkgbGVhdmVzIGFycml2YWwgdGltZSBzdGFtcHMgaW4gdGhlXG4rXHQgKiBzd2l0Y2ggcmVnaXN0ZXJzOyBub24temVybyBlbWJlZHMgdGhlbSBpbiB0aGUgZnJhbWUsIGVpdGhlciBhcHBlbmRlZFxuK1x0ICogYXMgYSB0cmFpbGVyIG9yIG92ZXJ3cml0dGVuIGF0IHRoYXQgYnl0ZSBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlXG4rXHQgKiBQVFAgY29tbW9uIGhlYWRlci5cbitcdCAqL1xuK1x0dW5zaWduZWQgaW50IGFycl90c19tb2RlO1xuIH07XG4gXG4gc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjFmYmVkMzQwNzU3OTcyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXCJod3RzdGFtcC5oXCJcbiAjaW5jbHVkZSBcInB0cC5oXCJcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVx1MDAzZWNiKSlcbiBcbkBAIC0yNDUsNiArMjQ2LDczIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcbiBcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXHUwMDNlc2VxdWVuY2VfaWQpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXG4rXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0ICpucylcbit7XG4rXHRzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyO1xuK1xuK1x0Km5zID0gMDtcbitcbitcdC8qIEFQUEVORCBtZWFucyB0aGUgc3dpdGNoIGFwcGVuZGVkIHRoZSB0aW1lIHN0YW1wIGFzIGEgNC1ieXRlIHRyYWlsZXJcbitcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxuK1x0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXG4rXHQgKiBvdmVyd3JvdGUgdGhlIHRpbWUgc3RhbXAgaW4gcGxhY2UgKGUuZy4gdGhlIHJlc2VydmVkIGhlYWRlciBieXRlcykuXG4rXHQgKi9cbitcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IDQpIHtcbitcdFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpO1xuK1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH0gZWxzZSBpZiAoYXJyX3RzX21vZGUgKyA0IFx1MDAzYz0gc2l6ZW9mKCpoZHIpKSB7XG4rXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuK1x0XHRpZiAoIWhkcilcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciArIGFycl90c19tb2RlKTtcbitcdFx0bWVtc2V0KCh1OCAqKWhkciArIGFycl90c19tb2RlLCAwLCA0KTtcbitcdH0gZWxzZSB7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbitzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuK1x0XHRcdFx0XHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuK1x0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3tcbitcdHN0cnVjdCBza19idWZmX2hlYWQgKnJ4cSA9IFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlO1xuK1x0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xuK1x0c3RydWN0IHNrX2J1ZmZfaGVhZCByZWNlaXZlZDtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHR1NjQgbnM7XG4rXG4rXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cmVjZWl2ZWQpO1xuK1x0X19za2JfcXVldWVfaGVhZChcdTAwMjZyZWNlaXZlZCwgc2tiKTtcbitcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnJ4cS1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChyeHEsIFx1MDAyNnJlY2VpdmVkKTtcbitcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cnhxLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdHNrYl9xdWV1ZV93YWxrKFx1MDAyNnJlY2VpdmVkLCBza2IpIHtcbitcdFx0aWYgKCFwYXJzZV9lbWJlZGRlZF90cyhjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUsIHNrYiwgXHUwMDI2bnMpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4rXHRcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4rXHRcdG1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTtcbitcdFx0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbitcdH1cbitcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1xuK1x0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNnJlY2VpdmVkKSkpXG4rXHRcdG5ldGlmX3J4KHNrYik7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiByZWcsXG5AQCAtMzA3LDggKzM3NSwyMSBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFxuLVx0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuK1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSkge1xuK1x0XHQvKiBJZiBhcnJfdHNfbW9kZSBpcyBzZXQsIHRoZSB0aW1lc3RhbXBzIGFyZSBlbWJlZGRlZCBpbiB0aGVcbitcdFx0ICogZnJhbWVzIHNvIGEgcmVnaXN0ZXIgcmVhZCBpcyBub3QgcmVxdWlyZWQuIFdlIHN0aWxsIG5lZWQgYVxuK1x0XHQgKiB3b3JrIHF1ZXVlIHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgaW5saW5lIGJlY2F1c2VcbitcdFx0ICogdGltZWNvdW50ZXJfY3ljMnRpbWUoKSB0YWtlcyB0aGUgZ2xvYmFsIG11dGV4IGFuZCB0aGlzXG4rXHRcdCAqIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcCgpLlxuK1x0XHQgKi9cbitcdFx0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuK1x0XHRpZiAoc2tiKVxuK1x0XHRcdG12ODhlNnh4eF9nZXRfcnh0c19lbWJlZGRlZChjaGlwLCBwcywgc2tiKTtcbitcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFxuK1x0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuIFx0aWYgKHNrYilcbiBcdFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXHUwMDNlYXJyMF9zdHNfcmVnLFxuIFx0XHRcdFx0ICAgXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuQEAgLTMxOSw5ICs0MDAsMTYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdFx0ICAgXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUyKTtcbiB9XG4gXG4tc3RhdGljIGludCBpc19wZGVsYXlfcmVzcChjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxuK3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiB7XG4tXHRyZXR1cm4gKGhkci1cdTAwM2V0c210IFx1MDAyNiAweGYpID09IDM7XG4rXHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcbitcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFUTpcbitcdFx0ZmFsbHRocm91Z2g7XG4rXHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVNQOlxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiB9XG4gXG4gYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuQEAgLTM0Myw3ICs0MzEsNyBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbitcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlIFx1MDAyNlx1MDAyNiBpc19wZGVsYXlfbXNnKGhkcikpXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcbiBcdGVsc2VcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUsIHNrYik7XG5AQCAtNTIzLDE0ICs2MTEsMzcgQEAgaW50IG12ODhlNjE2NV9nbG9iYWxfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbiBcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZGlzYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfUFRQKTtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4rXHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMiwgMCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbiB7XG4tXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuLVx0XHRcdFx0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcbitcdGludCBlcnI7XG4rXG4rXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlKSB7XG4rXHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMixcbitcdFx0XHRcdFx0ICAgICAgIGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSBcdTAwM2NcdTAwM2MgOCk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbitcdFx0XHRcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuQEAgLTU4NCwxMSArNjk1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuK1x0aWYgKCFjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbitcdFx0LyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IG1lc3NhZ2VzLiAqL1xuK1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXG4rXHRcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUSB8XG4rXHRcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdH1cbiBcbiBcdC8qIDg4RTYzNDEgZGV2aWNlcyBkZWZhdWx0IHRvIHRpbWVzdGFtcGluZyBhdCB0aGUgUEhZLCBidXQgdGhpcyBoYXNcbiBcdCAqIGEgaGFyZHdhcmUgaXNzdWUgdGhhdCByZXN1bHRzIGluIHVucmVsaWFibGUgdGltZXN0YW1wcy4gRm9yY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbmluZGV4IGMzNTk4MjFkNWE2ZWFhLi5jMjVmNTM5MjNlNzY4OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG5AQCAtNjgsNiArNjgsMjAgQEBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuKy8qIEFycml2YWwgVGltZSBTdGFtcCBNb2RlIChBcnJUU01vZGUpLCBDRkcyIGJpdHMgWzE1OjhdOiBjb25maWd1cmVzIGhvdyB0aGVcbisgKiBzd2l0Y2ggZW1iZWRzIHRoZSBhcnJpdmFsIHRpbWUgc3RhbXAgKFBUUEFycjBUaW1lKSBpbnRvIGVuYWJsZWQgUFRQIGV2ZW50XG4rICogZnJhbWVzLlxuKyAqICAgMHgwMCAgICAgICAgZnJhbWUgbW9kaWZpY2F0aW9uIGRpc2FibGVkICh0aW1lIHN0YW1wIHJlYWQgZnJvbSByZWdpc3RlcnMpXG4rICogICAweDAxICAgICAgICBhcHBlbmQgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGF0IHRoZSBlbmQgb2YgdGhlIGZyYW1lLFxuKyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xuKyAqICAgMHgwNC4uMHhFRiAgb3ZlcndyaXRlIHRoZSA0LWJ5dGUgdGltZSBzdGFtcCBpbiBwbGFjZSwgdGhhdCBtYW55IGJ5dGVzIHBhc3RcbisgKiAgICAgICAgICAgICAgIHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIsIHdpdGhvdXQgZ3Jvd2luZyB0aGUgZnJhbWVcbisgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxuKyAqICAgICAgICAgICAgICAgYnl0ZXMgb2YgdGhlIGhlYWRlcilcbisgKiAgIG90aGVycyAgICAgIHJlc2VydmVkXG4rICovXG4rI2RlZmluZSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORFx0XHQweDAxXG4rXG4gLyogT2Zmc2V0IDB4MDM6IFBUUCBMRUQgQ29uZmlndXJhdGlvbiAqL1xuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0xFRF9DRkdcdDB4MDNcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjAyLjIzOTU1ODg5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTk4OTAxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggUFRQIFRpbWVzdGFtcCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhZGRzIGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wIHN1cHBvcnQgZm9yIFBUUCBmcmFtZXMgb24gTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLiBJdCdzIHRvdWNoaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyB3aXRoaW4gdGhlIGBtdjg4ZTZ4eHhgIGRyaXZlciDigJMgYGNoaXAuY2AsIGBjaGlwLmhgLCBgaHd0c3RhbXAuY2AsIGBod3RzdGFtcC5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgZW5hYmxpbmcgYGFycl90c19tb2RlYCBmb3IgdGhlIGBNVjg4RTYzNDFgIGFuZCBgTVY4OEU2MzUyYCB2YXJpYW50cyB3aXRoaW4gdGhlIGBtdjg4ZTZ4eHhfdGFibGVgLCBhbG9uZyB3aXRoIHRoZSBuZXcgZnVuY3Rpb25zIGBwYXJzZV9lbWJlZGRlZF90c2AgYW5kIGBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWRgIGZvciBwYXJzaW5nIHRoYXQgdGltZXN0YW1wIGZyb20gdGhlIHJlY2VpdmVkIHNrYi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGhvdyB0ZXN0YWJsZSBpcyB0aGlzPyBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZSwgb2J2aW91c2x5IHRpZWQgdG8gYSBEU0Egc3dpdGNoIGRyaXZlci4gRFNBIHN3aXRjaGVzIGFyZSB0eXBpY2FsbHkgcGh5c2ljYWwgaGFyZHdhcmUuIE15IGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiBJIGFjdHVhbGx5ICp1c2UqIHRoaXMgY29kZSB3aXRob3V0IHBoeXNpY2FsbHkgaGF2aW5nIGFuIDg4RTZ4eHggc3dpdGNoPyBJcyB0aGVyZSBldmVuIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoZSBgbXY4OGU2eHh4YCB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIHRlc3Rpbmc/XG5cbkkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0LiBHZW5lcmFsbHksIERTQSBzd2l0Y2hlcyBjb21tdW5pY2F0ZSB2aWEgTURJTywgd2hpY2ggbWVhbnMgdGhpcyBwcm9iYWJseSBkZXBlbmRzIG9uIHNwZWNpZmljIGhhcmR3YXJlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGhpbnRzIG9mIGVtdWxhdGlvbiBvciBpZiB0aGlzIGRyaXZlciBpcyBzdHJpY3RseSBkZXNpZ25lZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLiBMZXQncyBzdGFydCB3aXRoIGEga2VybmVsIHNlYXJjaCBmb3IgYG12ODhlNnh4eGAgdG8gbG9vayBmb3IgYW55dGhpbmcgdGhhdCBwb2ludHMgdG93YXJkcyB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IG9yIGVtdWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjA3Ljg1OTQ1MTE3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzIyMTM4MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDA2OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NzM9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NzU6c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MjE9b2JqLXlcXHRcXHRcXHRcXHQrPSBtaWNyb2NoaXAvXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XFx0XFx0XFx0XFx0Kz0gbXY4OGU2eHh4L1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVxcdFxcdFxcdFxcdCs9IG14bDg2Mnh4L1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTUtICpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC03LSAqIENvcHlyaWdodCAoYykgMjAwOCBNYXJ2ZWxsIFNlbWljb25kdWN0b3JcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWCkgKz0gbXY4OGU2eHh4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjM6bXY4OGU2eHh4LW9ianMgOj0gY2hpcC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICs9IGRldmxpbmsub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV9hdHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxX3Z0dS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX2F2Yi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX3NjcmF0Y2gub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gaHd0c3RhbXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICs9IGxlZHMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYxODUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzNTIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzOXgub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgKz0gcGh5Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICs9IHBvcnQub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgKz0gcG9ydF9oaWRkZW4ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gcHRwLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICs9IHNlcmRlcy5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyArPSBzbWkub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgKz0gc3dpdGNoZGV2Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICs9IHRjZmxvd2VyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICs9IHRjYW0ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUwOnN0YXRpYyB2b2lkIGFzc2VydF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTg6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0OlxcdGVyciA9IG12ODhlNnh4eF9zbWlfcmVhZChjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0OmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA6aW50IG12ODhlNnh4eF93YWl0X21hc2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MS1cXHRcXHRcXHR1MTYgbWFzaywgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMi1cXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcXHUwMDNjIDIpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDM6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTA0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE2OlxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNzppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI4LVxcdFxcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMwOlxcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMxLVxcdFxcdFxcdFxcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzQ6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM4LVxcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzk6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0MC1cXHRpZiAoIW1kaW9fYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0Ny17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ4OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0OS1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTY6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU3LVxcdHVuc2lnbmVkIGludCBuID0gZC1cXHUwMDNlaHdpcnE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYyOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcyOlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODk6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZjdGwxKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXFx0XFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTEtXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkyOlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5My11bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTk0OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjAzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNDpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA2OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA4OlxcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE1OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjIwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMS1cXHR1MTYgbWFzayA9IEdFTk1BU0soY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjU6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzYtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzgtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXAgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQxOlxcdC5uYW1lXFx0XFx0XFx0PSBcXFwibXY4OGU2eHh4LWcxXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDI6XFx0LmlycV9tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlxcdC5pcnFfdW5tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XFx0LmlycV9idXNfbG9ja1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDU6XFx0LmlycV9idXNfc3luY191bmxvY2tcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ni19O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDg6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ5LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXJxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUxLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNTI6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cXHUwMDNlaG9zdF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYyOlxcdC5tYXBcXHQ9IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjMtXFx0LnhsYXRlXFx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjYtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjcxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MjpcXHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXFx1MDAyNm1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3My1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjc0OlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4NDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTM6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTQ6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDQtXFx0XFx0TlVMTCwgY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNTpcXHRcXHRcXHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDYtXFx0aWYgKCFjaGlwLVxcdTAwM2VnMV9pcnEuZG9tYWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzExLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMjpcXHRjaGlwLVxcdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTMtXFx0Y2hpcC1cXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTU6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjE6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNS1cXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMy1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzM0OlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzUzOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYzLVxcdHNucHJpbnRmKGNoaXAtXFx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cXHUwMDNlaXJxX25hbWUpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NDpcXHRcXHQgXFxcIm12ODhlNnh4eC0lc1xcXCIsIGRldl9uYW1lKGNoaXAtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjY6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY3LVxcdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXFx1MDAzZWlycSwgTlVMTCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjg6XFx0XFx0XFx0XFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY5LVxcdFxcdFxcdFxcdCAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3MC1cXHRcXHRcXHRcXHQgICBjaGlwLVxcdTAwM2VpcnFfbmFtZSwgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcxOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzItXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzM6XFx0XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3OS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MTpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgzOlxcdG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTM6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTctXFx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcXHUwMDI2Y2hpcC1cXHUwMDNlaXJxX3BvbGxfd29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTg6XFx0XFx0XFx0XFx0ICBtdjg4ZTZ4eHhfaXJxX3BvbGwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTY6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTc6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDIwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIxLVxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MjpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0My1cXHRcXHRcXHRcXHQgICAgaW50IGxpbmssIGludCBzcGVlZCwgaW50IGR1cGxleCwgaW50IHBhdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ2OTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3MC1yZXN0b3JlX2xpbms6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDg0OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkyLVxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VmYW1pbHkgPT0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MzpcXHRcXHRyZXR1cm4gbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk1OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTYtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA2PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNjpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIzOlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTI0LVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MzU6c3RhdGljIHZvaWQgbXY4OGU2MTg1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0OTpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NTAtXFx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVxcdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2NS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY2OlxcdGlmIChjbW9kZSBcXHUwMDNjIEFSUkFZX1NJWkUobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3OlxcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY4OlxcdFxcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY5LVxcdGVsc2UgaWYgKGNtb2RlID09IE1WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9SR01JSSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3NDptdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4Mi1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjIzOnN0YXRpYyB2b2lkIG12ODhlNjI1MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNjpcXHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI3LVxcdFxcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMjpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzctXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM4OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0NDpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0OTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTctXFx0dmFsID0gcmVnIFxcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1ODpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjYyOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ni1cXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Njc6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjczLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3NDpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODAtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgxOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk2LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTc6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzAwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwMTpzdGF0aWMgdm9pZCBtdjg4ZTYzMnhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDctXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzA4OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE5LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjA6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyNDpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjktXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMwOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ny1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTEtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUyOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2ODpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjktXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAzOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwNC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTI6XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ5LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTA6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MjpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUzLVxcdGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NDpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU2OlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU3LVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04NjU9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY2Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjctXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjktXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NzA6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MS1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODgwOnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4MS1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODMtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODQ6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4NS1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5NC1cXHQgICAgY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk1OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTYtXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTElOS19GT1JDRURfRE9XTik7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk4OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwNS1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDgtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDk6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMC1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTM6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XFx0aWYgKG1vZGUgIT0gTUxPX0FOX1BIWSB8fCAhbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIyLWVycl91bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIzOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyOC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjk6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzAtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzItXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzNC1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDM6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0Ny1cXHQgICAgICBjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0ODpcXHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXFx1MDAyNlxcdTAwMjYgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoY2hpcCwgcG9ydCkpKSlcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsIExJTktfVU5GT1JDRUQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTE6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MDguMTMxNjcyMDI3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU3NjA3OTAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hcnZlbGwgODhFNnh4eCBTd2l0Y2ggRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoIGRyaXZlciBpcyB0ZXN0YWJsZSB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBRRU1VIGVtdWxhdGlvbiBvciBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciB0aGUgODhFNnh4eCBzZXJpZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgUUVNVSBzb3VyY2UgY29kZSwgbWF5YmUgc2VhcmNoIGZvciBcIm12ODhlNixcIiBvciBzZWUgaWYgSSBjYW4gZXZlbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhpbiBzeXprYWxsZXIuXG5cbkhtbSwgc3l6a2FsbGVyIGl0c2VsZiBkb2Vzbid0IGhhdmUgcGh5c2ljYWwgaGFyZHdhcmUsIG9idmlvdXNseS4gQnV0IHNvbWV0aW1lcyBpdCBjYW4gcHJvYmUgZHJpdmVycywgZXNwZWNpYWxseSBpZiB0aGV5IHVzZSB0aGluZ3MgbGlrZSBwbGF0Zm9ybSBkZXZpY2VzLCBvciBhcmUgaW5zdGFudGlhdGVkIHRocm91Z2ggbmV0bGluayBvciBzeXNmcy4gV2FpdCwgRFNBIHN3aXRjaGVzLCBhcmVuJ3QgdGhleSB1c3VhbGx5IGluc3RhbnRpYXRlZCB0aHJvdWdoIGRldmljZSB0cmVlIG9yIHBsYXRmb3JtIGRhdGE/IFNvLCBjYW4gSSBpbnN0YW50aWF0ZSBpdCB2aWEgZGV2aWNlIHRyZWUgaW4gc3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24ndCBnZW5lcmFsbHkgbW9kaWZ5IHRoZSBkZXZpY2UgdHJlZSBkeW5hbWljYWxseSB1bmxlc3MgdGhlcmUncyBhIHBzZXVkby1kZXZpY2Ugb3Igb3ZlcmxheSBtZWNoYW5pc20gaW52b2x2ZWQsIGJ1dCBJIGtub3cgaXQgKmRvZXMqIGhhdmUgc29tZSBkZXZpY2UgdHJlZSBvdmVybGF5IHN1cHBvcnQsIG9yIG1heWJlIGl0IGp1c3QgY2FuJ3QgcmVhY2ggdGhpcyBwYXJ0aWN1bGFyIGRldmljZS5cblxuSG9sZCBvbiBhIHNlY29uZCwgbG9vayBhdCB0aGlzISBTeXprYWxsZXIgKmZvdW5kKiBhIHBhdGNoIGFuZCBhcHBsaWVkIGl0ISBUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBTbywgdGhhdCBzdWdnZXN0cyBzeXprYWxsZXIgaXMgZWl0aGVyIGFjdGl2ZWx5IHRlc3RpbmcgaXQgb3IgaXQncyByZXZpZXdpbmcgYSBwYXRjaCBzdWJtaXR0ZWQgdG8gYSBtYWlsaW5nIGxpc3QuXG5cbkJ1dCwgYmFzZWQgb24gdGhlIHByb21wdCwgaXQgbG9va3MgbGlrZSB0aGlzIGNvZGUgaXMgZm9yIHBhdGhzIHRoYXQgY2FuJ3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBJJ20gc3VwcG9zZWQgdG8gdXNlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgaWYgaXQgY2FuIGJlIGV4ZWN1dGVkLiBUaGVuIEkgd291bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgdGhlIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2gsIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCBpbiB0aGUga2VybmVsIG9yIFFFTVUsIGl0J3MgcHJvYmFibHkgaW1wb3NzaWJsZSB0byByZWFjaC4gU28gSSdkIGJldHRlciBkb3VibGUgY2hlY2sgaWYgdGhlcmUncyAqYW55KiBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG12ODhlNnh4eCB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTMyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjE1LjcwNzc1MzIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzkxMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwMDU1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICs9IG12ODhlNnh4eC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyArPSBkZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDFfYXR1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV92dHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9hdmIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9zY3JhdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IGh3dHN0YW1wLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICs9IHBjcy02MTg1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICs9IHBjcy02MzUyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICs9IHBjcy02Mzl4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICs9IHBoeS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyArPSBwb3J0Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICs9IHBvcnRfaGlkZGVuLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IHB0cC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyArPSBzZXJkZXMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgKz0gc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICs9IHN3aXRjaGRldi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyArPSB0Y2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyArPSB0Y2FtLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MDpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA6XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEtXFx0XFx0XFx0dTE2IG1hc2ssIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDItXFx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXFx1MDAzYyAyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAzOlxcdFxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjc6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzMDpcXHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMS1cXHRcXHRcXHRcXHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM0OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzY6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOC1cXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM5OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXFx0aWYgKCFtZGlvX2J1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0ODpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDktXFx0dW5zaWduZWQgaW50IG4gPSBkLVxcdTAwM2Vod2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU2OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ny1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MjpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4ODpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg5OlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2Y3RsMSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkxLVxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTMtdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5NDpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDQ6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwODpcXHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTE6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyMDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjEtXFx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzI6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM2LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzc6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcXHQubmFtZVxcdFxcdFxcdD0gXFxcIm12ODhlNnh4eC1nMVxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlxcdC5pcnFfbWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MzpcXHQuaXJxX3VubWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ1OlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OS1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUyOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXFx1MDAzZWhvc3RfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MjpcXHQubWFwXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYzLVxcdC54bGF0ZVxcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY2LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzI6XFx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3NDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MjpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk0OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA0LVxcdFxcdE5VTEwsIGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDU6XFx0XFx0XFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA2LVxcdGlmICghY2hpcC1cXHUwMDNlZzFfaXJxLmRvbWFpbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTI6XFx0Y2hpcC1cXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVxcdGNoaXAtXFx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2bWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIxOlxcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjUtXFx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjY6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzNDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MzpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2My1cXHRzbnByaW50ZihjaGlwLVxcdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXFx1MDAzZWlycV9uYW1lKSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjQ6XFx0XFx0IFxcXCJtdjg4ZTZ4eHgtJXNcXFwiLCBkZXZfbmFtZShjaGlwLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY2OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ny1cXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVxcdTAwM2VpcnEsIE5VTEwsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY4OlxcdFxcdFxcdFxcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cXHRcXHRcXHRcXHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzAtXFx0XFx0XFx0XFx0ICAgY2hpcC1cXHUwMDNlaXJxX25hbWUsIGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcyLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzczOlxcdFxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MzpcXHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkzOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk3LVxcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZWlycV9wb2xsX3dvcmssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk4OlxcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDEwOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2OlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE3OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQyMDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMS1cXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDI6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDMtXFx0XFx0XFx0XFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzAtcmVzdG9yZV9saW5rOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NzpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4NDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Mi1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTM6XFx0XFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNj1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTY6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMzpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyNC1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM1OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDk6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTUwLVxcdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcXHRpZiAoY21vZGUgXFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcXHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2ODpcXHRcXHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OS1cXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgxOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMzpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY6XFx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNy1cXHRcXHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzI6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDQ6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3LVxcdHZhbCA9IHJlZyBcXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjYtXFx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzQ6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgwLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk3OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDE6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzIwOlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjQ6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI5LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczMDpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDY6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUxLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njg6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY5LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODEyOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1My1cXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTQ6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NjpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ny1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY1PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2Njptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY3LVxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY5LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODcwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzEtXFx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3MgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg4MDpzdGF0aWMgaW50IG12ODhlNnh4eF9tYWNfcHJlcGFyZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODEtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgzLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODg0OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODUtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTQtXFx0ICAgIGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluaykge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NTpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk2LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5ODpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwNDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDUtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA4LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTAtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTEzOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTE1OlxcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTY6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMi1lcnJfdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkyMzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMwLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMyLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMzOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzQtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDItXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQzOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDctXFx0ICAgICAgY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uaW50ZXJmYWNlICE9IGludGVyZmFjZSkgfHxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDg6XFx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFxcdTAwMjZcXHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ5LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTUxOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTg6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTU5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk2Mi1cXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk2MzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTY0OlxcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTY1LVxcdGludCBwb3J0ID0gZHAtXFx1MDAzZWluZGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk3MDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTcxLVxcdC8qIEZvcmNlIHRoZSBsaW5rIGRvd24gaWYgd2Uga25vdyB0aGUgcG9ydCBtYXkgbm90IGJlIGF1dG9tYXRpY2FsbHlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk3My1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NzQ6XFx0aWYgKCghbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoY2hpcCwgcG9ydCkgfHxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MTUuNzY5MTUwMjA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyODQ4NDk3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpczogbXY4OGU2eHh4IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG12ODhlNnh4eGAgZHJpdmVyLCB3aGljaCB1c2VzIE1ESU8gZm9yIGNvbW11bmljYXRpb24sIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBJIGtub3cgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGRlZGljYXRlZCBNRElPIGZ1enplciBsaWtlIGBzeXpfbWRpb2AgZGlyZWN0bHksIGJ1dCBzb21ldGltZXMgaXQgY2FuIGluc3RhbnRpYXRlIHRoaW5ncyB0aHJvdWdoIGRldmljZSB0cmVlIGlmIG92ZXJsYXlzIGFyZSBhbiBvcHRpb24sIG9yIG1heWJlIGV2ZW4gZnV6eiB0aGUgbmV0bGluayBpbnRlcmZhY2UgdG8gRFNBLiBCdXQgdGhlIG1vcmUgSSB0aGluayBhYm91dCBpdCwgdGhlIGRyaXZlciB3b24ndCBldmVuICpwcm9iZSogaWYgdGhlIGhhcmR3YXJlIGlzbid0IHByZXNlbnQuIEFuZCBpZiBpdCBkb2Vzbid0IHByb2JlLCB0aGUgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGUgTWFydmVsbCA4OEU2eHh4IGluIFFFTVUuIEEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIG15IHN1c3BpY2lvbjogdGhlcmUncyBub3RoaW5nIG9idmlvdXMuIFN5emthbGxlciBpcyBsaWtlbHkgYmxvY2tlZC4gSSBoYXZlIHRvIGFjY2VwdCB0aGUgbGltaXRhdGlvbnMgZm9yIHRlc3RpbmcgdGhpcyBraW5kIG9mIGhhcmR3YXJlLiBJdCBpcyBwcm9iYWJseSB1bnJlYWNoYWJsZS5cblxuV2FpdCwgdGhlIHByb21wdCByZW1pbmRzIG1lIHRoYXQgdGhlIHRhcmdldCBjb2RlIG5lZWRzIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIERTQSBkcml2ZXJzIGFyZSBmb3IgcGh5c2ljYWwgc3dpdGNoZXMsIHNvIGl0J3MgYSBuby1nbyBmb3IgcGxhaW4gZW11bGF0aW9uLiBJIHN0YXJ0IHRvIHdvbmRlciBpZiB0aGVyZSdzIGEgbW9jayBvciBkdW1teSBEU0EgZHJpdmVyLCBvciBzb21lIHdheSB0byBwcm9iZSBgbXY4OGU2eHh4YCB0aHJvdWdoIGEgc29mdHdhcmUgTURJTyBidXMuIEkgZm91bmQgYGRzYV9sb29wYCwgd2hpY2ggaXMgYSBtb2NrIERTQSBkcml2ZXIsIGJ1dCBub3QgZm9yIHRoZSBzcGVjaWZpYyB0YXJnZXQuIFRoZSBzeXprYWxsZXIgZG9lcyBub3QgaGF2ZSBhIGZha2UgTURJTyBidXMgZnV6emVyIGVpdGhlci5cblxuSSBjb25zaWRlciBpZiB0aGUgdGFyZ2V0IGlzIGVuYWJsZWQgaW4gdGhlIGBkZWZjb25maWdgIG9yIHN5emthbGxlciBjb25maWcsIHNpbmNlIHN5emthbGxlciBvZnRlbiBlbmFibGVzIGEgbG90IG9mIHRoaW5ncy4gQnV0IGlmIHRoZSBoYXJkd2FyZSBpc24ndCBwcmVzZW50LCB0aGUgZHJpdmVyIHN0aWxsIHdvbid0IHByb2JlLlxuXG5UaGVuIEkgZ2V0IGEgZ2xpbW1lciBvZiBob3BlOiB3aGF0IGlmIHRoZSBwYXRjaCB0b3VjaGVzIGBtdjg4ZTZ4eHhfZ2V0X3J4dHNfZW1iZWRkZWRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmtgPyBUaGlzIGlzIGEgd29ya3F1ZXVlLiBPa2F5LCBidXQgaWYgdGhlIGRldmljZSBuZXZlciBwcm9iZXMsIHRoaXMgd29ya3F1ZXVlIGlzIG5ldmVyIHF1ZXVlZCwgc28gaXQncyBzdGlsbCB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBJdCdzIGEgZGVhZCBlbmQuXG5cbkkgZG8gYSBmaW5hbCBjaGVjaywgdHJ5aW5nIHRvIHJlbWVtYmVyIGlmIHRoZXJlJ3MgKmFueSogcG9zc2libGUgd2F5IHRvIGZvcmNlLXByb2JlIGBtdjg4ZTZ4eHhgIGluIFFFTVUsIG1heWJlIGJ5IGNyZWF0aW5nIGEgcGxhdGZvcm0gZGV2aWNlLiBCdXQgdWx0aW1hdGVseSBJJ20gb3V0IG9mIGx1Y2suIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGFuIE1ESU8gZHJpdmVyLiBObyBkaWNlLiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDQxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjI2LjA1NDAwMjI5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODQyODc5NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX21kaW9fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzoyNi4xMTI0MzcyOTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY3Nzk0NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIEhlcmUncyBteSBhdHRlbXB0IHRvIHN1bW1hcml6ZSB0aGUgcHJvbXB0J3MgaW5zdHJ1Y3Rpb25zLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MgYXNzdW1pbmcgZXhwZXJ0aXNlIGluIHRoZSBmaWVsZDpcblxuKipBc3Nlc3NpbmcgdGhlIFRhc2s6IEEgTWV0YS1Db2duaXRpdmUgTG9vcCoqXG5cblJpZ2h0LCBsZXQncyB1bnBhY2sgdGhpcy4gVGhlIHJlcXVlc3QgZXNzZW50aWFsbHkgaGFuZHMgbWUgYSB0ZXh0IHNuaXBwZXQgYW5kIGFza3MgbWUgdG8gZGlzdGlsbCBpdHMgZXNzZW5jZSwgbm90IGp1c3QgaW50byBhIHNpbXBsZSBzdW1tYXJ5LCBidXQgaW50byBhIHNpbXVsYXRlZCB0aG91Z2h0IHByb2Nlc3MuIFRoZSBrZXkgaXMgaW4gdGhlIGZyYW1pbmc6IEknbSB0byBjaGFubmVsIHRoZSBpbnRlcm5hbCBtb25vbG9ndWUgKmFzIGlmKiB0aGUgdGhvdWdodHMgd2VyZSBteSBvd24uIFRoaXMgaXNuJ3QganVzdCByZWd1cmdpdGF0aW9uOyBpdCdzIGludGVycHJldGl2ZSBzaW11bGF0aW9uLiBJIG5lZWQgdG8gaW50ZXJuYWxpemUgdGhlIHRleHQncyBjb3JlIGlkZWFzLCBhc3Nlc3MgdGhlIGltcGxpY2l0IGNvbm5lY3Rpb25zLCBhbmQgdGhlbiBhcnRpY3VsYXRlIHRoYXQgdW5kZXJzdGFuZGluZyBhcyBhIHN0cmVhbS1vZi1jb25zY2lvdXNuZXNzLCAqZXhwZXJ0KiBsZXZlbCB0aG91Z2h0LiBUaGUgbGV2ZWwgb2YgY29tcGxleGl0eSB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIHByb3ZpZGVkIHNvdXJjZSBhbmQgaXRzIGNvbnRleHR1YWwgcmVsYXRpb24gdG8gbXkgZXhwZXJ0aXNlLiBTbywgdGhlIG91dHB1dCBpc24ndCBzaW1wbHkgYSBwYXJhcGhyYXNlLCBpdCdzIGEgcmUtaW1hZ2luaW5nIG9mIHRoZSBpbmZvcm1hdGlvbiBhcyBhbiBpbnRlcm5hbCwgcmVhc29uZWQsIHJlZmxlY3RpdmUgcHJvY2VzcywgZml0IGZvciBhIHN1YmplY3QgbWF0dGVyIGV4cGVydC4gVGhlICdleHBlcnQnIGZhY2V0IHJlcXVpcmVzIGEgY2VydGFpbiBsZXZlbCBvZiBkZXB0aCwgbnVhbmNlIGFuZCBhYmlsaXR5IHRvIGluZmVyIGltcGxpY2F0aW9ucyBhbmQgZW5nYWdlIGluIGNyaXRpY2FsIHRoaW5raW5nLiBUaGUgJ2Z1bHNvbWUnIHJlcXVpcmVtZW50IHNldHMgYSBjZXJ0YWluIGV4cGVjdGVkIGxldmVsIG9mIGRldGFpbCwgc28gdGhhdCBpcyBhbm90aGVyIHBvaW50IHRvIHJlbWVtYmVyLiBUaGUgcHJvbXB0J3Mgb3BlbmluZyBwaHJhc2Ug4oCTIOKAnExldCdzIHNlZSBob3cgaXQgcmVnaXN0ZXJz4oCdIOKAkyBpcyBpbnRlcmVzdGluZy4gSXQgaW5kaWNhdGVzIGEgZGVncmVlIG9mIHNlbGYtYXNzZXNzbWVudCBpcyBrZXkuIEknbSBub3QganVzdCAqZG9pbmcqIHRoZSBzdW1tYXJ5LCBJJ20gcmVmbGVjdGluZyBvbiAqaG93KiB0aGF0IHN1bW1hcnkgaXMgZm9ybWVkIGFuZCBjb252ZXllZC4gVGhpcyBkZW1hbmRzIGEgcmVjdXJzaXZlLCBtZXRhLWNvZ25pdGl2ZSBhcHByb2FjaCwgb3IgYW4gYXdhcmVuZXNzIG9mIG15IG93biBjb2duaXRpdmUgcHJvY2Vzc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzcxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MzAuMDgwMjM1NTYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk0MjQ3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfLipkcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyND1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MzU6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjMwLjEzNjE4NDc0OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc2NDcyNzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGhpdHRpbmcgbWUgYXMgYW4gTURJTyBkcml2ZXIg4oCTIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBxdWVzdGlvbiBpcywgaG93IGRvIEkgYWN0dWFsbHkgKnByb2JlKiB0aGlzIHRoaW5nIGluIGEgU3l6a2FsbGVyIGNvbnRleHQ/IFRvIHByb2JlIGFuIE1ESU8gZHJpdmVyLCBJIG5lZWQgYm90aCBhbiBNRElPIGJ1cyBhbmQgYSBkZXZpY2UgKm9uKiB0aGF0IGJ1cywgcmlnaHQ/IEFuZCwgY3J1Y2lhbGx5LCB0aGUgZGV2aWNlIG5lZWRzIHRvIGhhdmUgYSBtYXRjaGluZyBJRC5cblxuTm93LCBjYW4gU3l6a2FsbGVyICpjcmVhdGUqIGFuIE1ESU8gZGV2aWNlPyBJIGtub3cgaXQgY2FuIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzLCBhbmQgaXQgY2FuIGRvIEkyQyBkZXZpY2VzLCBwZXJoYXBzIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYGkyYy1zdHViYCBvciBzaW1pbGFyLiBCdXQgTURJTz8gVGhhdCdzIHRoZSBydWIuIElzIHRoZXJlIGFueXRoaW5nIGxpa2UgYG1kaW8tbW9ja2Agb3IgYG1kaW8tZ3Bpb2AgYXZhaWxhYmxlPyBJIG5lZWQgdG8gZXhwbG9yZSB0aGUgb3B0aW9ucy5cblxuRXZlbiBpZiBJICpjYW4qIGNyZWF0ZSBhbiBNRElPIGRldmljZSwgdGhlcmUncyBhbm90aGVyIGh1cmRsZS4gRG9lcyBTeXprYWxsZXIgaGF2ZSB0aGUgc21hcnRzIHRvIGVtdWxhdGUgdGhlIE1hcnZlbGwgc3dpdGNoIHJlZ2lzdGVycyB0aGF0IHRoaXMgZHJpdmVyJ3MgZ29pbmcgdG8gYmUgbG9va2luZyBhdD8gVGhlIGRyaXZlcidzIGdvaW5nIHRvIHJlYWQgdGhlIHN3aXRjaCBJRCBmcm9tIHRob3NlIHJlZ2lzdGVycyBkdXJpbmcgdGhlIHByb2JlLiBJZiB0aGF0IElEIGRvZXNuJ3Qgaml2ZSB3aXRoIHdoYXQgaXQgZXhwZWN0cywgcHJvYmUncyBnb2luZyB0byBmYWlsLiBUaGF0J3MgYSBkZWFsIGJyZWFrZXIuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCBleGFtaW5lIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgyNDcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6MzQuOTEyNjYwNDI5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTExMzU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdjg4ZTZ4eHhfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzMxND1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobXY4OGU2eHh4X3BtX29wcywgbXY4OGU2eHh4X3N1c3BlbmQsIG12ODhlNnh4eF9yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMxNjpzdGF0aWMgaW50IG12ODhlNnh4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxNy17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03NTI0PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXY4OGU2eHh4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NTI1OlxcdC5wcm9iZVxcdD0gbXY4OGU2eHh4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MjYtXFx0LnJlbW92ZSA9IG12ODhlNnh4eF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjM0Ljk2Nzc4MDA5NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzAzMjk0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBgbXY4OGU2eHh4X3Byb2JlYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB3aGF0IHRoaXMgYG12ODhlNnh4eF9wcm9iZWAgZnVuY3Rpb24gaXMgZG9pbmcuIExldCdzIGJyZWFrIGRvd24gaXRzIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLiBJIGV4cGVjdCBpdCdzIHRoZSBjb3JlIG9mIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlc291cmNlIGFsbG9jYXRpb24sIGhhcmR3YXJlIHByb2JpbmcgYW5kIGNvbmZpZ3VyYXRpb24sIGRyaXZlciByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLCBhbmQgdGhlIG92ZXJhbGwgc2V0dXAgb2YgdGhlIHN3aXRjaC4gTXkgZm9jdXMgd2lsbCBiZSB0byB1bmRlcnN0YW5kIGl0cyBvdmVyYWxsIGxvZ2ljIGZsb3csIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIHdoYXQgbWVjaGFuaXNtcyBpdCBlbXBsb3lzIGZvciByZWNvdmVyeSBvciBncmFjZWZ1bCBkZWdyYWRhdGlvbi4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGdyYXNwIGl0cyByb2xlLCBnaXZlbiBteSBleHBlcmllbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTAxMCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjM4LjI3MTA3NzUzNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDMzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzMxNixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjczMTY6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbjczMTc6XFx0e1xcbjczMTg6XFx0XFx0c3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuNzMxOTpcXHRcXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcXG43MzIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuNzMyMTpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LVxcdTAwM2VvZl9ub2RlO1xcbjczMjI6XFx0XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwO1xcbjczMjM6XFx0XFx0aW50IHBvcnQ7XFxuNzMyNDpcXHRcXHRpbnQgZXJyO1xcbjczMjU6XFx0XFxuNzMyNjpcXHRcXHRpZiAoIW5wIFxcdTAwMjZcXHUwMDI2ICFwZGF0YSlcXG43MzI3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjczMjg6XFx0XFxuNzMyOTpcXHRcXHRpZiAobnApXFxuNzMzMDpcXHRcXHRcXHRjb21wYXRfaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbjczMzE6XFx0XFxuNzMzMjpcXHRcXHRpZiAocGRhdGEpIHtcXG43MzMzOlxcdFxcdFxcdGNvbXBhdF9pbmZvID0gcGRhdGFfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuNzMzNDpcXHRcXG43MzM1OlxcdFxcdFxcdGlmICghcGRhdGEtXFx1MDAzZW5ldGRldilcXG43MzM2OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjczMzc6XFx0XFxuNzMzODpcXHRcXHRcXHRmb3IgKHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgRFNBX01BWF9QT1JUUzsgcG9ydCsrKSB7XFxuNzMzOTpcXHRcXHRcXHRcXHRpZiAoIShwZGF0YS1cXHUwMDNlZW5hYmxlZF9wb3J0cyBcXHUwMDI2ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQpKSlcXG43MzQwOlxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjczNDE6XFx0XFx0XFx0XFx0aWYgKHN0cmNtcChwZGF0YS1cXHUwMDNlY2QucG9ydF9uYW1lc1twb3J0XSwgXFxcImNwdVxcXCIpKVxcbjczNDI6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNzM0MzpcXHRcXHRcXHRcXHRwZGF0YS1cXHUwMDNlY2QubmV0ZGV2W3BvcnRdID0gXFx1MDAyNnBkYXRhLVxcdTAwM2VuZXRkZXYtXFx1MDAzZWRldjtcXG43MzQ0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjczNDU6XFx0XFx0XFx0fVxcbjczNDY6XFx0XFx0fVxcbjczNDc6XFx0XFxuNzM0ODpcXHRcXHRpZiAoIWNvbXBhdF9pbmZvKVxcbjczNDk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzM1MDpcXHRcXG43MzUxOlxcdFxcdGNoaXAgPSBtdjg4ZTZ4eHhfYWxsb2NfY2hpcChkZXYpO1xcbjczNTI6XFx0XFx0aWYgKCFjaGlwKSB7XFxuNzM1MzpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjczNTQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuNzM1NTpcXHRcXHR9XFxuNzM1NjpcXHRcXG43MzU3OlxcdFxcdGNoaXAtXFx1MDAzZWluZm8gPSBjb21wYXRfaW5mbztcXG43MzU4OlxcdFxcbjczNTk6XFx0XFx0Y2hpcC1cXHUwMDNlcmVzZXQgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsIFxcXCJyZXNldFxcXCIsIEdQSU9EX09VVF9MT1cpO1xcbjczNjA6XFx0XFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VyZXNldCkpIHtcXG43MzYxOlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoY2hpcC1cXHUwMDNlcmVzZXQpO1xcbjczNjI6XFx0XFx0XFx0Z290byBvdXQ7XFxuNzM2MzpcXHRcXHR9XFxuNzM2NDpcXHRcXHRpZiAoY2hpcC1cXHUwMDNlcmVzZXQpXFxuNzM2NTpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTtcXG43MzY2OlxcdFxcbjczNjc6XFx0XFx0LyogRGV0ZWN0IGlmIHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZCBpbiBzaW5nbGUgY2hpcCBhZGRyZXNzaW5nIG1vZGUsXFxuNzM2ODpcXHRcXHQgKiBvdGhlcndpc2UgY29udGludWUgd2l0aCBhZGRyZXNzIHNwZWNpZmljIHNtaSBpbml0L2RldGVjdGlvbi5cXG43MzY5OlxcdFxcdCAqL1xcbjczNzA6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3NpbmdsZV9jaGlwX2RldGVjdChjaGlwLCBtZGlvZGV2KTtcXG43MzcxOlxcdFxcdGlmIChlcnIpIHtcXG43MzcyOlxcdFxcdFxcdGVyciA9IG12ODhlNnh4eF9zbWlfaW5pdChjaGlwLCBtZGlvZGV2LVxcdTAwM2VidXMsIG1kaW9kZXYtXFx1MDAzZWFkZHIpO1xcbjczNzM6XFx0XFx0XFx0aWYgKGVycilcXG43Mzc0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjczNzU6XFx0XFxuNzM3NjpcXHRcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZGV0ZWN0KGNoaXApO1xcbjczNzc6XFx0XFx0XFx0aWYgKGVycilcXG43Mzc4OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjczNzk6XFx0XFx0fVxcbjczODA6XFx0XFxuNzM4MTpcXHRcXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZWRzYV9zdXBwb3J0ID09IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRClcXG43MzgyOlxcdFxcdFxcdGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9IERTQV9UQUdfUFJPVE9fRURTQTtcXG43MzgzOlxcdFxcdGVsc2VcXG43Mzg0OlxcdFxcdFxcdGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9IERTQV9UQUdfUFJPVE9fRFNBO1xcbjczODU6XFx0XFxuNzM4NjpcXHRcXHRtdjg4ZTZ4eHhfcGh5X2luaXQoY2hpcCk7XFxuNzM4NzpcXHRcXG43Mzg4OlxcdFxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9lZXByb20pIHtcXG43Mzg5OlxcdFxcdFxcdGlmIChucClcXG43MzkwOlxcdFxcdFxcdFxcdG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwiZWVwcm9tLWxlbmd0aFxcXCIsXFxuNzM5MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZjaGlwLVxcdTAwM2VlZXByb21fbGVuKTtcXG43MzkyOlxcdFxcdFxcdGVsc2VcXG43MzkzOlxcdFxcdFxcdFxcdGNoaXAtXFx1MDAzZWVlcHJvbV9sZW4gPSBwZGF0YS1cXHUwMDNlZWVwcm9tX2xlbjtcXG43Mzk0OlxcdFxcdH1cXG43Mzk1OlxcdFxcbjczOTY6XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbjczOTc6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3N3aXRjaF9yZXNldChjaGlwKTtcXG43Mzk4OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbjczOTk6XFx0XFx0aWYgKGVycilcXG43NDAwOlxcdFxcdFxcdGdvdG8gb3V0X3BoeTtcXG43NDAxOlxcdFxcbjc0MDI6XFx0XFx0aWYgKG5wKSB7XFxuNzQwMzpcXHRcXHRcXHRjaGlwLVxcdTAwM2VpcnEgPSBvZl9pcnFfZ2V0KG5wLCAwKTtcXG43NDA0OlxcdFxcdFxcdGlmIChjaGlwLVxcdTAwM2VpcnEgPT0gLUVQUk9CRV9ERUZFUikge1xcbjc0MDU6XFx0XFx0XFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaXJxO1xcbjc0MDY6XFx0XFx0XFx0XFx0Z290byBvdXRfcGh5O1xcbjc0MDc6XFx0XFx0XFx0fVxcbjc0MDg6XFx0XFx0fVxcbjc0MDk6XFx0XFxuNzQxMDpcXHRcXHRpZiAocGRhdGEpXFxuNzQxMTpcXHRcXHRcXHRjaGlwLVxcdTAwM2VpcnEgPSBwZGF0YS1cXHUwMDNlaXJxO1xcbjc0MTI6XFx0XFxuNzQxMzpcXHRcXHQvKiBIYXMgdG8gYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgTURJTyBidXMgaXMgY3JlYXRlZCwgYmVjYXVzZVxcbjc0MTQ6XFx0XFx0ICogdGhlIFBIWXMgd2lsbCBsaW5rIHRoZWlyIGludGVycnVwdHMgdG8gdGhlc2UgaW50ZXJydXB0XFxuNzQxNTpcXHRcXHQgKiBjb250cm9sbGVyc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzozOC4yNzEzMjI1MTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NzAyMTgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIG12ODhlNnh4eCBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSdzIGp1bXBpbmcgaW50byBgbXY4OGU2eHh4X2RldGVjdChjaGlwKWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCByb3V0aW5lJ3MgdXAgdG8uIE15IGZpcnN0IGFzc3VtcHRpb24gaXMgdGhhdCBpdCdzIHRoZSBkZXZpY2UgZGV0ZWN0aW9uIGZ1bmN0aW9uLiBJdCdzIGxpa2VseSBwcm9iaW5nIHRoZSBoYXJkd2FyZSwgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIE1hcnZlbGwgc3dpdGNoIHZhcmlhbnQsIGFuZCBwZXJoYXBzIGNvbmZpcm1pbmcgaXRzIHByZXNlbmNlIGFuZCBiYXNpYyBjb25maWd1cmF0aW9uLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtdjg4ZTZ4eHhfZGV0ZWN0KClgIGltcGxlbWVudGF0aW9uIGl0c2VsZiB0byBzZWUgdGhlIGV4YWN0IHByb2Jpbmcgc2VxdWVuY2UsIHdoYXQgcmVnaXN0ZXJzIGl0J3MgY2hlY2tpbmcsIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgY2hpcCByZXZpc2lvbnMgb3IgZmFtaWxpZXMuIEl0J3MgcHJvYmFibHkgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgc3dpdGNoIGRyaXZlciBpbml0aWFsaXphdGlvbi4gSSBleHBlY3QgdG8gZmluZCBzb21lIEkyQyBvciBNRElPIHRyYW5zYWN0aW9uIGNhbGxzIGluIHRoZXJlIGFzIGl0IGNvbW11bmljYXRlcyB0byB0aGUgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc1NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NDEuODE4MzQ2MzQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MjIwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNzIyMDpcXHRcXHQucG9ydF9tc3Rfc3RhdGVfc2V0XFx0PSBtdjg4ZTZ4eHhfcG9ydF9tc3Rfc3RhdGVfc2V0LFxcbjcyMjE6XFx0XFx0LnBvcnRfZmFzdF9hZ2VcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2Zhc3RfYWdlLFxcbjcyMjI6XFx0XFx0LnBvcnRfdmxhbl9mYXN0X2FnZVxcdD0gbXY4OGU2eHh4X3BvcnRfdmxhbl9mYXN0X2FnZSxcXG43MjIzOlxcdFxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG43MjI0OlxcdFxcdC5wb3J0X3ZsYW5fYWRkXFx0XFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2FkZCxcXG43MjI1OlxcdFxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBtdjg4ZTZ4eHhfcG9ydF92bGFuX2RlbCxcXG43MjI2OlxcdFxcdC52bGFuX21zdGlfc2V0XFx0XFx0PSBtdjg4ZTZ4eHhfdmxhbl9tc3RpX3NldCxcXG43MjI3OlxcdFxcdC5wb3J0X2ZkYl9hZGRcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2ZkYl9hZGQsXFxuNzIyODpcXHRcXHQucG9ydF9mZGJfZGVsXFx0XFx0PSBtdjg4ZTZ4eHhfcG9ydF9mZGJfZGVsLFxcbjcyMjk6XFx0XFx0LnBvcnRfZmRiX2R1bXBcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2ZkYl9kdW1wLFxcbjcyMzA6XFx0XFx0LnBvcnRfbWRiX2FkZFxcdFxcdD0gbXY4OGU2eHh4X3BvcnRfbWRiX2FkZCxcXG43MjMxOlxcdFxcdC5wb3J0X21kYl9kZWxcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X21kYl9kZWwsXFxuNzIzMjpcXHRcXHQucG9ydF9taXJyb3JfYWRkXFx0PSBtdjg4ZTZ4eHhfcG9ydF9taXJyb3JfYWRkLFxcbjcyMzM6XFx0XFx0LnBvcnRfbWlycm9yX2RlbFxcdD0gbXY4OGU2eHh4X3BvcnRfbWlycm9yX2RlbCxcXG43MjM0OlxcdFxcdC5jcm9zc2NoaXBfYnJpZGdlX2pvaW5cXHQ9IG12ODhlNnh4eF9jcm9zc2NoaXBfYnJpZGdlX2pvaW4sXFxuNzIzNTpcXHRcXHQuY3Jvc3NjaGlwX2JyaWRnZV9sZWF2ZVxcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9icmlkZ2VfbGVhdmUsXFxuNzIzNjpcXHRcXHQucG9ydF9od3RzdGFtcF9zZXRcXHQ9IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wX3NldCxcXG43MjM3OlxcdFxcdC5wb3J0X2h3dHN0YW1wX2dldFxcdD0gbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXBfZ2V0LFxcbjcyMzg6XFx0XFx0LnBvcnRfdHh0c3RhbXBcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X3R4dHN0YW1wLFxcbjcyMzk6XFx0XFx0LnBvcnRfcnh0c3RhbXBcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wLFxcbjcyNDA6XFx0XFx0LmNsc19mbG93ZXJfYWRkXFx0XFx0PSBtdjg4ZTZ4eHhfY2xzX2Zsb3dlcl9hZGQsXFxuNzI0MTpcXHRcXHQuY2xzX2Zsb3dlcl9kZWwgICAgICAgICA9IG12ODhlNnh4eF9jbHNfZmxvd2VyX2RlbCxcXG43MjQyOlxcdFxcdC5nZXRfdHNfaW5mb1xcdFxcdD0gbXY4OGU2eHh4X2dldF90c19pbmZvLFxcbjcyNDM6XFx0XFx0LmRldmxpbmtfcGFyYW1fZ2V0XFx0PSBtdjg4ZTZ4eHhfZGV2bGlua19wYXJhbV9nZXQsXFxuNzI0NDpcXHRcXHQuZGV2bGlua19wYXJhbV9zZXRcXHQ9IG12ODhlNnh4eF9kZXZsaW5rX3BhcmFtX3NldCxcXG43MjQ1OlxcdFxcdC5kZXZsaW5rX2luZm9fZ2V0XFx0PSBtdjg4ZTZ4eHhfZGV2bGlua19pbmZvX2dldCxcXG43MjQ2OlxcdFxcdC5wb3J0X2xhZ19jaGFuZ2VcXHQ9IG12ODhlNnh4eF9wb3J0X2xhZ19jaGFuZ2UsXFxuNzI0NzpcXHRcXHQucG9ydF9sYWdfam9pblxcdFxcdD0gbXY4OGU2eHh4X3BvcnRfbGFnX2pvaW4sXFxuNzI0ODpcXHRcXHQucG9ydF9sYWdfbGVhdmVcXHRcXHQ9IG12ODhlNnh4eF9wb3J0X2xhZ19sZWF2ZSxcXG43MjQ5OlxcdFxcdC5jcm9zc2NoaXBfbGFnX2NoYW5nZVxcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9sYWdfY2hhbmdlLFxcbjcyNTA6XFx0XFx0LmNyb3NzY2hpcF9sYWdfam9pblxcdD0gbXY4OGU2eHh4X2Nyb3NzY2hpcF9sYWdfam9pbixcXG43MjUxOlxcdFxcdC5jcm9zc2NoaXBfbGFnX2xlYXZlXFx0PSBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2xhZ19sZWF2ZSxcXG43MjUyOlxcdH07XFxuNzI1MzpcXHRcXG43MjU0OlxcdHN0YXRpYyBpbnQgbXY4OGU2eHh4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuNzI1NTpcXHR7XFxuNzI1NjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjaGlwLVxcdTAwM2VkZXY7XFxuNzI1NzpcXHRcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuNzI1ODpcXHRcXG43MjU5OlxcdFxcdGRzID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkcyksIEdGUF9LRVJORUwpO1xcbjcyNjA6XFx0XFx0aWYgKCFkcylcXG43MjYxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjcyNjI6XFx0XFxuNzI2MzpcXHRcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbjcyNjQ6XFx0XFx0ZHMtXFx1MDAzZW51bV9wb3J0cyA9IG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7XFxuNzI2NTpcXHRcXHRkcy1cXHUwMDNlcHJpdiA9IGNoaXA7XFxuNzI2NjpcXHRcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbjcyNjc6XFx0XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZtdjg4ZTZ4eHhfc3dpdGNoX29wcztcXG43MjY4OlxcdFxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2bXY4OGU2eHh4X3BoeWxpbmtfbWFjX29wcztcXG43MjY5OlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhZ2VfdGltZV9jb2VmZjtcXG43MjcwOlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9tYXggPSBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhZ2VfdGltZV9jb2VmZiAqIFU4X01BWDtcXG43MjcxOlxcdFxcbjcyNzI6XFx0XFx0LyogU29tZSBjaGlwcyBzdXBwb3J0IHVwIHRvIDMyLCBidXQgdGhhdCByZXF1aXJlcyBlbmFibGluZyB0aGVcXG43MjczOlxcdFxcdCAqIDUtYml0IHBvcnQgbW9kZSwgd2hpY2ggd2UgZG8gbm90IHN1cHBvcnQuIDY0MGteVzE2IG91Z2h0IHRvXFxuNzI3NDpcXHRcXHQgKiBiZSBlbm91Z2ggZm9yIGFueW9uZS5cXG43Mjc1OlxcdFxcdCAqL1xcbjcyNzY6XFx0XFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gbXY4OGU2eHh4X2hhc19sYWcoY2hpcCkgPyAxNiA6IDA7XFxuNzI3NzpcXHRcXG43Mjc4OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIGRzKTtcXG43Mjc5OlxcdFxcbjcyODA6XFx0XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbjcyODE6XFx0fVxcbjcyODI6XFx0XFxuNzI4MzpcXHRzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfdW5yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbjcyODQ6XFx0e1xcbjcyODU6XFx0XFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKGNoaXAtXFx1MDAzZWRzKTtcXG43Mjg2OlxcdH1cXG43Mjg3OlxcdFxcbjcyODg6XFx0c3RhdGljIGNvbnN0IHZvaWQgKnBkYXRhX2RldmljZV9nZXRfbWF0Y2hfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuNzI4OTpcXHR7XFxuNzI5MDpcXHRcXHRjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzID0gZGV2LVxcdTAwM2Vkcml2ZXItXFx1MDAzZW9mX21hdGNoX3RhYmxlO1xcbjcyOTE6XFx0XFx0Y29uc3Qgc3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gZGV2LVxcdTAwM2VwbGF0Zm9ybV9kYXRhO1xcbjcyOTI6XFx0XFxuNzI5MzpcXHRcXHRmb3IgKDsgbWF0Y2hlcy1cXHUwMDNlbmFtZVswXSB8fCBtYXRjaGVzLVxcdTAwM2V0eXBlWzBdIHx8IG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGVbMF07XFxuNzI5NDpcXHRcXHQgICAgIG1hdGNoZXMrKykge1xcbjcyOTU6XFx0XFx0XFx0aWYgKCFzdHJjbXAocGRhdGEtXFx1MDAzZWNvbXBhdGlibGUsIG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGUpKVxcbjcyOTY6XFx0XFx0XFx0XFx0cmV0dXJuIG1hdGNoZXMtXFx1MDAzZWRhdGE7XFxuNzI5NzpcXHRcXHR9XFxuNzI5ODpcXHRcXHRyZXR1cm4gTlVMTDtcXG43Mjk5OlxcdH1cXG43MzAwOlxcdFxcbjczMDE6XFx0LyogVGhlcmUgaXMgbm8gc3VzcGVuZCB0byBSQU0gc3VwcG9ydCBhdCBEU0EgbGV2ZWwgeWV0LCB0aGUgc3dpdGNoIGNvbmZpZ3VyYXRpb25cXG43MzAyOlxcdCAqIHdvdWxkIGJlIGxvc3QgYWZ0ZXIgYSBwb3dlciBjeWNsZSBzbyBwcmV2ZW50IGl0IHRvIGJlIHN1c3BlbmRlZC5cXG43MzAzOlxcdCAqL1xcbjczMDQ6XFx0c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdjg4ZTZ4eHhfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuNzMwNTpcXHR7XFxuNzMwNjpcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuNzMwNzpcXHR9XFxuNzMwODpcXHRcXG43MzA5OlxcdHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXY4OGU2eHh4X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuNzMxMDpcXHR7XFxuNzMxMTpcXHRcXHRyZXR1cm4gMDtcXG43MzEyOlxcdH1cXG43MzEzOlxcdFxcbjczMTQ6XFx0c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG12ODhlNnh4eF9wbV9vcHMsIG12ODhlNnh4eF9zdXNwZW5kLCBtdjg4ZTZ4eHhfcmVzdW1lKTtcXG43MzE1OlxcdFxcbjczMTY6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbjczMTc6XFx0e1xcbjczMTg6XFx0XFx0c3RydWN0IGRzYV9tdjg4ZTZ4eHhfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuNzMxOTpcXHRcXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NDEuODE4NjAyNDExWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NzQ5NzQxMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIHRoZSBgbXY4OGU2eHh4YCBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHByb2JlIGZ1bmN0aW9uIGFuZCBpdCBuZWVkcyBlaXRoZXIgYSBkZXZpY2UgdHJlZSBub2RlIG9yIHBsYXRmb3JtIGRhdGEuIFN5emthbGxlciBjYW4gaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzLCByaWdodD8gQnV0IGlzIHRoYXQgYSBzdGFuZGFyZCB0aGluZz8gSSBkb24ndCB0aGluayBpdCdzIHRoZSBkZWZhdWx0LiBIYW5nIG9uLCBTeXprYWxsZXIgKmRpZCogYXBwbHkgdGhhdCBwYXRjaC4uLiBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdC5cblxuQnV0IHRoaXMgcHJvbXB0Li4uIGl0J3Mgc2F5aW5nIHRvIGZvY3VzIG9uIHJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgbWVudGlvbnMgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIENhbiBJIGFjdHVhbGx5IHJlYWNoIGBtdjg4ZTZ4eHhgIGluIFFFTVU/IE5vLCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLiBJcyB0aGVyZSBhIG1vY2sgZHJpdmVyIEkgY291bGQgdXNlIHRvIGVtdWxhdGUgaXQ/IE5vcGUuXG5cbkhtbS4uLiBpcyB0aGVyZSBzb21lIGJhY2tkb29yIHdheSB0byBpbnN0YW50aWF0ZSB0aGlzIHRoaW5nPyBDYW4gSSB1c2UgYGkyY2Agb3IgYG1kaW9gIGZyb20gdXNlcnNwYWNlPyBDYW4gdXNlcnNwYWNlIGV2ZW4gY3JlYXRlIGFuIE1ESU8gZGV2aWNlIHZpYSBgc3lzZnNgPyBObywgdGhhdCdzIG5vdCBob3cgaXQgd29ya3MuIFRoZSBNRElPIGJ1cyBkcml2ZXIgdXN1YWxseSBpbnN0YW50aWF0ZXMgdGhlc2UgYmFzZWQgb24gRFQgb3Igc29tZSBzY2FuLiBJdCBzY2FucywgZmluZHMgdGhlIGRldmljZSwgYW5kIHRoZW4gaXQgY3JlYXRlcyB0aGUgZGV2aWNlLlxuXG5CdXQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLi4udGhlIHNjYW4gd29uJ3QgZmluZCBhbnl0aGluZy4gUmlnaHQuIFRoYXQncyBhIHByb2JsZW0uIFdhaXQgYSBtaW51dGUhIFRoZSBgbXY4OGU2eHh4X2RldGVjdGAgZnVuY3Rpb24uIEl0ICpyZWFkcyogdGhlIHN3aXRjaCBJRCBkaXJlY3RseSBmcm9tIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuIElmIGl0IGRvZXNuJ3QgbWF0Y2ggYSB2YWxpZCBJRCwgaXQgZmFpbHMgaW1tZWRpYXRlbHkuIFNvLCBsZXQncyBnbyBjaGVjayBvdXQgdGhpcyBgbXY4OGU2eHh4X2RldGVjdGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIHBpZWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA3OSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjQ4LjQ5MzU3ODE4OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzAwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcwMDA6XFx0XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXFx1MDAzZXByaXY7XFxuNzAwMTpcXHRcXHR1bnNpZ25lZCBpbnQgaWQsIG51bV90eDtcXG43MDAyOlxcdFxcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxuNzAwMzpcXHRcXHRzdHJ1Y3QgZHNhX2xhZyAqbGFnO1xcbjcwMDQ6XFx0XFx0aW50IGksIGVyciwgbnRoO1xcbjcwMDU6XFx0XFx0dTE2IG1hc2tbOF07XFxuNzAwNjpcXHRcXHR1MTYgaXZlYztcXG43MDA3OlxcdFxcbjcwMDg6XFx0XFx0LyogQXNzdW1lIG5vIHBvcnQgaXMgYSBtZW1iZXIgb2YgYW55IExBRy4gKi9cXG43MDA5OlxcdFxcdGl2ZWMgPSBCSVQobXY4OGU2eHh4X251bV9wb3J0cyhjaGlwKSkgLSAxO1xcbjcwMTA6XFx0XFxuNzAxMTpcXHRcXHQvKiBEaXNhYmxlIGFsbCBtYXNrcyBmb3IgcG9ydHMgdGhhdCBfYXJlXyBtZW1iZXJzIG9mIGEgTEFHLiAqL1xcbjcwMTI6XFx0XFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9wb3J0KGRwLCBkcykge1xcbjcwMTM6XFx0XFx0XFx0aWYgKCFkcC1cXHUwMDNlbGFnKVxcbjcwMTQ6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNzAxNTpcXHRcXG43MDE2OlxcdFxcdFxcdGl2ZWMgXFx1MDAyNj0gfkJJVChkcC1cXHUwMDNlaW5kZXgpO1xcbjcwMTc6XFx0XFx0fVxcbjcwMTg6XFx0XFxuNzAxOTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgODsgaSsrKVxcbjcwMjA6XFx0XFx0XFx0bWFza1tpXSA9IGl2ZWM7XFxuNzAyMTpcXHRcXG43MDIyOlxcdFxcdC8qIEVuYWJsZSB0aGUgY29ycmVjdCBzdWJzZXQgb2YgbWFza3MgZm9yIGFsbCBMQUcgcG9ydHMgdGhhdFxcbjcwMjM6XFx0XFx0ICogYXJlIGluIHRoZSBUeCBzZXQuXFxuNzAyNDpcXHRcXHQgKi9cXG43MDI1OlxcdFxcdGRzYV9sYWdzX2ZvcmVhY2hfaWQoaWQsIGRzLVxcdTAwM2Vkc3QpIHtcXG43MDI2OlxcdFxcdFxcdGxhZyA9IGRzYV9sYWdfYnlfaWQoZHMtXFx1MDAzZWRzdCwgaWQpO1xcbjcwMjc6XFx0XFx0XFx0aWYgKCFsYWcpXFxuNzAyODpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG43MDI5OlxcdFxcbjcwMzA6XFx0XFx0XFx0bnVtX3R4ID0gMDtcXG43MDMxOlxcdFxcdFxcdGRzYV9sYWdfZm9yZWFjaF9wb3J0KGRwLCBkcy1cXHUwMDNlZHN0LCBsYWcpIHtcXG43MDMyOlxcdFxcdFxcdFxcdGlmIChkcC1cXHUwMDNlbGFnX3R4X2VuYWJsZWQpXFxuNzAzMzpcXHRcXHRcXHRcXHRcXHRudW1fdHgrKztcXG43MDM0OlxcdFxcdFxcdH1cXG43MDM1OlxcdFxcbjcwMzY6XFx0XFx0XFx0aWYgKCFudW1fdHgpXFxuNzAzNzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG43MDM4OlxcdFxcbjcwMzk6XFx0XFx0XFx0bnRoID0gMDtcXG43MDQwOlxcdFxcdFxcdGRzYV9sYWdfZm9yZWFjaF9wb3J0KGRwLCBkcy1cXHUwMDNlZHN0LCBsYWcpIHtcXG43MDQxOlxcdFxcdFxcdFxcdGlmICghZHAtXFx1MDAzZWxhZ190eF9lbmFibGVkKVxcbjcwNDI6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNzA0MzpcXHRcXG43MDQ0OlxcdFxcdFxcdFxcdGlmIChkcC1cXHUwMDNlZHMgPT0gZHMpXFxuNzA0NTpcXHRcXHRcXHRcXHRcXHRtdjg4ZTZ4eHhfbGFnX3NldF9wb3J0X21hc2sobWFzaywgZHAtXFx1MDAzZWluZGV4LFxcbjcwNDY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIG51bV90eCwgbnRoKTtcXG43MDQ3OlxcdFxcbjcwNDg6XFx0XFx0XFx0XFx0bnRoKys7XFxuNzA0OTpcXHRcXHRcXHR9XFxuNzA1MDpcXHRcXHR9XFxuNzA1MTpcXHRcXG43MDUyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA4OyBpKyspIHtcXG43MDUzOlxcdFxcdFxcdGVyciA9IG12ODhlNnh4eF9nMl90cnVua19tYXNrX3dyaXRlKGNoaXAsIGksIHRydWUsIG1hc2tbaV0pO1xcbjcwNTQ6XFx0XFx0XFx0aWYgKGVycilcXG43MDU1OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuNzA1NjpcXHRcXHR9XFxuNzA1NzpcXHRcXG43MDU4OlxcdFxcdHJldHVybiAwO1xcbjcwNTk6XFx0fVxcbjcwNjA6XFx0XFxuNzA2MTpcXHRzdGF0aWMgaW50IG12ODhlNnh4eF9sYWdfc3luY19tYXNrc19tYXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbjcwNjI6XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGRzYV9sYWcgbGFnKVxcbjcwNjM6XFx0e1xcbjcwNjQ6XFx0XFx0aW50IGVycjtcXG43MDY1OlxcdFxcbjcwNjY6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzKGRzKTtcXG43MDY3OlxcdFxcbjcwNjg6XFx0XFx0aWYgKCFlcnIpXFxuNzA2OTpcXHRcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfbGFnX3N5bmNfbWFwKGRzLCBsYWcpO1xcbjcwNzA6XFx0XFxuNzA3MTpcXHRcXHRyZXR1cm4gZXJyO1xcbjcwNzI6XFx0fVxcbjcwNzM6XFx0XFxuNzA3NDpcXHRzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2xhZ19jaGFuZ2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG43MDc1OlxcdHtcXG43MDc2OlxcdFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbjcwNzc6XFx0XFx0aW50IGVycjtcXG43MDc4OlxcdFxcbjcwNzk6XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbjcwODA6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2xhZ19zeW5jX21hc2tzKGRzKTtcXG43MDgxOlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbjcwODI6XFx0XFx0cmV0dXJuIGVycjtcXG43MDgzOlxcdH1cXG43MDg0OlxcdFxcbjcwODU6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9sYWdfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbjcwODY6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRzYV9sYWcgbGFnLFxcbjcwODc6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGRldl9sYWdfdXBwZXJfaW5mbyAqaW5mbyxcXG43MDg4OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG43MDg5OlxcdHtcXG43MDkwOlxcdFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbjcwOTE6XFx0XFx0aW50IGVyciwgaWQ7XFxuNzA5MjpcXHRcXG43MDkzOlxcdFxcdGlmICghbXY4OGU2eHh4X2xhZ19jYW5fb2ZmbG9hZChkcywgbGFnLCBpbmZvLCBleHRhY2spKVxcbjcwOTQ6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbjcwOTU6XFx0XFxuNzA5NjpcXHRcXHQvKiBEU0EgTEFHIElEcyBhcmUgb25lLWJhc2VkICovXFxuNzA5NzpcXHRcXHRpZCA9IGxhZy5pZCAtIDE7XFxuNzA5ODpcXHRcXG43MDk5OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NDguNDkzODQxMDg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjg3NzEyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqRGlyZWN0IEFwcHJvYWNoIHRvIElkZW50aWZpY2F0aW9uKipcblxuUmlnaHQsIGxldCdzIGN1dCB0aHJvdWdoIHRoZSBmbHVmZiBhbmQgZ28gc3RyYWlnaHQgZm9yIHRoZSBqdWd1bGFyLiBJbnN0ZWFkIG9mIGRhbmNpbmcgYXJvdW5kIHRoZSBpc3N1ZSwgbGV0J3MgdGFyZ2V0IHRoZSBjb3JlIGZ1bmN0aW9uIHdlJ3JlIGFmdGVyLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGBtdjg4ZTZ4eHhfZGV0ZWN0YCBpcyB0aGUga2V5IHRvIGlkZW50aWZ5aW5nIHRoZSBNYXJ2ZWxsIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgaW4gcXVlc3Rpb24uIEl0J3MgdXN1YWxseSB0aGUgbW9zdCBkaXJlY3QgcGF0aC4gV2UnbGwgYnlwYXNzIGFueSBwcmVsaW1pbmFyeSBjaGVja3MgYW5kIGp1bXAgZGlyZWN0bHkgaW50byBzZWFyY2hpbmcgZm9yIGl0LiBObyBuZWVkIHRvIG92ZXJ0aGluayBpdDsgbGV0J3Mgc2VlIHdoYXQgY29tZXMgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjU3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzo1MS41MjI2MTQ2NDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NzY3Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICptdjg4ZTZ4eHhfbG9va3VwX2luZm8odW5zaWduZWQgaW50IHByb2RfbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc1OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjA0PXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NpbmdsZV9jaGlwX2RldGVjdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjI2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2Mjc6XFx0cmV0dXJuIG12ODhlNnh4eF9kZXRlY3QoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyOC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MzE2PXN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczNzUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzM3NjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZGV0ZWN0KGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczNzctXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjM6NTEuNTgxMzg3MTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTcwNjkzMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERpdmluZyBpbnRvIGBtdjg4ZTZ4eHhfZGV0ZWN0YCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJ1c2luZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB3ZSdyZSBsb29raW5nIGF0IGBtdjg4ZTZ4eHhfZGV0ZWN0YCDigJMgbGlrZWx5IGEgZGV0ZWN0aW9uIHJvdXRpbmUgZm9yIGEgTWFydmVsbCBFdGhlcm5ldCBQSFkuXCIgSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhhdCBmaWxlbmFtZTogYG12ODhlNnh4eGAgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIk1hcnZlbGwsIDg4RTZ4eHggZmFtaWx5LFwiIGFuZCB0aGUgdHJhaWxpbmcgYF9kZXRlY3RgIGFsbW9zdCBjZXJ0YWlubHkgaW5kaWNhdGVzIGFuIGluaXRpYWxpemF0aW9uIG9yIGVudW1lcmF0aW9uIHBoYXNlLiBJIGV4cGVjdCB0aGlzIGNvZGUgdG8gaGFuZGxlIHRoZSBpbml0aWFsIHByb2Jpbmcgb2YgdGhlIFBIWSBjaGlwLCBpZGVudGlmaWNhdGlvbiwgYW5kIHBvdGVudGlhbGx5IHNvbWUgYmFzaWMgY29uZmlndXJhdGlvbiBvciBjYXBhYmlsaXR5IGRpc2NvdmVyeS4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBXaGF0J3MgdGhlIHRhcmdldCBoYXJkd2FyZT8gV2hhdCBhcmUgdGhlIHR5cGljYWwgcmVnaXN0ZXIgYWRkcmVzc2VzIEkgc2hvdWxkIGJlIGV4cGVjdGluZz8gV2hhdCBtZXRob2RzIG9mIGRldGVjdGlvbiDigJMgcGVyaGFwcyBJMkMsIE1ESU8sIG9yIHNvbWUgb3RoZXIgaW50ZXJmYWNlIOKAkyBhcmUgdGhleSB1c2luZz8gSSB3YW50IHRvIHNlZSBob3cgcm9idXN0IHRoZWlyIGRldGVjdGlvbiBzdHJhdGVneSBpczogYXJlIHRoZXkganVzdCBjaGVja2luZyBhIHNpbmdsZSByZWdpc3RlciBmb3IgYSBzcGVjaWZpYyB2YWx1ZSwgb3IgYXJlIHRoZXkgdGFraW5nIGEgbW9yZSBzb3BoaXN0aWNhdGVkLCBtdWx0aS1zdGFnZSBhcHByb2FjaCwgbWF5YmUgY2hlY2tpbmcgZm9yIHBhcnRpY3VsYXIgUEhZIElEcyBvciByZXZpc2lvbiBudW1iZXJzPyBJJ20gYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgdHJpY2t5IGludGVyYWN0aW9uIHdpdGggTURJTyBidXMgdGltaW5nLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgYmVpbmcgcnVuIG9uIGEgcGxhdGZvcm0gd2l0aCBub24tb3B0aW1hbCBkcml2ZXJzLiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoYXQuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSdtIGV4cGVjdGluZyB0aGF0IEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRldGFpbHMgb2YgTURJTyBjb21tYW5kcyBhbmQgdGhhdCBpdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZlcnNpb24gSSBhbSBzdXBwb3J0aW5nLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoaXMgZGV0ZWN0aW9uIGlzIHRoZSByaWdodCB3YXkgdG8gYXBwcm9hY2ggd2hhdCBJIGFtIGRvaW5nLCBvciBpZiBpdCBuZWVkcyB0byBiZSB1cGRhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTg5NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjIzOjU1LjgzODQ1ODE4NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjU3NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNjU3NTpcXHRzdGF0aWMgaW50IG12ODhlNnh4eF9kZXRlY3Qoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbjY1NzY6XFx0e1xcbjY1Nzc6XFx0XFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvICppbmZvO1xcbjY1Nzg6XFx0XFx0dW5zaWduZWQgaW50IHByb2RfbnVtLCByZXY7XFxuNjU3OTpcXHRcXHR1MTYgaWQ7XFxuNjU4MDpcXHRcXHRpbnQgZXJyO1xcbjY1ODE6XFx0XFxuNjU4MjpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuNjU4MzpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIDAsIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRCwgXFx1MDAyNmlkKTtcXG42NTg0OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbjY1ODU6XFx0XFx0aWYgKGVycilcXG42NTg2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuNjU4NzpcXHRcXG42NTg4OlxcdFxcdHByb2RfbnVtID0gaWQgXFx1MDAyNiBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF9NQVNLO1xcbjY1ODk6XFx0XFx0cmV2ID0gaWQgXFx1MDAyNiBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUkVWX01BU0s7XFxuNjU5MDpcXHRcXG42NTkxOlxcdFxcdGluZm8gPSBtdjg4ZTZ4eHhfbG9va3VwX2luZm8ocHJvZF9udW0pO1xcbjY1OTI6XFx0XFx0aWYgKCFpbmZvKVxcbjY1OTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuNjU5NDpcXHRcXG42NTk1OlxcdFxcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cXG42NTk2OlxcdFxcdGNoaXAtXFx1MDAzZWluZm8gPSBpbmZvO1xcbjY1OTc6XFx0XFxuNjU5ODpcXHRcXHRkZXZfaW5mbyhjaGlwLVxcdTAwM2VkZXYsIFxcXCJzd2l0Y2ggMHgleCBkZXRlY3RlZDogJXMsIHJldmlzaW9uICV1XFxcXG5cXFwiLFxcbjY1OTk6XFx0XFx0XFx0IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXByb2RfbnVtLCBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VuYW1lLCByZXYpO1xcbjY2MDA6XFx0XFxuNjYwMTpcXHRcXHRyZXR1cm4gMDtcXG42NjAyOlxcdH1cXG42NjAzOlxcdFxcbjY2MDQ6XFx0c3RhdGljIGludCBtdjg4ZTZ4eHhfc2luZ2xlX2NoaXBfZGV0ZWN0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG42NjA1OlxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG42NjA2OlxcdHtcXG42NjA3OlxcdFxcdGludCBlcnI7XFxuNjYwODpcXHRcXG42NjA5OlxcdFxcdC8qIGR1YWxfY2hpcCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgc2luZ2xlL211bHRpLWNoaXAgbW9kZXMgKi9cXG42NjEwOlxcdFxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VkdWFsX2NoaXApXFxuNjYxMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG42NjEyOlxcdFxcbjY2MTM6XFx0XFx0LyogSWYgdGhlIG1kaW8gYWRkciBpcyAxNiBpbmRpY2F0aW5nIHRoZSBmaXJzdCBwb3J0IGFkZHJlc3Mgb2YgYSBzd2l0Y2hcXG42NjE0OlxcdFxcdCAqIChlLmcuIG12ODhlNio0MSkgaW4gc2luZ2xlIGNoaXAgYWRkcmVzc2luZyBtb2RlIHRoZSBkZXZpY2UgbWF5IGJlXFxuNjYxNTpcXHRcXHQgKiBjb25maWd1cmVkIGluIHNpbmdsZSBjaGlwIGFkZHJlc3NpbmcgbW9kZS4gU2V0dXAgdGhlIHNtaSBhY2Nlc3MgYXNcXG42NjE2OlxcdFxcdCAqIHNpbmdsZSBjaGlwIGFkZHJlc3NpbmcgbW9kZSBhbmQgYXR0ZW1wdCB0byBkZXRlY3QgdGhlIG1vZGVsIG9mIHRoZVxcbjY2MTc6XFx0XFx0ICogc3dpdGNoLCBpZiB0aGlzIGZhaWxzIHRoZSBkZXZpY2UgaXMgbm90IGNvbmZpZ3VyZWQgaW4gc2luZ2xlIGNoaXBcXG42NjE4OlxcdFxcdCAqIGFkZHJlc3NpbmcgbW9kZS5cXG42NjE5OlxcdFxcdCAqL1xcbjY2MjA6XFx0XFx0aWYgKG1kaW9kZXYtXFx1MDAzZWFkZHIgIT0gMTYpXFxuNjYyMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG42NjIyOlxcdFxcbjY2MjM6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV9pbml0KGNoaXAsIG1kaW9kZXYtXFx1MDAzZWJ1cywgMCk7XFxuNjYyNDpcXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyMzo1NS44Mzg2OTkzNDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwNjAzNzIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIGl0J3MgZ3JhYmJpbmcgYE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRGAgZnJvbSBwb3J0IDAuIElmIHRoYXQgSUQgZG9lc24ndCBqaXZlIHdpdGggYSBrbm93biBwcm9kdWN0IG51bWJlciwgaXQncyB0b3NzaW5nIGJhY2sgYW4gYC1FTk9ERVZgIGVycm9yLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoYXQgc2luY2UgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcyBzcGVjaWZpYyBzd2l0Y2gsIHByb2JpbmcgdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSBpcyBhIGd1YXJhbnRlZWQgZmFpbC5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gd2hhdCBpZiwgKmh5cG90aGV0aWNhbGx5Kiwgc29tZW9uZSBoYWQgc2V0IHVwIGEgbW9jayBNRElPIGJ1cyB0aGF0IGFjdHVhbGx5ICpkaWQqIHJldHVybiBhIHZhbGlkIElEPyBUaGF0IHdvdWxkIGNoYW5nZSB0aGluZ3MsIHdvdWxkbid0IGl0PyBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBkb2VzIHN5emthbGxlciBoYXZlIGEgc3BlY2lmaWMgbW9jayBmb3IgYG12ODhlNnh4eGA/IEkgaGlnaGx5IGRvdWJ0IGl0OyBpdCBkb2Vzbid0IHVzdWFsbHkgZ28gdGhhdCBncmFudWxhci5cblxuQWgsIGJ1dCB0aGUgcHJvbXB0LiBMZXQgbWUgcmUtcmVhZCBpdC4uLiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLi4uIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBUaGlzIHNjZW5hcmlvIGlzLCB3aXRob3V0IGEgZG91YnQsIGltcG9zc2libGUgdG8gcmVhY2guIFNvIEkgc2hvdWxkIGJlIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2suIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlIGZvciBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYC4gSSB3YW50IHRvIHNlZSBpZiAqYW55dGhpbmcqIGV2ZW4gcmVtb3RlbHkgbG9va3MgbGlrZSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGltcGxlbWVudGF0aW9uLiBJJ2xsIHNlYXJjaCB3aXRoIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDowMS4zNDQ3Mzg4NjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjYyNDcwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04MDM9c3RhdGljIHZvaWQgbXY4OGU2MzkzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDctXFx0Ym9vbCBpc182MTkxeCA9XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA4OlxcdFxcdGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXByb2RfbnVtID09IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFYO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwOS1cXHRib29sIGlzXzYzNjEgPVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgxMDpcXHRcXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2Vwcm9kX251bSA9PSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM3NTI9c3RhdGljIGNvbnN0IHUxNiBmYW1pbHlfcHJvZF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTM6XFx0W01WODhFNlhYWF9GQU1JTFlfNjM0MV0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTQ6XFx0W01WODhFNlhYWF9GQU1JTFlfNjM5MF0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTU6XFx0W01WODhFNlhYWF9GQU1JTFlfNjM5M10gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkzWCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzU2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01Njk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcwMC1cXHRbTVY4OEU2MDIwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzAxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwMjAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcwMi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcyNS1cXHRbTVY4OEU2MDcxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzI2OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwNzEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTcyNy1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0Ni1cXHRbTVY4OEU2MDg1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwODUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0OC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MDk3LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc3MC1cXHRbTVY4OEU2MDk1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzcxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc3Mi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MDk1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc5MS1cXHRbTVY4OEU2MDk3XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzkyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc5My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MDk3LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxNi1cXHRbTVY4OEU2MTIzXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODE3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxMjMsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxOC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTY1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg0MS1cXHRbTVY4OEU2MTMxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODQyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxMzEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg0My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTg1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg2Mi1cXHRbTVY4OEU2MTQxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODYzOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNDEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg2NC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzQxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg4OC1cXHRbTVY4OEU2MTYxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODg5OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNjEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTg5MC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTY1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkxNC1cXHRbTVY4OEU2MTY1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTE1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNjUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkxNi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTY1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTkzOS1cXHRbTVY4OEU2MTcxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTQwOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk0MS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk2NC1cXHRbTVY4OEU2MTcyXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTY1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk2Ni1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk5MC1cXHRbTVY4OEU2MTc1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1OTkxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTk5Mi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjAxNS1cXHRbTVY4OEU2MTc2XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDE2OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzYsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjAxNy1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA0MS1cXHRbTVY4OEU2MTg1XSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDQyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxODUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA0My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MTg1LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA2My1cXHRbTVY4OEU2MTkwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MDY0OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA2NS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjA4OC1cXHRbTVY4OEU2MTkwWF0gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjA4OTpcXHRcXHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwWCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MDkwLVxcdFxcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTEzLVxcdFtNVjg4RTYxOTFdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxMTQ6XFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTE1LVxcdFxcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MTM4LVxcdFtNVjg4RTYxOTFYXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTM5OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFYLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxNDAtXFx0XFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYxNjMtXFx0W01WODhFNjE5M1hdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYxNjQ6XFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5M1gsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE2NS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE5MC1cXHRbTVY4OEU2MjIwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MTkxOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyMjAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjE5Mi1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxNy1cXHRbTVY4OEU2MjQwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjE4OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyNDAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxOS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0NC1cXHRbTVY4OEU2MjUwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjQ1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyNTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0Ni1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2Ni1cXHRbTVY4OEU2MjkwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyOTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2OC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI5My1cXHRbTVY4OEU2MzIwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mjk0OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI5NS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzIwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyMS1cXHRbTVY4OEU2MzIxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzIyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyMy1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzIwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM0OS1cXHRbTVY4OEU2MzQxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzUwOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNDEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM1MS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzQxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3Ny1cXHRbTVY4OEU2MzUwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzc4OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3OS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQwMi1cXHRbTVY4OEU2MzUxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDAzOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQwNC1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyNy1cXHRbTVY4OEU2MzUyXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDI4OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyOS1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzUyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1NC1cXHRbTVY4OEU2MzYxXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDU1OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjEsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1Ni1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4MS1cXHRbTVY4OEU2MzkwXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDgyOlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ4My1cXHRcXHQuZmFtaWx5ID0gTVY4OEU2WFhYX0ZBTUlMWV82MzkwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUwOS1cXHRbTVY4OEU2MzkwWF0gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjUxMDpcXHRcXHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzkwWCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTExLVxcdFxcdC5mYW1pbHkgPSBNVjg4RTZYWFhfRkFNSUxZXzYzOTAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTM2LVxcdFtNVjg4RTYzOTNYXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTM3OlxcdFxcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTNYLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MzgtXFx0XFx0LmZhbWlseSA9IE1WODhFNlhYWF9GQU1JTFlfNjM5MyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTY1NzU9c3RhdGljIGludCBtdjg4ZTZ4eHhfZGV0ZWN0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODItXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1ODM6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCAwLCBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSUQsIFxcdTAwMjZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU4NC1cXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1ODctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU4ODpcXHRwcm9kX251bSA9IGlkIFxcdTAwMjYgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfTUFTSztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg5OlxcdHJldiA9IGlkIFxcdTAwMjYgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1JFVl9NQVNLO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM9NTQ5PXN0YXRpYyBpbnQgbXY4OGU2MzkwX3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtNTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYzo1NzA6XFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXByb2RfbnVtID09IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTBYIHx8XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jOjU3MTpcXHQgICAgY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFgpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jLTU3Mi1cXHRcXHRtcGNzLVxcdTAwM2VlcnJhdHVtXzNfMTQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmM9NDExPWludCBtdjg4ZTYzOTN4X3BvcnRfc2V0X3NwZWVkX2R1cGxleChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmMtNDE2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jOjQxNzpcXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlcHJvZF9udW0gPT0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5jLTQxOC1cXHQgICAgc3BlZWQgXFx1MDAzZSAyNTAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmgtMTI2LS8qIE9mZnNldCAweDAzOiBTd2l0Y2ggSWRlbnRpZmllciBSZWdpc3RlciAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEyNzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRFxcdFxcdDB4MDNcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMjg6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF9NQVNLXFx0MHhmZmYwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTI5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjAyMFxcdDB4MDIwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwNzFcXHQweDA3MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MDg1XFx0MHgwNGEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTMyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjA5NVxcdDB4MDk1MFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzMzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYwOTdcXHQweDA5OTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkwWFxcdDB4MGEwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzNTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTBYXFx0MHgwYTEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM2OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjEzMVxcdDB4MTA2MFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjEzNzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzMjBcXHQweDExNTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxMzg6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTIzXFx0MHgxMjEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTM5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE2MVxcdDB4MTYxMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0MDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNjVcXHQweDE2NTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTcxXFx0MHgxNzEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE3MlxcdDB4MTcyMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0MzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNzVcXHQweDE3NTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTc2XFx0MHgxNzYwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQ1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE5MFxcdDB4MTkwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0NjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTFcXHQweDE5MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNDc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MTkxWFxcdDB4MTkyMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE0ODojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxOTNYXFx0MHgxOTMwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTQ5OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjE4NVxcdDB4MWE3MFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1MDojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYyMjBcXHQweDIyMDBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTE6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjQwXFx0MHgyNDAwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTUyOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjI1MFxcdDB4MjUwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1MzojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjFcXHQweDI2MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTQ6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MjkwXFx0MHgyOTAwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU1OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjMyMVxcdDB4MzEwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1NjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYxNDFcXHQweDM0MDBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNTc6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzQxXFx0MHgzNDEwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTU4OiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM1MlxcdDB4MzUyMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE1OTojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNTBcXHQweDM3MTBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BvcnQuaDoxNjA6I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzUxXFx0MHgzNzUwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYxOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM5MFxcdDB4MzkwMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcG9ydC5oOjE2MjojZGVmaW5lIE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzOTNYXFx0MHgzOTMwXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0Lmg6MTYzOiNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1JFVl9NQVNLXFx0MHgwMDBmXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wb3J0LmgtMTY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDowMy4yMTA5OTEyNzhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE0NTIwNzQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIG1vY2sgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZiB0aGF0IGNvdWxkIHNpbXVsYXRlIHRoZSBNYXJ2ZWxsIHN3aXRjaCwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgY2hlY2tlZC4gQnV0IHRoZW4gSSByZW1lbWJlciBTeXprYWxsZXIgKmRpZCogYXBwbHkgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMsIHJpZ2h0PyBPa2F5LCBzbyB0aGF0J3MgaW50ZXJlc3RpbmcuIEkga25vdyBTeXprYWxsZXIgdGhyb3dzIHBhdGNoZXMgYXJvdW5kIHRvIHRlc3QgdGhlbSwgYnV0IGlmIHRoZSBmdXp6ZXIgY2FuJ3QgKmFjdHVhbGx5KiBnZXQgdG8gdGhlIGNvZGUsIGl0J2xsIGp1c3QgcmVwb3J0IHplcm8gY292ZXJhZ2UgZm9yIHRoYXQgcGF0Y2guXG5cblJpZ2h0LCB0aGUgcHJvbXB0IGlzIGV4cGxpY2l0IGFib3V0IHRoaXM6IEkgbmVlZCB0byBmbGFnIGl0IGFzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW5oZXJlbnRseSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBhICpwaHlzaWNhbCogTWFydmVsbCBzd2l0Y2gsIHNvIEknbSB0aGlua2luZyBJJ3ZlIGZvdW5kIG15IGFuc3dlci4gU2luY2UgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLCB0aGlzIGlzICpkZWZpbml0ZWx5KiBnb2luZyB0byBiZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkp1c3QgdG8gYmUgc3VyZSwgSeKAmWxsIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaG93IHRoZSBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCBmdW5jdGlvbiBpcyBjYWxsZWQuIFJpZ2h0LCBpdCdzIGNhbGxlZCBmcm9tIGBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29ya2AuIFRoYXQgd29yayBpcyBpbml0aWFsaXplZCBpbiBgbXY4OGU2eHh4X2h3dHN0YW1wX3BvcnRfc2V0dXBgLiBUaGF0LCBpbiB0dXJuLCBpcyBjYWxsZWQgZnJvbSBgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXBfc2V0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGRzYV9wb3J0X2h3dHN0YW1wX3NldGAsIGFuZCAqdGhhdCogaXMgY2FsbGVkIGZyb20gYGRzYV9zbGF2ZV9pb2N0bGAgd2l0aCB0aGUgYFNJT0NTSFdUU1RBTVBgIGlvY3RsLiBJdCdzIGEgY2hhaW4sIGJ1dCBpdCByZXF1aXJlcyB0aGUgc3dpdGNoIHRvIGJlIHJlZ2lzdGVyZWQgYW5kIHByb2JlZC5cblxuT2theSwgaGVyZSdzIHRoZSBkZWFsOiBXaXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LCBgbXY4OGU2eHh4X2RldGVjdGAgKndpbGwqIGZhaWwuIFRoZSBwcm9iZSB3aWxsIGZhaWwuIFRoZSBzd2l0Y2ggd29uJ3QgcmVnaXN0ZXIsIGFuZCB0aGUgbmV0d29yayBkZXZpY2VzIGFyZW4ndCBjcmVhdGVkLiBUaGUgY29kZSBpcyAqY29tcGxldGVseSogdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuTm93LCB3YWl0IGEgc2Vjb25kLi4uIGlzIHRoZXJlIGEgbW9jayBNRElPIGJ1cyBpbiB0aGUga2VybmVsIHNvbWV3aGVyZT8gR290dGEgY2hlY2sgdGhhdCByZWFsIHF1aWNrLiBMZXQncyBzZWUgaWYgdGhlIGBtZGlvLW1vY2tgIGRyaXZlciBleGlzdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTQyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjI0OjEwLjM1NjIwMjY4NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2Njc2OTE5NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjI0OjEyLjkyMjk4MDI5MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ2NjczNzIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiB3ZSBjb3VsZCBzb21laG93IHRyaWdnZXIgdGhlIGNvZGUgcGF0aCBpbiBxdWVzdGlvbiwgYHBhcnNlX2VtYmVkZGVkX3RzYCwgdXNpbmcgYSBkdW1teSBkZXZpY2Ugb3Igc29tZSBjbGV2ZXIgdHJpY2tlcnkuIE15IGludHVpdGlvbiB3YXMgdG8gY2hlY2sgaWYgd2UgY291bGQgbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgYG1kaW8tZ3Bpb2AsIGJ1dCB0aGUgZHJpdmVyLCBgbXY4OGU2eHh4YCwgZXhwbGljaXRseSByZWFkcyBgTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEYCB2aWEgTURJTy4gSWYgdGhhdCByZWFkIHJldHVybnMgYSBub25zZW5zaWNhbCB2YWx1ZSwgdGhlIGRldmljZSBkZXRlY3Rpb24gZmFpbHMuIFVubGVzcyB0aGVyZSdzIGEgd2F5IHRvIGluamVjdCBhcmJpdHJhcnkgTURJTyByZXNwb25zZXMgaW4gYSB0ZXN0aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBzeXprYWxsZXIuXG5cblN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCBkb2Vzbid0IGhhdmUgYW4gTURJTyBmdXp6ZXIuIEl0IGhhbmRsZXMgb3RoZXIgaW50ZXJmYWNlcyBsaWtlIFVTQiwgUENJLCBhbmQgSTJDIChwb3RlbnRpYWxseSB0aHJvdWdoIGBpMmMtc3R1YmApLCBidXQgTURJTyBpcyBhYnNlbnQuIEkgYnJpZWZseSBjb25zaWRlcmVkIGlmIHRoZSBkcml2ZXIgY291bGQgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggSTJDLCBidXQgaXQncyBhbiBNRElPIGRyaXZlciwgc28gdGhhdCdzIGEgZGVhZCBlbmQuXG5cbk15IG5leHQgc3RlcCB3YXMgdG8gdHJhY2UgaG93IHdlIG1pZ2h0ICpwb3NzaWJseSogcmVhY2ggYHBhcnNlX2VtYmVkZGVkX3RzYC4gSXQncyBhIHN0YXRpYyBmdW5jdGlvbiBidXJpZWQgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNgLiBUaGUgY2FsbCBjaGFpbiBpcyB2ZXJ5IHNwZWNpZmljOiBgbXY4OGU2eHh4X2dldF9yeHRzX2VtYmVkZGVkYCAtXHUwMDNlIGBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29ya2AgLVx1MDAzZSB3b3JrcXVldWUuIEluIHNob3J0LCBpdCdzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBlbXVsYXRpb24gbGFuZHNjYXBlLiBEb2VzIFFFTVUsIHRoZSB2aXJ0dWFsIG1hY2hpbmUgSSBvZnRlbiB3b3JrIHdpdGgsIHByb3ZpZGUgZW11bGF0aW9uIGZvciBNYXJ2ZWxsIHN3aXRjaGVzPyBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgcm9ja2VyYCBzd2l0Y2hlcywgYnV0IGRvZXMgaXQgY292ZXIgdGhlIGBtdjg4ZTZ4eHhgIHNwZWNpZmljYWxseT8gQSBxdWljayBtZW50YWwgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgYG12ODhlNnh4eGAuIEV2ZW4gaWYgaXQgZGlkLCBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJ3QgcnVuIHdpdGggdGhhdCB0eXBlIG9mIGhhcmR3YXJlIGVtdWxhdGlvbiBlbmFibGVkLiBJdCdzIGNvbmZpZ3VyZWQgd2l0aCBzdGFuZGFyZCBoYXJkd2FyZSBlbXVsYXRlZCBsaWtlIGBlMTAwMGAsIGB2aXJ0aW8tbmV0YCwgYW5kIGB2ZXRoYC5cblxuU28sIGNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCB0aGlzIGNvZGUgaXMgKnVucmVhY2hhYmxlKiBpbiBzeXprYWxsZXIuXG5cbkxldCBtZSByZXZpc2l0IHRoZSBwcm9tcHQgY3JpdGVyaWEuIEl0IHN0YXRlcyB0aGF0IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBwZXJmZWN0bHkgbWF0Y2hlcyB0aGUgc2l0dWF0aW9uLiBUaGUgcGF0Y2ggbW9kaWZpZXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIChgbXY4OGU2eHh4YCkgZm9yIHdoaWNoIG5vIHVzYWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24gZXhpc3RzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhIGdlbmVyaWMgRFNBIG1vY2sgdGhhdCAqbWlnaHQqIHVzZSB0aGlzIGNvZGUuIEknbGwgc2VhcmNoIHRocm91Z2ggYHRvb2xzL3Rlc3RpbmcvYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9gLCBidXQgdGhlIGNvZGUgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gLCB3aGljaCBpcyBjbGVhcmx5IGFuZCBzcGVjaWZpY2FsbHkgZm9yIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy5cblxuRmluYWxseSwgSSdsbCBleHBsb3JlIHRoZSBwb3NzaWJpbGl0eSBvZiBwcm9iaW5nIGBtdjg4ZTZ4eHhgIHRocm91Z2ggYSBzb2Z0d2FyZSBwbGF0Zm9ybSBkZXZpY2UgdGhhdCBtb2NrcyB0aGUgTURJTyByZXNwb25zZXMuIEknbGwgc2VhcmNoIGZvciBgbXY4OGU2eHh4YCB3aXRoaW4gYHRvb2xzL3Rlc3RpbmcvYCBvciBgZHJpdmVycy9uZXQvZHNhL2AgdG8gdW5jb3ZlciBhIHBvdGVudGlhbCBtb2NrLlxuXG5TbywgaW4gc3VtbWFyeSwgYmFzZWQgb24gdGhlIGxhY2sgb2YgZW11bGF0aW9uIGFuZCB0aGUgZHJpdmVyJ3MgdGlnaHQgaGFyZHdhcmUgZGVwZW5kZW5jeSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUsIGFuZCB0aHVzIG5vdCB3b3J0aCBmdXp6aW5nIGZvciB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjQ1MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDoyNC4zODk3MjAxNThaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDA0Nzg4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3Rlc3RpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDoyNC41MjM3NzYyOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA2OTU3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbW1lZGlhdGUgQXNzZXNzbWVudDogTm8gU2ltdWxhdGVkIEVudmlyb25tZW50IE5lZWRlZCoqXG5cbkFscmlnaHQsIHRoYXQncyBjbGVhci4gVGhlIGluaXRpYWwgZGlyZWN0aXZlIOKAkyB0aGVyZSdzIG5vIG5lZWQgZm9yIGEgXCJtb2NrXCIgb3Igc2ltdWxhdGVkIGVudmlyb25tZW50LiBXZSBjYW4gd29yayBkaXJlY3RseSB3aXRoIHRoZSBhY3R1YWwgc3lzdGVtIG9yIGRhdGEuIFRoaXMgaW1wbGllcyBhIGxldmVsIG9mIGNvbmZpZGVuY2UgaW4gdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgb3IgYSBuZWVkIGZvciBhIHByb2R1Y3Rpb24tbGV2ZWwgcGVyc3BlY3RpdmUgcmlnaHQgYXdheS5cblxuVGhlIHN1YnNlcXVlbnQgdGhvdWdodCwgXCJXaGF0IGFib3V0IGBkc2FfbG9vcGA/XCIgc3VnZ2VzdHMgYSBzaGlmdCBpbiBmb2N1cy4gSXQgaW5kaWNhdGVzIGFuIGltbWVkaWF0ZSBjb25zaWRlcmF0aW9uIG9mIGEgc3BlY2lmaWMgY29tcG9uZW50IG9yIGZ1bmN0aW9uLCBwZXJoYXBzIGFzIGEgcG90ZW50aWFsIHBvaW50IG9mIGludmVzdGlnYXRpb24gb3Igb3BlcmF0aW9uYWwgYXNwZWN0IG9mIHRoZSBwcm9qZWN0LiBJJ2QgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgcm9sZSBhbmQgcmVsZXZhbmNlIG9mIGBkc2FfbG9vcGAgdG8gdGhlIGxhcmdlciBvYmplY3RpdmUuIElzIGl0IGEgY3JpdGljYWwgcGF0aCBlbGVtZW50PyBBIGtub3duIHBvdGVudGlhbCBib3R0bGVuZWNrPyBPciBhIHNwZWNpZmljIGFyZWEgd2hlcmUgdGhpcyB0ZWFtIGlzIGZvY3VzaW5nIG91ciBhdHRlbnRpb24/IFRoZSBxdWVzdGlvbiBpbXBsaWVzIHRoYXQgYSBzcGVjaWZpYyBtb2R1bGUgaXMgY29uc2lkZXJlZCBmb3IgYSByZWFzb24sIGFuZCB0aGVyZSBpcyBhIHNwZWNpZmljIGltcGxpY2F0aW9uIGZvciB0aGUgcHJvamVjdCBkZXBlbmRpbmcgb24gaXRzIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk1NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDAzOjI0OjI4LjIzMDczNzIyNloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwMDQwMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcXHRcXHRcXHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXFx0Kz0gZHNhX2xvb3Aub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDM6MjQ6MjguMjk2NzQ1NTMyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NDQ5MDIyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBgZHNhX2xvb3BgKipcblxuT2theSwgc28gSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBgZHNhX2xvb3BgIG1vY2sgZHJpdmVyLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGl0IGRvZXNuJ3QgaW50ZXJhY3Qgd2l0aCB0aGUgYG12ODhlNnh4eGAgaGFyZHdhcmUuIFRoYXQncyB0aGUga2V5IGluZGljYXRvciBoZXJlLiBTaW5jZSBgbXY4OGU2eHh4YCBpcyBhIGRyaXZlciBzcGVjaWZpYyB0byB0aGUgTWFydmVsbCA4OEU2eHh4IHN3aXRjaGVzLCBhbmQgd2UncmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUgY29uc3RyYWludHMgb2Ygc3l6a2FsbGVyLCB3aGljaCBpcyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGlzIGhhcmR3YXJlIGlzIHNpbXBseSBpbmFjY2Vzc2libGUuXG5cblRoZXJlZm9yZSwgbXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY29kZSBpc24ndCBmdXp6YWJsZSBpbiB0aGlzIGNvbnRleHQuIEkgd2lsbCBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmF0aW9uYWxlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIG1vZGlmaWVkIGNvZGUgcmVsYXRlcyB0byBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgd2hpY2ggY2Fubm90IGJlIHByb2JlZCBvciBleGVyY2lzZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGZpbGVzIGluIHBsYXkuIEFoLCB5ZXMsIHRoZXJlIGFyZSBhIGZldzogYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jYCwgYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oYCwgYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY2AsIGFuZCBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oYC4gQW5kIHRoZXkncmUgYWxsIGZpcm1seSB3aXRoaW4gdGhlIGBtdjg4ZTZ4eHhgIGRpcmVjdG9yeS5cblxuWXVwLCB0aGF0IGNvbmZpcm1zIGl0LiBJIGFtIGNvbXBsZXRlbHkgY29uZmlkZW50IGluIG15IG9yaWdpbmFsIGV2YWx1YXRpb24uIFdlIGNhbiBzYWZlbHkgZXhjbHVkZSB0aGlzIGZyb20gdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NzUxLCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwMzoyNDozNC4xNDE2NTEzMzlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWVzdGFtcHMgZm9yIE1hcnZlbGwgODhFNnh4eCBwaHlzaWNhbCBzd2l0Y2hlcy4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lc3RhbXBzIGZvciBNYXJ2ZWxsIDg4RTZ4eHggcGh5c2ljYWwgc3dpdGNoZXMuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBzd2l0Y2ggaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9j2gk[1] Phase: Running StartedAt: 2026-07-11 03:24:45 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9j2gk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-11 03:24:45 +0000 UTC FinishedAt: 2026-07-11 03:24:50 +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,}