Name: series-workflowqhk7v Phase: Failed StartedAt: 2026-07-21 20:06:48 +0000 UTC FinishedAt: 2026-07-21 20:38:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhk7v[0] Phase: Succeeded StartedAt: 2026-07-21 20:06:48 +0000 UTC FinishedAt: 2026-07-21 20:38:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhk7v[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 20:06:48 +0000 UTC FinishedAt: 2026-07-21 20:38:23 +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+CgkJCTx0ZD4yMDI2LzA3LzIxIDIwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU1ZjQwOTYyZTg4ZTQ0NTAzOTY3NTdmY2RjNTg4MTg3MjljOGIzZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAyMDozNjo0NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG5pbmRleCA3MWE3Y2EyMTk2YWQ4OC4uMzExYzhiYzkzMTYwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbkBAIC0xMTMsNyAmIzQzOzExMyw3IEBAIHN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxuIH1cbiBcbiBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuLVx0XHRcdFx0dTE2IGZ3X3JpbmdfaWQsIGludCB0eXBlKVxuJiM0MztcdFx0XHRcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcbiB7XG4gXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldiA9IHJkZXYtXHUwMDNlYXV4X2RldjtcbiBcdHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTtcbkBAIC0xMjMsNyAmIzQzOzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXG4gXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9SSU5HX0ZSRUUpO1xuIFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XG4tXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpO1xuJiM0MztcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XG4gXHRibmdfcmVfZmlsbF9md19tc2coXHUwMDI2ZndfbXNnLCAodm9pZCAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopXHUwMDI2cmVzcCxcbiBcdFx0XHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4gXHRyYyA9IGJuZ2Vfc2VuZF9tc2coYXV4X2RldiwgXHUwMDI2ZndfbXNnKTtcbkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuIFx0XHRcdCAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xuIFx0cmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsIFx1MDAyNmZ3X21zZyk7XG4gXHRpZiAoIXJjKVxuLVx0XHQqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7XG4mIzQzO1x0XHQqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiBcbiBcdHJldHVybiByYztcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5AQCAtMzYsNiAmIzQzOzM2LDcgQEAgc3RydWN0IGJuZ2VfcGZfaW5mbyB7XG4gfTtcbiBcbiAjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRCAgICAgICgodTE2KS0xKVxuJiM0MzsjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRF8zMkJJVFx0KFUzMl9NQVgpXG4gXG4gZW51bSB7XG4gXHRCTkdFX0ZXX0NBUF9TSE9SVF9DTURcdFx0XHRcdD0gQklUX1VMTCgwKSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG5pbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbkBAIC0xMjgzLDcgJiM0MzsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcbiYjNDM7XHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpXG4ge1xuIFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0ICpyZXE7XG4gXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gYm4tXHUwMDNlYmQ7XG5AQCAtMTI5NSw3ICYjNDM7MTI5NSw3IEBAIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmVxLVx1MDAzZWNtcGxfcmluZyA9IGNwdV90b19sZTE2KGNtcGxfcmluZ19pZCk7XG4gXHRyZXEtXHUwMDNlcmluZ190eXBlID0gcmluZ190eXBlO1xuLVx0cmVxLVx1MDAzZXJpbmdfaWQgPSBjcHVfdG9fbGUxNihyaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuJiM0MztcdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMzIocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcbiBcdGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuQEAgLTEzMTcsNyAmIzQzOzEzMTcsNyBAQCBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDtcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2NfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbi1cdHUxNiByaW5nX2lkLCBmbGFncyA9IDA7XG4mIzQzO1x0dTMyIHJpbmdfaWQsIGZsYWdzID0gMDtcbiBcdGludCByYztcbiBcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9pbml0KGJkLCByZXEsIEhXUk1fUklOR19BTExPQyk7XG5AQCAtMTQwMSw3ICYjNDM7MTQwMSw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcbi1cdHJpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuJiM0MztcdHJpbmdfaWQgPSBsZTMyX3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuIFx0Ym5nZV9od3JtX3JlcV9kcm9wKGJkLCByZXEpO1xuIFxuIGV4aXQ6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuaW5kZXggMzUwMWRlN2E4OWI5MTkuLmJmNDUyZTM5MGQ1YmQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5AQCAtNTAsNyAmIzQzOzUwLDcgQEAgaW50IGJuZ2VfaHdybV9jZmFfbDJfc2V0X3J4X21hc2soc3RydWN0IGJuZ2VfZGV2ICpiZCxcbiB2b2lkIGJuZ2VfaHdybV9zdGF0X2N0eF9mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4pO1xuIGludCBibmdlX2h3cm1fc3RhdF9jdHhfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibik7XG4gaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuLVx0XHRcdCAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKTtcbiYjNDM7XHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpO1xuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0XHQgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuIFx0XHRcdCAgICAgdTMyIHJpbmdfdHlwZSwgdTMyIG1hcF9pbmRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5pbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuQEAgLTEzMjcsMTIgJiM0MzsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRyZXR1cm4gcmM7XG4gfVxuIFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxuJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cilcbiB7XG4gXHRyZXR1cm4gcnhyLVx1MDAzZXJ4X2Nwci1cdTAwM2VyaW5nX3N0cnVjdC5md19yaW5nX2lkO1xuIH1cbiBcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cilcbiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4ge1xuIFx0cmV0dXJuIHR4ci1cdTAwM2V0eF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG5AQCAtMTM3NSwxMiAmIzQzOzEzNzUsMTIgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X25xX3RyZWUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfbnFfcmluZ19pbmZvICpucXIgPSBcdTAwMjZibi1cdTAwM2VibmFwaVtpXS1cdTAwM2VucV9yaW5nO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBucXItXHUwMDNlY3BfcmluZ19jb3VudDsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRzdHJ1Y3QgYm5nZV9jcF9yaW5nX2luZm8gKmNwciA9IFx1MDAyNm5xci1cdTAwM2VjcF9yaW5nX2FycltqXTtcbiBcbiBcdFx0XHRyaW5nID0gXHUwMDI2Y3ByLVx1MDAzZXJpbmdfc3RydWN0O1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0XHR9XG4gXHR9XG4gfVxuQEAgLTE2MzcsNyAmIzQzOzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdDtcbiBcdGJuZ2VfaW5pdF9yeGJkX3BhZ2VzKHJpbmcsIHR5cGUpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMTY0Nyw3ICYjNDM7MTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfYWdnX3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0dTMyIHR5cGU7XG4gXG4gXHRyaW5nID0gXHUwMDI2cnhyLVx1MDAzZXJ4X2FnZ19yaW5nX3N0cnVjdDtcbi1cdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRpZiAoYm5nZV9pc19hZ2dfcmVxZChibi1cdTAwM2ViZCkpIHtcbiBcdFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBSWF9CRF9MRU5fU0hJRlQpIHxcbiBcdFx0XHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcbkBAIC0xNzA4LDcgJiM0MzsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRcdHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gXHUwMDI2Ym4tXHUwMDNldHhfcmluZ1tpXTtcbiBcdFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcdTAwMjZ0eHItXHUwMDNldHhfcmluZ19zdHJ1Y3Q7XG4gXG4tXHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcbiBcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbiBcdFx0XHRcdCAgICAgXHUwMDI2dHhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuQEAgLTE4NjcsNyAmIzQzOzE4NjcsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHQgICAgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfZGIsIHJ4ci1cdTAwM2VyeF9hZ2dfcHJvZCk7XG4gXHRibmdlX2RiX3dyaXRlKGJuLVx1MDAzZWJkLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHJ4ci1cdTAwM2VyeF9wcm9kKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuJiM0MztcdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gKHUxNilyaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTg4Niw3ICYjNDM7MTg4Niw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0cmV0dXJuIHJjO1xuIFxuIFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNnJ4ci1cdTAwM2VyeF9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4mIzQzO1x0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE5MTYsNyAmIzQzOzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRcdGJuZ2Vfc2V0X2RiKGJuLCBcdTAwMjZucXItXHUwMDNlbnFfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4gXHRcdGJuZ2VfZGJfbnEoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgbnFyLVx1MDAzZW5xX3Jhd19jb25zKTtcbiBcdFx0ZW5hYmxlX2lycSh2ZWN0b3IpO1xuLVx0XHRibi1cdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuJiM0MztcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0XHRpZiAoIWkpIHtcbiBcdFx0XHRyYyA9IGJuZ2VfaHdybV9zZXRfYXN5bmNfZXZlbnRfY3IoYmQsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG5AQCAtMTk4NiwxNSAmIzQzOzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXG4gXHR0Ymxfc2l6ZSA9IGJuZ2VfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShiZCk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0Ymxfc2l6ZTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0dTE2IHJpbmdfaWQsIGo7XG4mIzQzO1x0XHR1MzIgajtcbiBcbiBcdFx0aiA9IGJkLVx1MDAzZXJzc19pbmRpcl90YmxbaV07XG4gXHRcdHJ4ciA9IFx1MDAyNmJuLVx1MDAzZXJ4X3Jpbmdbal07XG4gXG4tXHRcdHJpbmdfaWQgPSByeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbi1cdFx0KnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KHJpbmdfaWQpO1xuLVx0XHRyaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xuLVx0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7XG4mIzQzO1x0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocnhyLVx1MDAzZXJ4X3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQpO1xuJiM0MztcdFx0KnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKSk7XG4gXHR9XG4gfVxuIFxuQEAgLTIyODUsNyAmIzQzOzIyODMsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2Rpc2FibGVfaW50KHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRcdG5xciA9IFx1MDAyNmJuYXBpLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHJpbmcgPSBcdTAwMjZucXItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4gXG4tXHRcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0fVxuIH1cbkBAIC0yNDAxLDcgJiM0MzsyMzk5LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0dTMyIGdycF9pZHggPSByeHItXHUwMDNlYm5hcGktXHUwMDNlaW5kZXg7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbkBAIC0yNDA5LDcgJiM0MzsyNDA3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdFx0UklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0ucnhfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiB9XG4gXG5AQCAtMjQyMSwxNCAmIzQzOzI0MTksMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHUzMiBncnBfaWR4ID0gcnhyLVx1MDAzZWJuYXBpLVx1MDAzZWluZGV4O1xuIFx0dTMyIGNtcGxfcmluZ19pZDtcbiBcbi1cdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlhfQUdHLFxuIFx0XHRcdFx0Y2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6XG4gXHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDM5LDE0ICYjNDM7MjQzNywxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fdHhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbiYjNDM7XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gY2xvc2VfcGF0aCA/IGJuZ2VfY3BfcmluZ19mb3JfdHgodHhyKSA6XG4gXHRcdCAgICAgICBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXG4gXHRcdFx0XHRjbXBsX3JpbmdfaWQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYm5nZV9od3JtX2NwX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuQEAgLTI0NTUsMTIgJiM0MzsyNDUzLDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nO1xuIFxuIFx0cmluZyA9IFx1MDAyNmNwci1cdTAwM2VyaW5nX3N0cnVjdDtcbi1cdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCxcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sIGJvb2wgY2xvc2VfcGF0aClcbkBAIC0yNDk2LDExICYjNDM7MjQ5NCwxMSBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sIGJvb2wgY2xvc2VfcGF0aClcbiBcdFx0XHRibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCBcdTAwMjZucXItXHUwMDNlY3BfcmluZ19hcnJbal0pO1xuIFxuIFx0XHRyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuLVx0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkge1xuJiM0MztcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcbiBcdFx0XHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZyxcbiBcdFx0XHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9OUSxcbiBcdFx0XHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0XHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG5AQCAtNjMwLDggJiM0Mzs2MzAsOCBAQCBzdHJ1Y3QgYm5nZV9sMl9maWx0ZXIge1xuIFx0cmVmY291bnRfdFx0XHRyZWZjbnQ7XG4gfTtcbiBcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4mIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcbiB2b2lkIGJuZ2VfZmlsbF9od19yc3NfdGJsKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3ZuaWNfaW5mbyAqdm5pYyk7XG4gaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cixcbiBcdFx0ICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXG5pbmRleCAzNDFjN2Y4MWVkMDkyYi4uYmIwYzc5YTFlZTYwZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXG5AQCAtMTg0LDcgJiM0MzsxODQsNyBAQCBzdHJ1Y3QgYm5nZV9jdHhfbWVtX2luZm8ge1xuIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0IHtcbiBcdHN0cnVjdCBibmdlX3JpbmdfbWVtX2luZm9cdHJpbmdfbWVtO1xuIFxuLVx0dTE2XHRcdFx0ZndfcmluZ19pZDtcbiYjNDM7XHR1MzJcdFx0XHRmd19yaW5nX2lkO1xuIFx0dW5pb24ge1xuIFx0XHR1MTZcdFx0Z3JwX2lkeDtcbiBcdFx0dTE2XHRcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5pbmRleCA4ZWExM2Q1NDA3ZWVjZC4uMWY3YmQ5NjQxNWE1MjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuQEAgLTgzMTcsOCAmIzQzOzgzMTcsNyBAQCBzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCB7XG4gXHRfX2xlMTZcdHJlcV90eXBlO1xuIFx0X19sZTE2XHRzZXFfaWQ7XG4gXHRfX2xlMTZcdHJlc3BfbGVuO1xuLVx0X19sZTE2XHRyaW5nX2lkO1xuLVx0X19sZTE2XHRsb2dpY2FsX3JpbmdfaWQ7XG4mIzQzO1x0X19sZTMyXHRyaW5nX2lkO1xuIFx0dThcdHB1c2hfYnVmZmVyX2luZGV4O1xuIFx0I2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUElOR19CVUZGRVIgMHgwVUxcbiBcdCNkZWZpbmUgUklOR19BTExPQ19SRVNQX1BVU0hfQlVGRkVSX0lOREVYX1BPTkdfQlVGRkVSIDB4MVVMXG5AQCAtODM0NSwxMCAmIzQzOzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHtcbiBcdHU4XHRmbGFncztcbiBcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX0xBU1QgICAgICAgICAgICAgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRFxuLVx0X19sZTE2XHRyaW5nX2lkO1xuJiM0MztcdF9fbGUxNlx0dW51c2VkXzE7XG4gXHRfX2xlMzJcdHByb2RfaWR4O1xuIFx0X19sZTMyXHRvcGFxdWU7XG4tXHRfX2xlMzJcdHVudXNlZF8xO1xuJiM0MztcdF9fbGUzMlx0cmluZ19pZDtcbiB9O1xuIFxuIC8qIGh3cm1fcmluZ19mcmVlX291dHB1dCAoc2l6ZToxMjhiLzE2QikgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIGJuZ2UgZHJpdmVyIChCQ001NzcwOCBUaG9yVWx0cmEpLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgZGV2aWNlIGluIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNWY0MDk2MmU4OGU0NDUwMzk2NzU3ZmNkYzU4ODE4NzI5YzhiM2RhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjEgMjA6MzY6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jCmluZGV4IDcxYTdjYTIxOTZhZDg4Li4zMTFjOGJjOTMxNjAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csCiB9CiAKIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsCi0JCQkJdTE2IGZ3X3JpbmdfaWQsIGludCB0eXBlKQomIzQzOwkJCQl1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpCiB7CiAJc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LSZndDthdXhfZGV2OwogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTsKQEAgLTEyMyw3ICYjNDM7MTIzLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldiwKIAogCWJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopJmFtcDtyZXEsIEhXUk1fUklOR19GUkVFKTsKIAlyZXEucmluZ190eXBlID0gdHlwZTsKLQlyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpOwomIzQzOwlyZXEucmluZ19pZCA9IGNwdV90b19sZTMyKGZ3X3JpbmdfaWQpOwogCWJuZ19yZV9maWxsX2Z3X21zZygmYW1wO2Z3X21zZywgKHZvaWQgKikmYW1wO3JlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopJmFtcDtyZXNwLAogCQkJICAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpOwogCXJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCAmYW1wO2Z3X21zZyk7CkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LAogCQkJICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7CiAJcmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsICZhbXA7ZndfbXNnKTsKIAlpZiAoIXJjKQotCQkqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7CiYjNDM7CQkqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTsKIAogCXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgKaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaApAQCAtMzYsNiAmIzQzOzM2LDcgQEAgc3RydWN0IGJuZ2VfcGZfaW5mbyB7CiB9OwogCiAjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRCAgICAgICgodTE2KS0xKQomIzQzOyNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUCShVMzJfTUFYKQogCiBlbnVtIHsKIAlCTkdFX0ZXX0NBUF9TSE9SVF9DTUQJCQkJPSBCSVRfVUxMKDApLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYwppbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCkBAIC0xMjgzLDcgJiM0MzsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKQogCiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAkJCSAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKQomIzQzOwkJCSAgICB1MzIgcmluZ190eXBlLCB1MzIgY21wbF9yaW5nX2lkKQogewogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCAqcmVxOwogCXN0cnVjdCBibmdlX2RldiAqYmQgPSBibi0mZ3Q7YmQ7CkBAIC0xMjk1LDcgJiM0MzsxMjk1LDcgQEAgaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAKIAlyZXEtJmd0O2NtcGxfcmluZyA9IGNwdV90b19sZTE2KGNtcGxfcmluZ19pZCk7CiAJcmVxLSZndDtyaW5nX3R5cGUgPSByaW5nX3R5cGU7Ci0JcmVxLSZndDtyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy0mZ3Q7ZndfcmluZ19pZCk7CiYjNDM7CXJlcS0mZ3Q7cmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCiAJYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpOwogCXJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpOwpAQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDsKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX2lucHV0ICpyZXE7CiAJc3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLSZndDtiZDsKLQl1MTYgcmluZ19pZCwgZmxhZ3MgPSAwOwomIzQzOwl1MzIgcmluZ19pZCwgZmxhZ3MgPSAwOwogCWludCByYzsKIAogCXJjID0gYm5nZV9od3JtX3JlcV9pbml0KGJkLCByZXEsIEhXUk1fUklOR19BTExPQyk7CkBAIC0xNDAxLDcgJiM0MzsxNDAxLDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCiAJcmVzcCA9IGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTsKIAlyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTsKLQlyaW5nX2lkID0gbGUxNl90b19jcHUocmVzcC0mZ3Q7cmluZ19pZCk7CiYjNDM7CXJpbmdfaWQgPSBsZTMyX3RvX2NwdShyZXNwLSZndDtyaW5nX2lkKTsKIAlibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oCmluZGV4IDM1MDFkZTdhODliOTE5Li5iZjQ1MmUzOTBkNWJkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKQEAgLTUwLDcgJiM0Mzs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsCiB2b2lkIGJuZ2VfaHdybV9zdGF0X2N0eF9mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4pOwogaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKTsKIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKTsKJiM0MzsJCQkgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7CiBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLAogCQkJICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwppbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMKQEAgLTEzMjcsMTIgJiM0MzsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJcmV0dXJuIHJjOwogfQogCi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKIHsKIAlyZXR1cm4gcnhyLSZndDtyeF9jcHItJmd0O3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQ7CiB9CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQomIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQogewogCXJldHVybiB0eHItJmd0O3R4X2Nwci0mZ3Q7cmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKIH0KQEAgLTEzNzUsMTIgJiM0MzsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gJmFtcDtibi0mZ3Q7Ym5hcGlbaV0tJmd0O25xX3Jpbmc7CiAJCXN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gJmFtcDtucXItJmd0O3Jpbmdfc3RydWN0OwogCi0JCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCQlmb3IgKGogPSAwOyBqICZsdDsgbnFyLSZndDtjcF9yaW5nX2NvdW50OyBqJiM0MzsmIzQzOykgewogCQkJc3RydWN0IGJuZ2VfY3BfcmluZ19pbmZvICpjcHIgPSAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal07CiAKIAkJCXJpbmcgPSAmYW1wO2Nwci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJCX0KIAl9CiB9CkBAIC0xNjM3LDcgJiM0MzsxNjM3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9yeF9yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibiwKIAogCXJpbmcgPSAmYW1wO3J4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3Q7CiAJYm5nZV9pbml0X3J4YmRfcGFnZXMocmluZywgdHlwZSk7Ci0JcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIH0KIAogc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0xNjQ3LDcgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIHR5cGU7CiAKIAlyaW5nID0gJmFtcDtyeHItJmd0O3J4X2FnZ19yaW5nX3N0cnVjdDsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWlmIChibmdlX2lzX2FnZ19yZXFkKGJuLSZndDtiZCkpIHsKIAkJdHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFICZsdDsmbHQ7IFJYX0JEX0xFTl9TSElGVCkgfAogCQkJUlhfQkRfVFlQRV9SWF9BR0dfQkQgfCBSWF9CRF9GTEFHU19TT1A7CkBAIC0xNzA4LDcgJiM0MzsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gJmFtcDtibi0mZ3Q7dHhfcmluZ1tpXTsKIAkJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAKLQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAKIAkJbmV0aWZfcXVldWVfc2V0X25hcGkoYm4tJmd0O25ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsCiAJCQkJICAgICAmYW1wO3R4ci0mZ3Q7Ym5hcGktJmd0O25hcGkpOwpAQCAtMTg2Nyw3ICYjNDM7MTg2Nyw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCSAgICByaW5nLSZndDtmd19yaW5nX2lkKTsKIAlibmdlX2RiX3dyaXRlKGJuLSZndDtiZCwgJmFtcDtyeHItJmd0O3J4X2FnZ19kYiwgcnhyLSZndDtyeF9hZ2dfcHJvZCk7CiAJYm5nZV9kYl93cml0ZShibi0mZ3Q7YmQsICZhbXA7cnhyLSZndDtyeF9kYiwgcnhyLSZndDtyeF9wcm9kKTsKLQlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLSZndDtmd19yaW5nX2lkOwomIzQzOwlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE4ODYsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCXJldHVybiByYzsKIAogCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO3J4ci0mZ3Q7cnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwotCWJuLSZndDtncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJYm4tJmd0O2dycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE5MTYsNyAmIzQzOzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCQllbmFibGVfaXJxKHZlY3Rvcik7Ci0JCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLSZndDtmd19yaW5nX2lkOwogCiAJCWlmICghaSkgewogCQkJcmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLSZndDtmd19yaW5nX2lkKTsKQEAgLTE5ODYsMTUgJiM0MzsxOTg2LDEzIEBAIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKQogCXRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB0Ymxfc2l6ZTsgaSYjNDM7JiM0MzspIHsKLQkJdTE2IHJpbmdfaWQsIGo7CiYjNDM7CQl1MzIgajsKIAogCQlqID0gYmQtJmd0O3Jzc19pbmRpcl90YmxbaV07CiAJCXJ4ciA9ICZhbXA7Ym4tJmd0O3J4X3Jpbmdbal07CiAKLQkJcmluZ19pZCA9IHJ4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKLQkJKnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KHJpbmdfaWQpOwotCQlyaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpOwotCQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7CiYjNDM7CQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocnhyLSZndDtyeF9yaW5nX3N0cnVjdC5md19yaW5nX2lkKTsKJiM0MzsJCSpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cikpOwogCX0KIH0KIApAQCAtMjI4NSw3ICYjNDM7MjI4Myw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfZGlzYWJsZV9pbnQoc3RydWN0IGJuZ2VfbmV0ICpibikKIAkJbnFyID0gJmFtcDtibmFwaS0mZ3Q7bnFfcmluZzsKIAkJcmluZyA9ICZhbXA7bnFyLSZndDtyaW5nX3N0cnVjdDsKIAotCQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpCiYjNDM7CQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCX0KIH0KQEAgLTI0MDEsNyAmIzQzOzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIGdycF9pZHggPSByeHItJmd0O2JuYXBpLSZndDtpbmRleDsKIAl1MzIgY21wbF9yaW5nX2lkOwogCi0JaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKQomIzQzOwlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCXJldHVybjsKIAogCWNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTsKQEAgLTI0MDksNyAmIzQzOzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkJUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsCiAJCQkJY2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6CiAJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWJuLSZndDtncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDIxLDE0ICYjNDM7MjQxOSwxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCXUzMiBncnBfaWR4ID0gcnhyLSZndDtibmFwaS0mZ3Q7aW5kZXg7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7CiAJaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYX0FHRywKIAkJCQljbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDoKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJYm4tJmd0O2dycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDM5LDE0ICYjNDM7MjQzNywxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fdHhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBjbG9zZV9wYXRoID8gYm5nZV9jcF9yaW5nX2Zvcl90eCh0eHIpIDoKIAkJICAgICAgIElOVkFMSURfSFdfUklOR19JRDsKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsCiAJCQkJY21wbF9yaW5nX2lkKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogfQogCiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0yNDU1LDEyICYjNDM7MjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmc7CiAKIAlyaW5nID0gJmFtcDtjcHItJmd0O3Jpbmdfc3RydWN0OwotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCwKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiB9CiAKIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKQpAQCAtMjQ5NiwxMSAmIzQzOzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpCiAJCQlibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal0pOwogCiAJCXJpbmcgPSAmYW1wO25xci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCWlmIChyaW5nLSZndDtmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkgewomIzQzOwkJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKSB7CiAJCQlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywKIAkJCQkJCVJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLAogCQkJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIAkJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaApAQCAtNjMwLDggJiM0Mzs2MzAsOCBAQCBzdHJ1Y3QgYm5nZV9sMl9maWx0ZXIgewogCXJlZmNvdW50X3QJCXJlZmNudDsKIH07CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTsKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTsKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7CiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpOwogdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpOwogaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4ciwKIAkJICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKaW5kZXggMzQxYzdmODFlZDA5MmIuLmJiMGM3OWExZWU2MGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKQEAgLTE4NCw3ICYjNDM7MTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHsKIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0IHsKIAlzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvCXJpbmdfbWVtOwogCi0JdTE2CQkJZndfcmluZ19pZDsKJiM0MzsJdTMyCQkJZndfcmluZ19pZDsKIAl1bmlvbiB7CiAJCXUxNgkJZ3JwX2lkeDsKIAkJdTE2CQltYXBfaWR4OyAvKiBVc2VkIGJ5IE5RcyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaApAQCAtODMxNyw4ICYjNDM7ODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHsKIAlfX2xlMTYJcmVxX3R5cGU7CiAJX19sZTE2CXNlcV9pZDsKIAlfX2xlMTYJcmVzcF9sZW47Ci0JX19sZTE2CXJpbmdfaWQ7Ci0JX19sZTE2CWxvZ2ljYWxfcmluZ19pZDsKJiM0MzsJX19sZTMyCXJpbmdfaWQ7CiAJdTgJcHVzaF9idWZmZXJfaW5kZXg7CiAJI2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUElOR19CVUZGRVIgMHgwVUwKIAkjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTApAQCAtODM0NSwxMCAmIzQzOzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHsKIAl1OAlmbGFnczsKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfVklSVElPX1JJTkdfVkFMSUQgMHgxVUwKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElECi0JX19sZTE2CXJpbmdfaWQ7CiYjNDM7CV9fbGUxNgl1bnVzZWRfMTsKIAlfX2xlMzIJcHJvZF9pZHg7CiAJX19sZTMyCW9wYXF1ZTsKLQlfX2xlMzIJdW51c2VkXzE7CiYjNDM7CV9fbGUzMglyaW5nX2lkOwogfTsKIAogLyogaHdybV9yaW5nX2ZyZWVfb3V0cHV0IChzaXplOjEyOGIvMTZCKSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJyb2FkY29tIGJuZ2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgQnJvYWRjb20gYGJuZ2VgIGRyaXZlci4gSXQgc2VlbXMgdGhleSYjMzk7cmUgYnVtcGluZyB0aGUgc2l6ZSBvZiBgZndfcmluZ19pZGAgZnJvbSBgdTE2YCB0byBgdTMyYC4gVGhpcyBpbXBhY3RzIGEgYnVuY2ggb2YgZmlsZXM6IGBkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY2AsIGEgc2xldyBvZiBgYm5nZWAgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzIChgYm5nZS5oYCwgYGJuZ2VfaHdybV9saWIue2MsaH1gLCBgYm5nZV9uZXRkZXYue2MsaH1gLCBgYm5nZV9ybWVtLmhgKSBhbmQgYWxzbyBgaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oYC4gSW50ZXJlc3RpbmcuLi4KCkkgc2VlIHRoZXkmIzM5O3ZlIHVwZGF0ZWQgYElOVkFMSURfSFdfUklOR19JRGAgdG8gYSAzMi1iaXQgdmVyc2lvbiwgYElOVkFMSURfSFdfUklOR19JRF8zMkJJVGAuICBNYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyBleHBlY3RlZCB3aXRoIHRoZSByaW5nIElEIHNpemUgY2hhbmdlLiBBbmQgdGhlIGByaW5nX2lkYCBmaWVsZHMgaW4gdGhlIGBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0YCBhbmQgYGh3cm1fcmluZ19mcmVlX2lucHV0YCBzdHJ1Y3R1cmVzIGFyZSBnZXR0aW5nIHRoZWlyIGRhdGEgdHlwZXMgY2hhbmdlZCBmcm9tIGBfX2xlMTZgIHRvIGBfX2xlMzJgLiAgU28gaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4KCkdpdmVuIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gdXNlZCBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyB0aGVyZS4gVGhlIGRyaXZlciBpcyBjbGVhcmx5IGBibmdlYCBhY2NvcmRpbmcgdG8gdGhlIHBhdGguIEhvbGQgb24sICYjMzQ7Ym5nZSYjMzQ7PyBUaGF0JiMzOTtzIG5vdCBvbmUgSSYjMzk7bSBzdXBlciBmYW1pbGlhciB3aXRoLiBJcyB0aGF0IGFuIG9sZGVyIEJyb2FkY29tIE5ldFh0cmVtZS1FIG9yIHNvbWV0aGluZz8gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpc24mIzM5O3QgYSB0eXBvIGZvciBgYm54dGAuIExldCYjMzk7cyBoaXQgdGhlIGtlcm5lbCB0cmVlIGFuZCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2I0NC5jJiMzNDssCiAgICAmIzM0O2I0NC5oJiMzNDssCiAgICAmIzM0O2JjbTQ5MDhfZW5ldC5jJiMzNDssCiAgICAmIzM0O2JjbTQ5MDhfZW5ldC5oJiMzNDssCiAgICAmIzM0O2JjbTYzeHhfZW5ldC5jJiMzNDssCiAgICAmIzM0O2JjbTYzeHhfZW5ldC5oJiMzNDssCiAgICAmIzM0O2JjbXN5c3BvcnQuYyYjMzQ7LAogICAgJiMzNDtiY21zeXNwb3J0LmgmIzM0OywKICAgICYjMzQ7YmdtYWMtYmNtYS1tZGlvLmMmIzM0OywKICAgICYjMzQ7YmdtYWMtYmNtYS5jJiMzNDssCiAgICAmIzM0O2JnbWFjLXBsYXRmb3JtLmMmIzM0OywKICAgICYjMzQ7YmdtYWMuYyYjMzQ7LAogICAgJiMzNDtiZ21hYy5oJiMzNDssCiAgICAmIzM0O2JueDIuYyYjMzQ7LAogICAgJiMzNDtibngyLmgmIzM0OywKICAgICYjMzQ7Ym54Ml9mdy5oJiMzNDssCiAgICAmIzM0O2NuaWMuYyYjMzQ7LAogICAgJiMzNDtjbmljLmgmIzM0OywKICAgICYjMzQ7Y25pY19kZWZzLmgmIzM0OywKICAgICYjMzQ7Y25pY19pZi5oJiMzNDssCiAgICAmIzM0O3NiMTI1MC1tYWMuYyYjMzQ7LAogICAgJiMzNDt0ZzMuYyYjMzQ7LAogICAgJiMzNDt0ZzMuaCYjMzQ7LAogICAgJiMzNDt1bmltYWMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDthc3AyJiMzNDssCiAgICAmIzM0O2JuZ2UmIzM0OywKICAgICYjMzQ7Ym54MngmIzM0OywKICAgICYjMzQ7Ym54dCYjMzQ7LAogICAgJiMzNDtnZW5ldCYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgJiMzNDtibmdlJiMzNDsgQ29udGV4dCoqCgpSaWdodCwgc28gSSBzZWUgdGhlIHRlcm0gYGJuZ2VgIHBvcCB1cC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHRyZWF0IGl0IGFzIGEgcG90ZW50aWFsIG5hbWVzcGFjZSBvciBjb21wb25lbnQuIElmIEkmIzM5O20gd29ya2luZyBvbiBhIHByb2plY3Qgd2l0aCBhIHN0cnVjdHVyZSBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIGl04oCZcyBoaWdobHkgbGlrZWx5IEkmIzM5O20gYXdhcmUgb2YgdGhlIHByb2plY3QmIzM5O3MgZGlyZWN0b3J5IHN0cnVjdHVyZSwgYW5kIHRoaXMgY29udGV4dCBpbmZsdWVuY2VzIHRoZSB3YXkgSSBwcm9jZXNzIHRoaXMgbmV3IGluZm9ybWF0aW9uLiBUaGUgcXVpY2sgY2hlY2sgaXMgdG8gc2VlIGlmIEkmIzM5O20gYWJsZSB0byByZWNhbGwgYSBkaXJlY3Rvcnkgd2l0aCBhIHNpbWlsYXIgbmFtZSwgdXN1YWxseSwgdGhlIGxvY2F0aW9uIGluIHRoZSBwcm9qZWN0JiMzOTtzIGZpbGUgc3RydWN0dXJlIHByb3ZpZGVzIGEgc29saWQgY2x1ZSBhYm91dCBpdHMgZnVuY3Rpb24uIE5vdyBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIHBhdGgsIGV4cGVjdGluZyB0byBzZWUgYSBkaXJlY3RvcnkgbmFtZWQgYGJuZ2VgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGdldCB0aGUgcmVhbCBjb250ZXh0LCBpdHMgY29udGVudHMsIGl0cyBkZXBlbmRlbmNpZXMsIHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgd2hhdCYjMzk7cyBhY3R1YWxseSB0aGVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIHB1cnBvc2Ugb2YgYGJuZ2VgIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBvciBwZXJoYXBzLCBpdCYjMzk7cyBhIG5hbWluZyBjb252ZW50aW9uLCBpbiB3aGljaCBjYXNlIEkgbWlnaHQgbG9vayBmb3IgYSBicm9hZGVyIGNvbnRleHQuIEkmIzM5O2xsIG1lbnRhbGx5IHN0YXJ0IHRvIGJ1aWxkIGEgbWFwIG9mIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBiYXNlZCBvbiB0aGUgc3RydWN0dXJlIGFuZCBjb250ZW50IG9mIGBibmdlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JuZ2UuaCYjMzQ7LAogICAgJiMzNDtibmdlX2F1eHIuYyYjMzQ7LAogICAgJiMzNDtibmdlX2F1eHIuaCYjMzQ7LAogICAgJiMzNDtibmdlX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtibmdlX2RiLmgmIzM0OywKICAgICYjMzQ7Ym5nZV9kZXZsaW5rLmMmIzM0OywKICAgICYjMzQ7Ym5nZV9kZXZsaW5rLmgmIzM0OywKICAgICYjMzQ7Ym5nZV9ldGh0b29sLmMmIzM0OywKICAgICYjMzQ7Ym5nZV9ldGh0b29sLmgmIzM0OywKICAgICYjMzQ7Ym5nZV9od19kZWYuaCYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm0uYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm0uaCYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fbGliLmMmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX2xpYi5oJiMzNDssCiAgICAmIzM0O2JuZ2VfbGluay5jJiMzNDssCiAgICAmIzM0O2JuZ2VfbGluay5oJiMzNDssCiAgICAmIzM0O2JuZ2VfbmV0ZGV2LmMmIzM0OywKICAgICYjMzQ7Ym5nZV9uZXRkZXYuaCYjMzQ7LAogICAgJiMzNDtibmdlX3Jlc2MuYyYjMzQ7LAogICAgJiMzNDtibmdlX3Jlc2MuaCYjMzQ7LAogICAgJiMzNDtibmdlX3JtZW0uYyYjMzQ7LAogICAgJiMzNDtibmdlX3JtZW0uaCYjMzQ7LAogICAgJiMzNDtibmdlX3R4cnguYyYjMzQ7LAogICAgJiMzNDtibmdlX3R4cnguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcyNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqUENJIERldmljZSBEcml2ZXIgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhlIHByb21wdCBtZW50aW9ucyBgYm5nZWAuIE15IGZpcnN0IHRob3VnaHQgaXM6ICYjMzQ7V2FpdCwgKmJuZ2UqLi4uIGlzIHRoYXQgYWN0dWFsbHkgYSBQQ0kgZGV2aWNlIGRyaXZlcj8gVGhhdCBuYW1lIHJpbmdzIGEgYmVsbCwgYnV0IEkgbmVlZCB0byBjb25maXJtLiYjMzQ7IEltbWVkaWF0ZWx5LCBteSBtZW50YWwgZ2VhcnMgc2hpZnQgaW50byBnZWFyIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gVG8gZmlndXJlIHRoaXMgb3V0LCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byB0aGUgdXN1YWwgc3VzcGVjdHM6IGVpdGhlciBgYm5nZV9jb3JlLmNgIG9yIGBibmdlX25ldGRldi5jYC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB3aGVyZSB0aGlzIGtpbmQgb2YgZHJpdmVyIGZ1bmN0aW9uYWxpdHkgd291bGQgbGlrZWx5IHJlc2lkZSwgYW5kIGFyZSB3aGVyZSBJIG5lZWQgdG8gbG9vayBmb3IgY29uZmlybWF0aW9uIGFuZCBkZXRhaWxzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9NDA3PXN0YXRpYyB2b2lkIGJuZ2Vfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjQxNzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYm5nZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTQxOC1cdC5uYW1lXHRcdD0gYm5nZV9kcml2ZXJfbmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA5OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IGEgUENJIGRyaXZlci4gVGhlIGltbWVkaWF0ZSBjb25jZXJuIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBpcyByZWFjaGFiaWxpdHkuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBsaWtlIHRob3NlIGZvciBQQ0kgZGV2aWNlcywgYXJlIGdlbmVyYWxseSBpbmFjY2Vzc2libGUgdW5sZXNzIHRoZXJlJiMzOTtzIGEgY29ycmVzcG9uZGluZyBlbXVsYXRvciBwcmVzZW50IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGluayBvZiBgZTEwMDBlYCBpbiBRRU1VIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBleGFtcGxlLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhlcmUgYSBRRU1VIGVtdWxhdG9yIGZvciBgYm5nZWA/IFRoZSBuYW1lIHJpbmdzIGEgYmVsbCwgYnV0IGl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzLiBNeSBndXQgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IGEgQnJvYWRjb20gTmV0WHRyZW1lLUUgdmFyaWFudCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIG15IG1lbW9yeSBpc24mIzM5O3Qgam9nZ2luZyBhbnkgc3BlY2lmaWMgZW11bGF0b3JzIGZvciB0aGlzIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIFNvLCBpdCYjMzk7cyBzdGFydGluZyB0byBsb29rIGxpa2UgYSBkZWFkIGVuZCBmb3IgZGlyZWN0IGludGVyYWN0aW9uLi4uIG9yLCBwb3NzaWJseSBhIG5ldyBhbmQgYXMgeWV0IHVuLWVtdWxhdGVkIGRyaXZlci4KCkJ1dCB3YWl0LCBob2xkIG9uLiBDb3VsZCBgYm5nZWAgYmUgYSBwbGFjZWhvbGRlciBuYW1lLCBhICYjMzQ7ZmFrZSYjMzQ7IGRyaXZlciBpZGVudGlmaWVyLCBvciBhIHJlY2VudGx5IGRldmVsb3BlZCBkcml2ZXI/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLgoKTmV4dCwgSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgdGhlIGZ1enphYmlsaXR5IG9mIHRoaXMgZHJpdmVyLiBBc3N1bWluZyBpdCYjMzk7cyBhIFBDSSBkcml2ZXIgYW5kIGxhY2tpbmcgYSBRRU1VIGVtdWxhdG9yLCBpdCYjMzk7cyB2aXJ0dWFsbHkgdW5yZWFjaGFibGUgaW4gbXkgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gdmVyaWZ5IHRoZSBlbnZpcm9ubWVudC4KCkZpbmFsbHksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyOiBJcyB0aGVyZSBhbnkgZm9ybSBvZiBlbXVsYXRpb24gZm9yIHRoaXMgZHJpdmVyLCBvciBpcyBpdCBhY3R1YWxseSBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYSBgdmV0aGAgaW50ZXJmYWNlIG9yIGEgZGlmZmVyZW50IHZpcnR1YWwgZHJpdmVyIGFsdG9nZXRoZXI/IFRoYXQgaW5mb3JtYXRpb24gd2lsbCBkaWN0YXRlIHRoZSBuZXh0IHN0ZXBzIGluIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYm5nZV9wY2lfdGJsW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYm5nZV9wY2lfdGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzg1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBCaW5kaW5ncyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRldmljZSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBQQ0kgYnVzLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBQQ0kgSURzIGl0JiMzOTtzIGFjdHVhbGx5IGJpbmRpbmcgdG8uIFRoaXMgaXMgdGhlIGJlZHJvY2sgb2YgdW5kZXJzdGFuZGluZyBpdHMgY29uZmlndXJhdGlvbiBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHJlY29nbml6ZWQgYnkgdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgaXQgYWdhaW5zdCBteSBrbm93biBkcml2ZXJzLCB1bmRlcnN0YW5kIHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCBiZWdpbiB0byBkaWFnbm9zZSBhbnkgaXNzdWVzLiBJdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgZGV2aWNlJiMzOTtzIGNhcGFiaWxpdGllcyBhbmQgYmVoYXZpb3VyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHN5c3RlbSByZXBvcnRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCB7XG4gIDIxOlx0XHRjaGFyICpuYW1lO1xuICAyMjpcdH0gYm9hcmRfaW5mb1tdID0ge1xuICAyMzpcdFx0W0JDTTU3NzA4XSA9IHsgXCYjMzQ7QnJvYWRjb20gQkNNNTc3MDggVGhvclVsdHJhIDUwR2IvMTAwR2IvMjAwR2IvNDAwR2IvODAwR2IgRXRoZXJuZXRcJiMzNDsgfSxcbiAgMjQ6XHR9O1xuICAyNTpcdFxuICAyNjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBibmdlX3BjaV90YmxbXSA9IHtcbiAgMjc6XHRcdHsgUENJX1ZERVZJQ0UoQlJPQURDT00sIDB4MTc4MCksIC5kcml2ZXJfZGF0YSA9IEJDTTU3NzA4IH0sXG4gIDI4Olx0XHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4gIDI5Olx0XHR7MCwgfVxuICAzMDpcdH07XG4gIDMxOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGJuZ2VfcGNpX3RibCk7XG4gIDMyOlx0XG4gIDMzOlx0c3RhdGljIHZvaWQgYm5nZV9wcmludF9kZXZpY2VfaW5mbyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgZW51bSBib2FyZF9pZHggaWR4KVxuICAzNDpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzYKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGhlcmUgaXMgdGhlIHRhcmdldDogYSBCcm9hZGNvbSBCQ001NzcwOCBUaG9yVWx0cmEuIFRoaXMgaXMgcGh5c2ljYWwgaGFyZHdhcmUsIHBsYWluIGFuZCBzaW1wbGUuIE5vIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdHMgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCBhcmUgbXkgc3RhbmRhcmQgdGVzdGluZyBlbnZpcm9ubWVudHMuCgpUaGVyZWZvcmUsIGFueSBjb2RlIHBhdGhzIHRoYXQgdGhpcyBwYXRjaCBtb2RpZmllcyBhcmUgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlIGxvZ2ljIGp1c3Qgd29uJiMzOTt0IGV4ZWN1dGUuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0LCBJIHNob3VsZCBkbyBteSBkdWUgZGlsaWdlbmNlIGFuZCBtYWtlIGFic29sdXRlbHkgY2VydGFpbi4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlcmUgaXNuJiMzOTt0IHNvbWUgb2JzY3VyZSB2RFBBIGRyaXZlciBvciBzb21lIG90aGVyIHdheSB0byBnZXQgdG8gaXQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LiBIbW0sIG5vLCBpdCYjMzk7cyBhIHN0YW5kYXJkIFBDSSBkcml2ZXIsIG5vdGhpbmcgZmFuY3kuCgpUaGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIHBhdGhzIHRoYXQgYXJlIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXphdGlvbiwgKmV2ZW4qIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFNpbmNlIHRoaXMgaXMgYSBwaHlzaWNhbCBFdGhlcm5ldCBQQ0kgZHJpdmVyLCBhbmQgSSBjYW4mIzM5O3QgZW11bGF0ZSBvciBpbmplY3QgaXQgaW50byBteSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRoZSBjb25kaXRpb25zIGFyZSBtZXQuCgpMZXQmIzM5O3Mgd3JpdGUgdGhlIHJlc3BvbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIGJuZ2UgZHJpdmVyIChCQ001NzcwOCBUaG9yVWx0cmEpLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgZGV2aWNlIGluIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6MzY6NDkuNDQ3Nzc3Nzg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMwMzI3NjEyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6MzY6NDkuNDQ3Nzg2NzA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0MzkwMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTVmNDA5NjJlODhlNDQ1MDM5Njc1N2ZjZGM1ODgxODcyOWM4YjNkYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyMSAyMDozNjo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuaW5kZXggNzFhN2NhMjE5NmFkODguLjMxMWM4YmM5MzE2MDNhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcXG5AQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbi1cXHRcXHRcXHRcXHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXFxuK1xcdFxcdFxcdFxcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldiA9IHJkZXYtXFx1MDAzZWF1eF9kZXY7XFxuIFxcdHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTtcXG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuIFxcbiBcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fUklOR19GUkVFKTtcXG4gXFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XFxuLVxcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMTYoZndfcmluZ19pZCk7XFxuK1xcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XFxuIFxcdGJuZ19yZV9maWxsX2Z3X21zZyhcXHUwMDI2ZndfbXNnLCAodm9pZCAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVxcdTAwMjZyZXNwLFxcbiBcXHRcXHRcXHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XFxuIFxcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcXHUwMDI2ZndfbXNnKTtcXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbiBcXHRcXHRcXHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcXG4gXFx0cmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsIFxcdTAwMjZmd19tc2cpO1xcbiBcXHRpZiAoIXJjKVxcbi1cXHRcXHQqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7XFxuK1xcdFxcdCpmd19yaW5nX2lkID0gKHUxNilsZTMyX3RvX2NwdShyZXNwLnJpbmdfaWQpO1xcbiBcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG5pbmRleCBmMjFjZmY2NTFmZDQ0YS4uNDQ3OWNjZDA3MWY1MzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxcbkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBibmdlX3BmX2luZm8ge1xcbiB9O1xcbiBcXG4gI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSUQgICAgICAoKHUxNiktMSlcXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcXHQoVTMyX01BWClcXG4gXFxuIGVudW0ge1xcbiBcXHRCTkdFX0ZXX0NBUF9TSE9SVF9DTURcXHRcXHRcXHRcXHQ9IEJJVF9VTEwoMCksXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG5pbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xcbkBAIC0xMjgzLDcgKzEyODMsNyBAQCBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcbiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxcbi1cXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcXG4rXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0ICpyZXE7XFxuIFxcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cXHUwMDNlYmQ7XFxuQEAgLTEyOTUsNyArMTI5NSw3IEBAIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmVxLVxcdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xcbiBcXHRyZXEtXFx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcXG4tXFx0cmVxLVxcdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuK1xcdHJlcS1cXHUwMDNlcmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXG4gXFx0Ym5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG5AQCAtMTMxNyw3ICsxMzE3LDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xcbiBcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gYm4tXFx1MDAzZWJkO1xcbi1cXHR1MTYgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbitcXHR1MzIgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xcbkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcbiBcXHRyZXNwID0gYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG4tXFx0cmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AtXFx1MDAzZXJpbmdfaWQpO1xcbitcXHRyaW5nX2lkID0gbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcmluZ19pZCk7XFxuIFxcdGJuZ2VfaHdybV9yZXFfZHJvcChiZCwgcmVxKTtcXG4gXFxuIGV4aXQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXFxuIHZvaWQgYm5nZV9od3JtX3N0YXRfY3R4X2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBibmdlX2h3cm1fc3RhdF9jdHhfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4tXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIGludCBjbXBsX3JpbmdfaWQpO1xcbitcXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7XFxuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4gXFx0XFx0XFx0ICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXFxuaW5kZXggNzA3NjgxOTMwMDRjYjIuLjZmN2VmNTA2ZDRlMThjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxcbiB7XFxuIFxcdHJldHVybiByeHItXFx1MDAzZXJ4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKVxcbiB7XFxuIFxcdHJldHVybiB0eHItXFx1MDAzZXR4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbkBAIC0xMzc1LDEyICsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gXFx1MDAyNmJuLVxcdTAwM2VibmFwaVtpXS1cXHUwMDNlbnFfcmluZztcXG4gXFx0XFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBucXItXFx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgYm5nZV9jcF9yaW5nX2luZm8gKmNwciA9IFxcdTAwMjZucXItXFx1MDAzZWNwX3JpbmdfYXJyW2pdO1xcbiBcXG4gXFx0XFx0XFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0O1xcbiBcXHRibmdlX2luaXRfcnhiZF9wYWdlcyhyaW5nLCB0eXBlKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfYWdnX3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHR1MzIgdHlwZTtcXG4gXFxuIFxcdHJpbmcgPSBcXHUwMDI2cnhyLVxcdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdGlmIChibmdlX2lzX2FnZ19yZXFkKGJuLVxcdTAwM2ViZCkpIHtcXG4gXFx0XFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFxcdTAwM2NcXHUwMDNjIFJYX0JEX0xFTl9TSElGVCkgfFxcbiBcXHRcXHRcXHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcXG5AQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gXFx1MDAyNmJuLVxcdTAwM2V0eF9yaW5nW2ldO1xcbiBcXHRcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXG4tXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFxuIFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ0eHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG5AQCAtMTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIGludCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0ICAgIHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXHRibmdlX2RiX3dyaXRlKGJuLVxcdTAwM2ViZCwgXFx1MDAyNnJ4ci1cXHUwMDNlcnhfYWdnX2RiLCByeHItXFx1MDAzZXJ4X2FnZ19wcm9kKTtcXG4gXFx0Ym5nZV9kYl93cml0ZShibi1cXHUwMDNlYmQsIFxcdTAwMjZyeHItXFx1MDAzZXJ4X2RiLCByeHItXFx1MDAzZXJ4X3Byb2QpO1xcbi1cXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbitcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuIFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2cnhyLVxcdTAwM2VyeF9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuLVxcdGJuLVxcdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cXHUwMDNlZndfcmluZ19pZDtcXG4rXFx0Ym4tXFx1MDAzZWdycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xOTE2LDcgKzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuIFxcdFxcdGJuZ2VfZGJfbnEoYm4sIFxcdTAwMjZucXItXFx1MDAzZW5xX2RiLCBucXItXFx1MDAzZW5xX3Jhd19jb25zKTtcXG4gXFx0XFx0ZW5hYmxlX2lycSh2ZWN0b3IpO1xcbi1cXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuK1xcdFxcdGJuLVxcdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbiBcXG4gXFx0XFx0aWYgKCFpKSB7XFxuIFxcdFxcdFxcdHJjID0gYm5nZV9od3JtX3NldF9hc3luY19ldmVudF9jcihiZCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXFxuIFxcdHRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XFxuLVxcdFxcdHUxNiByaW5nX2lkLCBqO1xcbitcXHRcXHR1MzIgajtcXG4gXFxuIFxcdFxcdGogPSBiZC1cXHUwMDNlcnNzX2luZGlyX3RibFtpXTtcXG4gXFx0XFx0cnhyID0gXFx1MDAyNmJuLVxcdTAwM2VyeF9yaW5nW2pdO1xcbiBcXG4tXFx0XFx0cmluZ19pZCA9IHJ4ci1cXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4tXFx0XFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4rXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQpO1xcbitcXHRcXHQqcmluZ190YmwrKyA9IGNwdV90b19sZTE2KGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbiBcXHRcXHRucXIgPSBcXHUwMDI2Ym5hcGktXFx1MDAzZW5xX3Jpbmc7XFxuIFxcdFxcdHJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0XFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRcXHRibmdlX2RiX25xKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgbnFyLVxcdTAwM2VucV9yYXdfY29ucyk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHUzMiBncnBfaWR4ID0gcnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlaW5kZXg7XFxuIFxcdHUzMiBjbXBsX3JpbmdfaWQ7XFxuIFxcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y21wbF9yaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xcbkBAIC0yNDA5LDcgKzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYLFxcbiBcXHRcXHRcXHRcXHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcXG4gXFx0XFx0XFx0XFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFx0Ym4tXFx1MDAzZWdycF9pbmZvW2dycF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MjEsMTQgKzI0MTksMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0dTMyIGdycF9pZHggPSByeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIGNtcGxfcmluZ19pZDtcXG4gXFxuLVxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XFxuIFxcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWF9BR0csXFxuIFxcdFxcdFxcdFxcdGNsb3NlX3BhdGggPyBjbXBsX3JpbmdfaWQgOlxcbiBcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXHR1MzIgY21wbF9yaW5nX2lkO1xcbiBcXG4tXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxcbitcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGNtcGxfcmluZ19pZCA9IGNsb3NlX3BhdGggPyBibmdlX2NwX3JpbmdfZm9yX3R4KHR4cikgOlxcbiBcXHRcXHQgICAgICAgSU5WQUxJRF9IV19SSU5HX0lEO1xcbiBcXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXFxuIFxcdFxcdFxcdFxcdGNtcGxfcmluZ19pZCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nO1xcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX0wyX0NNUEwsXFxuIFxcdFxcdFxcdFxcdElOVkFMSURfSFdfUklOR19JRCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbkBAIC0yNDk2LDExICsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbiBcXHRcXHRcXHRibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VjcF9yaW5nX2FycltqXSk7XFxuIFxcbiBcXHRcXHRyaW5nID0gXFx1MDAyNm5xci1cXHUwMDNlcmluZ19zdHJ1Y3Q7XFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkge1xcbitcXHRcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcXG4gXFx0XFx0XFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxcbmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG5AQCAtNjMwLDggKzYzMCw4IEBAIHN0cnVjdCBibmdlX2wyX2ZpbHRlciB7XFxuIFxcdHJlZmNvdW50X3RcXHRcXHRyZWZjbnQ7XFxuIH07XFxuIFxcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cik7XFxuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcXG4gaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cixcXG4gXFx0XFx0ICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcXG4gc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3Qge1xcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXFx0cmluZ19tZW07XFxuIFxcbi1cXHR1MTZcXHRcXHRcXHRmd19yaW5nX2lkO1xcbitcXHR1MzJcXHRcXHRcXHRmd19yaW5nX2lkO1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHUxNlxcdFxcdGdycF9pZHg7XFxuIFxcdFxcdHUxNlxcdFxcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaCBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxcbmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG5AQCAtODMxNyw4ICs4MzE3LDcgQEAgc3RydWN0IGh3cm1fcmluZ19hbGxvY19vdXRwdXQge1xcbiBcXHRfX2xlMTZcXHRyZXFfdHlwZTtcXG4gXFx0X19sZTE2XFx0c2VxX2lkO1xcbiBcXHRfX2xlMTZcXHRyZXNwX2xlbjtcXG4tXFx0X19sZTE2XFx0cmluZ19pZDtcXG4tXFx0X19sZTE2XFx0bG9naWNhbF9yaW5nX2lkO1xcbitcXHRfX2xlMzJcXHRyaW5nX2lkO1xcbiBcXHR1OFxcdHB1c2hfYnVmZmVyX2luZGV4O1xcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QSU5HX0JVRkZFUiAweDBVTFxcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxcbkBAIC04MzQ1LDEwICs4MzQ0LDEwIEBAIHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCB7XFxuIFxcdHU4XFx0ZmxhZ3M7XFxuIFxcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxcbiBcXHQjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEXFxuLVxcdF9fbGUxNlxcdHJpbmdfaWQ7XFxuK1xcdF9fbGUxNlxcdHVudXNlZF8xO1xcbiBcXHRfX2xlMzJcXHRwcm9kX2lkeDtcXG4gXFx0X19sZTMyXFx0b3BhcXVlO1xcbi1cXHRfX2xlMzJcXHR1bnVzZWRfMTtcXG4rXFx0X19sZTMyXFx0cmluZ19pZDtcXG4gfTtcXG4gXFxuIC8qIGh3cm1fcmluZ19mcmVlX291dHB1dCAoc2l6ZToxMjhiLzE2QikgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6MzY6NTAuNTczMjQ3Njk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODE5MDcyODAwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNWY0MDk2MmU4OGU0NDUwMzk2NzU3ZmNkYzU4ODE4NzI5YzhiM2RhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMjA6MzY6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG5pbmRleCA3MWE3Y2EyMTk2YWQ4OC4uMzExYzhiYzkzMTYwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG4gfVxuIFxuIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4tXHRcdFx0XHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXG4rXHRcdFx0XHR1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpXG4ge1xuIFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LVx1MDAzZWF1eF9kZXY7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgcmVxID0ge307XG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXG4gXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9SSU5HX0ZSRUUpO1xuIFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XG4tXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpO1xuK1x0cmVxLnJpbmdfaWQgPSBjcHVfdG9fbGUzMihmd19yaW5nX2lkKTtcbiBcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuIFx0XHRcdCAgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcbiBcdFx0XHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuIFx0aWYgKCFyYylcbi1cdFx0KmZ3X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLnJpbmdfaWQpO1xuK1x0XHQqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiBcbiBcdHJldHVybiByYztcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5AQCAtMzYsNiArMzYsNyBAQCBzdHJ1Y3QgYm5nZV9wZl9pbmZvIHtcbiB9O1xuIFxuICNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEICAgICAgKCh1MTYpLTEpXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcdChVMzJfTUFYKVxuIFxuIGVudW0ge1xuIFx0Qk5HRV9GV19DQVBfU0hPUlRfQ01EXHRcdFx0XHQ9IEJJVF9VTEwoMCksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuaW5kZXggMWM5Y2ZlYzFiNjMzZmMuLjY1MWM1ZTc4MzUxNmNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG5AQCAtMTI4Myw3ICsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcbitcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZClcbiB7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlcS1cdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xuIFx0cmVxLVx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcbi1cdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbitcdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMzIocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcbiBcdGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuQEAgLTEzMTcsNyArMTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0ICpyZXNwO1xuIFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xuIFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLVx1MDAzZWJkO1xuLVx0dTE2IHJpbmdfaWQsIGZsYWdzID0gMDtcbitcdHUzMiByaW5nX2lkLCBmbGFncyA9IDA7XG4gXHRpbnQgcmM7XG4gXG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xuQEAgLTE0MDEsNyArMTQwMSw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcbi1cdHJpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuK1x0cmluZ19pZCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4gXHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG4gXG4gZXhpdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXG4gdm9pZCBibmdlX2h3cm1fc3RhdF9jdHhfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKTtcbiBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pO1xuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZCk7XG4rXHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpO1xuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0XHQgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuIFx0XHRcdCAgICAgdTMyIHJpbmdfdHlwZSwgdTMyIG1hcF9pbmRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5pbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuQEAgLTEzMjcsMTIgKzEzMjcsMTIgQEAgc3RhdGljIGludCBibmdlX2FsbG9jX2NvcmUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdHJldHVybiByYztcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4ge1xuIFx0cmV0dXJuIHJ4ci1cdTAwM2VyeF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4ge1xuIFx0cmV0dXJuIHR4ci1cdTAwM2V0eF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG5AQCAtMTM3NSwxMiArMTM3NSwxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfbnFfdHJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRzdHJ1Y3QgYm5nZV9ucV9yaW5nX2luZm8gKm5xciA9IFx1MDAyNmJuLVx1MDAzZWJuYXBpW2ldLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnFyLVx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xuIFx0XHRcdHN0cnVjdCBibmdlX2NwX3JpbmdfaW5mbyAqY3ByID0gXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdO1xuIFxuIFx0XHRcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0fVxuIFx0fVxuIH1cbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdDtcbiBcdGJuZ2VfaW5pdF9yeGJkX3BhZ2VzKHJpbmcsIHR5cGUpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbkBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHUzMiB0eXBlO1xuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRpZiAoYm5nZV9pc19hZ2dfcmVxZChibi1cdTAwM2ViZCkpIHtcbiBcdFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBSWF9CRF9MRU5fU0hJRlQpIHxcbiBcdFx0XHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcbkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIgPSBcdTAwMjZibi1cdTAwM2V0eF9yaW5nW2ldO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXG4gXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4gXHRcdFx0XHQgICAgIFx1MDAyNnR4ci1cdTAwM2VibmFwaS1cdTAwM2VuYXBpKTtcbkBAIC0xODY3LDcgKzE4NjcsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHQgICAgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfZGIsIHJ4ci1cdTAwM2VyeF9hZ2dfcHJvZCk7XG4gXHRibmdlX2RiX3dyaXRlKGJuLVx1MDAzZWJkLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHJ4ci1cdTAwM2VyeF9wcm9kKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdHJldHVybiByYztcbiBcbiBcdGJuZ2Vfc2V0X2RiKGJuLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4tXHRibi1cdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE5MTYsNyArMTkxNiw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0XHRlbmFibGVfaXJxKHZlY3Rvcik7XG4tXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4rXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdFx0aWYgKCFpKSB7XG4gXHRcdFx0cmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXG4gXHR0Ymxfc2l6ZSA9IGJuZ2VfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShiZCk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XG4tXHRcdHUxNiByaW5nX2lkLCBqO1xuK1x0XHR1MzIgajtcbiBcbiBcdFx0aiA9IGJkLVx1MDAzZXJzc19pbmRpcl90YmxbaV07XG4gXHRcdHJ4ciA9IFx1MDAyNmJuLVx1MDAzZXJ4X3Jpbmdbal07XG4gXG4tXHRcdHJpbmdfaWQgPSByeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbi1cdFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbitcdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZCk7XG4rXHRcdCpyaW5nX3RibCsrID0gY3B1X3RvX2xlMTYoYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpKTtcbiBcdH1cbiB9XG4gXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRucXIgPSBcdTAwMjZibmFwaS1cdTAwM2VucV9yaW5nO1xuIFx0XHRyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0fVxuIH1cbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG5AQCAtMjQwOSw3ICsyNDA3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdFx0UklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRibi1cdTAwM2VncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDIxLDE0ICsyNDE5LDE0IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlhfQUdHLFxuIFx0XHRcdFx0Y2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6XG4gXHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gfVxuIFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcdTAwMjZ0eHItXHUwMDNldHhfcmluZ19zdHJ1Y3Q7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4rXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gY2xvc2VfcGF0aCA/IGJuZ2VfY3BfcmluZ19mb3JfdHgodHhyKSA6XG4gXHRcdCAgICAgICBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXG4gXHRcdFx0XHRjbXBsX3JpbmdfaWQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZztcbiBcbiBcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCxcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuQEAgLTI0OTYsMTEgKzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpXG4gXHRcdFx0Ym5nZV9od3JtX2NwX3JpbmdfZnJlZShibiwgXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdKTtcbiBcbiBcdFx0cmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbi1cdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpIHtcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcbiBcdFx0XHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZyxcbiBcdFx0XHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9OUSxcbiBcdFx0XHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbitcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuaW5kZXggZjQ2MzZiNWIwY2YzZjAuLmQxNzc5MTljMmUxMTcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbkBAIC02MzAsOCArNjMwLDggQEAgc3RydWN0IGJuZ2VfbDJfZmlsdGVyIHtcbiBcdHJlZmNvdW50X3RcdFx0cmVmY250O1xuIH07XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcbiBpbnQgYm5nZV9hbGxvY19yeF9kYXRhKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyLFxuIFx0XHQgICAgICAgdTE2IHByb2QsIGdmcF90IGdmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcbiBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCB7XG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXHRyaW5nX21lbTtcbiBcbi1cdHUxNlx0XHRcdGZ3X3JpbmdfaWQ7XG4rXHR1MzJcdFx0XHRmd19yaW5nX2lkO1xuIFx0dW5pb24ge1xuIFx0XHR1MTZcdFx0Z3JwX2lkeDtcbiBcdFx0dTE2XHRcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5pbmRleCA4ZWExM2Q1NDA3ZWVjZC4uMWY3YmQ5NjQxNWE1MjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuQEAgLTgzMTcsOCArODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHtcbiBcdF9fbGUxNlx0cmVxX3R5cGU7XG4gXHRfX2xlMTZcdHNlcV9pZDtcbiBcdF9fbGUxNlx0cmVzcF9sZW47XG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4tXHRfX2xlMTZcdGxvZ2ljYWxfcmluZ19pZDtcbitcdF9fbGUzMlx0cmluZ19pZDtcbiBcdHU4XHRwdXNoX2J1ZmZlcl9pbmRleDtcbiBcdCNkZWZpbmUgUklOR19BTExPQ19SRVNQX1BVU0hfQlVGRkVSX0lOREVYX1BJTkdfQlVGRkVSIDB4MFVMXG4gXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxuQEAgLTgzNDUsMTAgKzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHtcbiBcdHU4XHRmbGFncztcbiBcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX0xBU1QgICAgICAgICAgICAgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRFxuLVx0X19sZTE2XHRyaW5nX2lkO1xuK1x0X19sZTE2XHR1bnVzZWRfMTtcbiBcdF9fbGUzMlx0cHJvZF9pZHg7XG4gXHRfX2xlMzJcdG9wYXF1ZTtcbi1cdF9fbGUzMlx0dW51c2VkXzE7XG4rXHRfX2xlMzJcdHJpbmdfaWQ7XG4gfTtcbiBcbiAvKiBod3JtX3JpbmdfZnJlZV9vdXRwdXQgKHNpemU6MTI4Yi8xNkIpICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMDozNjo1MC41NzMyNDk4ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjk1MjgyODk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcm9hZGNvbSBibmdlIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBCcm9hZGNvbSBgYm5nZWAgZHJpdmVyLiBJdCBzZWVtcyB0aGV5J3JlIGJ1bXBpbmcgdGhlIHNpemUgb2YgYGZ3X3JpbmdfaWRgIGZyb20gYHUxNmAgdG8gYHUzMmAuIFRoaXMgaW1wYWN0cyBhIGJ1bmNoIG9mIGZpbGVzOiBgZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNgLCBhIHNsZXcgb2YgYGJuZ2VgIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxlcyAoYGJuZ2UuaGAsIGBibmdlX2h3cm1fbGliLntjLGh9YCwgYGJuZ2VfbmV0ZGV2LntjLGh9YCwgYGJuZ2Vfcm1lbS5oYCkgYW5kIGFsc28gYGluY2x1ZGUvbGludXgvYm5nZS9oc2kuaGAuIEludGVyZXN0aW5nLi4uXG5cbkkgc2VlIHRoZXkndmUgdXBkYXRlZCBgSU5WQUxJRF9IV19SSU5HX0lEYCB0byBhIDMyLWJpdCB2ZXJzaW9uLCBgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUYC4gIE1ha2VzIHNlbnNlLCB0aGF0J3MgZXhwZWN0ZWQgd2l0aCB0aGUgcmluZyBJRCBzaXplIGNoYW5nZS4gQW5kIHRoZSBgcmluZ19pZGAgZmllbGRzIGluIHRoZSBgaHdybV9yaW5nX2FsbG9jX291dHB1dGAgYW5kIGBod3JtX3JpbmdfZnJlZV9pbnB1dGAgc3RydWN0dXJlcyBhcmUgZ2V0dGluZyB0aGVpciBkYXRhIHR5cGVzIGNoYW5nZWQgZnJvbSBgX19sZTE2YCB0byBgX19sZTMyYC4gIFNvIGl0J3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS5cblxuR2l2ZW4gdGhpcyB0eXBlIG9mIGNoYW5nZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiB1c2VkIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgdGhlcmUuIFRoZSBkcml2ZXIgaXMgY2xlYXJseSBgYm5nZWAgYWNjb3JkaW5nIHRvIHRoZSBwYXRoLiBIb2xkIG9uLCBcImJuZ2VcIj8gVGhhdCdzIG5vdCBvbmUgSSdtIHN1cGVyIGZhbWlsaWFyIHdpdGguIElzIHRoYXQgYW4gb2xkZXIgQnJvYWRjb20gTmV0WHRyZW1lLUUgb3Igc29tZXRoaW5nPyBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzbid0IGEgdHlwbyBmb3IgYGJueHRgLiBMZXQncyBoaXQgdGhlIGtlcm5lbCB0cmVlIGFuZCBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTM5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MDMuNTI2MDkzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImI0NC5jXCIsXG4gICAgXCJiNDQuaFwiLFxuICAgIFwiYmNtNDkwOF9lbmV0LmNcIixcbiAgICBcImJjbTQ5MDhfZW5ldC5oXCIsXG4gICAgXCJiY202M3h4X2VuZXQuY1wiLFxuICAgIFwiYmNtNjN4eF9lbmV0LmhcIixcbiAgICBcImJjbXN5c3BvcnQuY1wiLFxuICAgIFwiYmNtc3lzcG9ydC5oXCIsXG4gICAgXCJiZ21hYy1iY21hLW1kaW8uY1wiLFxuICAgIFwiYmdtYWMtYmNtYS5jXCIsXG4gICAgXCJiZ21hYy1wbGF0Zm9ybS5jXCIsXG4gICAgXCJiZ21hYy5jXCIsXG4gICAgXCJiZ21hYy5oXCIsXG4gICAgXCJibngyLmNcIixcbiAgICBcImJueDIuaFwiLFxuICAgIFwiYm54Ml9mdy5oXCIsXG4gICAgXCJjbmljLmNcIixcbiAgICBcImNuaWMuaFwiLFxuICAgIFwiY25pY19kZWZzLmhcIixcbiAgICBcImNuaWNfaWYuaFwiLFxuICAgIFwic2IxMjUwLW1hYy5jXCIsXG4gICAgXCJ0ZzMuY1wiLFxuICAgIFwidGczLmhcIixcbiAgICBcInVuaW1hYy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImFzcDJcIixcbiAgICBcImJuZ2VcIixcbiAgICBcImJueDJ4XCIsXG4gICAgXCJibnh0XCIsXG4gICAgXCJnZW5ldFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjAzLjUyNjIzMTE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQzMDg2NDUyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgXCJibmdlXCIgQ29udGV4dCoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGUgdGVybSBgYm5nZWAgcG9wIHVwLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJlYXQgaXQgYXMgYSBwb3RlbnRpYWwgbmFtZXNwYWNlIG9yIGNvbXBvbmVudC4gSWYgSSdtIHdvcmtpbmcgb24gYSBwcm9qZWN0IHdpdGggYSBzdHJ1Y3R1cmUgSSdtIGZhbWlsaWFyIHdpdGgsIGl04oCZcyBoaWdobHkgbGlrZWx5IEknbSBhd2FyZSBvZiB0aGUgcHJvamVjdCdzIGRpcmVjdG9yeSBzdHJ1Y3R1cmUsIGFuZCB0aGlzIGNvbnRleHQgaW5mbHVlbmNlcyB0aGUgd2F5IEkgcHJvY2VzcyB0aGlzIG5ldyBpbmZvcm1hdGlvbi4gVGhlIHF1aWNrIGNoZWNrIGlzIHRvIHNlZSBpZiBJJ20gYWJsZSB0byByZWNhbGwgYSBkaXJlY3Rvcnkgd2l0aCBhIHNpbWlsYXIgbmFtZSwgdXN1YWxseSwgdGhlIGxvY2F0aW9uIGluIHRoZSBwcm9qZWN0J3MgZmlsZSBzdHJ1Y3R1cmUgcHJvdmlkZXMgYSBzb2xpZCBjbHVlIGFib3V0IGl0cyBmdW5jdGlvbi4gTm93IEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBwYXRoLCBleHBlY3RpbmcgdG8gc2VlIGEgZGlyZWN0b3J5IG5hbWVkIGBibmdlYC4gVGhhdCdzIHdoZXJlIEknbGwgZ2V0IHRoZSByZWFsIGNvbnRleHQsIGl0cyBjb250ZW50cywgaXRzIGRlcGVuZGVuY2llcywgdGhlIHdob2xlIHBpY3R1cmUuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQncyBhY3R1YWxseSB0aGVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIHB1cnBvc2Ugb2YgYGJuZ2VgIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBvciBwZXJoYXBzLCBpdCdzIGEgbmFtaW5nIGNvbnZlbnRpb24sIGluIHdoaWNoIGNhc2UgSSBtaWdodCBsb29rIGZvciBhIGJyb2FkZXIgY29udGV4dC4gSSdsbCBtZW50YWxseSBzdGFydCB0byBidWlsZCBhIG1hcCBvZiBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gYmFzZWQgb24gdGhlIHN0cnVjdHVyZSBhbmQgY29udGVudCBvZiBgYm5nZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNDUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MjcuODM0ODgyODcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ1NjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYm5nZS5oXCIsXG4gICAgXCJibmdlX2F1eHIuY1wiLFxuICAgIFwiYm5nZV9hdXhyLmhcIixcbiAgICBcImJuZ2VfY29yZS5jXCIsXG4gICAgXCJibmdlX2RiLmhcIixcbiAgICBcImJuZ2VfZGV2bGluay5jXCIsXG4gICAgXCJibmdlX2RldmxpbmsuaFwiLFxuICAgIFwiYm5nZV9ldGh0b29sLmNcIixcbiAgICBcImJuZ2VfZXRodG9vbC5oXCIsXG4gICAgXCJibmdlX2h3X2RlZi5oXCIsXG4gICAgXCJibmdlX2h3cm0uY1wiLFxuICAgIFwiYm5nZV9od3JtLmhcIixcbiAgICBcImJuZ2VfaHdybV9saWIuY1wiLFxuICAgIFwiYm5nZV9od3JtX2xpYi5oXCIsXG4gICAgXCJibmdlX2xpbmsuY1wiLFxuICAgIFwiYm5nZV9saW5rLmhcIixcbiAgICBcImJuZ2VfbmV0ZGV2LmNcIixcbiAgICBcImJuZ2VfbmV0ZGV2LmhcIixcbiAgICBcImJuZ2VfcmVzYy5jXCIsXG4gICAgXCJibmdlX3Jlc2MuaFwiLFxuICAgIFwiYm5nZV9ybWVtLmNcIixcbiAgICBcImJuZ2Vfcm1lbS5oXCIsXG4gICAgXCJibmdlX3R4cnguY1wiLFxuICAgIFwiYm5nZV90eHJ4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MjcuODM3MTM3NDMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MjczNzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczpcblxuKipQQ0kgRGV2aWNlIERyaXZlciBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgbWVudGlvbnMgYGJuZ2VgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBcIldhaXQsICpibmdlKi4uLiBpcyB0aGF0IGFjdHVhbGx5IGEgUENJIGRldmljZSBkcml2ZXI/IFRoYXQgbmFtZSByaW5ncyBhIGJlbGwsIGJ1dCBJIG5lZWQgdG8gY29uZmlybS5cIiBJbW1lZGlhdGVseSwgbXkgbWVudGFsIGdlYXJzIHNoaWZ0IGludG8gZ2VhciB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUuIFRvIGZpZ3VyZSB0aGlzIG91dCwgSSdsbCBnbyBzdHJhaWdodCB0byB0aGUgdXN1YWwgc3VzcGVjdHM6IGVpdGhlciBgYm5nZV9jb3JlLmNgIG9yIGBibmdlX25ldGRldi5jYC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB3aGVyZSB0aGlzIGtpbmQgb2YgZHJpdmVyIGZ1bmN0aW9uYWxpdHkgd291bGQgbGlrZWx5IHJlc2lkZSwgYW5kIGFyZSB3aGVyZSBJIG5lZWQgdG8gbG9vayBmb3IgY29uZmlybWF0aW9uIGFuZCBkZXRhaWxzLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjMxLjExOTg4MDIwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAyMzgzNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jPTQwNz1zdGF0aWMgdm9pZCBibmdlX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo0MTc6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGJuZ2VfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNDE4LVxcdC5uYW1lXFx0XFx0PSBibmdlX2RyaXZlcl9uYW1lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMDozNzozMS42ODAxMjc1ODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzQxNTI1NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUaGlzIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgYSBQQ0kgZHJpdmVyLiBUaGUgaW1tZWRpYXRlIGNvbmNlcm4gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGlzIHJlYWNoYWJpbGl0eS4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMsIGxpa2UgdGhvc2UgZm9yIFBDSSBkZXZpY2VzLCBhcmUgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSB1bmxlc3MgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZW11bGF0b3IgcHJlc2VudCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpbmsgb2YgYGUxMDAwZWAgaW4gUUVNVSDigJMgdGhhdCdzIGEgZ29vZCBleGFtcGxlLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBpcyB0aGVyZSBhIFFFTVUgZW11bGF0b3IgZm9yIGBibmdlYD8gVGhlIG5hbWUgcmluZ3MgYSBiZWxsLCBidXQgaXQncyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gTXkgZ3V0IHRlbGxzIG1lIGl0J3MgbGlrZWx5IGEgQnJvYWRjb20gTmV0WHRyZW1lLUUgdmFyaWFudCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIG15IG1lbW9yeSBpc24ndCBqb2dnaW5nIGFueSBzcGVjaWZpYyBlbXVsYXRvcnMgZm9yIHRoaXMgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZC4gU28sIGl0J3Mgc3RhcnRpbmcgdG8gbG9vayBsaWtlIGEgZGVhZCBlbmQgZm9yIGRpcmVjdCBpbnRlcmFjdGlvbi4uLiBvciwgcG9zc2libHkgYSBuZXcgYW5kIGFzIHlldCB1bi1lbXVsYXRlZCBkcml2ZXIuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLiBDb3VsZCBgYm5nZWAgYmUgYSBwbGFjZWhvbGRlciBuYW1lLCBhIFwiZmFrZVwiIGRyaXZlciBpZGVudGlmaWVyLCBvciBhIHJlY2VudGx5IGRldmVsb3BlZCBkcml2ZXI/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLlxuXG5OZXh0LCBJJ2xsIG5lZWQgdG8gYXNzZXNzIHRoZSBmdXp6YWJpbGl0eSBvZiB0aGlzIGRyaXZlci4gQXNzdW1pbmcgaXQncyBhIFBDSSBkcml2ZXIgYW5kIGxhY2tpbmcgYSBRRU1VIGVtdWxhdG9yLCBpdCdzIHZpcnR1YWxseSB1bnJlYWNoYWJsZSBpbiBteSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgaGF2ZSB0byB2ZXJpZnkgdGhlIGVudmlyb25tZW50LlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlcjogSXMgdGhlcmUgYW55IGZvcm0gb2YgZW11bGF0aW9uIGZvciB0aGlzIGRyaXZlciwgb3IgaXMgaXQgYWN0dWFsbHkgYSB2aXJ0dWFsIGRldmljZSBsaWtlIGEgYHZldGhgIGludGVyZmFjZSBvciBhIGRpZmZlcmVudCB2aXJ0dWFsIGRyaXZlciBhbHRvZ2V0aGVyPyBUaGF0IGluZm9ybWF0aW9uIHdpbGwgZGljdGF0ZSB0aGUgbmV4dCBzdGVwcyBpbiBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwOTgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MzguNDIxNjU3NzkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg0ODg1NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTU9EVUxFX0RFVklDRV9UQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBibmdlX3BjaV90YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBibmdlX3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjM4Ljg4MDE3OTI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2ODE5MTMyMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBQQ0kgSUQgQmluZGluZ3MqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRldmljZSdzIGludGVyYWN0aW9uIHdpdGggdGhlIFBDSSBidXMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIFBDSSBJRHMgaXQncyBhY3R1YWxseSBiaW5kaW5nIHRvLiBUaGlzIGlzIHRoZSBiZWRyb2NrIG9mIHVuZGVyc3RhbmRpbmcgaXRzIGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCdzIGJlaW5nIHJlY29nbml6ZWQgYnkgdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgaXQgYWdhaW5zdCBteSBrbm93biBkcml2ZXJzLCB1bmRlcnN0YW5kIHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCBiZWdpbiB0byBkaWFnbm9zZSBhbnkgaXNzdWVzLiBJdCdzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBkZXZpY2UncyBjYXBhYmlsaXRpZXMgYW5kIGJlaGF2aW91ci4gTGV0J3Mgc2VlIHdoYXQgdGhlIHN5c3RlbSByZXBvcnRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjQ3LjU2MjA5NjQ4NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHtcXG4gIDIxOlxcdFxcdGNoYXIgKm5hbWU7XFxuICAyMjpcXHR9IGJvYXJkX2luZm9bXSA9IHtcXG4gIDIzOlxcdFxcdFtCQ001NzcwOF0gPSB7IFxcXCJCcm9hZGNvbSBCQ001NzcwOCBUaG9yVWx0cmEgNTBHYi8xMDBHYi8yMDBHYi80MDBHYi84MDBHYiBFdGhlcm5ldFxcXCIgfSxcXG4gIDI0OlxcdH07XFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBibmdlX3BjaV90YmxbXSA9IHtcXG4gIDI3OlxcdFxcdHsgUENJX1ZERVZJQ0UoQlJPQURDT00sIDB4MTc4MCksIC5kcml2ZXJfZGF0YSA9IEJDTTU3NzA4IH0sXFxuICAyODpcXHRcXHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXFxuICAyOTpcXHRcXHR7MCwgfVxcbiAgMzA6XFx0fTtcXG4gIDMxOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBibmdlX3BjaV90YmwpO1xcbiAgMzI6XFx0XFxuICAzMzpcXHRzdGF0aWMgdm9pZCBibmdlX3ByaW50X2RldmljZV9pbmZvKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBlbnVtIGJvYXJkX2lkeCBpZHgpXFxuICAzNDpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjQ3LjU2MjMwNjM0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDkxODAzMDc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgdGFyZ2V0OiBhIEJyb2FkY29tIEJDTTU3NzA4IFRob3JVbHRyYS4gVGhpcyBpcyBwaHlzaWNhbCBoYXJkd2FyZSwgcGxhaW4gYW5kIHNpbXBsZS4gTm8gc29mdHdhcmUgZW11bGF0aW9uIGV4aXN0cyBmb3IgdGhpcyBzcGVjaWZpYyBkZXZpY2UgaW4gUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGFyZSBteSBzdGFuZGFyZCB0ZXN0aW5nIGVudmlyb25tZW50cy5cblxuVGhlcmVmb3JlLCBhbnkgY29kZSBwYXRocyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIFRoZSBsb2dpYyBqdXN0IHdvbid0IGV4ZWN1dGUuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBCdXQsIEkgc2hvdWxkIGRvIG15IGR1ZSBkaWxpZ2VuY2UgYW5kIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGVyZSBpc24ndCBzb21lIG9ic2N1cmUgdkRQQSBkcml2ZXIgb3Igc29tZSBvdGhlciB3YXkgdG8gZ2V0IHRvIGl0IGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSG1tLCBubywgaXQncyBhIHN0YW5kYXJkIFBDSSBkcml2ZXIsIG5vdGhpbmcgZmFuY3kuXG5cblRoZSBwcm9tcHQgZXhwbGljaXRseSB0ZWxscyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemF0aW9uLCAqZXZlbiogd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gU2luY2UgdGhpcyBpcyBhIHBoeXNpY2FsIEV0aGVybmV0IFBDSSBkcml2ZXIsIGFuZCBJIGNhbid0IGVtdWxhdGUgb3IgaW5qZWN0IGl0IGludG8gbXkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBJJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRoZSBjb25kaXRpb25zIGFyZSBtZXQuXG5cbkxldCdzIHdyaXRlIHRoZSByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzYsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMDozODoxMi40ODAzNDUyOTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIGJuZ2UgZHJpdmVyIChCQ001NzcwOCBUaG9yVWx0cmEpLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgZGV2aWNlIGluIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gYm5nZSBkcml2ZXIgKEJDTTU3NzA4IFRob3JVbHRyYSksIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBkZXZpY2UgaW4gUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqhk7v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 20:06:48 +0000 UTC FinishedAt: 2026-07-21 20:38:13 +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+CgkJCTx0ZD4yMDI2LzA3LzIxIDIwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU1ZjQwOTYyZTg4ZTQ0NTAzOTY3NTdmY2RjNTg4MTg3MjljOGIzZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAyMDozNjo0NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG5pbmRleCA3MWE3Y2EyMTk2YWQ4OC4uMzExYzhiYzkzMTYwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbkBAIC0xMTMsNyAmIzQzOzExMyw3IEBAIHN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxuIH1cbiBcbiBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuLVx0XHRcdFx0dTE2IGZ3X3JpbmdfaWQsIGludCB0eXBlKVxuJiM0MztcdFx0XHRcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcbiB7XG4gXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldiA9IHJkZXYtXHUwMDNlYXV4X2RldjtcbiBcdHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTtcbkBAIC0xMjMsNyAmIzQzOzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXG4gXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9SSU5HX0ZSRUUpO1xuIFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XG4tXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpO1xuJiM0MztcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XG4gXHRibmdfcmVfZmlsbF9md19tc2coXHUwMDI2ZndfbXNnLCAodm9pZCAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopXHUwMDI2cmVzcCxcbiBcdFx0XHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4gXHRyYyA9IGJuZ2Vfc2VuZF9tc2coYXV4X2RldiwgXHUwMDI2ZndfbXNnKTtcbkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuIFx0XHRcdCAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xuIFx0cmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsIFx1MDAyNmZ3X21zZyk7XG4gXHRpZiAoIXJjKVxuLVx0XHQqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7XG4mIzQzO1x0XHQqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiBcbiBcdHJldHVybiByYztcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5AQCAtMzYsNiAmIzQzOzM2LDcgQEAgc3RydWN0IGJuZ2VfcGZfaW5mbyB7XG4gfTtcbiBcbiAjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRCAgICAgICgodTE2KS0xKVxuJiM0MzsjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRF8zMkJJVFx0KFUzMl9NQVgpXG4gXG4gZW51bSB7XG4gXHRCTkdFX0ZXX0NBUF9TSE9SVF9DTURcdFx0XHRcdD0gQklUX1VMTCgwKSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG5pbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbkBAIC0xMjgzLDcgJiM0MzsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcbiYjNDM7XHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpXG4ge1xuIFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0ICpyZXE7XG4gXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gYm4tXHUwMDNlYmQ7XG5AQCAtMTI5NSw3ICYjNDM7MTI5NSw3IEBAIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmVxLVx1MDAzZWNtcGxfcmluZyA9IGNwdV90b19sZTE2KGNtcGxfcmluZ19pZCk7XG4gXHRyZXEtXHUwMDNlcmluZ190eXBlID0gcmluZ190eXBlO1xuLVx0cmVxLVx1MDAzZXJpbmdfaWQgPSBjcHVfdG9fbGUxNihyaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuJiM0MztcdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMzIocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcbiBcdGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuQEAgLTEzMTcsNyAmIzQzOzEzMTcsNyBAQCBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDtcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2NfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbi1cdHUxNiByaW5nX2lkLCBmbGFncyA9IDA7XG4mIzQzO1x0dTMyIHJpbmdfaWQsIGZsYWdzID0gMDtcbiBcdGludCByYztcbiBcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9pbml0KGJkLCByZXEsIEhXUk1fUklOR19BTExPQyk7XG5AQCAtMTQwMSw3ICYjNDM7MTQwMSw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcbi1cdHJpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuJiM0MztcdHJpbmdfaWQgPSBsZTMyX3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuIFx0Ym5nZV9od3JtX3JlcV9kcm9wKGJkLCByZXEpO1xuIFxuIGV4aXQ6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuaW5kZXggMzUwMWRlN2E4OWI5MTkuLmJmNDUyZTM5MGQ1YmQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5AQCAtNTAsNyAmIzQzOzUwLDcgQEAgaW50IGJuZ2VfaHdybV9jZmFfbDJfc2V0X3J4X21hc2soc3RydWN0IGJuZ2VfZGV2ICpiZCxcbiB2b2lkIGJuZ2VfaHdybV9zdGF0X2N0eF9mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4pO1xuIGludCBibmdlX2h3cm1fc3RhdF9jdHhfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibik7XG4gaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuLVx0XHRcdCAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKTtcbiYjNDM7XHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpO1xuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0XHQgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuIFx0XHRcdCAgICAgdTMyIHJpbmdfdHlwZSwgdTMyIG1hcF9pbmRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5pbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuQEAgLTEzMjcsMTIgJiM0MzsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRyZXR1cm4gcmM7XG4gfVxuIFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxuJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cilcbiB7XG4gXHRyZXR1cm4gcnhyLVx1MDAzZXJ4X2Nwci1cdTAwM2VyaW5nX3N0cnVjdC5md19yaW5nX2lkO1xuIH1cbiBcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cilcbiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4ge1xuIFx0cmV0dXJuIHR4ci1cdTAwM2V0eF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG5AQCAtMTM3NSwxMiAmIzQzOzEzNzUsMTIgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X25xX3RyZWUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfbnFfcmluZ19pbmZvICpucXIgPSBcdTAwMjZibi1cdTAwM2VibmFwaVtpXS1cdTAwM2VucV9yaW5nO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBucXItXHUwMDNlY3BfcmluZ19jb3VudDsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRzdHJ1Y3QgYm5nZV9jcF9yaW5nX2luZm8gKmNwciA9IFx1MDAyNm5xci1cdTAwM2VjcF9yaW5nX2FycltqXTtcbiBcbiBcdFx0XHRyaW5nID0gXHUwMDI2Y3ByLVx1MDAzZXJpbmdfc3RydWN0O1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0XHR9XG4gXHR9XG4gfVxuQEAgLTE2MzcsNyAmIzQzOzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdDtcbiBcdGJuZ2VfaW5pdF9yeGJkX3BhZ2VzKHJpbmcsIHR5cGUpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMTY0Nyw3ICYjNDM7MTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfYWdnX3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0dTMyIHR5cGU7XG4gXG4gXHRyaW5nID0gXHUwMDI2cnhyLVx1MDAzZXJ4X2FnZ19yaW5nX3N0cnVjdDtcbi1cdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRpZiAoYm5nZV9pc19hZ2dfcmVxZChibi1cdTAwM2ViZCkpIHtcbiBcdFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBSWF9CRF9MRU5fU0hJRlQpIHxcbiBcdFx0XHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcbkBAIC0xNzA4LDcgJiM0MzsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRcdHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gXHUwMDI2Ym4tXHUwMDNldHhfcmluZ1tpXTtcbiBcdFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcdTAwMjZ0eHItXHUwMDNldHhfcmluZ19zdHJ1Y3Q7XG4gXG4tXHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcbiBcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbiBcdFx0XHRcdCAgICAgXHUwMDI2dHhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuQEAgLTE4NjcsNyAmIzQzOzE4NjcsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHQgICAgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfZGIsIHJ4ci1cdTAwM2VyeF9hZ2dfcHJvZCk7XG4gXHRibmdlX2RiX3dyaXRlKGJuLVx1MDAzZWJkLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHJ4ci1cdTAwM2VyeF9wcm9kKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuJiM0MztcdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gKHUxNilyaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTg4Niw3ICYjNDM7MTg4Niw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0cmV0dXJuIHJjO1xuIFxuIFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNnJ4ci1cdTAwM2VyeF9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4mIzQzO1x0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE5MTYsNyAmIzQzOzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRcdGJuZ2Vfc2V0X2RiKGJuLCBcdTAwMjZucXItXHUwMDNlbnFfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4gXHRcdGJuZ2VfZGJfbnEoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgbnFyLVx1MDAzZW5xX3Jhd19jb25zKTtcbiBcdFx0ZW5hYmxlX2lycSh2ZWN0b3IpO1xuLVx0XHRibi1cdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuJiM0MztcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0XHRpZiAoIWkpIHtcbiBcdFx0XHRyYyA9IGJuZ2VfaHdybV9zZXRfYXN5bmNfZXZlbnRfY3IoYmQsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG5AQCAtMTk4NiwxNSAmIzQzOzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXG4gXHR0Ymxfc2l6ZSA9IGJuZ2VfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShiZCk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0Ymxfc2l6ZTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0dTE2IHJpbmdfaWQsIGo7XG4mIzQzO1x0XHR1MzIgajtcbiBcbiBcdFx0aiA9IGJkLVx1MDAzZXJzc19pbmRpcl90YmxbaV07XG4gXHRcdHJ4ciA9IFx1MDAyNmJuLVx1MDAzZXJ4X3Jpbmdbal07XG4gXG4tXHRcdHJpbmdfaWQgPSByeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbi1cdFx0KnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KHJpbmdfaWQpO1xuLVx0XHRyaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xuLVx0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7XG4mIzQzO1x0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocnhyLVx1MDAzZXJ4X3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQpO1xuJiM0MztcdFx0KnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKSk7XG4gXHR9XG4gfVxuIFxuQEAgLTIyODUsNyAmIzQzOzIyODMsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2Rpc2FibGVfaW50KHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXHRcdG5xciA9IFx1MDAyNmJuYXBpLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHJpbmcgPSBcdTAwMjZucXItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4gXG4tXHRcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0fVxuIH1cbkBAIC0yNDAxLDcgJiM0MzsyMzk5LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0dTMyIGdycF9pZHggPSByeHItXHUwMDNlYm5hcGktXHUwMDNlaW5kZXg7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbkBAIC0yNDA5LDcgJiM0MzsyNDA3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdFx0UklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0ucnhfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiB9XG4gXG5AQCAtMjQyMSwxNCAmIzQzOzI0MTksMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHUzMiBncnBfaWR4ID0gcnhyLVx1MDAzZWJuYXBpLVx1MDAzZWluZGV4O1xuIFx0dTMyIGNtcGxfcmluZ19pZDtcbiBcbi1cdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlhfQUdHLFxuIFx0XHRcdFx0Y2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6XG4gXHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDM5LDE0ICYjNDM7MjQzNywxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fdHhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbiYjNDM7XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gY2xvc2VfcGF0aCA/IGJuZ2VfY3BfcmluZ19mb3JfdHgodHhyKSA6XG4gXHRcdCAgICAgICBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXG4gXHRcdFx0XHRjbXBsX3JpbmdfaWQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYm5nZV9od3JtX2NwX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuQEAgLTI0NTUsMTIgJiM0MzsyNDUzLDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nO1xuIFxuIFx0cmluZyA9IFx1MDAyNmNwci1cdTAwM2VyaW5nX3N0cnVjdDtcbi1cdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCxcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sIGJvb2wgY2xvc2VfcGF0aClcbkBAIC0yNDk2LDExICYjNDM7MjQ5NCwxMSBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sIGJvb2wgY2xvc2VfcGF0aClcbiBcdFx0XHRibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCBcdTAwMjZucXItXHUwMDNlY3BfcmluZ19hcnJbal0pO1xuIFxuIFx0XHRyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuLVx0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkge1xuJiM0MztcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcbiBcdFx0XHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZyxcbiBcdFx0XHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9OUSxcbiBcdFx0XHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0XHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG5AQCAtNjMwLDggJiM0Mzs2MzAsOCBAQCBzdHJ1Y3QgYm5nZV9sMl9maWx0ZXIge1xuIFx0cmVmY291bnRfdFx0XHRyZWZjbnQ7XG4gfTtcbiBcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4mIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcbiB2b2lkIGJuZ2VfZmlsbF9od19yc3NfdGJsKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3ZuaWNfaW5mbyAqdm5pYyk7XG4gaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cixcbiBcdFx0ICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXG5pbmRleCAzNDFjN2Y4MWVkMDkyYi4uYmIwYzc5YTFlZTYwZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXG5AQCAtMTg0LDcgJiM0MzsxODQsNyBAQCBzdHJ1Y3QgYm5nZV9jdHhfbWVtX2luZm8ge1xuIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0IHtcbiBcdHN0cnVjdCBibmdlX3JpbmdfbWVtX2luZm9cdHJpbmdfbWVtO1xuIFxuLVx0dTE2XHRcdFx0ZndfcmluZ19pZDtcbiYjNDM7XHR1MzJcdFx0XHRmd19yaW5nX2lkO1xuIFx0dW5pb24ge1xuIFx0XHR1MTZcdFx0Z3JwX2lkeDtcbiBcdFx0dTE2XHRcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5pbmRleCA4ZWExM2Q1NDA3ZWVjZC4uMWY3YmQ5NjQxNWE1MjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuQEAgLTgzMTcsOCAmIzQzOzgzMTcsNyBAQCBzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCB7XG4gXHRfX2xlMTZcdHJlcV90eXBlO1xuIFx0X19sZTE2XHRzZXFfaWQ7XG4gXHRfX2xlMTZcdHJlc3BfbGVuO1xuLVx0X19sZTE2XHRyaW5nX2lkO1xuLVx0X19sZTE2XHRsb2dpY2FsX3JpbmdfaWQ7XG4mIzQzO1x0X19sZTMyXHRyaW5nX2lkO1xuIFx0dThcdHB1c2hfYnVmZmVyX2luZGV4O1xuIFx0I2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUElOR19CVUZGRVIgMHgwVUxcbiBcdCNkZWZpbmUgUklOR19BTExPQ19SRVNQX1BVU0hfQlVGRkVSX0lOREVYX1BPTkdfQlVGRkVSIDB4MVVMXG5AQCAtODM0NSwxMCAmIzQzOzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHtcbiBcdHU4XHRmbGFncztcbiBcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX0xBU1QgICAgICAgICAgICAgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRFxuLVx0X19sZTE2XHRyaW5nX2lkO1xuJiM0MztcdF9fbGUxNlx0dW51c2VkXzE7XG4gXHRfX2xlMzJcdHByb2RfaWR4O1xuIFx0X19sZTMyXHRvcGFxdWU7XG4tXHRfX2xlMzJcdHVudXNlZF8xO1xuJiM0MztcdF9fbGUzMlx0cmluZ19pZDtcbiB9O1xuIFxuIC8qIGh3cm1fcmluZ19mcmVlX291dHB1dCAoc2l6ZToxMjhiLzE2QikgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIGJuZ2UgZHJpdmVyIChCQ001NzcwOCBUaG9yVWx0cmEpLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgZGV2aWNlIGluIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNWY0MDk2MmU4OGU0NDUwMzk2NzU3ZmNkYzU4ODE4NzI5YzhiM2RhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjEgMjA6MzY6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jCmluZGV4IDcxYTdjYTIxOTZhZDg4Li4zMTFjOGJjOTMxNjAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csCiB9CiAKIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsCi0JCQkJdTE2IGZ3X3JpbmdfaWQsIGludCB0eXBlKQomIzQzOwkJCQl1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpCiB7CiAJc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LSZndDthdXhfZGV2OwogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTsKQEAgLTEyMyw3ICYjNDM7MTIzLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldiwKIAogCWJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopJmFtcDtyZXEsIEhXUk1fUklOR19GUkVFKTsKIAlyZXEucmluZ190eXBlID0gdHlwZTsKLQlyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpOwomIzQzOwlyZXEucmluZ19pZCA9IGNwdV90b19sZTMyKGZ3X3JpbmdfaWQpOwogCWJuZ19yZV9maWxsX2Z3X21zZygmYW1wO2Z3X21zZywgKHZvaWQgKikmYW1wO3JlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopJmFtcDtyZXNwLAogCQkJICAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpOwogCXJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCAmYW1wO2Z3X21zZyk7CkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LAogCQkJICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7CiAJcmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsICZhbXA7ZndfbXNnKTsKIAlpZiAoIXJjKQotCQkqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7CiYjNDM7CQkqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTsKIAogCXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgKaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaApAQCAtMzYsNiAmIzQzOzM2LDcgQEAgc3RydWN0IGJuZ2VfcGZfaW5mbyB7CiB9OwogCiAjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRCAgICAgICgodTE2KS0xKQomIzQzOyNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUCShVMzJfTUFYKQogCiBlbnVtIHsKIAlCTkdFX0ZXX0NBUF9TSE9SVF9DTUQJCQkJPSBCSVRfVUxMKDApLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYwppbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCkBAIC0xMjgzLDcgJiM0MzsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKQogCiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAkJCSAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKQomIzQzOwkJCSAgICB1MzIgcmluZ190eXBlLCB1MzIgY21wbF9yaW5nX2lkKQogewogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCAqcmVxOwogCXN0cnVjdCBibmdlX2RldiAqYmQgPSBibi0mZ3Q7YmQ7CkBAIC0xMjk1LDcgJiM0MzsxMjk1LDcgQEAgaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAKIAlyZXEtJmd0O2NtcGxfcmluZyA9IGNwdV90b19sZTE2KGNtcGxfcmluZ19pZCk7CiAJcmVxLSZndDtyaW5nX3R5cGUgPSByaW5nX3R5cGU7Ci0JcmVxLSZndDtyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy0mZ3Q7ZndfcmluZ19pZCk7CiYjNDM7CXJlcS0mZ3Q7cmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCiAJYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpOwogCXJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpOwpAQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDsKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX2lucHV0ICpyZXE7CiAJc3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLSZndDtiZDsKLQl1MTYgcmluZ19pZCwgZmxhZ3MgPSAwOwomIzQzOwl1MzIgcmluZ19pZCwgZmxhZ3MgPSAwOwogCWludCByYzsKIAogCXJjID0gYm5nZV9od3JtX3JlcV9pbml0KGJkLCByZXEsIEhXUk1fUklOR19BTExPQyk7CkBAIC0xNDAxLDcgJiM0MzsxNDAxLDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCiAJcmVzcCA9IGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTsKIAlyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTsKLQlyaW5nX2lkID0gbGUxNl90b19jcHUocmVzcC0mZ3Q7cmluZ19pZCk7CiYjNDM7CXJpbmdfaWQgPSBsZTMyX3RvX2NwdShyZXNwLSZndDtyaW5nX2lkKTsKIAlibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oCmluZGV4IDM1MDFkZTdhODliOTE5Li5iZjQ1MmUzOTBkNWJkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKQEAgLTUwLDcgJiM0Mzs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsCiB2b2lkIGJuZ2VfaHdybV9zdGF0X2N0eF9mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4pOwogaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKTsKIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKTsKJiM0MzsJCQkgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7CiBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLAogCQkJICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwppbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMKQEAgLTEzMjcsMTIgJiM0MzsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJcmV0dXJuIHJjOwogfQogCi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKIHsKIAlyZXR1cm4gcnhyLSZndDtyeF9jcHItJmd0O3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQ7CiB9CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQomIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQogewogCXJldHVybiB0eHItJmd0O3R4X2Nwci0mZ3Q7cmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKIH0KQEAgLTEzNzUsMTIgJiM0MzsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gJmFtcDtibi0mZ3Q7Ym5hcGlbaV0tJmd0O25xX3Jpbmc7CiAJCXN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gJmFtcDtucXItJmd0O3Jpbmdfc3RydWN0OwogCi0JCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCQlmb3IgKGogPSAwOyBqICZsdDsgbnFyLSZndDtjcF9yaW5nX2NvdW50OyBqJiM0MzsmIzQzOykgewogCQkJc3RydWN0IGJuZ2VfY3BfcmluZ19pbmZvICpjcHIgPSAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal07CiAKIAkJCXJpbmcgPSAmYW1wO2Nwci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJCX0KIAl9CiB9CkBAIC0xNjM3LDcgJiM0MzsxNjM3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9yeF9yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibiwKIAogCXJpbmcgPSAmYW1wO3J4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3Q7CiAJYm5nZV9pbml0X3J4YmRfcGFnZXMocmluZywgdHlwZSk7Ci0JcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIH0KIAogc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0xNjQ3LDcgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIHR5cGU7CiAKIAlyaW5nID0gJmFtcDtyeHItJmd0O3J4X2FnZ19yaW5nX3N0cnVjdDsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWlmIChibmdlX2lzX2FnZ19yZXFkKGJuLSZndDtiZCkpIHsKIAkJdHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFICZsdDsmbHQ7IFJYX0JEX0xFTl9TSElGVCkgfAogCQkJUlhfQkRfVFlQRV9SWF9BR0dfQkQgfCBSWF9CRF9GTEFHU19TT1A7CkBAIC0xNzA4LDcgJiM0MzsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gJmFtcDtibi0mZ3Q7dHhfcmluZ1tpXTsKIAkJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAKLQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAKIAkJbmV0aWZfcXVldWVfc2V0X25hcGkoYm4tJmd0O25ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsCiAJCQkJICAgICAmYW1wO3R4ci0mZ3Q7Ym5hcGktJmd0O25hcGkpOwpAQCAtMTg2Nyw3ICYjNDM7MTg2Nyw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCSAgICByaW5nLSZndDtmd19yaW5nX2lkKTsKIAlibmdlX2RiX3dyaXRlKGJuLSZndDtiZCwgJmFtcDtyeHItJmd0O3J4X2FnZ19kYiwgcnhyLSZndDtyeF9hZ2dfcHJvZCk7CiAJYm5nZV9kYl93cml0ZShibi0mZ3Q7YmQsICZhbXA7cnhyLSZndDtyeF9kYiwgcnhyLSZndDtyeF9wcm9kKTsKLQlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLSZndDtmd19yaW5nX2lkOwomIzQzOwlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE4ODYsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCXJldHVybiByYzsKIAogCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO3J4ci0mZ3Q7cnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwotCWJuLSZndDtncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJYm4tJmd0O2dycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE5MTYsNyAmIzQzOzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCQllbmFibGVfaXJxKHZlY3Rvcik7Ci0JCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLSZndDtmd19yaW5nX2lkOwogCiAJCWlmICghaSkgewogCQkJcmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLSZndDtmd19yaW5nX2lkKTsKQEAgLTE5ODYsMTUgJiM0MzsxOTg2LDEzIEBAIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKQogCXRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB0Ymxfc2l6ZTsgaSYjNDM7JiM0MzspIHsKLQkJdTE2IHJpbmdfaWQsIGo7CiYjNDM7CQl1MzIgajsKIAogCQlqID0gYmQtJmd0O3Jzc19pbmRpcl90YmxbaV07CiAJCXJ4ciA9ICZhbXA7Ym4tJmd0O3J4X3Jpbmdbal07CiAKLQkJcmluZ19pZCA9IHJ4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKLQkJKnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KHJpbmdfaWQpOwotCQlyaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpOwotCQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7CiYjNDM7CQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocnhyLSZndDtyeF9yaW5nX3N0cnVjdC5md19yaW5nX2lkKTsKJiM0MzsJCSpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cikpOwogCX0KIH0KIApAQCAtMjI4NSw3ICYjNDM7MjI4Myw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfZGlzYWJsZV9pbnQoc3RydWN0IGJuZ2VfbmV0ICpibikKIAkJbnFyID0gJmFtcDtibmFwaS0mZ3Q7bnFfcmluZzsKIAkJcmluZyA9ICZhbXA7bnFyLSZndDtyaW5nX3N0cnVjdDsKIAotCQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpCiYjNDM7CQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCX0KIH0KQEAgLTI0MDEsNyAmIzQzOzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIGdycF9pZHggPSByeHItJmd0O2JuYXBpLSZndDtpbmRleDsKIAl1MzIgY21wbF9yaW5nX2lkOwogCi0JaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKQomIzQzOwlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCXJldHVybjsKIAogCWNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTsKQEAgLTI0MDksNyAmIzQzOzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkJUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsCiAJCQkJY2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6CiAJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWJuLSZndDtncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDIxLDE0ICYjNDM7MjQxOSwxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCXUzMiBncnBfaWR4ID0gcnhyLSZndDtibmFwaS0mZ3Q7aW5kZXg7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7CiAJaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYX0FHRywKIAkJCQljbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDoKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJYm4tJmd0O2dycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDM5LDE0ICYjNDM7MjQzNywxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fdHhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBjbG9zZV9wYXRoID8gYm5nZV9jcF9yaW5nX2Zvcl90eCh0eHIpIDoKIAkJICAgICAgIElOVkFMSURfSFdfUklOR19JRDsKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsCiAJCQkJY21wbF9yaW5nX2lkKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogfQogCiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0yNDU1LDEyICYjNDM7MjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmc7CiAKIAlyaW5nID0gJmFtcDtjcHItJmd0O3Jpbmdfc3RydWN0OwotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCwKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiB9CiAKIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKQpAQCAtMjQ5NiwxMSAmIzQzOzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpCiAJCQlibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal0pOwogCiAJCXJpbmcgPSAmYW1wO25xci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCWlmIChyaW5nLSZndDtmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkgewomIzQzOwkJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKSB7CiAJCQlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywKIAkJCQkJCVJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLAogCQkJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIAkJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaApAQCAtNjMwLDggJiM0Mzs2MzAsOCBAQCBzdHJ1Y3QgYm5nZV9sMl9maWx0ZXIgewogCXJlZmNvdW50X3QJCXJlZmNudDsKIH07CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTsKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTsKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7CiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpOwogdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpOwogaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4ciwKIAkJICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKaW5kZXggMzQxYzdmODFlZDA5MmIuLmJiMGM3OWExZWU2MGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKQEAgLTE4NCw3ICYjNDM7MTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHsKIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0IHsKIAlzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvCXJpbmdfbWVtOwogCi0JdTE2CQkJZndfcmluZ19pZDsKJiM0MzsJdTMyCQkJZndfcmluZ19pZDsKIAl1bmlvbiB7CiAJCXUxNgkJZ3JwX2lkeDsKIAkJdTE2CQltYXBfaWR4OyAvKiBVc2VkIGJ5IE5RcyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaApAQCAtODMxNyw4ICYjNDM7ODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHsKIAlfX2xlMTYJcmVxX3R5cGU7CiAJX19sZTE2CXNlcV9pZDsKIAlfX2xlMTYJcmVzcF9sZW47Ci0JX19sZTE2CXJpbmdfaWQ7Ci0JX19sZTE2CWxvZ2ljYWxfcmluZ19pZDsKJiM0MzsJX19sZTMyCXJpbmdfaWQ7CiAJdTgJcHVzaF9idWZmZXJfaW5kZXg7CiAJI2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUElOR19CVUZGRVIgMHgwVUwKIAkjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTApAQCAtODM0NSwxMCAmIzQzOzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHsKIAl1OAlmbGFnczsKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfVklSVElPX1JJTkdfVkFMSUQgMHgxVUwKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElECi0JX19sZTE2CXJpbmdfaWQ7CiYjNDM7CV9fbGUxNgl1bnVzZWRfMTsKIAlfX2xlMzIJcHJvZF9pZHg7CiAJX19sZTMyCW9wYXF1ZTsKLQlfX2xlMzIJdW51c2VkXzE7CiYjNDM7CV9fbGUzMglyaW5nX2lkOwogfTsKIAogLyogaHdybV9yaW5nX2ZyZWVfb3V0cHV0IChzaXplOjEyOGIvMTZCKSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJyb2FkY29tIGJuZ2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgQnJvYWRjb20gYGJuZ2VgIGRyaXZlci4gSXQgc2VlbXMgdGhleSYjMzk7cmUgYnVtcGluZyB0aGUgc2l6ZSBvZiBgZndfcmluZ19pZGAgZnJvbSBgdTE2YCB0byBgdTMyYC4gVGhpcyBpbXBhY3RzIGEgYnVuY2ggb2YgZmlsZXM6IGBkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY2AsIGEgc2xldyBvZiBgYm5nZWAgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzIChgYm5nZS5oYCwgYGJuZ2VfaHdybV9saWIue2MsaH1gLCBgYm5nZV9uZXRkZXYue2MsaH1gLCBgYm5nZV9ybWVtLmhgKSBhbmQgYWxzbyBgaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oYC4gSW50ZXJlc3RpbmcuLi4KCkkgc2VlIHRoZXkmIzM5O3ZlIHVwZGF0ZWQgYElOVkFMSURfSFdfUklOR19JRGAgdG8gYSAzMi1iaXQgdmVyc2lvbiwgYElOVkFMSURfSFdfUklOR19JRF8zMkJJVGAuICBNYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyBleHBlY3RlZCB3aXRoIHRoZSByaW5nIElEIHNpemUgY2hhbmdlLiBBbmQgdGhlIGByaW5nX2lkYCBmaWVsZHMgaW4gdGhlIGBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0YCBhbmQgYGh3cm1fcmluZ19mcmVlX2lucHV0YCBzdHJ1Y3R1cmVzIGFyZSBnZXR0aW5nIHRoZWlyIGRhdGEgdHlwZXMgY2hhbmdlZCBmcm9tIGBfX2xlMTZgIHRvIGBfX2xlMzJgLiAgU28gaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4KCkdpdmVuIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gdXNlZCBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyB0aGVyZS4gVGhlIGRyaXZlciBpcyBjbGVhcmx5IGBibmdlYCBhY2NvcmRpbmcgdG8gdGhlIHBhdGguIEhvbGQgb24sICYjMzQ7Ym5nZSYjMzQ7PyBUaGF0JiMzOTtzIG5vdCBvbmUgSSYjMzk7bSBzdXBlciBmYW1pbGlhciB3aXRoLiBJcyB0aGF0IGFuIG9sZGVyIEJyb2FkY29tIE5ldFh0cmVtZS1FIG9yIHNvbWV0aGluZz8gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpc24mIzM5O3QgYSB0eXBvIGZvciBgYm54dGAuIExldCYjMzk7cyBoaXQgdGhlIGtlcm5lbCB0cmVlIGFuZCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2I0NC5jJiMzNDssCiAgICAmIzM0O2I0NC5oJiMzNDssCiAgICAmIzM0O2JjbTQ5MDhfZW5ldC5jJiMzNDssCiAgICAmIzM0O2JjbTQ5MDhfZW5ldC5oJiMzNDssCiAgICAmIzM0O2JjbTYzeHhfZW5ldC5jJiMzNDssCiAgICAmIzM0O2JjbTYzeHhfZW5ldC5oJiMzNDssCiAgICAmIzM0O2JjbXN5c3BvcnQuYyYjMzQ7LAogICAgJiMzNDtiY21zeXNwb3J0LmgmIzM0OywKICAgICYjMzQ7YmdtYWMtYmNtYS1tZGlvLmMmIzM0OywKICAgICYjMzQ7YmdtYWMtYmNtYS5jJiMzNDssCiAgICAmIzM0O2JnbWFjLXBsYXRmb3JtLmMmIzM0OywKICAgICYjMzQ7YmdtYWMuYyYjMzQ7LAogICAgJiMzNDtiZ21hYy5oJiMzNDssCiAgICAmIzM0O2JueDIuYyYjMzQ7LAogICAgJiMzNDtibngyLmgmIzM0OywKICAgICYjMzQ7Ym54Ml9mdy5oJiMzNDssCiAgICAmIzM0O2NuaWMuYyYjMzQ7LAogICAgJiMzNDtjbmljLmgmIzM0OywKICAgICYjMzQ7Y25pY19kZWZzLmgmIzM0OywKICAgICYjMzQ7Y25pY19pZi5oJiMzNDssCiAgICAmIzM0O3NiMTI1MC1tYWMuYyYjMzQ7LAogICAgJiMzNDt0ZzMuYyYjMzQ7LAogICAgJiMzNDt0ZzMuaCYjMzQ7LAogICAgJiMzNDt1bmltYWMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDthc3AyJiMzNDssCiAgICAmIzM0O2JuZ2UmIzM0OywKICAgICYjMzQ7Ym54MngmIzM0OywKICAgICYjMzQ7Ym54dCYjMzQ7LAogICAgJiMzNDtnZW5ldCYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgJiMzNDtibmdlJiMzNDsgQ29udGV4dCoqCgpSaWdodCwgc28gSSBzZWUgdGhlIHRlcm0gYGJuZ2VgIHBvcCB1cC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHRyZWF0IGl0IGFzIGEgcG90ZW50aWFsIG5hbWVzcGFjZSBvciBjb21wb25lbnQuIElmIEkmIzM5O20gd29ya2luZyBvbiBhIHByb2plY3Qgd2l0aCBhIHN0cnVjdHVyZSBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIGl04oCZcyBoaWdobHkgbGlrZWx5IEkmIzM5O20gYXdhcmUgb2YgdGhlIHByb2plY3QmIzM5O3MgZGlyZWN0b3J5IHN0cnVjdHVyZSwgYW5kIHRoaXMgY29udGV4dCBpbmZsdWVuY2VzIHRoZSB3YXkgSSBwcm9jZXNzIHRoaXMgbmV3IGluZm9ybWF0aW9uLiBUaGUgcXVpY2sgY2hlY2sgaXMgdG8gc2VlIGlmIEkmIzM5O20gYWJsZSB0byByZWNhbGwgYSBkaXJlY3Rvcnkgd2l0aCBhIHNpbWlsYXIgbmFtZSwgdXN1YWxseSwgdGhlIGxvY2F0aW9uIGluIHRoZSBwcm9qZWN0JiMzOTtzIGZpbGUgc3RydWN0dXJlIHByb3ZpZGVzIGEgc29saWQgY2x1ZSBhYm91dCBpdHMgZnVuY3Rpb24uIE5vdyBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIHBhdGgsIGV4cGVjdGluZyB0byBzZWUgYSBkaXJlY3RvcnkgbmFtZWQgYGJuZ2VgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGdldCB0aGUgcmVhbCBjb250ZXh0LCBpdHMgY29udGVudHMsIGl0cyBkZXBlbmRlbmNpZXMsIHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgd2hhdCYjMzk7cyBhY3R1YWxseSB0aGVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIHB1cnBvc2Ugb2YgYGJuZ2VgIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBvciBwZXJoYXBzLCBpdCYjMzk7cyBhIG5hbWluZyBjb252ZW50aW9uLCBpbiB3aGljaCBjYXNlIEkgbWlnaHQgbG9vayBmb3IgYSBicm9hZGVyIGNvbnRleHQuIEkmIzM5O2xsIG1lbnRhbGx5IHN0YXJ0IHRvIGJ1aWxkIGEgbWFwIG9mIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBiYXNlZCBvbiB0aGUgc3RydWN0dXJlIGFuZCBjb250ZW50IG9mIGBibmdlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JuZ2UuaCYjMzQ7LAogICAgJiMzNDtibmdlX2F1eHIuYyYjMzQ7LAogICAgJiMzNDtibmdlX2F1eHIuaCYjMzQ7LAogICAgJiMzNDtibmdlX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtibmdlX2RiLmgmIzM0OywKICAgICYjMzQ7Ym5nZV9kZXZsaW5rLmMmIzM0OywKICAgICYjMzQ7Ym5nZV9kZXZsaW5rLmgmIzM0OywKICAgICYjMzQ7Ym5nZV9ldGh0b29sLmMmIzM0OywKICAgICYjMzQ7Ym5nZV9ldGh0b29sLmgmIzM0OywKICAgICYjMzQ7Ym5nZV9od19kZWYuaCYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm0uYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm0uaCYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fbGliLmMmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX2xpYi5oJiMzNDssCiAgICAmIzM0O2JuZ2VfbGluay5jJiMzNDssCiAgICAmIzM0O2JuZ2VfbGluay5oJiMzNDssCiAgICAmIzM0O2JuZ2VfbmV0ZGV2LmMmIzM0OywKICAgICYjMzQ7Ym5nZV9uZXRkZXYuaCYjMzQ7LAogICAgJiMzNDtibmdlX3Jlc2MuYyYjMzQ7LAogICAgJiMzNDtibmdlX3Jlc2MuaCYjMzQ7LAogICAgJiMzNDtibmdlX3JtZW0uYyYjMzQ7LAogICAgJiMzNDtibmdlX3JtZW0uaCYjMzQ7LAogICAgJiMzNDtibmdlX3R4cnguYyYjMzQ7LAogICAgJiMzNDtibmdlX3R4cnguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcyNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqUENJIERldmljZSBEcml2ZXIgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhlIHByb21wdCBtZW50aW9ucyBgYm5nZWAuIE15IGZpcnN0IHRob3VnaHQgaXM6ICYjMzQ7V2FpdCwgKmJuZ2UqLi4uIGlzIHRoYXQgYWN0dWFsbHkgYSBQQ0kgZGV2aWNlIGRyaXZlcj8gVGhhdCBuYW1lIHJpbmdzIGEgYmVsbCwgYnV0IEkgbmVlZCB0byBjb25maXJtLiYjMzQ7IEltbWVkaWF0ZWx5LCBteSBtZW50YWwgZ2VhcnMgc2hpZnQgaW50byBnZWFyIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gVG8gZmlndXJlIHRoaXMgb3V0LCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byB0aGUgdXN1YWwgc3VzcGVjdHM6IGVpdGhlciBgYm5nZV9jb3JlLmNgIG9yIGBibmdlX25ldGRldi5jYC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB3aGVyZSB0aGlzIGtpbmQgb2YgZHJpdmVyIGZ1bmN0aW9uYWxpdHkgd291bGQgbGlrZWx5IHJlc2lkZSwgYW5kIGFyZSB3aGVyZSBJIG5lZWQgdG8gbG9vayBmb3IgY29uZmlybWF0aW9uIGFuZCBkZXRhaWxzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9NDA3PXN0YXRpYyB2b2lkIGJuZ2Vfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjQxNzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYm5nZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTQxOC1cdC5uYW1lXHRcdD0gYm5nZV9kcml2ZXJfbmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA5OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IGEgUENJIGRyaXZlci4gVGhlIGltbWVkaWF0ZSBjb25jZXJuIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBpcyByZWFjaGFiaWxpdHkuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBsaWtlIHRob3NlIGZvciBQQ0kgZGV2aWNlcywgYXJlIGdlbmVyYWxseSBpbmFjY2Vzc2libGUgdW5sZXNzIHRoZXJlJiMzOTtzIGEgY29ycmVzcG9uZGluZyBlbXVsYXRvciBwcmVzZW50IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGluayBvZiBgZTEwMDBlYCBpbiBRRU1VIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBleGFtcGxlLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhlcmUgYSBRRU1VIGVtdWxhdG9yIGZvciBgYm5nZWA/IFRoZSBuYW1lIHJpbmdzIGEgYmVsbCwgYnV0IGl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzLiBNeSBndXQgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IGEgQnJvYWRjb20gTmV0WHRyZW1lLUUgdmFyaWFudCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIG15IG1lbW9yeSBpc24mIzM5O3Qgam9nZ2luZyBhbnkgc3BlY2lmaWMgZW11bGF0b3JzIGZvciB0aGlzIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIFNvLCBpdCYjMzk7cyBzdGFydGluZyB0byBsb29rIGxpa2UgYSBkZWFkIGVuZCBmb3IgZGlyZWN0IGludGVyYWN0aW9uLi4uIG9yLCBwb3NzaWJseSBhIG5ldyBhbmQgYXMgeWV0IHVuLWVtdWxhdGVkIGRyaXZlci4KCkJ1dCB3YWl0LCBob2xkIG9uLiBDb3VsZCBgYm5nZWAgYmUgYSBwbGFjZWhvbGRlciBuYW1lLCBhICYjMzQ7ZmFrZSYjMzQ7IGRyaXZlciBpZGVudGlmaWVyLCBvciBhIHJlY2VudGx5IGRldmVsb3BlZCBkcml2ZXI/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLgoKTmV4dCwgSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgdGhlIGZ1enphYmlsaXR5IG9mIHRoaXMgZHJpdmVyLiBBc3N1bWluZyBpdCYjMzk7cyBhIFBDSSBkcml2ZXIgYW5kIGxhY2tpbmcgYSBRRU1VIGVtdWxhdG9yLCBpdCYjMzk7cyB2aXJ0dWFsbHkgdW5yZWFjaGFibGUgaW4gbXkgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gdmVyaWZ5IHRoZSBlbnZpcm9ubWVudC4KCkZpbmFsbHksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyOiBJcyB0aGVyZSBhbnkgZm9ybSBvZiBlbXVsYXRpb24gZm9yIHRoaXMgZHJpdmVyLCBvciBpcyBpdCBhY3R1YWxseSBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYSBgdmV0aGAgaW50ZXJmYWNlIG9yIGEgZGlmZmVyZW50IHZpcnR1YWwgZHJpdmVyIGFsdG9nZXRoZXI/IFRoYXQgaW5mb3JtYXRpb24gd2lsbCBkaWN0YXRlIHRoZSBuZXh0IHN0ZXBzIGluIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYm5nZV9wY2lfdGJsW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYm5nZV9wY2lfdGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzg1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBCaW5kaW5ncyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRldmljZSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBQQ0kgYnVzLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBQQ0kgSURzIGl0JiMzOTtzIGFjdHVhbGx5IGJpbmRpbmcgdG8uIFRoaXMgaXMgdGhlIGJlZHJvY2sgb2YgdW5kZXJzdGFuZGluZyBpdHMgY29uZmlndXJhdGlvbiBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHJlY29nbml6ZWQgYnkgdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgaXQgYWdhaW5zdCBteSBrbm93biBkcml2ZXJzLCB1bmRlcnN0YW5kIHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCBiZWdpbiB0byBkaWFnbm9zZSBhbnkgaXNzdWVzLiBJdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgZGV2aWNlJiMzOTtzIGNhcGFiaWxpdGllcyBhbmQgYmVoYXZpb3VyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHN5c3RlbSByZXBvcnRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCB7XG4gIDIxOlx0XHRjaGFyICpuYW1lO1xuICAyMjpcdH0gYm9hcmRfaW5mb1tdID0ge1xuICAyMzpcdFx0W0JDTTU3NzA4XSA9IHsgXCYjMzQ7QnJvYWRjb20gQkNNNTc3MDggVGhvclVsdHJhIDUwR2IvMTAwR2IvMjAwR2IvNDAwR2IvODAwR2IgRXRoZXJuZXRcJiMzNDsgfSxcbiAgMjQ6XHR9O1xuICAyNTpcdFxuICAyNjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBibmdlX3BjaV90YmxbXSA9IHtcbiAgMjc6XHRcdHsgUENJX1ZERVZJQ0UoQlJPQURDT00sIDB4MTc4MCksIC5kcml2ZXJfZGF0YSA9IEJDTTU3NzA4IH0sXG4gIDI4Olx0XHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4gIDI5Olx0XHR7MCwgfVxuICAzMDpcdH07XG4gIDMxOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGJuZ2VfcGNpX3RibCk7XG4gIDMyOlx0XG4gIDMzOlx0c3RhdGljIHZvaWQgYm5nZV9wcmludF9kZXZpY2VfaW5mbyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgZW51bSBib2FyZF9pZHggaWR4KVxuICAzNDpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzYKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGhlcmUgaXMgdGhlIHRhcmdldDogYSBCcm9hZGNvbSBCQ001NzcwOCBUaG9yVWx0cmEuIFRoaXMgaXMgcGh5c2ljYWwgaGFyZHdhcmUsIHBsYWluIGFuZCBzaW1wbGUuIE5vIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdHMgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCBhcmUgbXkgc3RhbmRhcmQgdGVzdGluZyBlbnZpcm9ubWVudHMuCgpUaGVyZWZvcmUsIGFueSBjb2RlIHBhdGhzIHRoYXQgdGhpcyBwYXRjaCBtb2RpZmllcyBhcmUgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlIGxvZ2ljIGp1c3Qgd29uJiMzOTt0IGV4ZWN1dGUuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0LCBJIHNob3VsZCBkbyBteSBkdWUgZGlsaWdlbmNlIGFuZCBtYWtlIGFic29sdXRlbHkgY2VydGFpbi4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlcmUgaXNuJiMzOTt0IHNvbWUgb2JzY3VyZSB2RFBBIGRyaXZlciBvciBzb21lIG90aGVyIHdheSB0byBnZXQgdG8gaXQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LiBIbW0sIG5vLCBpdCYjMzk7cyBhIHN0YW5kYXJkIFBDSSBkcml2ZXIsIG5vdGhpbmcgZmFuY3kuCgpUaGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIHBhdGhzIHRoYXQgYXJlIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXphdGlvbiwgKmV2ZW4qIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFNpbmNlIHRoaXMgaXMgYSBwaHlzaWNhbCBFdGhlcm5ldCBQQ0kgZHJpdmVyLCBhbmQgSSBjYW4mIzM5O3QgZW11bGF0ZSBvciBpbmplY3QgaXQgaW50byBteSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRoZSBjb25kaXRpb25zIGFyZSBtZXQuCgpMZXQmIzM5O3Mgd3JpdGUgdGhlIHJlc3BvbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIGJuZ2UgZHJpdmVyIChCQ001NzcwOCBUaG9yVWx0cmEpLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgZGV2aWNlIGluIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6MzY6NDkuNDQ3Nzc3Nzg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMwMzI3NjEyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6MzY6NDkuNDQ3Nzg2NzA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0MzkwMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTVmNDA5NjJlODhlNDQ1MDM5Njc1N2ZjZGM1ODgxODcyOWM4YjNkYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyMSAyMDozNjo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuaW5kZXggNzFhN2NhMjE5NmFkODguLjMxMWM4YmM5MzE2MDNhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcXG5AQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbi1cXHRcXHRcXHRcXHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXFxuK1xcdFxcdFxcdFxcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldiA9IHJkZXYtXFx1MDAzZWF1eF9kZXY7XFxuIFxcdHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTtcXG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuIFxcbiBcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fUklOR19GUkVFKTtcXG4gXFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XFxuLVxcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMTYoZndfcmluZ19pZCk7XFxuK1xcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XFxuIFxcdGJuZ19yZV9maWxsX2Z3X21zZyhcXHUwMDI2ZndfbXNnLCAodm9pZCAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVxcdTAwMjZyZXNwLFxcbiBcXHRcXHRcXHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XFxuIFxcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcXHUwMDI2ZndfbXNnKTtcXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbiBcXHRcXHRcXHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcXG4gXFx0cmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsIFxcdTAwMjZmd19tc2cpO1xcbiBcXHRpZiAoIXJjKVxcbi1cXHRcXHQqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7XFxuK1xcdFxcdCpmd19yaW5nX2lkID0gKHUxNilsZTMyX3RvX2NwdShyZXNwLnJpbmdfaWQpO1xcbiBcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG5pbmRleCBmMjFjZmY2NTFmZDQ0YS4uNDQ3OWNjZDA3MWY1MzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxcbkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBibmdlX3BmX2luZm8ge1xcbiB9O1xcbiBcXG4gI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSUQgICAgICAoKHUxNiktMSlcXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcXHQoVTMyX01BWClcXG4gXFxuIGVudW0ge1xcbiBcXHRCTkdFX0ZXX0NBUF9TSE9SVF9DTURcXHRcXHRcXHRcXHQ9IEJJVF9VTEwoMCksXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG5pbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xcbkBAIC0xMjgzLDcgKzEyODMsNyBAQCBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcbiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxcbi1cXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcXG4rXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0ICpyZXE7XFxuIFxcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cXHUwMDNlYmQ7XFxuQEAgLTEyOTUsNyArMTI5NSw3IEBAIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmVxLVxcdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xcbiBcXHRyZXEtXFx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcXG4tXFx0cmVxLVxcdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuK1xcdHJlcS1cXHUwMDNlcmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXG4gXFx0Ym5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG5AQCAtMTMxNyw3ICsxMzE3LDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xcbiBcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gYm4tXFx1MDAzZWJkO1xcbi1cXHR1MTYgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbitcXHR1MzIgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xcbkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcbiBcXHRyZXNwID0gYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG4tXFx0cmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AtXFx1MDAzZXJpbmdfaWQpO1xcbitcXHRyaW5nX2lkID0gbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcmluZ19pZCk7XFxuIFxcdGJuZ2VfaHdybV9yZXFfZHJvcChiZCwgcmVxKTtcXG4gXFxuIGV4aXQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXFxuIHZvaWQgYm5nZV9od3JtX3N0YXRfY3R4X2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBibmdlX2h3cm1fc3RhdF9jdHhfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4tXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIGludCBjbXBsX3JpbmdfaWQpO1xcbitcXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7XFxuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4gXFx0XFx0XFx0ICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXFxuaW5kZXggNzA3NjgxOTMwMDRjYjIuLjZmN2VmNTA2ZDRlMThjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxcbiB7XFxuIFxcdHJldHVybiByeHItXFx1MDAzZXJ4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKVxcbiB7XFxuIFxcdHJldHVybiB0eHItXFx1MDAzZXR4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbkBAIC0xMzc1LDEyICsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gXFx1MDAyNmJuLVxcdTAwM2VibmFwaVtpXS1cXHUwMDNlbnFfcmluZztcXG4gXFx0XFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBucXItXFx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgYm5nZV9jcF9yaW5nX2luZm8gKmNwciA9IFxcdTAwMjZucXItXFx1MDAzZWNwX3JpbmdfYXJyW2pdO1xcbiBcXG4gXFx0XFx0XFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0O1xcbiBcXHRibmdlX2luaXRfcnhiZF9wYWdlcyhyaW5nLCB0eXBlKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfYWdnX3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHR1MzIgdHlwZTtcXG4gXFxuIFxcdHJpbmcgPSBcXHUwMDI2cnhyLVxcdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdGlmIChibmdlX2lzX2FnZ19yZXFkKGJuLVxcdTAwM2ViZCkpIHtcXG4gXFx0XFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFxcdTAwM2NcXHUwMDNjIFJYX0JEX0xFTl9TSElGVCkgfFxcbiBcXHRcXHRcXHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcXG5AQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gXFx1MDAyNmJuLVxcdTAwM2V0eF9yaW5nW2ldO1xcbiBcXHRcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXG4tXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFxuIFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ0eHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG5AQCAtMTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIGludCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0ICAgIHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXHRibmdlX2RiX3dyaXRlKGJuLVxcdTAwM2ViZCwgXFx1MDAyNnJ4ci1cXHUwMDNlcnhfYWdnX2RiLCByeHItXFx1MDAzZXJ4X2FnZ19wcm9kKTtcXG4gXFx0Ym5nZV9kYl93cml0ZShibi1cXHUwMDNlYmQsIFxcdTAwMjZyeHItXFx1MDAzZXJ4X2RiLCByeHItXFx1MDAzZXJ4X3Byb2QpO1xcbi1cXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbitcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuIFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2cnhyLVxcdTAwM2VyeF9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuLVxcdGJuLVxcdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cXHUwMDNlZndfcmluZ19pZDtcXG4rXFx0Ym4tXFx1MDAzZWdycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xOTE2LDcgKzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuIFxcdFxcdGJuZ2VfZGJfbnEoYm4sIFxcdTAwMjZucXItXFx1MDAzZW5xX2RiLCBucXItXFx1MDAzZW5xX3Jhd19jb25zKTtcXG4gXFx0XFx0ZW5hYmxlX2lycSh2ZWN0b3IpO1xcbi1cXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuK1xcdFxcdGJuLVxcdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbiBcXG4gXFx0XFx0aWYgKCFpKSB7XFxuIFxcdFxcdFxcdHJjID0gYm5nZV9od3JtX3NldF9hc3luY19ldmVudF9jcihiZCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXFxuIFxcdHRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XFxuLVxcdFxcdHUxNiByaW5nX2lkLCBqO1xcbitcXHRcXHR1MzIgajtcXG4gXFxuIFxcdFxcdGogPSBiZC1cXHUwMDNlcnNzX2luZGlyX3RibFtpXTtcXG4gXFx0XFx0cnhyID0gXFx1MDAyNmJuLVxcdTAwM2VyeF9yaW5nW2pdO1xcbiBcXG4tXFx0XFx0cmluZ19pZCA9IHJ4ci1cXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4tXFx0XFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4rXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQpO1xcbitcXHRcXHQqcmluZ190YmwrKyA9IGNwdV90b19sZTE2KGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbiBcXHRcXHRucXIgPSBcXHUwMDI2Ym5hcGktXFx1MDAzZW5xX3Jpbmc7XFxuIFxcdFxcdHJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0XFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRcXHRibmdlX2RiX25xKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgbnFyLVxcdTAwM2VucV9yYXdfY29ucyk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHUzMiBncnBfaWR4ID0gcnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlaW5kZXg7XFxuIFxcdHUzMiBjbXBsX3JpbmdfaWQ7XFxuIFxcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y21wbF9yaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xcbkBAIC0yNDA5LDcgKzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYLFxcbiBcXHRcXHRcXHRcXHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcXG4gXFx0XFx0XFx0XFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFx0Ym4tXFx1MDAzZWdycF9pbmZvW2dycF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MjEsMTQgKzI0MTksMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0dTMyIGdycF9pZHggPSByeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIGNtcGxfcmluZ19pZDtcXG4gXFxuLVxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XFxuIFxcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWF9BR0csXFxuIFxcdFxcdFxcdFxcdGNsb3NlX3BhdGggPyBjbXBsX3JpbmdfaWQgOlxcbiBcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXHR1MzIgY21wbF9yaW5nX2lkO1xcbiBcXG4tXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxcbitcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGNtcGxfcmluZ19pZCA9IGNsb3NlX3BhdGggPyBibmdlX2NwX3JpbmdfZm9yX3R4KHR4cikgOlxcbiBcXHRcXHQgICAgICAgSU5WQUxJRF9IV19SSU5HX0lEO1xcbiBcXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXFxuIFxcdFxcdFxcdFxcdGNtcGxfcmluZ19pZCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nO1xcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX0wyX0NNUEwsXFxuIFxcdFxcdFxcdFxcdElOVkFMSURfSFdfUklOR19JRCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbkBAIC0yNDk2LDExICsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbiBcXHRcXHRcXHRibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VjcF9yaW5nX2FycltqXSk7XFxuIFxcbiBcXHRcXHRyaW5nID0gXFx1MDAyNm5xci1cXHUwMDNlcmluZ19zdHJ1Y3Q7XFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkge1xcbitcXHRcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcXG4gXFx0XFx0XFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxcbmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG5AQCAtNjMwLDggKzYzMCw4IEBAIHN0cnVjdCBibmdlX2wyX2ZpbHRlciB7XFxuIFxcdHJlZmNvdW50X3RcXHRcXHRyZWZjbnQ7XFxuIH07XFxuIFxcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cik7XFxuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcXG4gaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cixcXG4gXFx0XFx0ICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcXG4gc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3Qge1xcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXFx0cmluZ19tZW07XFxuIFxcbi1cXHR1MTZcXHRcXHRcXHRmd19yaW5nX2lkO1xcbitcXHR1MzJcXHRcXHRcXHRmd19yaW5nX2lkO1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHUxNlxcdFxcdGdycF9pZHg7XFxuIFxcdFxcdHUxNlxcdFxcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaCBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxcbmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG5AQCAtODMxNyw4ICs4MzE3LDcgQEAgc3RydWN0IGh3cm1fcmluZ19hbGxvY19vdXRwdXQge1xcbiBcXHRfX2xlMTZcXHRyZXFfdHlwZTtcXG4gXFx0X19sZTE2XFx0c2VxX2lkO1xcbiBcXHRfX2xlMTZcXHRyZXNwX2xlbjtcXG4tXFx0X19sZTE2XFx0cmluZ19pZDtcXG4tXFx0X19sZTE2XFx0bG9naWNhbF9yaW5nX2lkO1xcbitcXHRfX2xlMzJcXHRyaW5nX2lkO1xcbiBcXHR1OFxcdHB1c2hfYnVmZmVyX2luZGV4O1xcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QSU5HX0JVRkZFUiAweDBVTFxcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxcbkBAIC04MzQ1LDEwICs4MzQ0LDEwIEBAIHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCB7XFxuIFxcdHU4XFx0ZmxhZ3M7XFxuIFxcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxcbiBcXHQjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEXFxuLVxcdF9fbGUxNlxcdHJpbmdfaWQ7XFxuK1xcdF9fbGUxNlxcdHVudXNlZF8xO1xcbiBcXHRfX2xlMzJcXHRwcm9kX2lkeDtcXG4gXFx0X19sZTMyXFx0b3BhcXVlO1xcbi1cXHRfX2xlMzJcXHR1bnVzZWRfMTtcXG4rXFx0X19sZTMyXFx0cmluZ19pZDtcXG4gfTtcXG4gXFxuIC8qIGh3cm1fcmluZ19mcmVlX291dHB1dCAoc2l6ZToxMjhiLzE2QikgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6MzY6NTAuNTczMjQ3Njk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODE5MDcyODAwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBibmdlIGRyaXZlciAoQkNNNTc3MDggVGhvclVsdHJhKSwgd2hpY2ggaXMgYSBQQ0kgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGRldmljZSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNWY0MDk2MmU4OGU0NDUwMzk2NzU3ZmNkYzU4ODE4NzI5YzhiM2RhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMjA6MzY6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG5pbmRleCA3MWE3Y2EyMTk2YWQ4OC4uMzExYzhiYzkzMTYwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG4gfVxuIFxuIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4tXHRcdFx0XHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXG4rXHRcdFx0XHR1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpXG4ge1xuIFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LVx1MDAzZWF1eF9kZXY7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgcmVxID0ge307XG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXG4gXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9SSU5HX0ZSRUUpO1xuIFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XG4tXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpO1xuK1x0cmVxLnJpbmdfaWQgPSBjcHVfdG9fbGUzMihmd19yaW5nX2lkKTtcbiBcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuIFx0XHRcdCAgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcbiBcdFx0XHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuIFx0aWYgKCFyYylcbi1cdFx0KmZ3X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLnJpbmdfaWQpO1xuK1x0XHQqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiBcbiBcdHJldHVybiByYztcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5AQCAtMzYsNiArMzYsNyBAQCBzdHJ1Y3QgYm5nZV9wZl9pbmZvIHtcbiB9O1xuIFxuICNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEICAgICAgKCh1MTYpLTEpXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcdChVMzJfTUFYKVxuIFxuIGVudW0ge1xuIFx0Qk5HRV9GV19DQVBfU0hPUlRfQ01EXHRcdFx0XHQ9IEJJVF9VTEwoMCksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuaW5kZXggMWM5Y2ZlYzFiNjMzZmMuLjY1MWM1ZTc4MzUxNmNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG5AQCAtMTI4Myw3ICsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcbitcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZClcbiB7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlcS1cdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xuIFx0cmVxLVx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcbi1cdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbitcdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMzIocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcbiBcdGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuQEAgLTEzMTcsNyArMTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0ICpyZXNwO1xuIFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xuIFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLVx1MDAzZWJkO1xuLVx0dTE2IHJpbmdfaWQsIGZsYWdzID0gMDtcbitcdHUzMiByaW5nX2lkLCBmbGFncyA9IDA7XG4gXHRpbnQgcmM7XG4gXG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xuQEAgLTE0MDEsNyArMTQwMSw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcbi1cdHJpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuK1x0cmluZ19pZCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4gXHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG4gXG4gZXhpdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXG4gdm9pZCBibmdlX2h3cm1fc3RhdF9jdHhfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKTtcbiBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pO1xuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZCk7XG4rXHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpO1xuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0XHQgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuIFx0XHRcdCAgICAgdTMyIHJpbmdfdHlwZSwgdTMyIG1hcF9pbmRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5pbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuQEAgLTEzMjcsMTIgKzEzMjcsMTIgQEAgc3RhdGljIGludCBibmdlX2FsbG9jX2NvcmUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdHJldHVybiByYztcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4ge1xuIFx0cmV0dXJuIHJ4ci1cdTAwM2VyeF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4ge1xuIFx0cmV0dXJuIHR4ci1cdTAwM2V0eF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG5AQCAtMTM3NSwxMiArMTM3NSwxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfbnFfdHJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRzdHJ1Y3QgYm5nZV9ucV9yaW5nX2luZm8gKm5xciA9IFx1MDAyNmJuLVx1MDAzZWJuYXBpW2ldLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnFyLVx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xuIFx0XHRcdHN0cnVjdCBibmdlX2NwX3JpbmdfaW5mbyAqY3ByID0gXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdO1xuIFxuIFx0XHRcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0fVxuIFx0fVxuIH1cbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdDtcbiBcdGJuZ2VfaW5pdF9yeGJkX3BhZ2VzKHJpbmcsIHR5cGUpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbkBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHUzMiB0eXBlO1xuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRpZiAoYm5nZV9pc19hZ2dfcmVxZChibi1cdTAwM2ViZCkpIHtcbiBcdFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBSWF9CRF9MRU5fU0hJRlQpIHxcbiBcdFx0XHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcbkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIgPSBcdTAwMjZibi1cdTAwM2V0eF9yaW5nW2ldO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXG4gXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4gXHRcdFx0XHQgICAgIFx1MDAyNnR4ci1cdTAwM2VibmFwaS1cdTAwM2VuYXBpKTtcbkBAIC0xODY3LDcgKzE4NjcsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHQgICAgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfZGIsIHJ4ci1cdTAwM2VyeF9hZ2dfcHJvZCk7XG4gXHRibmdlX2RiX3dyaXRlKGJuLVx1MDAzZWJkLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHJ4ci1cdTAwM2VyeF9wcm9kKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdHJldHVybiByYztcbiBcbiBcdGJuZ2Vfc2V0X2RiKGJuLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4tXHRibi1cdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE5MTYsNyArMTkxNiw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0XHRlbmFibGVfaXJxKHZlY3Rvcik7XG4tXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4rXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdFx0aWYgKCFpKSB7XG4gXHRcdFx0cmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXG4gXHR0Ymxfc2l6ZSA9IGJuZ2VfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShiZCk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XG4tXHRcdHUxNiByaW5nX2lkLCBqO1xuK1x0XHR1MzIgajtcbiBcbiBcdFx0aiA9IGJkLVx1MDAzZXJzc19pbmRpcl90YmxbaV07XG4gXHRcdHJ4ciA9IFx1MDAyNmJuLVx1MDAzZXJ4X3Jpbmdbal07XG4gXG4tXHRcdHJpbmdfaWQgPSByeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbi1cdFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbitcdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZCk7XG4rXHRcdCpyaW5nX3RibCsrID0gY3B1X3RvX2xlMTYoYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpKTtcbiBcdH1cbiB9XG4gXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRucXIgPSBcdTAwMjZibmFwaS1cdTAwM2VucV9yaW5nO1xuIFx0XHRyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0fVxuIH1cbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG5AQCAtMjQwOSw3ICsyNDA3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdFx0UklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRibi1cdTAwM2VncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDIxLDE0ICsyNDE5LDE0IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlhfQUdHLFxuIFx0XHRcdFx0Y2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6XG4gXHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gfVxuIFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcdTAwMjZ0eHItXHUwMDNldHhfcmluZ19zdHJ1Y3Q7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4rXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gY2xvc2VfcGF0aCA/IGJuZ2VfY3BfcmluZ19mb3JfdHgodHhyKSA6XG4gXHRcdCAgICAgICBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXG4gXHRcdFx0XHRjbXBsX3JpbmdfaWQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZztcbiBcbiBcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCxcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuQEAgLTI0OTYsMTEgKzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpXG4gXHRcdFx0Ym5nZV9od3JtX2NwX3JpbmdfZnJlZShibiwgXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdKTtcbiBcbiBcdFx0cmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbi1cdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpIHtcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcbiBcdFx0XHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZyxcbiBcdFx0XHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9OUSxcbiBcdFx0XHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbitcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuaW5kZXggZjQ2MzZiNWIwY2YzZjAuLmQxNzc5MTljMmUxMTcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbkBAIC02MzAsOCArNjMwLDggQEAgc3RydWN0IGJuZ2VfbDJfZmlsdGVyIHtcbiBcdHJlZmNvdW50X3RcdFx0cmVmY250O1xuIH07XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcbiBpbnQgYm5nZV9hbGxvY19yeF9kYXRhKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyLFxuIFx0XHQgICAgICAgdTE2IHByb2QsIGdmcF90IGdmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcbiBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCB7XG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXHRyaW5nX21lbTtcbiBcbi1cdHUxNlx0XHRcdGZ3X3JpbmdfaWQ7XG4rXHR1MzJcdFx0XHRmd19yaW5nX2lkO1xuIFx0dW5pb24ge1xuIFx0XHR1MTZcdFx0Z3JwX2lkeDtcbiBcdFx0dTE2XHRcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5pbmRleCA4ZWExM2Q1NDA3ZWVjZC4uMWY3YmQ5NjQxNWE1MjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuQEAgLTgzMTcsOCArODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHtcbiBcdF9fbGUxNlx0cmVxX3R5cGU7XG4gXHRfX2xlMTZcdHNlcV9pZDtcbiBcdF9fbGUxNlx0cmVzcF9sZW47XG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4tXHRfX2xlMTZcdGxvZ2ljYWxfcmluZ19pZDtcbitcdF9fbGUzMlx0cmluZ19pZDtcbiBcdHU4XHRwdXNoX2J1ZmZlcl9pbmRleDtcbiBcdCNkZWZpbmUgUklOR19BTExPQ19SRVNQX1BVU0hfQlVGRkVSX0lOREVYX1BJTkdfQlVGRkVSIDB4MFVMXG4gXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxuQEAgLTgzNDUsMTAgKzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHtcbiBcdHU4XHRmbGFncztcbiBcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX0xBU1QgICAgICAgICAgICAgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRFxuLVx0X19sZTE2XHRyaW5nX2lkO1xuK1x0X19sZTE2XHR1bnVzZWRfMTtcbiBcdF9fbGUzMlx0cHJvZF9pZHg7XG4gXHRfX2xlMzJcdG9wYXF1ZTtcbi1cdF9fbGUzMlx0dW51c2VkXzE7XG4rXHRfX2xlMzJcdHJpbmdfaWQ7XG4gfTtcbiBcbiAvKiBod3JtX3JpbmdfZnJlZV9vdXRwdXQgKHNpemU6MTI4Yi8xNkIpICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMDozNjo1MC41NzMyNDk4ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjk1MjgyODk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcm9hZGNvbSBibmdlIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBCcm9hZGNvbSBgYm5nZWAgZHJpdmVyLiBJdCBzZWVtcyB0aGV5J3JlIGJ1bXBpbmcgdGhlIHNpemUgb2YgYGZ3X3JpbmdfaWRgIGZyb20gYHUxNmAgdG8gYHUzMmAuIFRoaXMgaW1wYWN0cyBhIGJ1bmNoIG9mIGZpbGVzOiBgZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNgLCBhIHNsZXcgb2YgYGJuZ2VgIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxlcyAoYGJuZ2UuaGAsIGBibmdlX2h3cm1fbGliLntjLGh9YCwgYGJuZ2VfbmV0ZGV2LntjLGh9YCwgYGJuZ2Vfcm1lbS5oYCkgYW5kIGFsc28gYGluY2x1ZGUvbGludXgvYm5nZS9oc2kuaGAuIEludGVyZXN0aW5nLi4uXG5cbkkgc2VlIHRoZXkndmUgdXBkYXRlZCBgSU5WQUxJRF9IV19SSU5HX0lEYCB0byBhIDMyLWJpdCB2ZXJzaW9uLCBgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUYC4gIE1ha2VzIHNlbnNlLCB0aGF0J3MgZXhwZWN0ZWQgd2l0aCB0aGUgcmluZyBJRCBzaXplIGNoYW5nZS4gQW5kIHRoZSBgcmluZ19pZGAgZmllbGRzIGluIHRoZSBgaHdybV9yaW5nX2FsbG9jX291dHB1dGAgYW5kIGBod3JtX3JpbmdfZnJlZV9pbnB1dGAgc3RydWN0dXJlcyBhcmUgZ2V0dGluZyB0aGVpciBkYXRhIHR5cGVzIGNoYW5nZWQgZnJvbSBgX19sZTE2YCB0byBgX19sZTMyYC4gIFNvIGl0J3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS5cblxuR2l2ZW4gdGhpcyB0eXBlIG9mIGNoYW5nZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiB1c2VkIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgdGhlcmUuIFRoZSBkcml2ZXIgaXMgY2xlYXJseSBgYm5nZWAgYWNjb3JkaW5nIHRvIHRoZSBwYXRoLiBIb2xkIG9uLCBcImJuZ2VcIj8gVGhhdCdzIG5vdCBvbmUgSSdtIHN1cGVyIGZhbWlsaWFyIHdpdGguIElzIHRoYXQgYW4gb2xkZXIgQnJvYWRjb20gTmV0WHRyZW1lLUUgb3Igc29tZXRoaW5nPyBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzbid0IGEgdHlwbyBmb3IgYGJueHRgLiBMZXQncyBoaXQgdGhlIGtlcm5lbCB0cmVlIGFuZCBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTM5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MDMuNTI2MDkzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImI0NC5jXCIsXG4gICAgXCJiNDQuaFwiLFxuICAgIFwiYmNtNDkwOF9lbmV0LmNcIixcbiAgICBcImJjbTQ5MDhfZW5ldC5oXCIsXG4gICAgXCJiY202M3h4X2VuZXQuY1wiLFxuICAgIFwiYmNtNjN4eF9lbmV0LmhcIixcbiAgICBcImJjbXN5c3BvcnQuY1wiLFxuICAgIFwiYmNtc3lzcG9ydC5oXCIsXG4gICAgXCJiZ21hYy1iY21hLW1kaW8uY1wiLFxuICAgIFwiYmdtYWMtYmNtYS5jXCIsXG4gICAgXCJiZ21hYy1wbGF0Zm9ybS5jXCIsXG4gICAgXCJiZ21hYy5jXCIsXG4gICAgXCJiZ21hYy5oXCIsXG4gICAgXCJibngyLmNcIixcbiAgICBcImJueDIuaFwiLFxuICAgIFwiYm54Ml9mdy5oXCIsXG4gICAgXCJjbmljLmNcIixcbiAgICBcImNuaWMuaFwiLFxuICAgIFwiY25pY19kZWZzLmhcIixcbiAgICBcImNuaWNfaWYuaFwiLFxuICAgIFwic2IxMjUwLW1hYy5jXCIsXG4gICAgXCJ0ZzMuY1wiLFxuICAgIFwidGczLmhcIixcbiAgICBcInVuaW1hYy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImFzcDJcIixcbiAgICBcImJuZ2VcIixcbiAgICBcImJueDJ4XCIsXG4gICAgXCJibnh0XCIsXG4gICAgXCJnZW5ldFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjAzLjUyNjIzMTE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQzMDg2NDUyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgXCJibmdlXCIgQ29udGV4dCoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGUgdGVybSBgYm5nZWAgcG9wIHVwLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJlYXQgaXQgYXMgYSBwb3RlbnRpYWwgbmFtZXNwYWNlIG9yIGNvbXBvbmVudC4gSWYgSSdtIHdvcmtpbmcgb24gYSBwcm9qZWN0IHdpdGggYSBzdHJ1Y3R1cmUgSSdtIGZhbWlsaWFyIHdpdGgsIGl04oCZcyBoaWdobHkgbGlrZWx5IEknbSBhd2FyZSBvZiB0aGUgcHJvamVjdCdzIGRpcmVjdG9yeSBzdHJ1Y3R1cmUsIGFuZCB0aGlzIGNvbnRleHQgaW5mbHVlbmNlcyB0aGUgd2F5IEkgcHJvY2VzcyB0aGlzIG5ldyBpbmZvcm1hdGlvbi4gVGhlIHF1aWNrIGNoZWNrIGlzIHRvIHNlZSBpZiBJJ20gYWJsZSB0byByZWNhbGwgYSBkaXJlY3Rvcnkgd2l0aCBhIHNpbWlsYXIgbmFtZSwgdXN1YWxseSwgdGhlIGxvY2F0aW9uIGluIHRoZSBwcm9qZWN0J3MgZmlsZSBzdHJ1Y3R1cmUgcHJvdmlkZXMgYSBzb2xpZCBjbHVlIGFib3V0IGl0cyBmdW5jdGlvbi4gTm93IEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBwYXRoLCBleHBlY3RpbmcgdG8gc2VlIGEgZGlyZWN0b3J5IG5hbWVkIGBibmdlYC4gVGhhdCdzIHdoZXJlIEknbGwgZ2V0IHRoZSByZWFsIGNvbnRleHQsIGl0cyBjb250ZW50cywgaXRzIGRlcGVuZGVuY2llcywgdGhlIHdob2xlIHBpY3R1cmUuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQncyBhY3R1YWxseSB0aGVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIHB1cnBvc2Ugb2YgYGJuZ2VgIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBvciBwZXJoYXBzLCBpdCdzIGEgbmFtaW5nIGNvbnZlbnRpb24sIGluIHdoaWNoIGNhc2UgSSBtaWdodCBsb29rIGZvciBhIGJyb2FkZXIgY29udGV4dC4gSSdsbCBtZW50YWxseSBzdGFydCB0byBidWlsZCBhIG1hcCBvZiBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gYmFzZWQgb24gdGhlIHN0cnVjdHVyZSBhbmQgY29udGVudCBvZiBgYm5nZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNDUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MjcuODM0ODgyODcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ1NjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYm5nZS5oXCIsXG4gICAgXCJibmdlX2F1eHIuY1wiLFxuICAgIFwiYm5nZV9hdXhyLmhcIixcbiAgICBcImJuZ2VfY29yZS5jXCIsXG4gICAgXCJibmdlX2RiLmhcIixcbiAgICBcImJuZ2VfZGV2bGluay5jXCIsXG4gICAgXCJibmdlX2RldmxpbmsuaFwiLFxuICAgIFwiYm5nZV9ldGh0b29sLmNcIixcbiAgICBcImJuZ2VfZXRodG9vbC5oXCIsXG4gICAgXCJibmdlX2h3X2RlZi5oXCIsXG4gICAgXCJibmdlX2h3cm0uY1wiLFxuICAgIFwiYm5nZV9od3JtLmhcIixcbiAgICBcImJuZ2VfaHdybV9saWIuY1wiLFxuICAgIFwiYm5nZV9od3JtX2xpYi5oXCIsXG4gICAgXCJibmdlX2xpbmsuY1wiLFxuICAgIFwiYm5nZV9saW5rLmhcIixcbiAgICBcImJuZ2VfbmV0ZGV2LmNcIixcbiAgICBcImJuZ2VfbmV0ZGV2LmhcIixcbiAgICBcImJuZ2VfcmVzYy5jXCIsXG4gICAgXCJibmdlX3Jlc2MuaFwiLFxuICAgIFwiYm5nZV9ybWVtLmNcIixcbiAgICBcImJuZ2Vfcm1lbS5oXCIsXG4gICAgXCJibmdlX3R4cnguY1wiLFxuICAgIFwiYm5nZV90eHJ4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MjcuODM3MTM3NDMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MjczNzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczpcblxuKipQQ0kgRGV2aWNlIERyaXZlciBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgbWVudGlvbnMgYGJuZ2VgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBcIldhaXQsICpibmdlKi4uLiBpcyB0aGF0IGFjdHVhbGx5IGEgUENJIGRldmljZSBkcml2ZXI/IFRoYXQgbmFtZSByaW5ncyBhIGJlbGwsIGJ1dCBJIG5lZWQgdG8gY29uZmlybS5cIiBJbW1lZGlhdGVseSwgbXkgbWVudGFsIGdlYXJzIHNoaWZ0IGludG8gZ2VhciB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUuIFRvIGZpZ3VyZSB0aGlzIG91dCwgSSdsbCBnbyBzdHJhaWdodCB0byB0aGUgdXN1YWwgc3VzcGVjdHM6IGVpdGhlciBgYm5nZV9jb3JlLmNgIG9yIGBibmdlX25ldGRldi5jYC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB3aGVyZSB0aGlzIGtpbmQgb2YgZHJpdmVyIGZ1bmN0aW9uYWxpdHkgd291bGQgbGlrZWx5IHJlc2lkZSwgYW5kIGFyZSB3aGVyZSBJIG5lZWQgdG8gbG9vayBmb3IgY29uZmlybWF0aW9uIGFuZCBkZXRhaWxzLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjMxLjExOTg4MDIwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAyMzgzNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jPTQwNz1zdGF0aWMgdm9pZCBibmdlX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo0MTc6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGJuZ2VfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNDE4LVxcdC5uYW1lXFx0XFx0PSBibmdlX2RyaXZlcl9uYW1lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMDozNzozMS42ODAxMjc1ODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzQxNTI1NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUaGlzIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgYSBQQ0kgZHJpdmVyLiBUaGUgaW1tZWRpYXRlIGNvbmNlcm4gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGlzIHJlYWNoYWJpbGl0eS4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMsIGxpa2UgdGhvc2UgZm9yIFBDSSBkZXZpY2VzLCBhcmUgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSB1bmxlc3MgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZW11bGF0b3IgcHJlc2VudCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpbmsgb2YgYGUxMDAwZWAgaW4gUUVNVSDigJMgdGhhdCdzIGEgZ29vZCBleGFtcGxlLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBpcyB0aGVyZSBhIFFFTVUgZW11bGF0b3IgZm9yIGBibmdlYD8gVGhlIG5hbWUgcmluZ3MgYSBiZWxsLCBidXQgaXQncyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gTXkgZ3V0IHRlbGxzIG1lIGl0J3MgbGlrZWx5IGEgQnJvYWRjb20gTmV0WHRyZW1lLUUgdmFyaWFudCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIG15IG1lbW9yeSBpc24ndCBqb2dnaW5nIGFueSBzcGVjaWZpYyBlbXVsYXRvcnMgZm9yIHRoaXMgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZC4gU28sIGl0J3Mgc3RhcnRpbmcgdG8gbG9vayBsaWtlIGEgZGVhZCBlbmQgZm9yIGRpcmVjdCBpbnRlcmFjdGlvbi4uLiBvciwgcG9zc2libHkgYSBuZXcgYW5kIGFzIHlldCB1bi1lbXVsYXRlZCBkcml2ZXIuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLiBDb3VsZCBgYm5nZWAgYmUgYSBwbGFjZWhvbGRlciBuYW1lLCBhIFwiZmFrZVwiIGRyaXZlciBpZGVudGlmaWVyLCBvciBhIHJlY2VudGx5IGRldmVsb3BlZCBkcml2ZXI/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLlxuXG5OZXh0LCBJJ2xsIG5lZWQgdG8gYXNzZXNzIHRoZSBmdXp6YWJpbGl0eSBvZiB0aGlzIGRyaXZlci4gQXNzdW1pbmcgaXQncyBhIFBDSSBkcml2ZXIgYW5kIGxhY2tpbmcgYSBRRU1VIGVtdWxhdG9yLCBpdCdzIHZpcnR1YWxseSB1bnJlYWNoYWJsZSBpbiBteSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgaGF2ZSB0byB2ZXJpZnkgdGhlIGVudmlyb25tZW50LlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlcjogSXMgdGhlcmUgYW55IGZvcm0gb2YgZW11bGF0aW9uIGZvciB0aGlzIGRyaXZlciwgb3IgaXMgaXQgYWN0dWFsbHkgYSB2aXJ0dWFsIGRldmljZSBsaWtlIGEgYHZldGhgIGludGVyZmFjZSBvciBhIGRpZmZlcmVudCB2aXJ0dWFsIGRyaXZlciBhbHRvZ2V0aGVyPyBUaGF0IGluZm9ybWF0aW9uIHdpbGwgZGljdGF0ZSB0aGUgbmV4dCBzdGVwcyBpbiBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwOTgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjA6Mzc6MzguNDIxNjU3NzkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg0ODg1NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTU9EVUxFX0RFVklDRV9UQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBibmdlX3BjaV90YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBibmdlX3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjM4Ljg4MDE3OTI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2ODE5MTMyMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBQQ0kgSUQgQmluZGluZ3MqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRldmljZSdzIGludGVyYWN0aW9uIHdpdGggdGhlIFBDSSBidXMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIFBDSSBJRHMgaXQncyBhY3R1YWxseSBiaW5kaW5nIHRvLiBUaGlzIGlzIHRoZSBiZWRyb2NrIG9mIHVuZGVyc3RhbmRpbmcgaXRzIGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCdzIGJlaW5nIHJlY29nbml6ZWQgYnkgdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgaXQgYWdhaW5zdCBteSBrbm93biBkcml2ZXJzLCB1bmRlcnN0YW5kIHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCBiZWdpbiB0byBkaWFnbm9zZSBhbnkgaXNzdWVzLiBJdCdzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBkZXZpY2UncyBjYXBhYmlsaXRpZXMgYW5kIGJlaGF2aW91ci4gTGV0J3Mgc2VlIHdoYXQgdGhlIHN5c3RlbSByZXBvcnRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4NSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjQ3LjU2MjA5NjQ4NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHtcXG4gIDIxOlxcdFxcdGNoYXIgKm5hbWU7XFxuICAyMjpcXHR9IGJvYXJkX2luZm9bXSA9IHtcXG4gIDIzOlxcdFxcdFtCQ001NzcwOF0gPSB7IFxcXCJCcm9hZGNvbSBCQ001NzcwOCBUaG9yVWx0cmEgNTBHYi8xMDBHYi8yMDBHYi80MDBHYi84MDBHYiBFdGhlcm5ldFxcXCIgfSxcXG4gIDI0OlxcdH07XFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBibmdlX3BjaV90YmxbXSA9IHtcXG4gIDI3OlxcdFxcdHsgUENJX1ZERVZJQ0UoQlJPQURDT00sIDB4MTc4MCksIC5kcml2ZXJfZGF0YSA9IEJDTTU3NzA4IH0sXFxuICAyODpcXHRcXHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXFxuICAyOTpcXHRcXHR7MCwgfVxcbiAgMzA6XFx0fTtcXG4gIDMxOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBibmdlX3BjaV90YmwpO1xcbiAgMzI6XFx0XFxuICAzMzpcXHRzdGF0aWMgdm9pZCBibmdlX3ByaW50X2RldmljZV9pbmZvKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBlbnVtIGJvYXJkX2lkeCBpZHgpXFxuICAzNDpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIwOjM3OjQ3LjU2MjMwNjM0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDkxODAzMDc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgdGFyZ2V0OiBhIEJyb2FkY29tIEJDTTU3NzA4IFRob3JVbHRyYS4gVGhpcyBpcyBwaHlzaWNhbCBoYXJkd2FyZSwgcGxhaW4gYW5kIHNpbXBsZS4gTm8gc29mdHdhcmUgZW11bGF0aW9uIGV4aXN0cyBmb3IgdGhpcyBzcGVjaWZpYyBkZXZpY2UgaW4gUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGFyZSBteSBzdGFuZGFyZCB0ZXN0aW5nIGVudmlyb25tZW50cy5cblxuVGhlcmVmb3JlLCBhbnkgY29kZSBwYXRocyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIFRoZSBsb2dpYyBqdXN0IHdvbid0IGV4ZWN1dGUuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYXJrIGl0IGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBCdXQsIEkgc2hvdWxkIGRvIG15IGR1ZSBkaWxpZ2VuY2UgYW5kIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGVyZSBpc24ndCBzb21lIG9ic2N1cmUgdkRQQSBkcml2ZXIgb3Igc29tZSBvdGhlciB3YXkgdG8gZ2V0IHRvIGl0IGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSG1tLCBubywgaXQncyBhIHN0YW5kYXJkIFBDSSBkcml2ZXIsIG5vdGhpbmcgZmFuY3kuXG5cblRoZSBwcm9tcHQgZXhwbGljaXRseSB0ZWxscyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemF0aW9uLCAqZXZlbiogd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gU2luY2UgdGhpcyBpcyBhIHBoeXNpY2FsIEV0aGVybmV0IFBDSSBkcml2ZXIsIGFuZCBJIGNhbid0IGVtdWxhdGUgb3IgaW5qZWN0IGl0IGludG8gbXkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBJJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRoZSBjb25kaXRpb25zIGFyZSBtZXQuXG5cbkxldCdzIHdyaXRlIHRoZSByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzYsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMDozODoxMi40ODAzNDUyOTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIGJuZ2UgZHJpdmVyIChCQ001NzcwOCBUaG9yVWx0cmEpLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgZGV2aWNlIGluIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gYm5nZSBkcml2ZXIgKEJDTTU3NzA4IFRob3JVbHRyYSksIHdoaWNoIGlzIGEgUENJIGRyaXZlciBmb3IgcGh5c2ljYWwgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBkZXZpY2UgaW4gUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqhk7v[1] Phase: Running StartedAt: 2026-07-21 20:38:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhk7v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-21 20:38:23 +0000 UTC FinishedAt: 2026-07-21 20:38:31 +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,}