Name: series-workflowtfpxq Phase: Failed StartedAt: 2026-06-30 18:33:34 +0000 UTC FinishedAt: 2026-06-30 18:41:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtfpxq[0] Phase: Succeeded StartedAt: 2026-06-30 18:33:34 +0000 UTC FinishedAt: 2026-06-30 18:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtfpxq[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 18:33:34 +0000 UTC FinishedAt: 2026-06-30 18:41:12 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBpbiB0aGUgTWljcm9jaGlwIFZDQVAgKFZlcnNhdGlsZSBDb250ZW50LUF3YXJlIFByb2Nlc3NvcikgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIChsYW45NjZ4IGFuZCBzcGFyeDUpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgKElPTUVNLCBPRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNzBlZDJmZmViYjkzMzgwNDQxNzM1MmU0YTMyZmJkMDgyNTAyN2RlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTg6NDA6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbmluZGV4IDcyZTNiMTg5YmFjNWFjLi5lYjI4ZGY4MGIyODE4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbkBAIC02MDEsNyAmIzQzOzYwMSw2IEBAIHN0YXRpYyB2b2lkIGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmtleXN0cmVhbSk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5tYXNrc3RyZWFtKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmFjdGlvbnN0cmVhbSk7XG4tXHRtdXRleF9kZXN0cm95KFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuIFx0a2ZyZWUoYWRtaW4pO1xuIH1cbiBcbkBAIC02MTUsNyAmIzQzOzYxNCw3IEBAIGxhbjk2NnhfdmNhcF9hZG1pbl9hbGxvYyhzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgc3RydWN0IHZjYXBfY29udHJvbCAqY3RybCxcbiBcdGlmICghYWRtaW4pXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuQEAgLTcyMSw2ICYjNDM7NzIwLDcgQEAgaW50IGxhbjk2NnhfdmNhcF9pbml0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4KVxuIFx0Y3RybC1cdTAwM2VvcHMgPSBcdTAwMjZsYW45NjZ4X3ZjYXBfb3BzO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y3RybC1cdTAwM2VsaXN0KTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmN0cmwtXHUwMDNlbG9jayk7XG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShsYW45NjZ4X3ZjYXBfaW5zdF9jZmcpOyAmIzQzOyYjNDM7aSkge1xuIFx0XHRjZmcgPSBcdTAwMjZsYW45NjZ4X3ZjYXBfaW5zdF9jZmdbaV07XG4gXG5AQCAtNzgwLDUgJiM0Mzs3ODAsNiBAQCB2b2lkIGxhbjk2NnhfdmNhcF9kZWluaXQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngpXG4gXHRcdGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKGFkbWluKTtcbiBcdH1cbiBcbiYjNDM7XHRtdXRleF9kZXN0cm95KFx1MDAyNmN0cmwtXHUwMDNlbG9jayk7XG4gXHRrZnJlZShjdHJsKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xuaW5kZXggOTViOTNlNDZhNDFkY2UuLmNmMzMyZGU2YmY3MzZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5AQCAtMTkzMCw3ICYjNDM7MTkzMCw2IEBAIHN0YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIHtcbiBcdGlmICghYWRtaW4pXG4gXHRcdHJldHVybjtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5rZXlzdHJlYW0pO1xuIFx0a2ZyZWUoYWRtaW4tXHUwMDNlY2FjaGUubWFza3N0cmVhbSk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5hY3Rpb25zdHJlYW0pO1xuQEAgLTE5NTAsNyAmIzQzOzE5NDksNyBAQCBzcGFyeDVfdmNhcF9hZG1pbl9hbGxvYyhzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwsXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRhZG1pbi1cdTAwM2V2dHlwZSA9IGNmZy1cdTAwM2V2dHlwZTtcbiBcdGFkbWluLVx1MDAzZXZpbnN0ID0gY2ZnLVx1MDAzZXZpbnN0O1xuIFx0YWRtaW4tXHUwMDNlaW5ncmVzcyA9IGNmZy1cdTAwM2VpbmdyZXNzO1xuQEAgLTIwNTksNiAmIzQzOzIwNTgsNyBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXG4gXHRjdHJsLVx1MDAzZW9wcyA9IFx1MDAyNnNwYXJ4NV92Y2FwX29wcztcbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmN0cmwtXHUwMDNlbGlzdCk7XG4mIzQzO1x0bXV0ZXhfaW5pdChcdTAwMjZjdHJsLVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIEFSUkFZX1NJWkUoc3Bhcng1X3ZjYXBfaW5zdF9jZmcpOyAmIzQzOyYjNDM7aWR4KSB7XG4gXHRcdGNmZyA9IFx1MDAyNmNvbnN0cy1cdTAwM2V2Y2Fwc19jZmdbaWR4XTtcbiBcdFx0YWRtaW4gPSBzcGFyeDVfdmNhcF9hZG1pbl9hbGxvYyhzcGFyeDUsIGN0cmwsIGNmZyk7XG5AQCAtMjA5Nyw1ICYjNDM7MjA5Nyw2IEBAIHZvaWQgc3Bhcng1X3ZjYXBfZGVpbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCk7XG4gXHRcdHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pO1xuIFx0fVxuJiM0MztcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y3RybC1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKGN0cmwpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuaW5kZXggMGZkYjVlMzYzYmFkYzAuLmZmODZjZGUxMWEzMmM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTkzNCw2ICYjNDM7OTM0LDE2IEBAIHN0YXRpYyBib29sIHZjYXBfcnVsZV9leGlzdHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzO3ZvaWQgdmNhcF9sb2NrKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNldmN0cmwtXHUwMDNlbG9jayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdmNhcF91bmxvY2soc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuJiM0Mzt7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZXZjdHJsLVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIEZpbmQgYSBydWxlIHdpdGggYSBwcm92aWRlZCBydWxlIGlkIHJldHVybiBhIGxvY2tlZCB2Y2FwICovXG4gc3RhdGljIHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKlxuIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG5AQCAtOTQzLDExICYjNDM7OTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG4gXG4gXHQvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFx1MDAyNnZjdHJsLVx1MDAzZWxpc3QsIGxpc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KVxuIFx0XHRcdGlmIChyaS1cdTAwM2VkYXRhLmlkID09IGlkKVxuIFx0XHRcdFx0cmV0dXJuIHJpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHR9XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG5AQCAtOTYxLDE0ICYjNDM7OTcxLDE0IEBAIGludCB2Y2FwX2xvb2t1cF9ydWxlX2J5X2Nvb2tpZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTY0IGNvb2tpZSlcbiBcbiBcdC8qIExvb2sgZm9yIHRoZSBydWxlIGlkIGluIGFsbCB2Y2FwcyAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXHUwMDI2dmN0cmwtXHUwMDNlbGlzdCwgbGlzdCkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF9sb2NrKGFkbWluKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMsIGxpc3QpIHtcbiBcdFx0XHRpZiAocmktXHUwMDNlZGF0YS5jb29raWUgPT0gY29va2llKSB7XG4gXHRcdFx0XHRpZCA9IHJpLVx1MDAzZWRhdGEuaWQ7XG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG4gXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoaWQpXG4gXHRcdFx0cmV0dXJuIGlkO1xuIFx0fVxuQEAgLTk4NSwxMSAmIzQzOzk5NSwxMSBAQCBpbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZClcbiBcdGludCBjb3VudCA9IDA7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVsZW0sIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRpZiAoZWxlbS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXHUwMDNlPSBtaW5fY2lkIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgZWxlbS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXHUwMDNjIG1heF9jaWQpXG4gXHRcdFx0JiM0MzsmIzQzO2NvdW50O1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHR9XG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuQEAgLTIyNjYsNyAmIzQzOzIyNzYsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcdC8qIEluc2VydCB0aGUgbmV3IHJ1bGUgaW4gdGhlIGxpc3Qgb2YgdmNhcCBydWxlcyAqL1xuLVx0bXV0ZXhfbG9jayhcdTAwMjZyaS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0dmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7XG4gXHRyZXQgPSB2Y2FwX2luc2VydF9ydWxlKHJpLCBcdTAwMjZtb3ZlKTtcbkBAIC0yMzAyLDcgJiM0MzsyMzEyLDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xuQEAgLTIzMzAsNyAmIzQzOzIzNDAsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2FsbG9jX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRpZiAodmN0cmwtXHUwMDNldmNhcHNbYWRtaW4tXHUwMDNldnR5cGVdLnJvd3MgPT0gMClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfbG9jayhhZG1pbik7XG4gXHQvKiBDaGVjayBpZiBhIHJ1bGUgd2l0aCB0aGlzIGlkIGFscmVhZHkgZXhpc3RzICovXG4gXHRpZiAodmNhcF9ydWxlX2V4aXN0cyh2Y3RybCwgaWQpKSB7XG4gXHRcdGVyciA9IC1FSU5WQUw7XG5AQCAtMjM2OSwxMyAmIzQzOzIzNzksMTMgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9hbGxvY19ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHRnb3RvIG91dF9mcmVlO1xuIFx0fVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdHJldHVybiAoc3RydWN0IHZjYXBfcnVsZSAqKXJpO1xuIFxuIG91dF9mcmVlOlxuIFx0a2ZyZWUocmkpO1xuIG91dF91bmxvY2s6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcbiB9XG5AQCAtMjQ0Niw3ICYjNDM7MjQ1Niw3IEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4gXG4gXHRydWxlID0gdmNhcF9kZWNvZGVfcnVsZShlbGVtKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZlbGVtLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKGVsZW0tXHUwMDNlYWRtaW4pO1xuIFx0cmV0dXJuIHJ1bGU7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xuQEAgLTI0ODMsNyAmIzQzOzI0OTMsNyBAQCBpbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuIFx0ZXJyID0gIHZjYXBfd3JpdGVfY291bnRlcihyaSwgXHUwMDI2Y3RyKTtcbiBcbiBvdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2socmktXHUwMDNlYWRtaW4pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9tb2RfcnVsZSk7XG5AQCAtMjU3MCw3ICYjNDM7MjU4MCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKVxuIFx0XHRhZG1pbi1cdTAwM2VsYXN0X3VzZWRfYWRkciA9IGVsZW0tXHUwMDNlYWRkcjtcbiBcdH1cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTtcbkBAIC0yNTg1LDcgJiM0MzsyNTk1LDcgQEAgaW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpLCBuZXh0X3JpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHR2Y3RybC1cdTAwM2VvcHMtXHUwMDNlaW5pdChyaS1cdTAwM2VuZGV2LCBhZG1pbiwgcmktXHUwMDNlYWRkciwgcmktXHUwMDNlc2l6ZSk7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNnJpLVx1MDAzZWxpc3QpO1xuQEAgLTI1OTgsNyAmIzQzOzI2MDgsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZXBvcnQtXHUwMDNlbGlzdCk7XG4gXHRcdGtmcmVlKGVwb3J0KTtcbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMzAxNiw3ICYjNDM7MzAyNiw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdC8qIEZvdW5kIHRoZSBhZG1pbiwgbm93IGZpbmQgdGhlIG9mZmxvYWRhYmxlIHJ1bGVzICovXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHRcdC8qIElzIHRoZSBydWxlIGluIHRoZSBsb29rdXAgZGVmaW5lZCBieSB0aGUgY2hhaW4gKi9cbiBcdFx0XHRpZiAoIShyaS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXHUwMDNlPSBjaGFpbiBcdTAwMjZcdTAwMjZcbkBAIC0zMDM0LDcgJiM0MzszMDQ0LDcgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0XHRpZiAoZXJyKVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuQEAgLTMwNzQsNyAmIzQzOzMwODQsNyBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0LyogRm91bmQgdGhlIGFkbWluLCBub3cgZmluZCB0aGUgcnVsZXMgb24gdGhlIGNoYWluICovXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHRcdGlmIChyaS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgIT0gY2hhaW4pXG4gXHRcdFx0XHRjb250aW51ZTtcbkBAIC0zMDg5LDcgJiM0MzszMDk5LDcgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRicmVhaztcbiBcdH1cbkBAIC0zMTMzLDkgJiM0MzszMTQzLDkgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRlcG9ydC1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXHRlcG9ydC1cdTAwM2VzcmNfY2lkID0gc3JjX2NpZDtcbiBcdGVwb3J0LVx1MDAzZWRzdF9jaWQgPSBkc3RfY2lkO1xuLVx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcG9ydC1cdTAwM2VsaXN0LCBcdTAwMjZhZG1pbi1cdTAwM2VlbmFibGVkKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXG4gXHRpZiAodmNhcF9wYXRoX2V4aXN0KHZjdHJsLCBuZGV2LCBzcmNfY2lkKSkge1xuIFx0XHQvKiBFbmFibGUgY2hhaW5lZCBsb29rdXBzICovXG5AQCAtMzE4NSw5ICYjNDM7MzE5NSw5IEBAIHN0YXRpYyBpbnQgdmNhcF9kaXNhYmxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0ZHN0X2NpZCA9IHZjYXBfZ2V0X25leHRfY2hhaW4odmN0cmwsIG5kZXYsIGRzdF9jaWQpO1xuIFx0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZmb3VuZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2soZm91bmQpO1xuIFx0bGlzdF9kZWwoXHUwMDI2ZXBvcnQtXHUwMDNlbGlzdCk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Zm91bmQtXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soZm91bmQpO1xuIFx0a2ZyZWUoZXBvcnQpO1xuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTMyNzAsOSAmIzQzOzMyODAsOSBAQCBpbnQgdmNhcF9ydWxlX3NldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfbG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXHRlcnIgPSB2Y2FwX3dyaXRlX2NvdW50ZXIocmksIGN0cik7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMzI5MSw5ICYjNDM7MzMwMSw5IEBAIGludCB2Y2FwX3J1bGVfZ2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF9sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdGVyciA9IHZjYXBfcmVhZF9jb3VudGVyKHJpLCBjdHIpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTMzOTUsNyAmIzQzOzM0MDUsNyBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXG4gXHQvKiBJdGVyYXRlIGFsbCBydWxlcyBpbiBlYWNoIFZDQVAgaW5zdGFuY2UgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFx1MDAyNnZjdHJsLVx1MDAzZWxpc3QsIGxpc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4gXHRcdFx0aWYgKHJpLVx1MDAzZWRhdGEuY29va2llICE9IGNvb2tpZSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTM0MTIsMTIgJiM0MzszNDIyLDEyIEBAIGludCB2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0XHRpZiAoZXJyKVxuIFx0XHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0fVxuIFx0cmV0dXJuIGVycjtcbiBcbiB1bmxvY2s6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5pbmRleCA2MDY5YWQ5NWMyN2U5My4uMDViNGIwMmU1OWVmNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5AQCAtMTY0LDcgJiM0MzsxNjQsNyBAQCBzdHJ1Y3QgdmNhcF9hZG1pbiB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7IC8qIGZvciBpbnNlcnRpb24gaW4gdmNhcF9jb250cm9sICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ1bGVzOyAvKiBsaXN0IG9mIHJ1bGVzICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGVuYWJsZWQ7IC8qIGxpc3Qgb2YgZW5hYmxlZCBwb3J0cyAqL1xuLVx0c3RydWN0IG11dGV4IGxvY2s7IC8qIGNvbnRyb2wgYWNjZXNzIHRvIHJ1bGVzICovXG4mIzQzO1x0c3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmw7IC8qIHRoZSBjb250cm9sIGluc3RhbmNlIG93bmluZyB0aGlzIHZjYXAgKi9cbiBcdGVudW0gdmNhcF90eXBlIHZ0eXBlOyAgLyogdHlwZSBvZiB2Y2FwICovXG4gXHRpbnQgdmluc3Q7IC8qIGluc3RhbmNlIG51bWJlciB3aXRoaW4gdGhlIHNhbWUgdHlwZSAqL1xuIFx0aW50IGZpcnN0X2NpZDsgLyogZmlyc3QgY2hhaW4gaWQgaW4gdGhpcyB2Y2FwICovXG5AQCAtMjc1LDYgJiM0MzsyNzUsNyBAQCBzdHJ1Y3QgdmNhcF9jb250cm9sIHtcbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX2luZm8gKnZjYXBzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBtb2RlbHMgKi9cbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX3N0YXRpc3RpY3MgKnN0YXRzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBzdGF0cyAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0OyAvKiBsaXN0IG9mIHZjYXAgaW5zdGFuY2VzICovXG4mIzQzO1x0c3RydWN0IG11dGV4IGxvY2s7IC8qIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gYWxsIHZjYXAgaW5zdGFuY2VzICovXG4gfTtcbiBcbiAjZW5kaWYgLyogX19WQ0FQX0FQSV9fICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG5pbmRleCA1OWJmYmRhMjliYjNkYS4uZTBjNjVjN2FiMjNlMWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xuQEAgLTQxMCw5ICYjNDM7NDEwLDkgQEAgc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcbiBcdH07XG4gXHRpbnQgcmV0O1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZpbmZvLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfbG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldCA9IHZjYXBfc2hvd19hZG1pbihpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soaW5mby1cdTAwM2VhZG1pbik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBERUZJTkVfU0hPV19BVFRSSUJVVEUodmNhcF9kZWJ1Z2ZzKTtcbkBAIC00MjcsOSAmIzQzOzQyNyw5IEBAIHN0YXRpYyBpbnQgdmNhcF9yYXdfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKVxuIFx0fTtcbiBcdGludCByZXQ7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF9sb2NrKGluZm8tXHUwMDNlYWRtaW4pO1xuIFx0cmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soaW5mby1cdTAwM2VhZG1pbik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBERUZJTkVfU0hPV19BVFRSSUJVVEUodmNhcF9yYXdfZGVidWdmcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jXG5pbmRleCA5YzlkMzgwNDIxMjU1ZC4uYWMyYTNiOGM0ZjMyMTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzX2t1bml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xuQEAgLTI0MywxMCAmIzQzOzI0MywxMSBAQCBzdGF0aWMgdm9pZCB2Y2FwX3Rlc3RfYXBpX2luaXQoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIHtcbiBcdC8qIEluaXRpYWxpemUgdGhlIHNoYXJlZCBvYmplY3RzICovXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xuJiM0MztcdG11dGV4X2luaXQoXHUwMDI2dGVzdF92Y3RybC5sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlZW5hYmxlZCk7XG4tXHRtdXRleF9pbml0KFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdGFkbWluLVx1MDAzZXZjdHJsID0gXHUwMDI2dGVzdF92Y3RybDtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCwgXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbiBcdG1lbXNldCh0ZXN0X3VwZGF0ZWFkZHIsIDAsIHNpemVvZih0ZXN0X3VwZGF0ZWFkZHIpKTtcbiBcdHRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcbmluZGV4IGNlMjZjY2JkY2NkZjkzLi44M2RlMzg0ZDNlM2JkNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcbkBAIC0yMzMsMTAgJiM0MzsyMzMsMTEgQEAgc3RhdGljIHZvaWQgdmNhcF90ZXN0X2FwaV9pbml0KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiB7XG4gXHQvKiBJbml0aWFsaXplIHRoZSBzaGFyZWQgb2JqZWN0cyAqL1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnRlc3RfdmN0cmwubG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRhZG1pbi1cdTAwM2V2Y3RybCA9IFx1MDAyNnRlc3RfdmN0cmw7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QsIFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XG4gXHRtZW1zZXQodGVzdF91cGRhdGVhZGRyLCAwLCBzaXplb2YodGVzdF91cGRhdGVhZGRyKSk7XG4gXHR0ZXN0X3VwZGF0ZWFkZHJpZHggPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxuaW5kZXggODQ0YmRmNmI1ZjQ1MDIuLmI0MDU3ZmJlM2QxODhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmhcbkBAIC01MCw2ICYjNDM7NTAsOSBAQCBzdHJ1Y3QgdmNhcF9zdHJlYW1faXRlciB7XG4gXG4gLyogQ2hlY2sgdGhhdCB0aGUgY29udHJvbCBoYXMgYSB2YWxpZCBzZXQgb2YgY2FsbGJhY2tzICovXG4gaW50IHZjYXBfYXBpX2NoZWNrKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwpO1xuJiM0MzsvKiBTZXJpYWxpemUgYWNjZXNzIHRvIHRoZSB2Y2FwIGluc3RhbmNlcyBvZiBhIGNvbnRyb2wgKi9cbiYjNDM7dm9pZCB2Y2FwX2xvY2soc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKTtcbiYjNDM7dm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pO1xuIC8qIEVyYXNlIHRoZSBWQ0FQIGNhY2hlIGFyZWEgdXNlZCBvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKi9cbiB2b2lkIHZjYXBfZXJhc2VfY2FjaGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBpbiB0aGUgTWljcm9jaGlwIFZDQVAgKFZlcnNhdGlsZSBDb250ZW50LUF3YXJlIFByb2Nlc3NvcikgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIChsYW45NjZ4IGFuZCBzcGFyeDUpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgKElPTUVNLCBPRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3MGVkMmZmZWJiOTMzODA0NDE3MzUyZTRhMzJmYmQwODI1MDI3ZGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAxODo0MDowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3ZjYXBfaW1wbC5jCmluZGV4IDcyZTNiMTg5YmFjNWFjLi5lYjI4ZGY4MGIyODE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3ZjYXBfaW1wbC5jCkBAIC02MDEsNyAmIzQzOzYwMSw2IEBAIHN0YXRpYyB2b2lkIGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUua2V5c3RyZWFtKTsKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUubWFza3N0cmVhbSk7CiAJa2ZyZWUoYWRtaW4tJmd0O2NhY2hlLmFjdGlvbnN0cmVhbSk7Ci0JbXV0ZXhfZGVzdHJveSgmYW1wO2FkbWluLSZndDtsb2NrKTsKIAlrZnJlZShhZG1pbik7CiB9CiAKQEAgLTYxNSw3ICYjNDM7NjE0LDcgQEAgbGFuOTY2eF92Y2FwX2FkbWluX2FsbG9jKHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLAogCWlmICghYWRtaW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JbXV0ZXhfaW5pdCgmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJYWRtaW4tJmd0O3ZjdHJsID0gY3RybDsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtsaXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtydWxlcyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDthZG1pbi0mZ3Q7ZW5hYmxlZCk7CkBAIC03MjEsNiAmIzQzOzcyMCw3IEBAIGludCBsYW45NjZ4X3ZjYXBfaW5pdChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCkKIAljdHJsLSZndDtvcHMgPSAmYW1wO2xhbjk2NnhfdmNhcF9vcHM7CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2N0cmwtJmd0O2xpc3QpOwomIzQzOwltdXRleF9pbml0KCZhbXA7Y3RybC0mZ3Q7bG9jayk7CiAJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGxhbjk2NnhfdmNhcF9pbnN0X2NmZyk7ICYjNDM7JiM0MztpKSB7CiAJCWNmZyA9ICZhbXA7bGFuOTY2eF92Y2FwX2luc3RfY2ZnW2ldOwogCkBAIC03ODAsNSAmIzQzOzc4MCw2IEBAIHZvaWQgbGFuOTY2eF92Y2FwX2RlaW5pdChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCkKIAkJbGFuOTY2eF92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pOwogCX0KIAomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7Y3RybC0mZ3Q7bG9jayk7CiAJa2ZyZWUoY3RybCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jCmluZGV4IDk1YjkzZTQ2YTQxZGNlLi5jZjMzMmRlNmJmNzM2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMKQEAgLTE5MzAsNyAmIzQzOzE5MzAsNiBAQCBzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIHsKIAlpZiAoIWFkbWluKQogCQlyZXR1cm47Ci0JbXV0ZXhfZGVzdHJveSgmYW1wO2FkbWluLSZndDtsb2NrKTsKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUua2V5c3RyZWFtKTsKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUubWFza3N0cmVhbSk7CiAJa2ZyZWUoYWRtaW4tJmd0O2NhY2hlLmFjdGlvbnN0cmVhbSk7CkBAIC0xOTUwLDcgJiM0MzsxOTQ5LDcgQEAgc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IHNwYXJ4NSAqc3Bhcng1LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLAogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O3J1bGVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtlbmFibGVkKTsKLQltdXRleF9pbml0KCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwlhZG1pbi0mZ3Q7dmN0cmwgPSBjdHJsOwogCWFkbWluLSZndDt2dHlwZSA9IGNmZy0mZ3Q7dnR5cGU7CiAJYWRtaW4tJmd0O3ZpbnN0ID0gY2ZnLSZndDt2aW5zdDsKIAlhZG1pbi0mZ3Q7aW5ncmVzcyA9IGNmZy0mZ3Q7aW5ncmVzczsKQEAgLTIwNTksNiAmIzQzOzIwNTgsNyBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpCiAJY3RybC0mZ3Q7b3BzID0gJmFtcDtzcGFyeDVfdmNhcF9vcHM7CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2N0cmwtJmd0O2xpc3QpOwomIzQzOwltdXRleF9pbml0KCZhbXA7Y3RybC0mZ3Q7bG9jayk7CiAJZm9yIChpZHggPSAwOyBpZHggJmx0OyBBUlJBWV9TSVpFKHNwYXJ4NV92Y2FwX2luc3RfY2ZnKTsgJiM0MzsmIzQzO2lkeCkgewogCQljZmcgPSAmYW1wO2NvbnN0cy0mZ3Q7dmNhcHNfY2ZnW2lkeF07CiAJCWFkbWluID0gc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3Bhcng1LCBjdHJsLCBjZmcpOwpAQCAtMjA5Nyw1ICYjNDM7MjA5Nyw2IEBAIHZvaWQgc3Bhcng1X3ZjYXBfZGVpbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSkKIAkJbGlzdF9kZWwoJmFtcDthZG1pbi0mZ3Q7bGlzdCk7CiAJCXNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pOwogCX0KJiM0MzsJbXV0ZXhfZGVzdHJveSgmYW1wO2N0cmwtJmd0O2xvY2spOwogCWtmcmVlKGN0cmwpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKaW5kZXggMGZkYjVlMzYzYmFkYzAuLmZmODZjZGUxMWEzMmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKQEAgLTkzNCw2ICYjNDM7OTM0LDE2IEBAIHN0YXRpYyBib29sIHZjYXBfcnVsZV9leGlzdHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0Mzt2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7YWRtaW4tJmd0O3ZjdHJsLSZndDtsb2NrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiYjNDM7ewomIzQzOwltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7dmN0cmwtJmd0O2xvY2spOwomIzQzO30KJiM0MzsKIC8qIEZpbmQgYSBydWxlIHdpdGggYSBwcm92aWRlZCBydWxlIGlkIHJldHVybiBhIGxvY2tlZCB2Y2FwICovCiBzdGF0aWMgc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqCiB2Y2FwX2dldF9sb2NrZWRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKQpAQCAtOTQzLDExICYjNDM7OTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpCiAKIAkvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGFkbWluLCAmYW1wO3ZjdHJsLSZndDtsaXN0LCBsaXN0KSB7Ci0JCW11dGV4X2xvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX2xvY2soYWRtaW4pOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCAmYW1wO2FkbWluLSZndDtydWxlcywgbGlzdCkKIAkJCWlmIChyaS0mZ3Q7ZGF0YS5pZCA9PSBpZCkKIAkJCQlyZXR1cm4gcmk7Ci0JCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfdW5sb2NrKGFkbWluKTsKIAl9CiAJcmV0dXJuIE5VTEw7CiB9CkBAIC05NjEsMTQgJiM0Mzs5NzEsMTQgQEAgaW50IHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1NjQgY29va2llKQogCiAJLyogTG9vayBmb3IgdGhlIHJ1bGUgaWQgaW4gYWxsIHZjYXBzICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgJmFtcDt2Y3RybC0mZ3Q7bGlzdCwgbGlzdCkgewotCQltdXRleF9sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwkJdmNhcF9sb2NrKGFkbWluKTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgJmFtcDthZG1pbi0mZ3Q7cnVsZXMsIGxpc3QpIHsKIAkJCWlmIChyaS0mZ3Q7ZGF0YS5jb29raWUgPT0gY29va2llKSB7CiAJCQkJaWQgPSByaS0mZ3Q7ZGF0YS5pZDsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQotCQltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX3VubG9jayhhZG1pbik7CiAJCWlmIChpZCkKIAkJCXJldHVybiBpZDsKIAl9CkBAIC05ODUsMTEgJiM0Mzs5OTUsMTEgQEAgaW50IHZjYXBfYWRtaW5fcnVsZV9jb3VudChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sIGludCBjaWQpCiAJaW50IGNvdW50ID0gMDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoZWxlbSwgJmFtcDthZG1pbi0mZ3Q7cnVsZXMsIGxpc3QpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfbG9jayhhZG1pbik7CiAJCWlmIChlbGVtLSZndDtkYXRhLnZjYXBfY2hhaW5faWQgJmd0Oz0gbWluX2NpZCAmYW1wOyZhbXA7CiAJCSAgICBlbGVtLSZndDtkYXRhLnZjYXBfY2hhaW5faWQgJmx0OyBtYXhfY2lkKQogCQkJJiM0MzsmIzQzO2NvdW50OwotCQltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX3VubG9jayhhZG1pbik7CiAJfQogCXJldHVybiBjb3VudDsKIH0KQEAgLTIyNjYsNyAmIzQzOzIyNzYsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAJLyogSW5zZXJ0IHRoZSBuZXcgcnVsZSBpbiB0aGUgbGlzdCBvZiB2Y2FwIHJ1bGVzICovCi0JbXV0ZXhfbG9jaygmYW1wO3JpLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfbG9jayhyaS0mZ3Q7YWRtaW4pOwogCiAJdmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7CiAJcmV0ID0gdmNhcF9pbnNlcnRfcnVsZShyaSwgJmFtcDttb3ZlKTsKQEAgLTIzMDIsNyAmIzQzOzIzMTIsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQogCQlnb3RvIG91dDsKIAl9CiBvdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cmktJmd0O2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2socmktJmd0O2FkbWluKTsKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7CkBAIC0yMzMwLDcgJiM0MzsyMzQwLDcgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9hbGxvY19ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCWlmICh2Y3RybC0mZ3Q7dmNhcHNbYWRtaW4tJmd0O3Z0eXBlXS5yb3dzID09IDApCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCi0JbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF9sb2NrKGFkbWluKTsKIAkvKiBDaGVjayBpZiBhIHJ1bGUgd2l0aCB0aGlzIGlkIGFscmVhZHkgZXhpc3RzICovCiAJaWYgKHZjYXBfcnVsZV9leGlzdHModmN0cmwsIGlkKSkgewogCQllcnIgPSAtRUlOVkFMOwpAQCAtMjM2OSwxMyAmIzQzOzIzNzksMTMgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9hbGxvY19ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCQlnb3RvIG91dF9mcmVlOwogCX0KIAotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiAoc3RydWN0IHZjYXBfcnVsZSAqKXJpOwogCiBvdXRfZnJlZToKIAlrZnJlZShyaSk7CiBvdXRfdW5sb2NrOgotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiBFUlJfUFRSKGVycik7CiAKIH0KQEAgLTI0NDYsNyAmIzQzOzI0NTYsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwogCiAJcnVsZSA9IHZjYXBfZGVjb2RlX3J1bGUoZWxlbSk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7ZWxlbS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhlbGVtLSZndDthZG1pbik7CiAJcmV0dXJuIHJ1bGU7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlKTsKQEAgLTI0ODMsNyAmIzQzOzI0OTMsNyBAQCBpbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQogCWVyciA9ICB2Y2FwX3dyaXRlX2NvdW50ZXIocmksICZhbXA7Y3RyKTsKIAogb3V0OgotCW11dGV4X3VubG9jaygmYW1wO3JpLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKHJpLSZndDthZG1pbik7CiAJcmV0dXJuIGVycjsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbW9kX3J1bGUpOwpAQCAtMjU3MCw3ICYjNDM7MjU4MCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKQogCQlhZG1pbi0mZ3Q7bGFzdF91c2VkX2FkZHIgPSBlbGVtLSZndDthZGRyOwogCX0KIAotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTsKQEAgLTI1ODUsNyAmIzQzOzI1OTUsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF9sb2NrKGFkbWluKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmksIG5leHRfcmksICZhbXA7YWRtaW4tJmd0O3J1bGVzLCBsaXN0KSB7CiAJCXZjdHJsLSZndDtvcHMtJmd0O2luaXQocmktJmd0O25kZXYsIGFkbWluLCByaS0mZ3Q7YWRkciwgcmktJmd0O3NpemUpOwogCQlsaXN0X2RlbCgmYW1wO3JpLSZndDtsaXN0KTsKQEAgLTI1OTgsNyAmIzQzOzI2MDgsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIAkJbGlzdF9kZWwoJmFtcDtlcG9ydC0mZ3Q7bGlzdCk7CiAJCWtmcmVlKGVwb3J0KTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhhZG1pbik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTMwMTYsNyAmIzQzOzMwMjYsNyBAQCBzdGF0aWMgaW50IHZjYXBfZW5hYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCQkJY29udGludWU7CiAKIAkJLyogRm91bmQgdGhlIGFkbWluLCBub3cgZmluZCB0aGUgb2ZmbG9hZGFibGUgcnVsZXMgKi8KLQkJbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfbG9jayhhZG1pbik7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmksICZhbXA7YWRtaW4tJmd0O3J1bGVzLCBsaXN0KSB7CiAJCQkvKiBJcyB0aGUgcnVsZSBpbiB0aGUgbG9va3VwIGRlZmluZWQgYnkgdGhlIGNoYWluICovCiAJCQlpZiAoIShyaS0mZ3Q7ZGF0YS52Y2FwX2NoYWluX2lkICZndDs9IGNoYWluICZhbXA7JmFtcDsKQEAgLTMwMzQsNyAmIzQzOzMwNDQsNyBAQCBzdGF0aWMgaW50IHZjYXBfZW5hYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCQkJaWYgKGVycikKIAkJCQlicmVhazsKIAkJfQotCQltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX3VubG9jayhhZG1pbik7CiAJCWlmIChlcnIpCiAJCQlicmVhazsKIAl9CkBAIC0zMDc0LDcgJiM0MzszMDg0LDcgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiAJCQljb250aW51ZTsKIAogCQkvKiBGb3VuZCB0aGUgYWRtaW4sIG5vdyBmaW5kIHRoZSBydWxlcyBvbiB0aGUgY2hhaW4gKi8KLQkJbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfbG9jayhhZG1pbik7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmksICZhbXA7YWRtaW4tJmd0O3J1bGVzLCBsaXN0KSB7CiAJCQlpZiAocmktJmd0O2RhdGEudmNhcF9jaGFpbl9pZCAhPSBjaGFpbikKIAkJCQljb250aW51ZTsKQEAgLTMwODksNyAmIzQzOzMwOTksNyBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwKIAkJCWlmIChlcnIpCiAJCQkJYnJlYWs7CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwkJdmNhcF91bmxvY2soYWRtaW4pOwogCQlpZiAoZXJyKQogCQkJYnJlYWs7CiAJfQpAQCAtMzEzMyw5ICYjNDM7MzE0Myw5IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCWVwb3J0LSZndDtjb29raWUgPSBjb29raWU7CiAJZXBvcnQtJmd0O3NyY19jaWQgPSBzcmNfY2lkOwogCWVwb3J0LSZndDtkc3RfY2lkID0gZHN0X2NpZDsKLQltdXRleF9sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2soYWRtaW4pOwogCWxpc3RfYWRkX3RhaWwoJmFtcDtlcG9ydC0mZ3Q7bGlzdCwgJmFtcDthZG1pbi0mZ3Q7ZW5hYmxlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhhZG1pbik7CiAKIAlpZiAodmNhcF9wYXRoX2V4aXN0KHZjdHJsLCBuZGV2LCBzcmNfY2lkKSkgewogCQkvKiBFbmFibGUgY2hhaW5lZCBsb29rdXBzICovCkBAIC0zMTg1LDkgJiM0MzszMTk1LDkgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlkc3RfY2lkID0gdmNhcF9nZXRfbmV4dF9jaGFpbih2Y3RybCwgbmRldiwgZHN0X2NpZCk7CiAJfQogCi0JbXV0ZXhfbG9jaygmYW1wO2ZvdW5kLSZndDtsb2NrKTsKJiM0MzsJdmNhcF9sb2NrKGZvdW5kKTsKIAlsaXN0X2RlbCgmYW1wO2Vwb3J0LSZndDtsaXN0KTsKLQltdXRleF91bmxvY2soJmFtcDtmb3VuZC0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKGZvdW5kKTsKIAlrZnJlZShlcG9ydCk7CiAJcmV0dXJuIDA7CiB9CkBAIC0zMjcwLDkgJiM0MzszMjgwLDkgQEAgaW50IHZjYXBfcnVsZV9zZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCW11dGV4X2xvY2soJmFtcDtyaS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2socmktJmd0O2FkbWluKTsKIAllcnIgPSB2Y2FwX3dyaXRlX2NvdW50ZXIocmksIGN0cik7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cmktJmd0O2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2socmktJmd0O2FkbWluKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0zMjkxLDkgJiM0MzszMzAxLDkgQEAgaW50IHZjYXBfcnVsZV9nZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCW11dGV4X2xvY2soJmFtcDtyaS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2socmktJmd0O2FkbWluKTsKIAllcnIgPSB2Y2FwX3JlYWRfY291bnRlcihyaSwgY3RyKTsKLQltdXRleF91bmxvY2soJmFtcDtyaS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhyaS0mZ3Q7YWRtaW4pOwogCiAJcmV0dXJuIGVycjsKIH0KQEAgLTMzOTUsNyAmIzQzOzM0MDUsNyBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiAKIAkvKiBJdGVyYXRlIGFsbCBydWxlcyBpbiBlYWNoIFZDQVAgaW5zdGFuY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGFkbWluLCAmYW1wO3ZjdHJsLSZndDtsaXN0LCBsaXN0KSB7Ci0JCW11dGV4X2xvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX2xvY2soYWRtaW4pOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCAmYW1wO2FkbWluLSZndDtydWxlcywgbGlzdCkgewogCQkJaWYgKHJpLSZndDtkYXRhLmNvb2tpZSAhPSBjb29raWUpCiAJCQkJY29udGludWU7CkBAIC0zNDEyLDEyICYjNDM7MzQyMiwxMiBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiAJCQlpZiAoZXJyKQogCQkJCWdvdG8gdW5sb2NrOwogCQl9Ci0JCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfdW5sb2NrKGFkbWluKTsKIAl9CiAJcmV0dXJuIGVycjsKIAogdW5sb2NrOgotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaAppbmRleCA2MDY5YWQ5NWMyN2U5My4uMDViNGIwMmU1OWVmNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaApAQCAtMTY0LDcgJiM0MzsxNjQsNyBAQCBzdHJ1Y3QgdmNhcF9hZG1pbiB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAvKiBmb3IgaW5zZXJ0aW9uIGluIHZjYXBfY29udHJvbCAqLwogCXN0cnVjdCBsaXN0X2hlYWQgcnVsZXM7IC8qIGxpc3Qgb2YgcnVsZXMgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGVuYWJsZWQ7IC8qIGxpc3Qgb2YgZW5hYmxlZCBwb3J0cyAqLwotCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBjb250cm9sIGFjY2VzcyB0byBydWxlcyAqLwomIzQzOwlzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybDsgLyogdGhlIGNvbnRyb2wgaW5zdGFuY2Ugb3duaW5nIHRoaXMgdmNhcCAqLwogCWVudW0gdmNhcF90eXBlIHZ0eXBlOyAgLyogdHlwZSBvZiB2Y2FwICovCiAJaW50IHZpbnN0OyAvKiBpbnN0YW5jZSBudW1iZXIgd2l0aGluIHRoZSBzYW1lIHR5cGUgKi8KIAlpbnQgZmlyc3RfY2lkOyAvKiBmaXJzdCBjaGFpbiBpZCBpbiB0aGlzIHZjYXAgKi8KQEAgLTI3NSw2ICYjNDM7Mjc1LDcgQEAgc3RydWN0IHZjYXBfY29udHJvbCB7CiAJY29uc3Qgc3RydWN0IHZjYXBfaW5mbyAqdmNhcHM7IC8qIGNsaWVudCBzdXBwbGllZCB2Y2FwIG1vZGVscyAqLwogCWNvbnN0IHN0cnVjdCB2Y2FwX3N0YXRpc3RpY3MgKnN0YXRzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBzdGF0cyAqLwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgLyogbGlzdCBvZiB2Y2FwIGluc3RhbmNlcyAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggbG9jazsgLyogc2VyaWFsaXplIGFjY2VzcyB0byBhbGwgdmNhcCBpbnN0YW5jZXMgKi8KIH07CiAKICNlbmRpZiAvKiBfX1ZDQVBfQVBJX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYwppbmRleCA1OWJmYmRhMjliYjNkYS4uZTBjNjVjN2FiMjNlMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMKQEAgLTQxMCw5ICYjNDM7NDEwLDkgQEAgc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAl9OwogCWludCByZXQ7CiAKLQltdXRleF9sb2NrKCZhbXA7aW5mby0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2soaW5mby0mZ3Q7YWRtaW4pOwogCXJldCA9IHZjYXBfc2hvd19hZG1pbihpbmZvLSZndDt2Y3RybCwgaW5mby0mZ3Q7YWRtaW4sICZhbXA7b3V0KTsKLQltdXRleF91bmxvY2soJmFtcDtpbmZvLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKGluZm8tJmd0O2FkbWluKTsKIAlyZXR1cm4gcmV0OwogfQogREVGSU5FX1NIT1dfQVRUUklCVVRFKHZjYXBfZGVidWdmcyk7CkBAIC00MjcsOSAmIzQzOzQyNyw5IEBAIHN0YXRpYyBpbnQgdmNhcF9yYXdfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCX07CiAJaW50IHJldDsKIAotCW11dGV4X2xvY2soJmFtcDtpbmZvLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfbG9jayhpbmZvLSZndDthZG1pbik7CiAJcmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLSZndDt2Y3RybCwgaW5mby0mZ3Q7YWRtaW4sICZhbXA7b3V0KTsKLQltdXRleF91bmxvY2soJmFtcDtpbmZvLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKGluZm8tJmd0O2FkbWluKTsKIAlyZXR1cm4gcmV0OwogfQogREVGSU5FX1NIT1dfQVRUUklCVVRFKHZjYXBfcmF3X2RlYnVnZnMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jCmluZGV4IDljOWQzODA0MjEyNTVkLi5hYzJhM2I4YzRmMzIxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuYwpAQCAtMjQzLDEwICYjNDM7MjQzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiB7CiAJLyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi8KIAlJTklUX0xJU1RfSEVBRCgmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiYjNDM7CW11dGV4X2luaXQoJmFtcDt0ZXN0X3ZjdHJsLmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O3J1bGVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtlbmFibGVkKTsKLQltdXRleF9pbml0KCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwlhZG1pbi0mZ3Q7dmN0cmwgPSAmYW1wO3Rlc3RfdmN0cmw7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2FkbWluLSZndDtsaXN0LCAmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiAJbWVtc2V0KHRlc3RfdXBkYXRlYWRkciwgMCwgc2l6ZW9mKHRlc3RfdXBkYXRlYWRkcikpOwogCXRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYwppbmRleCBjZTI2Y2NiZGNjZGY5My4uODNkZTM4NGQzZTNiZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYwpAQCAtMjMzLDEwICYjNDM7MjMzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiB7CiAJLyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi8KIAlJTklUX0xJU1RfSEVBRCgmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiYjNDM7CW11dGV4X2luaXQoJmFtcDt0ZXN0X3ZjdHJsLmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O3J1bGVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtlbmFibGVkKTsKLQltdXRleF9pbml0KCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwlhZG1pbi0mZ3Q7dmN0cmwgPSAmYW1wO3Rlc3RfdmN0cmw7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2FkbWluLSZndDtsaXN0LCAmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiAJbWVtc2V0KHRlc3RfdXBkYXRlYWRkciwgMCwgc2l6ZW9mKHRlc3RfdXBkYXRlYWRkcikpOwogCXRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgKaW5kZXggODQ0YmRmNmI1ZjQ1MDIuLmI0MDU3ZmJlM2QxODhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oCkBAIC01MCw2ICYjNDM7NTAsOSBAQCBzdHJ1Y3QgdmNhcF9zdHJlYW1faXRlciB7CiAKIC8qIENoZWNrIHRoYXQgdGhlIGNvbnRyb2wgaGFzIGEgdmFsaWQgc2V0IG9mIGNhbGxiYWNrcyAqLwogaW50IHZjYXBfYXBpX2NoZWNrKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwpOwomIzQzOy8qIFNlcmlhbGl6ZSBhY2Nlc3MgdG8gdGhlIHZjYXAgaW5zdGFuY2VzIG9mIGEgY29udHJvbCAqLwomIzQzO3ZvaWQgdmNhcF9sb2NrKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbik7CiYjNDM7dm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pOwogLyogRXJhc2UgdGhlIFZDQVAgY2FjaGUgYXJlYSB1c2VkIG9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyAqLwogdm9pZCB2Y2FwX2VyYXNlX2NhY2hlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODUzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFZDQVAgRHJpdmVyIExvY2tpbmcgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIGxvY2tpbmcgbWVjaGFuaXNtIHdpdGhpbiB0aGUgTWljcm9jaGlwIFZDQVAgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHNoaWZ0aW5nIHRoZSBsb2NrIGZyb20gdGhlIGB2Y2FwX2FkbWluYCBzdHJ1Y3R1cmUgb3ZlciB0byB0aGUgYHZjYXBfY29udHJvbGAgc3RydWN0dXJlLiBUaGUgZ29hbCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0byBzZXJpYWxpemUgYWNjZXNzIGFjcm9zcyBhbGwgaW5zdGFuY2VzIG9mIHRoZSBWQ0FQLiBTb3VuZHMgbGlrZSBhIGdvb2QgbW92ZSB0byBjZW50cmFsaXplIHRoZSBsb2NraW5nLCBpZiBpdCB3b3Jrcy4KCkkgc2VlIGl0IHRvdWNoZXMgYSBwcmV0dHkgYnJvYWQgc3dhdGggb2YgZmlsZXM6IGBsYW45NjZ4X3ZjYXBfaW1wbC5jYCwgYHNwYXJ4NV92Y2FwX2ltcGwuY2AsIGB2Y2FwX2FwaS5jYCwgYC5oYCBmaWxlcywgYW5kIGV2ZW4gc29tZSBkZWJ1Z2ZzIGFuZCBLVW5pdCByZWxhdGVkIGNvZGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBhIGZhaXJseSBpbXBhY3RmdWwgY2hhbmdlLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyLgoKSG9sZCBvbi4uLiBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgYmVpbmcgYSBsb2NraW5nIGNoYW5nZSBhbmQgdGhlIGZhY3QgdGhpcyBpcyBhIG5ldHdvcmsgZHJpdmVyLCBhIGtleSBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZC4gSXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNaWNyb2NoaXAmIzM5O3MgU3Bhcng1IGFuZCBMQU45NjZ4IGFyZSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaCBpbXBsZW1lbnRhdGlvbnMsIHJpZ2h0PyBTbywgdW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZW11bGF0b3IgYnVpbHQgZm9yIHRoZXNlIGRldmljZXMsIHRoaXMgZHJpdmVyIHNob3VsZCBiZSBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQuIE1vc3Qgb2YgdGhlc2Ugc3dpdGNoZGV2IGRyaXZlcnMgSSYjMzk7dmUgd29ya2VkIHdpdGggYXJlIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgaGFyZHdhcmUgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGV4cGxpY2l0IHNvZnR3YXJlIGVtdWxhdGlvbiBsYXllciwgbGlrZSB3aGF0IG5ldGRldnNpbSBwcm92aWRlcyAoYnV0IHRoaXMgaXNuJiMzOTt0IHRoYXQga2luZCBvZiBnZW5lcmljIGRyaXZlcikuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBydW4gYSBxdWljayBzZWFyY2ggZm9yIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgd2l0aGluIHRoZSBrZXJuZWwgdG8gY29uZmlybSB0aGF0IHRoZXNlIGRldmljZXMgYXJlIGluZGVlZCBoYXJkd2FyZS1zcGVjaWZpYy4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMgSSYjMzk7bSBvdmVybG9va2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgKFNQQVJYNV9TV0lUQ0h8TEFOOTY2WF9TV0lUQ0gpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6MTpjb25maWcgTEFOOTY2WF9TV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0xhbjk2Nnggc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzoxOmNvbmZpZyBTUEFSWDVfU1dJVENIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NwYXJ4NSBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBLY29uZmlnIGZvciBMQU45NjZYIGFuZCBTUEFSWDUgU3dpdGNoZXMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIE15IGZpcnN0IGltcHVsc2UgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIHRoZSBMQU45NjZYIGFuZCBTUEFSWDUgc3dpdGNoZXMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlc2Ugc3BlY2lmaWMgZGV2aWNlcy4gVGhlIGdvYWwgaGVyZSBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGZpbmUtZ3JhaW5lZCBkZXRhaWxzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBkaXNjcmVwYW5jaWVzIGluIGhvdyB0aGV5JiMzOTtyZSBleHBvc2VkIGluIHRoZSBidWlsZCBzeXN0ZW0uIEFyZSB0aGVyZSBmZWF0dXJlIGZsYWdzIHRoYXQgbWF5IGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3Igb25lIGJ1dCBub3QgdGhlIG90aGVyPyBBcmUgdGhlcmUgaGFyZHdhcmUgb3Igb3RoZXIgc29mdHdhcmUgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHkgb24gYW55IG90aGVyIGRyaXZlcnMgb3IgaGFyZHdhcmUgY29tcG9uZW50cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBhbHNvIHdhbnQgdG8gaWRlbnRpZnkgYW55IGV4aXN0aW5nIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5jZXMgdGhhdCBtaWdodCBtYW5pZmVzdCB0aGVtc2VsdmVzIGluIHRoZSBjb25maWd1cmF0aW9uIG1lbnVzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHBvcnRhYmlsaXR5IGFuZCBtYWtpbmcgc3VyZSB0aGF0IHRoZSBzZXR0aW5ncyBhcmUgaW50dWl0aXZlIGFuZCBoYXZlIGxvZ2ljYWwgZGVmYXVsdHMgZm9yIGJvdGggc3dpdGNoIGZhbWlsaWVzLiBUaGVyZSB3aWxsIGJlIGxvdHMgb2YgZGV0YWlscyBmb3IgdGhlc2Ugc3BlY2lmaWMgc3dpdGNoZXMgYW5kIGlmIEkgZmluZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBhdCB0aGlzIHN0YWdlLCBpdCB3aWxsIHNhdmUgYSBsb3Qgb2YgcGFpbiBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0xhbjk2Nnggc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzozOlx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6NTpcdGRlcGVuZHMgb24gT0ZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6NjpcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOC1cdHNlbGVjdCBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xNT1jb25maWcgTEFOOTY2WF9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTYtXHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6MTc6XHRkZXBlbmRzIG9uIExBTjk2NlhfU1dJVENIIFx1MDAyNlx1MDAyNiBEQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTgtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDg3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlNQQVJYNV9TV0lUQ0ggSW5xdWlyeSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYFNQQVJYNV9TV0lUQ0hgLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIGRldGVybWluZSAqd2h5KiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzcGVjaWZpYyB2YXJpYWJsZSBvciBtb2R1bGUgcmlnaHQgbm93LiBCYXNlZCBvbiBteSBleGlzdGluZyBrbm93bGVkZ2UgYW5kIGNvbnRleHQsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgcmVsZXZhbnQgdG8gYSBzcGVjaWZpYyBwcm9ibGVtIG9yIGFuYWx5c2lzIEkmIzM5O20gY3VycmVudGx5IGRlYWxpbmcgd2l0aC4gVGhlIGZvY3VzIG9uICYjMzQ7Y2hlY2tpbmcmIzM0OyBpbXBsaWVzIEkmIzM5O20gZWl0aGVyIHZlcmlmeWluZyBpdHMgY3VycmVudCBzdGF0ZSwgaXRzIGJlaGF2aW9yIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgb3IgcGVyaGFwcyB0cm91Ymxlc2hvb3RpbmcgYW4gaXNzdWUgcmVsYXRlZCB0byBpdC4gSSB3aWxsIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgaXQgbWVldHMgdGhlIGV4cGVjdGF0aW9ucyBnaXZlbiB0aGUgY3VycmVudCBzaXR1YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZSByZXN1bHQgb2YgdGhpcyBjaGVjayBuZWNlc3NpdGF0ZXMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9mIHJlbGF0ZWQgY29tcG9uZW50cyBvciBzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9MT1jb25maWcgU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTcGFyeDUgc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjM6XHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo1Olx0ZGVwZW5kcyBvbiBPRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjY6XHRkZXBlbmRzIG9uIEFSQ0hfU1BBUlg1IHx8IEFSQ0hfTEFOOTY5WCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTktXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xNz1jb25maWcgU1BBUlg1X0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTIwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtMYW45Njl4IHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVx0c2VsZWN0IFBBR0VfUE9PTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjMwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gQ2hhbGxlbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgZGVwZW5kZW5jeSBvbiBgSEFTX0lPTUVNYCBhbmQgRGV2aWNlIFRyZWUgKGBPRmApLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGVzZSBhcyBoYXJkd2FyZSBkcml2ZXIgZmxhZ3MuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gSSBldmVuIHRvdWNoIHRoaXMgY29kZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8mIzM0OyBUeXBpY2FsbHksIGRyaXZlcnMgdGhhdCB1c2UgRGV2aWNlIFRyZWUgb3IgUENJIHByb2JpbmcgYW5kIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChgSU9NRU1gKSBhcmUgcHJldHR5IGxvY2tlZCBkb3duLiBZb3UmIzM5O2QgbmVlZCBhIHZlcnkgc3BlY2lmaWMgZW11bGF0b3IgZm9yIHRoZSBoYXJkd2FyZSAobGlrZSBhIFBDSSBkZXZpY2UgZW11bGF0b3IpIG9yLCBtYXliZSwgdmlydHVhbCBkcml2ZXIgaW1wbGVtZW50YXRpb25zIHRvIGhhdmUgYW55IGNoYW5jZS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGB2Y2FwX2FwaV9rdW5pdC5jYCBhbmQgYHZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY2AuLi4gdGhvc2UgYXJlIEtVbml0IHRlc3RzISBUaGF0IGNoYW5nZXMgZXZlcnl0aGluZy4gS1VuaXQgdGVzdHMgYXJlICpkZXNpZ25lZCogdG8gcnVuIHdpdGhpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBLVW5pdCB0ZXN0cyBhY3R1YWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgcGFydHMgb2YgdGhlIGNvZGUuIElmIHRoZXkgZG8sIGFuZCBpZiBJIGNhbiBnZXQgdGhlbSBydW5uaW5nLCBJIG1pZ2h0IGhhdmUgYSBzb2xpZCwgdmlydHVhbGl6ZWQgdGVzdGluZyBmcmFtZXdvcmsuIFRoaXMgY291bGQgc2F2ZSBtZSBhIGh1Z2UgaGVhZGFjaGUgb2YgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIGlmIHRoZSBLVW5pdCB0ZXN0cyBhcmUgYSB2aWFibGUgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKlZDQVAuKktVTklUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWc9OD1jb25maWcgVkNBUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnOjM5OmNvbmZpZyBWQ0FQX0tVTklUX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIFZDQVAgbGlicmFyeVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzk2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGVjb25zdHJ1Y3RpbmcgYFZDQVBfS1VOSVRfVEVTVGAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSBgVkNBUF9LVU5JVF9URVNUYCByZWxpZXMgb24uIEl0JiMzOTtzIGEga2V5IHZhcmlhYmxlLCBhbmQgSSBjYW4mIzM5O3QganVzdCBvcGVyYXRlIGluIGEgdmFjdXVtLiBJdCYjMzk7cyBub3QgZW5vdWdoIHRvICprbm93KiBpdCBleGlzdHMsIEkgbmVlZCB0byBrbm93ICp3aGF0KiBtYWtlcyBpdCB0aWNrLiBXaGF0IG90aGVyIGNvbXBvbmVudHMgb3IgY29uZmlndXJhdGlvbnMgYXJlIHRpZWQgdG8gaXRzIHVzZT8gV2hhdCBpbmZyYXN0cnVjdHVyZSBlbGVtZW50cyBpcyBpdCBsZXZlcmFnaW5nPyBJcyBpdCByZWxhdGVkIHRvIHRoZSBrZXJuZWwsIG9yIHNvbWV0aGluZyBicm9hZGVyPyBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgc28gdGhhdCBJIGNhbiBhbnRpY2lwYXRlIGhvdyBpdCBiZWhhdmVzIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBlbnZpcm9ubWVudC1zcGVjaWZpYywgcmVsYXRlZCB0byBhIHNwZWNpZmljIHRlc3RpbmcgZnJhbWV3b3JrLCBvciBzb21ldGhpbmcgZW50aXJlbHkgbW9yZSBleG90aWM/IEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIHRvIGJlIGNvbmZpZGVudCBpbiBob3cgaXQmIzM5O3MgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnPTM5PWNvbmZpZyBWQ0FQX0tVTklUX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIFZDQVAgbGlicmFyeVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnOjQxOlx0ZGVwZW5kcyBvbiBLVU5JVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZzo0MjpcdGRlcGVuZHMgb24gS1VOSVQ9eSBcdTAwMjZcdTAwMjYgVkNBUD15IFx1MDAyNlx1MDAyNiB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnLTQzLVx0c2VsZWN0IERFQlVHX0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjA4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZDQVBfS1VOSVRfVEVTVCBhbmQgdGhlIEZ1enppbmcgQ2hhbGxlbmdlKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgYFZDQVBfS1VOSVRfVEVTVGAgZmxhZywgd2hpY2ggc3VnZ2VzdHMgc29tZSBpbnRlZ3JhdGlvbiB3aXRoIEtVbml0IHRlc3RzLiBCdXQgaGVyZSYjMzk7cyB0aGUgcnViOiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBpc24mIzM5O3QgZGVzaWduZWQgdG8gZGlyZWN0bHkgZnV6eiBLVW5pdCB0ZXN0cy4gSXQgZm9jdXNlcyBvbiBzeXN0ZW0gY2FsbHMsIG5ldHdvcmsgcGFja2V0cywgYW5kIHRoZSBsaWtlLCBub3QgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmLiBUaGUgdGVzdHMgcnVuIGR1cmluZyBib290IG9yIG1vZHVsZSBsb2FkLCBhbmQgU3l6a2FsbGVyIG1pZ2h0IGV4ZWN1dGUgdGhlbSAqb25jZSogZHVyaW5nIHRoYXQgcHJvY2VzcywgYnV0IHRoYXQmIzM5O3Mgbm90IHdoYXQgSSYjMzk7ZCBjYWxsIGVmZmVjdGl2ZSBmdXp6aW5nLiBXZSB3b3VsZG4mIzM5O3QgYmUgYWJsZSB0byBjYXRjaCB0aGUgZWRnZS1jYXNlIGJ1Z3MgZm9yIGEgdGVzdCBydW5uaW5nIG9ubHkgb25jZS4KClNvLCBpZiB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIG9ubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhvc2UgS1VuaXQgdGVzdHMsIGlzIGl0IGV2ZW4gd29ydGggcHVyc3Vpbmcgd2l0aCBTeXprYWxsZXI/IFN5emthbGxlciYjMzk7cyBzdHJlbmd0aCBsaWVzIGluIGl0cyBhYmlsaXR5IHRvIGdlbmVyYXRlIHZhcmllZCBhbmQgY29tcGxleCBpbnB1dHMsIHNvbWV0aGluZyB0aGF0JiMzOTtzIG5vdCB0YWlsb3JlZCB0byB0aGUgS1VuaXQgdGVzdCBleGVjdXRpb24gbW9kZWwuIFdlIGFyZSBtaXNzaW5nIG9wcG9ydHVuaXRpZXMgZm9yIGVkZ2UtY2FzZSBidWdzLiBJdCBmZWVscyBsaWtlIGFuIGluZWZmaWNpZW50IHVzZSBvZiByZXNvdXJjZXMsIHVubGVzcyB3ZSBjYW4gc29tZWhvdyBnZXQgdGhpcyBBUEkgZXhwb3NlZCB0aHJvdWdoIGFub3RoZXIgY2hhbm5lbC4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGhvdyBjYW4gdGhlIFZDQVAgQVBJIGJlIGFjY2Vzc2VkPyBJcyBpdCBleHBvc2VkIHRvIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMsIG9yIGlzIGl0IGV4Y2x1c2l2ZWx5IHVzZWQgaW50ZXJuYWxseSBieSBoYXJkd2FyZSBkcml2ZXJzPyBGaW5kaW5nIG91dCB0aGF0IGFuc3dlciBpcyBjcnVjaWFsIGZvciBkZWNpZGluZyBpZiB0aGlzIGlzIGV2ZW4gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnZjYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzMzPXZjYXBfZmluZF9rZXlzdHJlYW1fa2V5c2V0cyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM2MTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZpbmRfa2V5c3RyZWFtX2tleXNldHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNjY9aW50IHZjYXBfYWRkcl9rZXlzZXRzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzkyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzkzOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkcl9rZXlzZXRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9NDA3PWNvbnN0IHN0cnVjdCB2Y2FwX3NldCAqdmNhcF9rZXlmaWVsZHNldChzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTQyMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjQyMTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2tleWZpZWxkc2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtNDIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9ODg0PWludCB2Y2FwX3NldF9ydWxlX3NldF9rZXlzZXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkwMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjkwMTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF9ydWxlX3NldF9rZXlzZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz05MDQ9aW50IHZjYXBfc2V0X3J1bGVfc2V0X2FjdGlvbnNldChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtOTIwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6OTIxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfc2V0X3J1bGVfc2V0X2FjdGlvbnNldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTk2Nj1pbnQgdmNhcF9sb29rdXBfcnVsZV9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHU2NCBjb29raWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05ODYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzo5ODc6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9sb29rdXBfcnVsZV9ieV9jb29raWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz05OTA9aW50IHZjYXBfYWRtaW5fcnVsZV9jb3VudChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sIGludCBjaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xMDA1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTAwNjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkbWluX3J1bGVfY291bnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xMDA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTYxNT1pbnQgdmNhcF9jaGFpbl9pZF90b19sb29rdXAoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluLCBpbnQgY3VyX2NpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2MjgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNjI5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfY2hhaW5faWRfdG9fbG9va3VwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTYzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE2MzI9c3RydWN0IHZjYXBfYWRtaW4gKnZjYXBfZmluZF9hZG1pbihzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgaW50IGNpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2NDQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNjQ1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZmluZF9hZG1pbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xNjY5PWludCB2Y2FwX2NoYWluX29mZnNldChzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgaW50IGZyb21fY2lkLCBpbnQgdG9fY2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTY4MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE2ODE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9jaGFpbl9vZmZzZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTY4Nz1ib29sIHZjYXBfaXNfbmV4dF9sb29rdXAoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBzcmNfY2lkLCBpbnQgZHN0X2NpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE3MDYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNzA3OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfaXNfbmV4dF9sb29rdXApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xNzA4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTc4Nz1ib29sIHZjYXBfa2V5c2V0X2xpc3RfYWRkKHN0cnVjdCB2Y2FwX2tleXNldF9saXN0ICprZXlzZXRsaXN0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgwMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE4MDE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9rZXlzZXRfbGlzdF9hZGQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xODAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTgyMD1jb25zdCBjaGFyICp2Y2FwX2tleXNldF9uYW1lKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE4MjU6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9rZXlzZXRfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xODI4PWNvbnN0IGNoYXIgKnZjYXBfa2V5ZmllbGRfbmFtZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MzItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxODMzOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfa2V5ZmllbGRfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xOTE4PWJvb2wgdmNhcF9ydWxlX2ZpbmRfa2V5c2V0cyhzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTkyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE5MjU6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2ZpbmRfa2V5c2V0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE5MjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xOTk3PWludCB2Y2FwX3ZhbF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUxNiBsM19wcm90bylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIwNzUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMDc2OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfdmFsX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMDc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjI2OD1pbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjIzMTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMzIxPXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzOTEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzkyOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWxsb2NfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMzk1PXZvaWQgdmNhcF9mcmVlX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0MTItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDEzOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZnJlZV9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0NDQ9c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2MS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI0NjI6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0NjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNDY1PWludCB2Y2FwX21vZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDk4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ5OTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX21vZF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjUwMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI1NDc9aW50IHZjYXBfZGVsX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTg1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjU4NjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjU4Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI1ODk9aW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNjE0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjYxNTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI2MTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNjMxPWNvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICp2Y2FwX2xvb2t1cF9rZXlmaWVsZChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjY0NS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI2NDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9sb29rdXBfa2V5ZmllbGQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNjQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjczMT1pbnQgdmNhcF9ydWxlX2FkZF9rZXlfYml0KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjczOC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3Mzk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfYml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3NDI9aW50IHZjYXBfcnVsZV9hZGRfa2V5X3UzMihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNzUxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3UzMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNzU0PWludCB2Y2FwX3J1bGVfYWRkX2tleV91NDgoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzYxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjc2MjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV91NDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc2NT1pbnQgdmNhcF9ydWxlX2FkZF9rZXlfdTcyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3NzM6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfdTcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3NzY9aW50IHZjYXBfcnVsZV9hZGRfa2V5X3UxMjgoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzgzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjc4NDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV91MTI4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc4Nj1pbnQgdmNhcF9ydWxlX2dldF9rZXlfdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc5OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MDA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2dldF9rZXlfdTMyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjgwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4MDQ9dmNhcF9maW5kX2FjdGlvbmZpZWxkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9hY3Rpb25fZmllbGQgYWN0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjgxMy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9maW5kX2FjdGlvbmZpZWxkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjgxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4OTc9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX2JpdChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkwNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fYml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkwNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MDk9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3UzMihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkxNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTMyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkxOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MjE9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3U3MihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkyOS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MzA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkzMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NDc9dm9pZCB2Y2FwX25ldGJ5dGVzX2NvcHkodTggKmRzdCwgdTggKnNyYywgaW50IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjk1My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5NTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9uZXRieXRlc19jb3B5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjk1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NTc9dm9pZCB2Y2FwX3NldF90Y19leHRlcnIoc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmZjbywgc3RydWN0IHZjYXBfcnVsZSAqdnJ1bGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTgzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjk4NDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF90Y19leHRlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTg1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzIwNj1pbnQgdmNhcF9lbmFibGVfbG9va3VwcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjM2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2VuYWJsZV9sb29rdXBzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzIzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMyNDA9Ym9vbCB2Y2FwX2lzX2xhc3RfY2hhaW4oc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBjaWQsIGJvb2wgaW5ncmVzcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyNTgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozMjU5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfaXNfbGFzdF9jaGFpbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjYyPXZvaWQgdmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUzMiBjb3VudGVyX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzI2Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMyNjg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzI2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzI3MD1pbnQgdmNhcF9ydWxlX3NldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyODgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozMjg5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9zZXRfY291bnRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMyOTE9aW50IHZjYXBfcnVsZV9nZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzA5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzMxMDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfZ2V0X2NvdW50ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzM5ND1pbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDMyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQzMzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNDUwPWludCB2Y2FwX3J1bGVfbW9kX2tleV91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDU4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQ1OTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfbW9kX2tleV91MzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDYwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzQ2Mj1pbnQgdmNhcF9ydWxlX3JlbV9rZXkoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDc3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQ3ODpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfcmVtX2tleSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0NzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNDk1PWludCB2Y2FwX3J1bGVfbW9kX2FjdGlvbl91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1MDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNTA0OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9tb2RfYWN0aW9uX3UzMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1MDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNTA3PWludCB2Y2FwX2ZpbHRlcl9ydWxlX2tleXMoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NDktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNTUwOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZmlsdGVyX3J1bGVfa2V5cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNTU0PXZjYXBfc2VsZWN0X21pbl9ydWxlX2tleXNldChzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NzItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNTczOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfc2VsZWN0X21pbl9ydWxlX2tleXNldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNTc2PXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfY29weV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKmVydWxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzYxNi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM2MTc6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9jb3B5X3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNjE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZDQVAgQVBJIFVzYWdlIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBWQ0FQIEFQSSBoZXJlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoYXQgaXQmIzM5O3MgY2xlYXJseSBiZWluZyB1dGlsaXplZCBieSB0aGUgaGFyZHdhcmUgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZXN0YWJsaXNoZWQgZmFjdC4gQnV0IG15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGJpZ2dlciBxdWVzdGlvbjogYXJlIHRoZXNlIHRoZSAqb25seSogZHJpdmVycyBsZXZlcmFnaW5nIHRoZSBWQ0FQIEFQSSB3aXRoaW4gb3VyIGN1cnJlbnQgc3lzdGVtPyBJIG5lZWQgdG8ga25vdyBpZiB0aGUgZGVwZW5kZW5jeSBleHRlbmRzIGJleW9uZCB0aGlzIGltbWVkaWF0ZSBwYWlyLiBVbmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIFZDQVAgQVBJJiMzOTtzIHVzZSBpcyBjcnVjaWFsIGZvciBhbnkgZnV0dXJlIHJlZmFjdG9yaW5nLCBvcHRpbWl6YXRpb24sIG9yIGV2ZW4gZGVidWdnaW5nIGVmZm9ydHMuIFdlIGhhdmUgdG8gaWRlbnRpZnkgZXZlcnkgY29uc3VtZXIuIElmIGl0JiMzOTtzIG1vcmUgd2lkZWx5IHVzZWQgdGhhbiBJIGN1cnJlbnRseSBiZWxpZXZlLCB0aGlzIG1heSBiZSBhIHN5c3RlbS1sZXZlbCBpc3N1ZSBhbmQgbm90IGNvbnRhaW5lZCB0byB0aGUgZHJpdmVycyB1c2luZyB0aGUgQVBJLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24gZm9vdHByaW50IGFjcm9zcyB0aGUgZW50aXJlIGRyaXZlciBlY29zeXN0ZW0uIFdoYXQgb3RoZXIgY29kZSBpcyBpbXBsaWNpdGx5IHJlbHlpbmcgb24gdGhlIFZDQVAgQVBJJiMzOTtzIGZ1bmN0aW9uYWxpdHk/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgYSBmZXcgb3RoZXIgcGxhY2VzIHRoYXQgbmVlZCBtb3JlIGF0dGVudGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmNhcF9hZGRfcnVsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jPTU0PXN0YXRpYyBpbnQgbGFuOTY2eF9wdHBfYWRkX3RyYXAoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYzo5NTpcdGVyciA9IHZjYXBfYWRkX3J1bGUodnJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jPTQ0Nz1zdGF0aWMgaW50IGxhbjk2NnhfdGNfZmxvd2VyX2FkZChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF90Y19mbG93ZXIuYzo1NTA6XHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTUxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYz00ODk9c3RhdGljIGludCBzcGFyeDVfdGNfYWRkX3J1bGVfY29weShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDAtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYzo1NDE6XHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTU0Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYz0xMTY3PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2Zsb3dlcl9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTEzMjMtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYzoxMzI0Olx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy0xMzI1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTIyNTc9c3RhdGljIHZvaWQgdmNhcF9ydWxlX3NldF9zdGF0ZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICpyaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjctLyogRW5jb2RlIGFuZCB3cml0ZSBhIHZhbGlkYXRlZCBydWxlIHRvIHRoZSBWQ0FQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjIyNjg6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjI2OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMzE3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjMxODpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkZF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaD0xNjc9aW50IHZjYXBfdmFsX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgdTE2IGwzX3Byb3RvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE2OC0vKiBBZGQgcnVsZSB0byBhIFZDQVAgaW5zdGFuY2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oOjE2OTppbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE3MC0vKiBEZWxldGUgcnVsZSBpbiBhIFZDQVAgaW5zdGFuY2UgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jPTI0Nz1zdGF0aWMgdm9pZCB0ZXN0X3ZjYXBfeG5fcnVsZV9jcmVhdG9yKHN0cnVjdCBrdW5pdCAqdGVzdCwgaW50IGNpZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMC1cdC8qIEFkZCBydWxlIHdpdGggd3JpdGUgY2FsbGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM6MzExOlx0cmV0ID0gdmNhcF9hZGRfcnVsZShydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMzEyLVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIDAsIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0xMzM0PXN0YXRpYyB2b2lkIHZjYXBfYXBpX2VuY29kZV9ydWxlX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMTQzNC1cdC8qIEFkZCBydWxlIHdpdGggd3JpdGUgY2FsbGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM6MTQzNTpcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTE0MzYtXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgcmV0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MzUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVkNBUCBBUEkgYW5kIEZ1enppbmcgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLiBUaGUgVkNBUCBBUEkgaXMgdXNlZCBieSB0aGUgYGxhbjk2NnhgIGFuZCBgc3Bhcng1YCBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoZXNlIGFyZSBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVycywgdGhleSBuZWVkIHNwZWNpZmljIGhhcmR3YXJlLCBsaWtlIElPTUVNIGFuZCBPRiwgYW5kIHRoYXQgYXV0b21hdGljYWxseSBtZWFucyB0aGV5IGNhbiYjMzk7dCBiZSBmdXp6ZWQgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXYWl0LCBjb3VsZCBLVW5pdCB0ZXN0cyBiZSB1c2VmdWwgaGVyZT8gSG9sZCBvbi4uLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgYWN0dWFsbHkgZnV6eiBLVW5pdCB0ZXN0cyBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEl0IG9ubHkgKnJ1bnMqIHRoZW0gYXQgYm9vdCwgd2hpY2ggaXNuJiMzOTt0IGZ1enppbmcsIGl0JiMzOTtzIGp1c3QgYSBzaW5nbGUgdGVzdC4gVGhhdCBkb2VzbiYjMzk7dCBoZWxwIG1lIG11Y2guCgpOb3cgSSByZW1lbWJlciB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGZvciBXb3J0aEZ1enppbmc9ZmFsc2UuIEl0IGxpc3RzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29kZSBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdywgYW5kIOKAkyBjcnVjaWFsbHkg4oCTIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBbmQgaGVyZSBpdCBpcyEgVGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBoYXJkd2FyZS1zcGVjaWZpYywgYW5kIHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIHNvIHRoZSBjb2RlIHBhdGhzICphcmUqIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCBsb29rcyBsaWtlIGEgY2xlYXIgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4KCkJ1dCB3YWl04oCmIEkgYWx3YXlzIHdhbnQgdG8gYmUgdGhvcm91Z2guIEFyZSB0aGVyZSAqYW55KiBvdGhlciBkcml2ZXJzIHRoYXQgbWlnaHQgdXNlIFZDQVA/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgZHJpdmVycyB1c2luZyB0aGUgQVBJIGJlZm9yZSBJIGNvbXBsZXRlbHkgY29tbWl0IHRvIHRoYXQgY29uY2x1c2lvbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjYXBfYWRkX3J1bGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYz01ND1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2FkZF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM6OTU6XHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF90Y19mbG93ZXIuYz00NDc9c3RhdGljIGludCBsYW45NjZ4X3RjX2Zsb3dlcl9hZGQoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM6NTUwOlx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU1MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9NDg5PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2FkZF9ydWxlX2NvcHkoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtNTQwLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM6NTQxOlx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTE2Nz1zdGF0aWMgaW50IHNwYXJ4NV90Y19mbG93ZXJfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy0xMzIzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM6MTMyNDpcdGVyciA9IHZjYXBfYWRkX3J1bGUodnJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTMyNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMjU3PXN0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfc3RhdGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMjY3LS8qIEVuY29kZSBhbmQgd3JpdGUgYSB2YWxpZGF0ZWQgcnVsZSB0byB0aGUgVkNBUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMjY4OmludCB2Y2FwX2FkZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjIzMTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50Lmg9MTY3PWludCB2Y2FwX3ZhbF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUxNiBsM19wcm90byk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNjgtLyogQWRkIHJ1bGUgdG8gYSBWQ0FQIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNjk6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNzAtLyogRGVsZXRlIHJ1bGUgaW4gYSBWQ0FQIGluc3RhbmNlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0yNDc9c3RhdGljIHZvaWQgdGVzdF92Y2FwX3huX3J1bGVfY3JlYXRvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsIGludCBjaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0zMTAtXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jOjMxMTpcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMi1cdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAwLCByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM9MTMzND1zdGF0aWMgdm9pZCB2Y2FwX2FwaV9lbmNvZGVfcnVsZV90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTE0MzQtXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jOjE0MzU6XHRyZXQgPSB2Y2FwX2FkZF9ydWxlKHJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0xNDM2LVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIDAsIHJldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjMxCgkJCQkJCQlvdXRwdXQ6IDEwNwoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb246IE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIHRoZSBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBvbmx5IHRvdWNoaW5nIHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMsIGFuZCB0aGVpciBhc3NvY2lhdGVkIEtVbml0IHRlc3RzLiBUaGVzZSBhcmUgKnNwZWNpZmljYWxseSogaGFyZHdhcmUgZHJpdmVycyBmb3IgTWljcm9jaGlwIHN3aXRjaGVzLiBOb3csIEkga25vdyB0aGVzZSBpbnNpZGUgYW5kIG91dDsgeW91IGNhbiYjMzk7dCByZWFsaXN0aWNhbGx5IGV4ZXJjaXNlIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgd2l0aG91dCB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4gQW5kLCBmcmFua2x5LCB0aGF0IGxldmVsIG9mIGRldGFpbGVkIGVtdWxhdGlvbiAqZG9lc24mIzM5O3QqIGV4aXN0IGluIHN0YW5kYXJkIFFFTVUgZm9yIHRoZXNlIHBhcnRpY3VsYXIgc3dpdGNoZXMuIFRodXMsIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIHdoZW4gcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBUaGVyZWZvcmUsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBwb3NzaWJsZSB0byBmdXp6IHRoZSBjb2RlIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4gSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gaGFyZHdhcmUtc3BlY2lmaWMgc3dpdGNoIGRyaXZlcnMgZm9yIE1pY3JvY2hpcCYjMzk7cyBWQ0FQLCBMQU45NjZ4LCBhbmQgU3Bhcng1LCBhbmQgdGhlc2UgY29tcG9uZW50cyBhcmUgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MDYuNDIwNTY2ODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU0NDIzMzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGluIHRoZSBNaWNyb2NoaXAgVkNBUCAoVmVyc2F0aWxlIENvbnRlbnQtQXdhcmUgUHJvY2Vzc29yKSBBUEksIHdoaWNoIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgc3dpdGNoIGRyaXZlcnMgKGxhbjk2NnggYW5kIHNwYXJ4NSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSAoSU9NRU0sIE9GKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MDYuNDIwNTc1NTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTQ0NTAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3MGVkMmZmZWJiOTMzODA0NDE3MzUyZTRhMzJmYmQwODI1MDI3ZGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTg6NDA6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcXG5pbmRleCA3MmUzYjE4OWJhYzVhYy4uZWIyOGRmODBiMjgxOGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcXG5AQCAtNjAxLDcgKzYwMSw2IEBAIHN0YXRpYyB2b2lkIGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcXG4gXFx0a2ZyZWUoYWRtaW4tXFx1MDAzZWNhY2hlLmtleXN0cmVhbSk7XFxuIFxcdGtmcmVlKGFkbWluLVxcdTAwM2VjYWNoZS5tYXNrc3RyZWFtKTtcXG4gXFx0a2ZyZWUoYWRtaW4tXFx1MDAzZWNhY2hlLmFjdGlvbnN0cmVhbSk7XFxuLVxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4gXFx0a2ZyZWUoYWRtaW4pO1xcbiB9XFxuIFxcbkBAIC02MTUsNyArNjE0LDcgQEAgbGFuOTY2eF92Y2FwX2FkbWluX2FsbG9jKHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLFxcbiBcXHRpZiAoIWFkbWluKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0YWRtaW4tXFx1MDAzZXZjdHJsID0gY3RybDtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VsaXN0KTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhZG1pbi1cXHUwMDNlZW5hYmxlZCk7XFxuQEAgLTcyMSw2ICs3MjAsNyBAQCBpbnQgbGFuOTY2eF92Y2FwX2luaXQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngpXFxuIFxcdGN0cmwtXFx1MDAzZW9wcyA9IFxcdTAwMjZsYW45NjZ4X3ZjYXBfb3BzO1xcbiBcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmN0cmwtXFx1MDAzZWxpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGxhbjk2NnhfdmNhcF9pbnN0X2NmZyk7ICsraSkge1xcbiBcXHRcXHRjZmcgPSBcXHUwMDI2bGFuOTY2eF92Y2FwX2luc3RfY2ZnW2ldO1xcbiBcXG5AQCAtNzgwLDUgKzc4MCw2IEBAIHZvaWQgbGFuOTY2eF92Y2FwX2RlaW5pdChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eClcXG4gXFx0XFx0bGFuOTY2eF92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pO1xcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4gXFx0a2ZyZWUoY3RybCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbmluZGV4IDk1YjkzZTQ2YTQxZGNlLi5jZjMzMmRlNmJmNzM2YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXFxuQEAgLTE5MzAsNyArMTkzMCw2IEBAIHN0YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxcbiB7XFxuIFxcdGlmICghYWRtaW4pXFxuIFxcdFxcdHJldHVybjtcXG4tXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbiBcXHRrZnJlZShhZG1pbi1cXHUwMDNlY2FjaGUua2V5c3RyZWFtKTtcXG4gXFx0a2ZyZWUoYWRtaW4tXFx1MDAzZWNhY2hlLm1hc2tzdHJlYW0pO1xcbiBcXHRrZnJlZShhZG1pbi1cXHUwMDNlY2FjaGUuYWN0aW9uc3RyZWFtKTtcXG5AQCAtMTk1MCw3ICsxOTQ5LDcgQEAgc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IHNwYXJ4NSAqc3Bhcng1LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLFxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZWxpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZXJ1bGVzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VlbmFibGVkKTtcXG4tXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRhZG1pbi1cXHUwMDNldmN0cmwgPSBjdHJsO1xcbiBcXHRhZG1pbi1cXHUwMDNldnR5cGUgPSBjZmctXFx1MDAzZXZ0eXBlO1xcbiBcXHRhZG1pbi1cXHUwMDNldmluc3QgPSBjZmctXFx1MDAzZXZpbnN0O1xcbiBcXHRhZG1pbi1cXHUwMDNlaW5ncmVzcyA9IGNmZy1cXHUwMDNlaW5ncmVzcztcXG5AQCAtMjA1OSw2ICsyMDU4LDcgQEAgaW50IHNwYXJ4NV92Y2FwX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1KVxcbiBcXHRjdHJsLVxcdTAwM2VvcHMgPSBcXHUwMDI2c3Bhcng1X3ZjYXBfb3BzO1xcbiBcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmN0cmwtXFx1MDAzZWxpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBBUlJBWV9TSVpFKHNwYXJ4NV92Y2FwX2luc3RfY2ZnKTsgKytpZHgpIHtcXG4gXFx0XFx0Y2ZnID0gXFx1MDAyNmNvbnN0cy1cXHUwMDNldmNhcHNfY2ZnW2lkeF07XFxuIFxcdFxcdGFkbWluID0gc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3Bhcng1LCBjdHJsLCBjZmcpO1xcbkBAIC0yMDk3LDUgKzIwOTcsNiBAQCB2b2lkIHNwYXJ4NV92Y2FwX2RlaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZhZG1pbi1cXHUwMDNlbGlzdCk7XFxuIFxcdFxcdHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pO1xcbiBcXHR9XFxuK1xcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmN0cmwtXFx1MDAzZWxvY2spO1xcbiBcXHRrZnJlZShjdHJsKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbmluZGV4IDBmZGI1ZTM2M2JhZGMwLi5mZjg2Y2RlMTFhMzJjNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbkBAIC05MzQsNiArOTM0LDE2IEBAIHN0YXRpYyBib29sIHZjYXBfcnVsZV9leGlzdHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuK3tcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZXZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4rfVxcbitcXG4rdm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuK3tcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNldmN0cmwtXFx1MDAzZWxvY2spO1xcbit9XFxuK1xcbiAvKiBGaW5kIGEgcnVsZSB3aXRoIGEgcHJvdmlkZWQgcnVsZSBpZCByZXR1cm4gYSBsb2NrZWQgdmNhcCAqL1xcbiBzdGF0aWMgc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqXFxuIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuQEAgLTk0MywxMSArOTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuIFxcbiBcXHQvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXFx1MDAyNnZjdHJsLVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF9sb2NrKGFkbWluKTtcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdClcXG4gXFx0XFx0XFx0aWYgKHJpLVxcdTAwM2VkYXRhLmlkID09IGlkKVxcbiBcXHRcXHRcXHRcXHRyZXR1cm4gcmk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRcXHR2Y2FwX3VubG9jayhhZG1pbik7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5AQCAtOTYxLDE0ICs5NzEsMTQgQEAgaW50IHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1NjQgY29va2llKVxcbiBcXG4gXFx0LyogTG9vayBmb3IgdGhlIHJ1bGUgaWQgaW4gYWxsIHZjYXBzICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFxcdTAwMjZ2Y3RybC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG4gXFx0XFx0XFx0aWYgKHJpLVxcdTAwM2VkYXRhLmNvb2tpZSA9PSBjb29raWUpIHtcXG4gXFx0XFx0XFx0XFx0aWQgPSByaS1cXHUwMDNlZGF0YS5pZDtcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXHRcXHRpZiAoaWQpXFxuIFxcdFxcdFxcdHJldHVybiBpZDtcXG4gXFx0fVxcbkBAIC05ODUsMTEgKzk5NSwxMSBAQCBpbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZClcXG4gXFx0aW50IGNvdW50ID0gMDtcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZWxlbSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdCkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGlmIChlbGVtLVxcdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXFx1MDAzZT0gbWluX2NpZCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgZWxlbS1cXHUwMDNlZGF0YS52Y2FwX2NoYWluX2lkIFxcdTAwM2MgbWF4X2NpZClcXG4gXFx0XFx0XFx0Kytjb3VudDtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gY291bnQ7XFxuIH1cXG5AQCAtMjI2Niw3ICsyMjc2LDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0LyogSW5zZXJ0IHRoZSBuZXcgcnVsZSBpbiB0aGUgbGlzdCBvZiB2Y2FwIHJ1bGVzICovXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnJpLVxcdTAwM2VhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXG4gXFx0dmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7XFxuIFxcdHJldCA9IHZjYXBfaW5zZXJ0X3J1bGUocmksIFxcdTAwMjZtb3ZlKTtcXG5AQCAtMjMwMiw3ICsyMzEyLDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gb3V0Olxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNnJpLVxcdTAwM2VhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfdW5sb2NrKHJpLVxcdTAwM2VhZG1pbik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7XFxuQEAgLTIzMzAsNyArMjM0MCw3IEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0aWYgKHZjdHJsLVxcdTAwM2V2Y2Fwc1thZG1pbi1cXHUwMDNldnR5cGVdLnJvd3MgPT0gMClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdC8qIENoZWNrIGlmIGEgcnVsZSB3aXRoIHRoaXMgaWQgYWxyZWFkeSBleGlzdHMgKi9cXG4gXFx0aWYgKHZjYXBfcnVsZV9leGlzdHModmN0cmwsIGlkKSkge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbkBAIC0yMzY5LDEzICsyMzc5LDEzIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0cmV0dXJuIChzdHJ1Y3QgdmNhcF9ydWxlICopcmk7XFxuIFxcbiBvdXRfZnJlZTpcXG4gXFx0a2ZyZWUocmkpO1xcbiBvdXRfdW5sb2NrOlxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiBcXG4gfVxcbkBAIC0yNDQ2LDcgKzI0NTYsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xcbiBcXG4gXFx0cnVsZSA9IHZjYXBfZGVjb2RlX3J1bGUoZWxlbSk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZWxlbS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhlbGVtLVxcdTAwM2VhZG1pbik7XFxuIFxcdHJldHVybiBydWxlO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xcbkBAIC0yNDgzLDcgKzI0OTMsNyBAQCBpbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxcbiBcXHRlcnIgPSAgdmNhcF93cml0ZV9jb3VudGVyKHJpLCBcXHUwMDI2Y3RyKTtcXG4gXFxuIG91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyaS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbW9kX3J1bGUpO1xcbkBAIC0yNTcwLDcgKzI1ODAsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBpZClcXG4gXFx0XFx0YWRtaW4tXFx1MDAzZWxhc3RfdXNlZF9hZGRyID0gZWxlbS1cXHUwMDNlYWRkcjtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTtcXG5AQCAtMjU4NSw3ICsyNTk1LDcgQEAgaW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyaSwgbmV4dF9yaSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdCkge1xcbiBcXHRcXHR2Y3RybC1cXHUwMDNlb3BzLVxcdTAwM2Vpbml0KHJpLVxcdTAwM2VuZGV2LCBhZG1pbiwgcmktXFx1MDAzZWFkZHIsIHJpLVxcdTAwM2VzaXplKTtcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNnJpLVxcdTAwM2VsaXN0KTtcXG5AQCAtMjU5OCw3ICsyNjA4LDcgQEAgaW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZlcG9ydC1cXHUwMDNlbGlzdCk7XFxuIFxcdFxcdGtmcmVlKGVwb3J0KTtcXG4gXFx0fVxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMzAxNiw3ICszMDI2LDcgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHQvKiBGb3VuZCB0aGUgYWRtaW4sIG5vdyBmaW5kIHRoZSBvZmZsb2FkYWJsZSBydWxlcyAqL1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG4gXFx0XFx0XFx0LyogSXMgdGhlIHJ1bGUgaW4gdGhlIGxvb2t1cCBkZWZpbmVkIGJ5IHRoZSBjaGFpbiAqL1xcbiBcXHRcXHRcXHRpZiAoIShyaS1cXHUwMDNlZGF0YS52Y2FwX2NoYWluX2lkIFxcdTAwM2U9IGNoYWluIFxcdTAwMjZcXHUwMDI2XFxuQEAgLTMwMzQsNyArMzA0NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuIFxcdFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRcXHR2Y2FwX3VubG9jayhhZG1pbik7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuQEAgLTMwNzQsNyArMzA4NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9kaXNhYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdC8qIEZvdW5kIHRoZSBhZG1pbiwgbm93IGZpbmQgdGhlIHJ1bGVzIG9uIHRoZSBjaGFpbiAqL1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG4gXFx0XFx0XFx0aWYgKHJpLVxcdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgIT0gY2hhaW4pXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbkBAIC0zMDg5LDcgKzMwOTksNyBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0XFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdH1cXG5AQCAtMzEzMyw5ICszMTQzLDkgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdGVwb3J0LVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuIFxcdGVwb3J0LVxcdTAwM2VzcmNfY2lkID0gc3JjX2NpZDtcXG4gXFx0ZXBvcnQtXFx1MDAzZWRzdF9jaWQgPSBkc3RfY2lkO1xcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmVwb3J0LVxcdTAwM2VsaXN0LCBcXHUwMDI2YWRtaW4tXFx1MDAzZWVuYWJsZWQpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXG4gXFx0aWYgKHZjYXBfcGF0aF9leGlzdCh2Y3RybCwgbmRldiwgc3JjX2NpZCkpIHtcXG4gXFx0XFx0LyogRW5hYmxlIGNoYWluZWQgbG9va3VwcyAqL1xcbkBAIC0zMTg1LDkgKzMxOTUsOSBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdGRzdF9jaWQgPSB2Y2FwX2dldF9uZXh0X2NoYWluKHZjdHJsLCBuZGV2LCBkc3RfY2lkKTtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2Zm91bmQtXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX2xvY2soZm91bmQpO1xcbiBcXHRsaXN0X2RlbChcXHUwMDI2ZXBvcnQtXFx1MDAzZWxpc3QpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmZvdW5kLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soZm91bmQpO1xcbiBcXHRrZnJlZShlcG9ydCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTMyNzAsOSArMzI4MCw5IEBAIGludCB2Y2FwX3J1bGVfc2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2cmktXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF9sb2NrKHJpLVxcdTAwM2VhZG1pbik7XFxuIFxcdGVyciA9IHZjYXBfd3JpdGVfY291bnRlcihyaSwgY3RyKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyaS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbkBAIC0zMjkxLDkgKzMzMDEsOSBAQCBpbnQgdmNhcF9ydWxlX2dldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnJpLVxcdTAwM2VhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXHRlcnIgPSB2Y2FwX3JlYWRfY291bnRlcihyaSwgY3RyKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyaS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbkBAIC0zMzk1LDcgKzM0MDUsNyBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuIFxcbiBcXHQvKiBJdGVyYXRlIGFsbCBydWxlcyBpbiBlYWNoIFZDQVAgaW5zdGFuY2UgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXFx1MDAyNnZjdHJsLVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF9sb2NrKGFkbWluKTtcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdCkge1xcbiBcXHRcXHRcXHRpZiAocmktXFx1MDAzZWRhdGEuY29va2llICE9IGNvb2tpZSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTM0MTIsMTIgKzM0MjIsMTIgQEAgaW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbiBcXHRcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0fVxcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXHR9XFxuIFxcdHJldHVybiBlcnI7XFxuIFxcbiB1bmxvY2s6XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhhZG1pbik7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaFxcbmluZGV4IDYwNjlhZDk1YzI3ZTkzLi4wNWI0YjAyZTU5ZWY1ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaFxcbkBAIC0xNjQsNyArMTY0LDcgQEAgc3RydWN0IHZjYXBfYWRtaW4ge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7IC8qIGZvciBpbnNlcnRpb24gaW4gdmNhcF9jb250cm9sICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgcnVsZXM7IC8qIGxpc3Qgb2YgcnVsZXMgKi9cXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBlbmFibGVkOyAvKiBsaXN0IG9mIGVuYWJsZWQgcG9ydHMgKi9cXG4tXFx0c3RydWN0IG11dGV4IGxvY2s7IC8qIGNvbnRyb2wgYWNjZXNzIHRvIHJ1bGVzICovXFxuK1xcdHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsOyAvKiB0aGUgY29udHJvbCBpbnN0YW5jZSBvd25pbmcgdGhpcyB2Y2FwICovXFxuIFxcdGVudW0gdmNhcF90eXBlIHZ0eXBlOyAgLyogdHlwZSBvZiB2Y2FwICovXFxuIFxcdGludCB2aW5zdDsgLyogaW5zdGFuY2UgbnVtYmVyIHdpdGhpbiB0aGUgc2FtZSB0eXBlICovXFxuIFxcdGludCBmaXJzdF9jaWQ7IC8qIGZpcnN0IGNoYWluIGlkIGluIHRoaXMgdmNhcCAqL1xcbkBAIC0yNzUsNiArMjc1LDcgQEAgc3RydWN0IHZjYXBfY29udHJvbCB7XFxuIFxcdGNvbnN0IHN0cnVjdCB2Y2FwX2luZm8gKnZjYXBzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBtb2RlbHMgKi9cXG4gXFx0Y29uc3Qgc3RydWN0IHZjYXBfc3RhdGlzdGljcyAqc3RhdHM7IC8qIGNsaWVudCBzdXBwbGllZCB2Y2FwIHN0YXRzICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgLyogbGlzdCBvZiB2Y2FwIGluc3RhbmNlcyAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogc2VyaWFsaXplIGFjY2VzcyB0byBhbGwgdmNhcCBpbnN0YW5jZXMgKi9cXG4gfTtcXG4gXFxuICNlbmRpZiAvKiBfX1ZDQVBfQVBJX18gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXFxuaW5kZXggNTliZmJkYTI5YmIzZGEuLmUwYzY1YzdhYjIzZTFlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xcbkBAIC00MTAsOSArNDEwLDkgQEAgc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcXG4gXFx0fTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmluZm8tXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF9sb2NrKGluZm8tXFx1MDAzZWFkbWluKTtcXG4gXFx0cmV0ID0gdmNhcF9zaG93X2FkbWluKGluZm8tXFx1MDAzZXZjdHJsLCBpbmZvLVxcdTAwM2VhZG1pbiwgXFx1MDAyNm91dCk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2aW5mby1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhpbmZvLVxcdTAwM2VhZG1pbik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gREVGSU5FX1NIT1dfQVRUUklCVVRFKHZjYXBfZGVidWdmcyk7XFxuQEAgLTQyNyw5ICs0MjcsOSBAQCBzdGF0aWMgaW50IHZjYXBfcmF3X2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcXG4gXFx0fTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmluZm8tXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF9sb2NrKGluZm8tXFx1MDAzZWFkbWluKTtcXG4gXFx0cmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLVxcdTAwM2V2Y3RybCwgaW5mby1cXHUwMDNlYWRtaW4sIFxcdTAwMjZvdXQpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmluZm8tXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soaW5mby1cXHUwMDNlYWRtaW4pO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIERFRklORV9TSE9XX0FUVFJJQlVURSh2Y2FwX3Jhd19kZWJ1Z2ZzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jXFxuaW5kZXggOWM5ZDM4MDQyMTI1NWQuLmFjMmEzYjhjNGYzMjE3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xcbkBAIC0yNDMsMTAgKzI0MywxMSBAQCBzdGF0aWMgdm9pZCB2Y2FwX3Rlc3RfYXBpX2luaXQoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxcbiB7XFxuIFxcdC8qIEluaXRpYWxpemUgdGhlIHNoYXJlZCBvYmplY3RzICovXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZ0ZXN0X3ZjdHJsLmxvY2spO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZWxpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZXJ1bGVzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VlbmFibGVkKTtcXG4tXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRhZG1pbi1cXHUwMDNldmN0cmwgPSBcXHUwMDI2dGVzdF92Y3RybDtcXG4gXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2YWRtaW4tXFx1MDAzZWxpc3QsIFxcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xcbiBcXHRtZW1zZXQodGVzdF91cGRhdGVhZGRyLCAwLCBzaXplb2YodGVzdF91cGRhdGVhZGRyKSk7XFxuIFxcdHRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jXFxuaW5kZXggY2UyNmNjYmRjY2RmOTMuLjgzZGUzODRkM2UzYmQ0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jXFxuQEAgLTIzMywxMCArMjMzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuIHtcXG4gXFx0LyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi9cXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNnRlc3RfdmN0cmwubG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhZG1pbi1cXHUwMDNlbGlzdCk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZWVuYWJsZWQpO1xcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdGFkbWluLVxcdTAwM2V2Y3RybCA9IFxcdTAwMjZ0ZXN0X3ZjdHJsO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZhZG1pbi1cXHUwMDNlbGlzdCwgXFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XFxuIFxcdG1lbXNldCh0ZXN0X3VwZGF0ZWFkZHIsIDAsIHNpemVvZih0ZXN0X3VwZGF0ZWFkZHIpKTtcXG4gXFx0dGVzdF91cGRhdGVhZGRyaWR4ID0gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oXFxuaW5kZXggODQ0YmRmNmI1ZjQ1MDIuLmI0MDU3ZmJlM2QxODhjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxcbkBAIC01MCw2ICs1MCw5IEBAIHN0cnVjdCB2Y2FwX3N0cmVhbV9pdGVyIHtcXG4gXFxuIC8qIENoZWNrIHRoYXQgdGhlIGNvbnRyb2wgaGFzIGEgdmFsaWQgc2V0IG9mIGNhbGxiYWNrcyAqL1xcbiBpbnQgdmNhcF9hcGlfY2hlY2soc3RydWN0IHZjYXBfY29udHJvbCAqY3RybCk7XFxuKy8qIFNlcmlhbGl6ZSBhY2Nlc3MgdG8gdGhlIHZjYXAgaW5zdGFuY2VzIG9mIGEgY29udHJvbCAqL1xcbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pO1xcbit2b2lkIHZjYXBfdW5sb2NrKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbik7XFxuIC8qIEVyYXNlIHRoZSBWQ0FQIGNhY2hlIGFyZWEgdXNlZCBvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKi9cXG4gdm9pZCB2Y2FwX2VyYXNlX2NhY2hlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjA3LjAyMDc2NjY4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5NDQwMjQwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBpbiB0aGUgTWljcm9jaGlwIFZDQVAgKFZlcnNhdGlsZSBDb250ZW50LUF3YXJlIFByb2Nlc3NvcikgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIChsYW45NjZ4IGFuZCBzcGFyeDUpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgKElPTUVNLCBPRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDcwZWQyZmZlYmI5MzM4MDQ0MTczNTJlNGEzMmZiZDA4MjUwMjdkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE4OjQwOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbmluZGV4IDcyZTNiMTg5YmFjNWFjLi5lYjI4ZGY4MGIyODE4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbkBAIC02MDEsNyArNjAxLDYgQEAgc3RhdGljIHZvaWQgbGFuOTY2eF92Y2FwX2FkbWluX2ZyZWUoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIFx0a2ZyZWUoYWRtaW4tXHUwMDNlY2FjaGUua2V5c3RyZWFtKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLm1hc2tzdHJlYW0pO1xuIFx0a2ZyZWUoYWRtaW4tXHUwMDNlY2FjaGUuYWN0aW9uc3RyZWFtKTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4gXHRrZnJlZShhZG1pbik7XG4gfVxuIFxuQEAgLTYxNSw3ICs2MTQsNyBAQCBsYW45NjZ4X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwsXG4gXHRpZiAoIWFkbWluKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiBcbi1cdG11dGV4X2luaXQoXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuQEAgLTcyMSw2ICs3MjAsNyBAQCBpbnQgbGFuOTY2eF92Y2FwX2luaXQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngpXG4gXHRjdHJsLVx1MDAzZW9wcyA9IFx1MDAyNmxhbjk2NnhfdmNhcF9vcHM7XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjdHJsLVx1MDAzZWxpc3QpO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZjdHJsLVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobGFuOTY2eF92Y2FwX2luc3RfY2ZnKTsgKytpKSB7XG4gXHRcdGNmZyA9IFx1MDAyNmxhbjk2NnhfdmNhcF9pbnN0X2NmZ1tpXTtcbiBcbkBAIC03ODAsNSArNzgwLDYgQEAgdm9pZCBsYW45NjZ4X3ZjYXBfZGVpbml0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4KVxuIFx0XHRsYW45NjZ4X3ZjYXBfYWRtaW5fZnJlZShhZG1pbik7XG4gXHR9XG4gXG4rXHRtdXRleF9kZXN0cm95KFx1MDAyNmN0cmwtXHUwMDNlbG9jayk7XG4gXHRrZnJlZShjdHJsKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xuaW5kZXggOTViOTNlNDZhNDFkY2UuLmNmMzMyZGU2YmY3MzZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5AQCAtMTkzMCw3ICsxOTMwLDYgQEAgc3RhdGljIHZvaWQgc3Bhcng1X3ZjYXBfYWRtaW5fZnJlZShzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4ge1xuIFx0aWYgKCFhZG1pbilcbiBcdFx0cmV0dXJuO1xuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmtleXN0cmVhbSk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5tYXNrc3RyZWFtKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmFjdGlvbnN0cmVhbSk7XG5AQCAtMTk1MCw3ICsxOTQ5LDcgQEAgc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IHNwYXJ4NSAqc3Bhcng1LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VydWxlcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VlbmFibGVkKTtcbi1cdG11dGV4X2luaXQoXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRhZG1pbi1cdTAwM2V2dHlwZSA9IGNmZy1cdTAwM2V2dHlwZTtcbiBcdGFkbWluLVx1MDAzZXZpbnN0ID0gY2ZnLVx1MDAzZXZpbnN0O1xuIFx0YWRtaW4tXHUwMDNlaW5ncmVzcyA9IGNmZy1cdTAwM2VpbmdyZXNzO1xuQEAgLTIwNTksNiArMjA1OCw3IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbiBcdGN0cmwtXHUwMDNlb3BzID0gXHUwMDI2c3Bhcng1X3ZjYXBfb3BzO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y3RybC1cdTAwM2VsaXN0KTtcbitcdG11dGV4X2luaXQoXHUwMDI2Y3RybC1cdTAwM2Vsb2NrKTtcbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBBUlJBWV9TSVpFKHNwYXJ4NV92Y2FwX2luc3RfY2ZnKTsgKytpZHgpIHtcbiBcdFx0Y2ZnID0gXHUwMDI2Y29uc3RzLVx1MDAzZXZjYXBzX2NmZ1tpZHhdO1xuIFx0XHRhZG1pbiA9IHNwYXJ4NV92Y2FwX2FkbWluX2FsbG9jKHNwYXJ4NSwgY3RybCwgY2ZnKTtcbkBAIC0yMDk3LDUgKzIwOTcsNiBAQCB2b2lkIHNwYXJ4NV92Y2FwX2RlaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXG4gXHRcdGxpc3RfZGVsKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QpO1xuIFx0XHRzcGFyeDVfdmNhcF9hZG1pbl9mcmVlKGFkbWluKTtcbiBcdH1cbitcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y3RybC1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKGN0cmwpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuaW5kZXggMGZkYjVlMzYzYmFkYzAuLmZmODZjZGUxMWEzMmM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTkzNCw2ICs5MzQsMTYgQEAgc3RhdGljIGJvb2wgdmNhcF9ydWxlX2V4aXN0cyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2V2Y3RybC1cdTAwM2Vsb2NrKTtcbit9XG4rXG4rdm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4re1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZXZjdHJsLVx1MDAzZWxvY2spO1xuK31cbitcbiAvKiBGaW5kIGEgcnVsZSB3aXRoIGEgcHJvdmlkZWQgcnVsZSBpZCByZXR1cm4gYSBsb2NrZWQgdmNhcCAqL1xuIHN0YXRpYyBzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICpcbiB2Y2FwX2dldF9sb2NrZWRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuQEAgLTk0MywxMSArOTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG4gXG4gXHQvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFx1MDAyNnZjdHJsLVx1MDAzZWxpc3QsIGxpc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF9sb2NrKGFkbWluKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMsIGxpc3QpXG4gXHRcdFx0aWYgKHJpLVx1MDAzZWRhdGEuaWQgPT0gaWQpXG4gXHRcdFx0XHRyZXR1cm4gcmk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0fVxuIFx0cmV0dXJuIE5VTEw7XG4gfVxuQEAgLTk2MSwxNCArOTcxLDE0IEBAIGludCB2Y2FwX2xvb2t1cF9ydWxlX2J5X2Nvb2tpZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTY0IGNvb2tpZSlcbiBcbiBcdC8qIExvb2sgZm9yIHRoZSBydWxlIGlkIGluIGFsbCB2Y2FwcyAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXHUwMDI2dmN0cmwtXHUwMDNlbGlzdCwgbGlzdCkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHRcdGlmIChyaS1cdTAwM2VkYXRhLmNvb2tpZSA9PSBjb29raWUpIHtcbiBcdFx0XHRcdGlkID0gcmktXHUwMDNlZGF0YS5pZDtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcdFx0fVxuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdFx0aWYgKGlkKVxuIFx0XHRcdHJldHVybiBpZDtcbiBcdH1cbkBAIC05ODUsMTEgKzk5NSwxMSBAQCBpbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZClcbiBcdGludCBjb3VudCA9IDA7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVsZW0sIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGlmIChlbGVtLVx1MDAzZWRhdGEudmNhcF9jaGFpbl9pZCBcdTAwM2U9IG1pbl9jaWQgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBlbGVtLVx1MDAzZWRhdGEudmNhcF9jaGFpbl9pZCBcdTAwM2MgbWF4X2NpZClcbiBcdFx0XHQrK2NvdW50O1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdH1cbiBcdHJldHVybiBjb3VudDtcbiB9XG5AQCAtMjI2Niw3ICsyMjc2LDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXHQvKiBJbnNlcnQgdGhlIG5ldyBydWxlIGluIHRoZSBsaXN0IG9mIHZjYXAgcnVsZXMgKi9cbi1cdG11dGV4X2xvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0dmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7XG4gXHRyZXQgPSB2Y2FwX2luc2VydF9ydWxlKHJpLCBcdTAwMjZtb3ZlKTtcbkBAIC0yMzAyLDcgKzIzMTIsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBvdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkZF9ydWxlKTtcbkBAIC0yMzMwLDcgKzIzNDAsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2FsbG9jX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRpZiAodmN0cmwtXHUwMDNldmNhcHNbYWRtaW4tXHUwMDNldnR5cGVdLnJvd3MgPT0gMClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF9sb2NrKGFkbWluKTtcbiBcdC8qIENoZWNrIGlmIGEgcnVsZSB3aXRoIHRoaXMgaWQgYWxyZWFkeSBleGlzdHMgKi9cbiBcdGlmICh2Y2FwX3J1bGVfZXhpc3RzKHZjdHJsLCBpZCkpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbkBAIC0yMzY5LDEzICsyMzc5LDEzIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0Z290byBvdXRfZnJlZTtcbiBcdH1cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdHJldHVybiAoc3RydWN0IHZjYXBfcnVsZSAqKXJpO1xuIFxuIG91dF9mcmVlOlxuIFx0a2ZyZWUocmkpO1xuIG91dF91bmxvY2s6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuIH1cbkBAIC0yNDQ2LDcgKzI0NTYsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuIFxuIFx0cnVsZSA9IHZjYXBfZGVjb2RlX3J1bGUoZWxlbSk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZWxlbS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGVsZW0tXHUwMDNlYWRtaW4pO1xuIFx0cmV0dXJuIHJ1bGU7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xuQEAgLTI0ODMsNyArMjQ5Myw3IEBAIGludCB2Y2FwX21vZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXG4gXHRlcnIgPSAgdmNhcF93cml0ZV9jb3VudGVyKHJpLCBcdTAwMjZjdHIpO1xuIFxuIG91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZyaS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbW9kX3J1bGUpO1xuQEAgLTI1NzAsNyArMjU4MCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKVxuIFx0XHRhZG1pbi1cdTAwM2VsYXN0X3VzZWRfYWRkciA9IGVsZW0tXHUwMDNlYWRkcjtcbiBcdH1cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZGVsX3J1bGUpO1xuQEAgLTI1ODUsNyArMjU5NSw3IEBAIGludCB2Y2FwX2RlbF9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpLCBuZXh0X3JpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHR2Y3RybC1cdTAwM2VvcHMtXHUwMDNlaW5pdChyaS1cdTAwM2VuZGV2LCBhZG1pbiwgcmktXHUwMDNlYWRkciwgcmktXHUwMDNlc2l6ZSk7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNnJpLVx1MDAzZWxpc3QpO1xuQEAgLTI1OTgsNyArMjYwOCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIFx0XHRsaXN0X2RlbChcdTAwMjZlcG9ydC1cdTAwM2VsaXN0KTtcbiBcdFx0a2ZyZWUoZXBvcnQpO1xuIFx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTMwMTYsNyArMzAyNiw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdC8qIEZvdW5kIHRoZSBhZG1pbiwgbm93IGZpbmQgdGhlIG9mZmxvYWRhYmxlIHJ1bGVzICovXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4gXHRcdFx0LyogSXMgdGhlIHJ1bGUgaW4gdGhlIGxvb2t1cCBkZWZpbmVkIGJ5IHRoZSBjaGFpbiAqL1xuIFx0XHRcdGlmICghKHJpLVx1MDAzZWRhdGEudmNhcF9jaGFpbl9pZCBcdTAwM2U9IGNoYWluIFx1MDAyNlx1MDAyNlxuQEAgLTMwMzQsNyArMzA0NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuQEAgLTMwNzQsNyArMzA4NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9kaXNhYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQvKiBGb3VuZCB0aGUgYWRtaW4sIG5vdyBmaW5kIHRoZSBydWxlcyBvbiB0aGUgY2hhaW4gKi9cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF9sb2NrKGFkbWluKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMsIGxpc3QpIHtcbiBcdFx0XHRpZiAocmktXHUwMDNlZGF0YS52Y2FwX2NoYWluX2lkICE9IGNoYWluKVxuIFx0XHRcdFx0Y29udGludWU7XG5AQCAtMzA4OSw3ICszMDk5LDcgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuQEAgLTMxMzMsOSArMzE0Myw5IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0ZXBvcnQtXHUwMDNlY29va2llID0gY29va2llO1xuIFx0ZXBvcnQtXHUwMDNlc3JjX2NpZCA9IHNyY19jaWQ7XG4gXHRlcG9ydC1cdTAwM2Vkc3RfY2lkID0gZHN0X2NpZDtcbi1cdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcG9ydC1cdTAwM2VsaXN0LCBcdTAwMjZhZG1pbi1cdTAwM2VlbmFibGVkKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcbiBcdGlmICh2Y2FwX3BhdGhfZXhpc3QodmN0cmwsIG5kZXYsIHNyY19jaWQpKSB7XG4gXHRcdC8qIEVuYWJsZSBjaGFpbmVkIGxvb2t1cHMgKi9cbkBAIC0zMTg1LDkgKzMxOTUsOSBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdGRzdF9jaWQgPSB2Y2FwX2dldF9uZXh0X2NoYWluKHZjdHJsLCBuZGV2LCBkc3RfY2lkKTtcbiBcdH1cbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2Zm91bmQtXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2soZm91bmQpO1xuIFx0bGlzdF9kZWwoXHUwMDI2ZXBvcnQtXHUwMDNlbGlzdCk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Zm91bmQtXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhmb3VuZCk7XG4gXHRrZnJlZShlcG9ydCk7XG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMzI3MCw5ICszMjgwLDkgQEAgaW50IHZjYXBfcnVsZV9zZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZyaS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfbG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXHRlcnIgPSB2Y2FwX3dyaXRlX2NvdW50ZXIocmksIGN0cik7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0zMjkxLDkgKzMzMDEsOSBAQCBpbnQgdmNhcF9ydWxlX2dldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF9sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdGVyciA9IHZjYXBfcmVhZF9jb3VudGVyKHJpLCBjdHIpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF91bmxvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMzM5NSw3ICszNDA1LDcgQEAgaW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFxuIFx0LyogSXRlcmF0ZSBhbGwgcnVsZXMgaW4gZWFjaCBWQ0FQIGluc3RhbmNlICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGFkbWluLCBcdTAwMjZ2Y3RybC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4gXHRcdFx0aWYgKHJpLVx1MDAzZWRhdGEuY29va2llICE9IGNvb2tpZSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTM0MTIsMTIgKzM0MjIsMTIgQEAgaW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHRcdGlmIChlcnIpXG4gXHRcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdH1cbiBcdHJldHVybiBlcnI7XG4gXG4gdW5sb2NrOlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5pbmRleCA2MDY5YWQ5NWMyN2U5My4uMDViNGIwMmU1OWVmNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5AQCAtMTY0LDcgKzE2NCw3IEBAIHN0cnVjdCB2Y2FwX2FkbWluIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgLyogZm9yIGluc2VydGlvbiBpbiB2Y2FwX2NvbnRyb2wgKi9cbiBcdHN0cnVjdCBsaXN0X2hlYWQgcnVsZXM7IC8qIGxpc3Qgb2YgcnVsZXMgKi9cbiBcdHN0cnVjdCBsaXN0X2hlYWQgZW5hYmxlZDsgLyogbGlzdCBvZiBlbmFibGVkIHBvcnRzICovXG4tXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogY29udHJvbCBhY2Nlc3MgdG8gcnVsZXMgKi9cbitcdHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsOyAvKiB0aGUgY29udHJvbCBpbnN0YW5jZSBvd25pbmcgdGhpcyB2Y2FwICovXG4gXHRlbnVtIHZjYXBfdHlwZSB2dHlwZTsgIC8qIHR5cGUgb2YgdmNhcCAqL1xuIFx0aW50IHZpbnN0OyAvKiBpbnN0YW5jZSBudW1iZXIgd2l0aGluIHRoZSBzYW1lIHR5cGUgKi9cbiBcdGludCBmaXJzdF9jaWQ7IC8qIGZpcnN0IGNoYWluIGlkIGluIHRoaXMgdmNhcCAqL1xuQEAgLTI3NSw2ICsyNzUsNyBAQCBzdHJ1Y3QgdmNhcF9jb250cm9sIHtcbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX2luZm8gKnZjYXBzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBtb2RlbHMgKi9cbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX3N0YXRpc3RpY3MgKnN0YXRzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBzdGF0cyAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0OyAvKiBsaXN0IG9mIHZjYXAgaW5zdGFuY2VzICovXG4rXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogc2VyaWFsaXplIGFjY2VzcyB0byBhbGwgdmNhcCBpbnN0YW5jZXMgKi9cbiB9O1xuIFxuICNlbmRpZiAvKiBfX1ZDQVBfQVBJX18gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbmluZGV4IDU5YmZiZGEyOWJiM2RhLi5lMGM2NWM3YWIyM2UxZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG5AQCAtNDEwLDkgKzQxMCw5IEBAIHN0YXRpYyBpbnQgdmNhcF9kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpXG4gXHR9O1xuIFx0aW50IHJldDtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2aW5mby1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfbG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldCA9IHZjYXBfc2hvd19hZG1pbihpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIERFRklORV9TSE9XX0FUVFJJQlVURSh2Y2FwX2RlYnVnZnMpO1xuQEAgLTQyNyw5ICs0MjcsOSBAQCBzdGF0aWMgaW50IHZjYXBfcmF3X2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcbiBcdH07XG4gXHRpbnQgcmV0O1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZpbmZvLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF9sb2NrKGluZm8tXHUwMDNlYWRtaW4pO1xuIFx0cmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIERFRklORV9TSE9XX0FUVFJJQlVURSh2Y2FwX3Jhd19kZWJ1Z2ZzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzX2t1bml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzX2t1bml0LmNcbmluZGV4IDljOWQzODA0MjEyNTVkLi5hYzJhM2I4YzRmMzIxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jXG5AQCAtMjQzLDEwICsyNDMsMTEgQEAgc3RhdGljIHZvaWQgdmNhcF90ZXN0X2FwaV9pbml0KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiB7XG4gXHQvKiBJbml0aWFsaXplIHRoZSBzaGFyZWQgb2JqZWN0cyAqL1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbitcdG11dGV4X2luaXQoXHUwMDI2dGVzdF92Y3RybC5sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlZW5hYmxlZCk7XG4tXHRtdXRleF9pbml0KFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0YWRtaW4tXHUwMDNldmN0cmwgPSBcdTAwMjZ0ZXN0X3ZjdHJsO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0LCBcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xuIFx0bWVtc2V0KHRlc3RfdXBkYXRlYWRkciwgMCwgc2l6ZW9mKHRlc3RfdXBkYXRlYWRkcikpO1xuIFx0dGVzdF91cGRhdGVhZGRyaWR4ID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuY1xuaW5kZXggY2UyNmNjYmRjY2RmOTMuLjgzZGUzODRkM2UzYmQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuY1xuQEAgLTIzMywxMCArMjMzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4ge1xuIFx0LyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi9cbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XG4rXHRtdXRleF9pbml0KFx1MDAyNnRlc3RfdmN0cmwubG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdGFkbWluLVx1MDAzZXZjdHJsID0gXHUwMDI2dGVzdF92Y3RybDtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCwgXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbiBcdG1lbXNldCh0ZXN0X3VwZGF0ZWFkZHIsIDAsIHNpemVvZih0ZXN0X3VwZGF0ZWFkZHIpKTtcbiBcdHRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oXG5pbmRleCA4NDRiZGY2YjVmNDUwMi4uYjQwNTdmYmUzZDE4OGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxuQEAgLTUwLDYgKzUwLDkgQEAgc3RydWN0IHZjYXBfc3RyZWFtX2l0ZXIge1xuIFxuIC8qIENoZWNrIHRoYXQgdGhlIGNvbnRyb2wgaGFzIGEgdmFsaWQgc2V0IG9mIGNhbGxiYWNrcyAqL1xuIGludCB2Y2FwX2FwaV9jaGVjayhzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsKTtcbisvKiBTZXJpYWxpemUgYWNjZXNzIHRvIHRoZSB2Y2FwIGluc3RhbmNlcyBvZiBhIGNvbnRyb2wgKi9cbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pO1xuK3ZvaWQgdmNhcF91bmxvY2soc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKTtcbiAvKiBFcmFzZSB0aGUgVkNBUCBjYWNoZSBhcmVhIHVzZWQgb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nICovXG4gdm9pZCB2Y2FwX2VyYXNlX2NhY2hlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjA3LjAyMDc2OTY4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MjIyNzQyNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkNBUCBEcml2ZXIgTG9ja2luZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgbG9ja2luZyBtZWNoYW5pc20gd2l0aGluIHRoZSBNaWNyb2NoaXAgVkNBUCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBzaGlmdGluZyB0aGUgbG9jayBmcm9tIHRoZSBgdmNhcF9hZG1pbmAgc3RydWN0dXJlIG92ZXIgdG8gdGhlIGB2Y2FwX2NvbnRyb2xgIHN0cnVjdHVyZS4gVGhlIGdvYWwsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdG8gc2VyaWFsaXplIGFjY2VzcyBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZiB0aGUgVkNBUC4gU291bmRzIGxpa2UgYSBnb29kIG1vdmUgdG8gY2VudHJhbGl6ZSB0aGUgbG9ja2luZywgaWYgaXQgd29ya3MuXG5cbkkgc2VlIGl0IHRvdWNoZXMgYSBwcmV0dHkgYnJvYWQgc3dhdGggb2YgZmlsZXM6IGBsYW45NjZ4X3ZjYXBfaW1wbC5jYCwgYHNwYXJ4NV92Y2FwX2ltcGwuY2AsIGB2Y2FwX2FwaS5jYCwgYC5oYCBmaWxlcywgYW5kIGV2ZW4gc29tZSBkZWJ1Z2ZzIGFuZCBLVW5pdCByZWxhdGVkIGNvZGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBhIGZhaXJseSBpbXBhY3RmdWwgY2hhbmdlLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyLlxuXG5Ib2xkIG9uLi4uIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhpcyBiZWluZyBhIGxvY2tpbmcgY2hhbmdlIGFuZCB0aGUgZmFjdCB0aGlzIGlzIGEgbmV0d29yayBkcml2ZXIsIGEga2V5IHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLiBJcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE1pY3JvY2hpcCdzIFNwYXJ4NSBhbmQgTEFOOTY2eCBhcmUgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2ggaW1wbGVtZW50YXRpb25zLCByaWdodD8gU28sIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZW11bGF0b3IgYnVpbHQgZm9yIHRoZXNlIGRldmljZXMsIHRoaXMgZHJpdmVyIHNob3VsZCBiZSBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQuIE1vc3Qgb2YgdGhlc2Ugc3dpdGNoZGV2IGRyaXZlcnMgSSd2ZSB3b3JrZWQgd2l0aCBhcmUgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBoYXJkd2FyZSB1bmxlc3MgdGhlcmUncyBhbiBleHBsaWNpdCBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIsIGxpa2Ugd2hhdCBuZXRkZXZzaW0gcHJvdmlkZXMgKGJ1dCB0aGlzIGlzbid0IHRoYXQga2luZCBvZiBnZW5lcmljIGRyaXZlcikuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgc2VhcmNoIGZvciBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIHdpdGhpbiB0aGUga2VybmVsIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBkZXZpY2VzIGFyZSBpbmRlZWQgaGFyZHdhcmUtc3BlY2lmaWMuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODUzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MTMuOTQzMDQ2NDg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTY1OTYyMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIChTUEFSWDVfU1dJVENIfExBTjk2NlhfU1dJVENIKVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjE6Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJMYW45NjZ4IHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTpjb25maWcgU1BBUlg1X1NXSVRDSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTcGFyeDUgc3dpdGNoIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MjAuMjU5NjUwNjE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NDQ0MDkwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEtjb25maWcgZm9yIExBTjk2NlggYW5kIFNQQVJYNSBTd2l0Y2hlcyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBNeSBmaXJzdCBpbXB1bHNlIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYm90aCB0aGUgTEFOOTY2WCBhbmQgU1BBUlg1IHN3aXRjaGVzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZXNlIHNwZWNpZmljIGRldmljZXMuIFRoZSBnb2FsIGhlcmUgaXNuJ3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEknbSBsb29raW5nIGZvciB0aGUgZmluZS1ncmFpbmVkIGRldGFpbHMuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGRpc2NyZXBhbmNpZXMgaW4gaG93IHRoZXkncmUgZXhwb3NlZCBpbiB0aGUgYnVpbGQgc3lzdGVtLiBBcmUgdGhlcmUgZmVhdHVyZSBmbGFncyB0aGF0IG1heSBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIG9uZSBidXQgbm90IHRoZSBvdGhlcj8gQXJlIHRoZXJlIGhhcmR3YXJlIG9yIG90aGVyIHNvZnR3YXJlIGRlcGVuZGVuY2llcywgc3BlY2lmaWNhbGx5IG9uIGFueSBvdGhlciBkcml2ZXJzIG9yIGhhcmR3YXJlIGNvbXBvbmVudHMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkgYWxzbyB3YW50IHRvIGlkZW50aWZ5IGFueSBleGlzdGluZyBhcmNoaXRlY3R1cmFsIGRpZmZlcmVuY2VzIHRoYXQgbWlnaHQgbWFuaWZlc3QgdGhlbXNlbHZlcyBpbiB0aGUgY29uZmlndXJhdGlvbiBtZW51cy4gSSdtIHRoaW5raW5nIGFib3V0IHBvcnRhYmlsaXR5IGFuZCBtYWtpbmcgc3VyZSB0aGF0IHRoZSBzZXR0aW5ncyBhcmUgaW50dWl0aXZlIGFuZCBoYXZlIGxvZ2ljYWwgZGVmYXVsdHMgZm9yIGJvdGggc3dpdGNoIGZhbWlsaWVzLiBUaGVyZSB3aWxsIGJlIGxvdHMgb2YgZGV0YWlscyBmb3IgdGhlc2Ugc3BlY2lmaWMgc3dpdGNoZXMgYW5kIGlmIEkgZmluZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBhdCB0aGlzIHN0YWdlLCBpdCB3aWxsIHNhdmUgYSBsb3Qgb2YgcGFpbiBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc4OSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjIzLjc0NDA5NDE0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjM1NzUzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJMYW45NjZ4IHN3aXRjaCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzozOlxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBPRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjc6XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MTU9Y29uZmlnIExBTjk2NlhfRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xNi1cXHRib29sIFxcXCJEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6MTc6XFx0ZGVwZW5kcyBvbiBMQU45NjZYX1NXSVRDSCBcXHUwMDI2XFx1MDAyNiBEQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTE4LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDoyMy44MzA0NTk5NjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAyNjgyMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqU1BBUlg1X1NXSVRDSCBJbnF1aXJ5KipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYFNQQVJYNV9TV0lUQ0hgLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIGRldGVybWluZSAqd2h5KiBJJ20gbG9va2luZyBhdCB0aGlzIHNwZWNpZmljIHZhcmlhYmxlIG9yIG1vZHVsZSByaWdodCBub3cuIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSBhbmQgY29udGV4dCwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHJlbGV2YW50IHRvIGEgc3BlY2lmaWMgcHJvYmxlbSBvciBhbmFseXNpcyBJJ20gY3VycmVudGx5IGRlYWxpbmcgd2l0aC4gVGhlIGZvY3VzIG9uIFwiY2hlY2tpbmdcIiBpbXBsaWVzIEknbSBlaXRoZXIgdmVyaWZ5aW5nIGl0cyBjdXJyZW50IHN0YXRlLCBpdHMgYmVoYXZpb3IgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBvciBwZXJoYXBzIHRyb3VibGVzaG9vdGluZyBhbiBpc3N1ZSByZWxhdGVkIHRvIGl0LiBJIHdpbGwgaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgd2hldGhlciBpdCBtZWV0cyB0aGUgZXhwZWN0YXRpb25zIGdpdmVuIHRoZSBjdXJyZW50IHNpdHVhdGlvbi4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcmVzdWx0IG9mIHRoaXMgY2hlY2sgbmVjZXNzaXRhdGVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiByZWxhdGVkIGNvbXBvbmVudHMgb3Igc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ4NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjI3LjAzMzE0NTAzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzc4ODI5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9MT1jb25maWcgU1BBUlg1X1NXSVRDSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTcGFyeDUgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzpcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gT0ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIEFSQ0hfU1BBUlg1IHx8IEFSQ0hfTEFOOTY5WCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOS1cXHRzZWxlY3QgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE3PWNvbmZpZyBTUEFSWDVfRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSCBcXHUwMDI2XFx1MDAyNiBEQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMjAtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVxcdGJvb2wgXFxcIkxhbjk2OXggc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzA6XFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MjcuMzExMDM2Mjc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MzY3MjA3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZpcnR1YWxpemF0aW9uIENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBkZXBlbmRlbmN5IG9uIGBIQVNfSU9NRU1gIGFuZCBEZXZpY2UgVHJlZSAoYE9GYCkuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoZXNlIGFzIGhhcmR3YXJlIGRyaXZlciBmbGFncy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkNhbiBJIGV2ZW4gdG91Y2ggdGhpcyBjb2RlIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwP1wiIFR5cGljYWxseSwgZHJpdmVycyB0aGF0IHVzZSBEZXZpY2UgVHJlZSBvciBQQ0kgcHJvYmluZyBhbmQgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKGBJT01FTWApIGFyZSBwcmV0dHkgbG9ja2VkIGRvd24uIFlvdSdkIG5lZWQgYSB2ZXJ5IHNwZWNpZmljIGVtdWxhdG9yIGZvciB0aGUgaGFyZHdhcmUgKGxpa2UgYSBQQ0kgZGV2aWNlIGVtdWxhdG9yKSBvciwgbWF5YmUsIHZpcnR1YWwgZHJpdmVyIGltcGxlbWVudGF0aW9ucyB0byBoYXZlIGFueSBjaGFuY2UuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIGB2Y2FwX2FwaV9rdW5pdC5jYCBhbmQgYHZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY2AuLi4gdGhvc2UgYXJlIEtVbml0IHRlc3RzISBUaGF0IGNoYW5nZXMgZXZlcnl0aGluZy4gS1VuaXQgdGVzdHMgYXJlICpkZXNpZ25lZCogdG8gcnVuIHdpdGhpbiB2aXJ0dWFsIGVudmlyb25tZW50cy5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIEtVbml0IHRlc3RzIGFjdHVhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBwYXJ0cyBvZiB0aGUgY29kZS4gSWYgdGhleSBkbywgYW5kIGlmIEkgY2FuIGdldCB0aGVtIHJ1bm5pbmcsIEkgbWlnaHQgaGF2ZSBhIHNvbGlkLCB2aXJ0dWFsaXplZCB0ZXN0aW5nIGZyYW1ld29yay4gVGhpcyBjb3VsZCBzYXZlIG1lIGEgaHVnZSBoZWFkYWNoZSBvZiBkZWFsaW5nIHdpdGggaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBMZXQncyBkaWcgaW4gYW5kIHNlZSBpZiB0aGUgS1VuaXQgdGVzdHMgYXJlIGEgdmlhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MzEuODk0NzExMzc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjY5NTczMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qVkNBUC4qS1VOSVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZz04PWNvbmZpZyBWQ0FQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWc6Mzk6Y29uZmlnIFZDQVBfS1VOSVRfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiS1VuaXQgdGVzdCBmb3IgVkNBUCBsaWJyYXJ5XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjM0LjU2NDMwMDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjE3MzUxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgcHJlc2VudGVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYFZDQVBfS1VOSVRfVEVTVGAgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgYFZDQVBfS1VOSVRfVEVTVGAgcmVsaWVzIG9uLiBJdCdzIGEga2V5IHZhcmlhYmxlLCBhbmQgSSBjYW4ndCBqdXN0IG9wZXJhdGUgaW4gYSB2YWN1dW0uIEl0J3Mgbm90IGVub3VnaCB0byAqa25vdyogaXQgZXhpc3RzLCBJIG5lZWQgdG8ga25vdyAqd2hhdCogbWFrZXMgaXQgdGljay4gV2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIGl0cyB1c2U/IFdoYXQgaW5mcmFzdHJ1Y3R1cmUgZWxlbWVudHMgaXMgaXQgbGV2ZXJhZ2luZz8gSXMgaXQgcmVsYXRlZCB0byB0aGUga2VybmVsLCBvciBzb21ldGhpbmcgYnJvYWRlcj8gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIHNvIHRoYXQgSSBjYW4gYW50aWNpcGF0ZSBob3cgaXQgYmVoYXZlcyB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgZW52aXJvbm1lbnQtc3BlY2lmaWMsIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29yaywgb3Igc29tZXRoaW5nIGVudGlyZWx5IG1vcmUgZXhvdGljPyBJIG5lZWQgdGhlIGZ1bGwgcGljdHVyZSB0byBiZSBjb25maWRlbnQgaW4gaG93IGl0J3MgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3OTYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDozOC4yODYwNDExMzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NTEyMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24uKlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWc9Mzk9Y29uZmlnIFZDQVBfS1VOSVRfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiS1VuaXQgdGVzdCBmb3IgVkNBUCBsaWJyYXJ5XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZzo0MTpcXHRkZXBlbmRzIG9uIEtVTklUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZzo0MjpcXHRkZXBlbmRzIG9uIEtVTklUPXkgXFx1MDAyNlxcdTAwMjYgVkNBUD15IFxcdTAwMjZcXHUwMDI2IHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnLTQzLVxcdHNlbGVjdCBERUJVR19GU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDozOC4zNzM1NjE2NTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzOTA1NzgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWQ0FQX0tVTklUX1RFU1QgYW5kIHRoZSBGdXp6aW5nIENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgYFZDQVBfS1VOSVRfVEVTVGAgZmxhZywgd2hpY2ggc3VnZ2VzdHMgc29tZSBpbnRlZ3JhdGlvbiB3aXRoIEtVbml0IHRlc3RzLiBCdXQgaGVyZSdzIHRoZSBydWI6IFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGlzbid0IGRlc2lnbmVkIHRvIGRpcmVjdGx5IGZ1enogS1VuaXQgdGVzdHMuIEl0IGZvY3VzZXMgb24gc3lzdGVtIGNhbGxzLCBuZXR3b3JrIHBhY2tldHMsIGFuZCB0aGUgbGlrZSwgbm90IHRoZSB0ZXN0IGluZnJhc3RydWN0dXJlIGl0c2VsZi4gVGhlIHRlc3RzIHJ1biBkdXJpbmcgYm9vdCBvciBtb2R1bGUgbG9hZCwgYW5kIFN5emthbGxlciBtaWdodCBleGVjdXRlIHRoZW0gKm9uY2UqIGR1cmluZyB0aGF0IHByb2Nlc3MsIGJ1dCB0aGF0J3Mgbm90IHdoYXQgSSdkIGNhbGwgZWZmZWN0aXZlIGZ1enppbmcuIFdlIHdvdWxkbid0IGJlIGFibGUgdG8gY2F0Y2ggdGhlIGVkZ2UtY2FzZSBidWdzIGZvciBhIHRlc3QgcnVubmluZyBvbmx5IG9uY2UuXG5cblNvLCBpZiB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIG9ubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhvc2UgS1VuaXQgdGVzdHMsIGlzIGl0IGV2ZW4gd29ydGggcHVyc3Vpbmcgd2l0aCBTeXprYWxsZXI/IFN5emthbGxlcidzIHN0cmVuZ3RoIGxpZXMgaW4gaXRzIGFiaWxpdHkgdG8gZ2VuZXJhdGUgdmFyaWVkIGFuZCBjb21wbGV4IGlucHV0cywgc29tZXRoaW5nIHRoYXQncyBub3QgdGFpbG9yZWQgdG8gdGhlIEtVbml0IHRlc3QgZXhlY3V0aW9uIG1vZGVsLiBXZSBhcmUgbWlzc2luZyBvcHBvcnR1bml0aWVzIGZvciBlZGdlLWNhc2UgYnVncy4gSXQgZmVlbHMgbGlrZSBhbiBpbmVmZmljaWVudCB1c2Ugb2YgcmVzb3VyY2VzLCB1bmxlc3Mgd2UgY2FuIHNvbWVob3cgZ2V0IHRoaXMgQVBJIGV4cG9zZWQgdGhyb3VnaCBhbm90aGVyIGNoYW5uZWwuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGhvdyBjYW4gdGhlIFZDQVAgQVBJIGJlIGFjY2Vzc2VkPyBJcyBpdCBleHBvc2VkIHRvIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMsIG9yIGlzIGl0IGV4Y2x1c2l2ZWx5IHVzZWQgaW50ZXJuYWxseSBieSBoYXJkd2FyZSBkcml2ZXJzPyBGaW5kaW5nIG91dCB0aGF0IGFuc3dlciBpcyBjcnVjaWFsIGZvciBkZWNpZGluZyBpZiB0aGlzIGlzIGV2ZW4gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjA4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjQzLjkxMjYyNDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTMzNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnZjYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMzMz12Y2FwX2ZpbmRfa2V5c3RyZWFtX2tleXNldHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNjE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9maW5kX2tleXN0cmVhbV9rZXlzZXRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzY2PWludCB2Y2FwX2FkZHJfa2V5c2V0cyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzkyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM5MzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkZHJfa2V5c2V0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTQwNz1jb25zdCBzdHJ1Y3QgdmNhcF9zZXQgKnZjYXBfa2V5ZmllbGRzZXQoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTQyMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzo0MjE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9rZXlmaWVsZHNldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy00MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTg4ND1pbnQgdmNhcF9zZXRfcnVsZV9zZXRfa2V5c2V0KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkwMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzo5MDE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9zZXRfcnVsZV9zZXRfa2V5c2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9OTA0PWludCB2Y2FwX3NldF9ydWxlX3NldF9hY3Rpb25zZXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtOTIwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjkyMTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF9ydWxlX3NldF9hY3Rpb25zZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtOTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz05NjY9aW50IHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1NjQgY29va2llKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05ODYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6OTg3OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTk4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9OTkwPWludCB2Y2FwX2FkbWluX3J1bGVfY291bnQoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluLCBpbnQgY2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xMDA1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjEwMDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZG1pbl9ydWxlX2NvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTEwMDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE2MTU9aW50IHZjYXBfY2hhaW5faWRfdG9fbG9va3VwKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGN1cl9jaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2MjgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTYyOTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2NoYWluX2lkX3RvX2xvb2t1cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xNjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xNjMyPXN0cnVjdCB2Y2FwX2FkbWluICp2Y2FwX2ZpbmRfYWRtaW4oc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2NDQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTY0NTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZpbmRfYWRtaW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTY2OT1pbnQgdmNhcF9jaGFpbl9vZmZzZXQoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBmcm9tX2NpZCwgaW50IHRvX2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTY4MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNjgxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfY2hhaW5fb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE2ODc9Ym9vbCB2Y2FwX2lzX25leHRfbG9va3VwKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBpbnQgc3JjX2NpZCwgaW50IGRzdF9jaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE3MDYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTcwNzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2lzX25leHRfbG9va3VwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE3MDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE3ODc9Ym9vbCB2Y2FwX2tleXNldF9saXN0X2FkZChzdHJ1Y3QgdmNhcF9rZXlzZXRfbGlzdCAqa2V5c2V0bGlzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgwMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxODAxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfa2V5c2V0X2xpc3RfYWRkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE4MjA9Y29uc3QgY2hhciAqdmNhcF9rZXlzZXRfbmFtZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxODI1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfa2V5c2V0X25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTgyOD1jb25zdCBjaGFyICp2Y2FwX2tleWZpZWxkX25hbWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTgzMzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2tleWZpZWxkX25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTkxOD1ib29sIHZjYXBfcnVsZV9maW5kX2tleXNldHMoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTkyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxOTI1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9maW5kX2tleXNldHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTkyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTk5Nz1pbnQgdmNhcF92YWxfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCB1MTYgbDNfcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIwNzUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjA3NjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3ZhbF9ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIwNzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTIyNjg9aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjMyMT1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2FsbG9jX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzOTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjM5MjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FsbG9jX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjM5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjM5NT12b2lkIHZjYXBfZnJlZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0MTItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQxMzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZyZWVfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNDQ0PXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDYyOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjQ2NT1pbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDk4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI0OTk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9tb2RfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNTQ3PWludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTg1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI1ODY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9kZWxfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNTg5PWludCB2Y2FwX2RlbF9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNjE0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI2MTU6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9kZWxfcnVsZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjYxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjYzMT1jb25zdCBzdHJ1Y3QgdmNhcF9maWVsZCAqdmNhcF9sb29rdXBfa2V5ZmllbGQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjY0NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNjQ2OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbG9va3VwX2tleWZpZWxkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI2NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3MzE9aW50IHZjYXBfcnVsZV9hZGRfa2V5X2JpdChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjczOC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNzM5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X2JpdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNzQyPWludCB2Y2FwX3J1bGVfYWRkX2tleV91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NTAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjc1MTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV91MzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc1ND1pbnQgdmNhcF9ydWxlX2FkZF9rZXlfdTQ4KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzYxLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3NjI6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfdTQ4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3NjU9aW50IHZjYXBfcnVsZV9hZGRfa2V5X3U3MihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc3Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNzczOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3U3Mik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNzc2PWludCB2Y2FwX3J1bGVfYWRkX2tleV91MTI4KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzgzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3ODQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfdTEyOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc4Nj1pbnQgdmNhcF9ydWxlX2dldF9rZXlfdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzk5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MDA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2dldF9rZXlfdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI4MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4MDQ9dmNhcF9maW5kX2FjdGlvbmZpZWxkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9hY3Rpb25fZmllbGQgYWN0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yODEzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9maW5kX2FjdGlvbmZpZWxkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI4MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4OTc9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX2JpdChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTA1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fYml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MDk9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3UzMihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTE3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5MTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MjE9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3U3MihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTI5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MzA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTcyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NDc9dm9pZCB2Y2FwX25ldGJ5dGVzX2NvcHkodTggKmRzdCwgdTggKnNyYywgaW50IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTUzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5NTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9uZXRieXRlc19jb3B5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5NTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NTc9dm9pZCB2Y2FwX3NldF90Y19leHRlcnIoc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmZjbywgc3RydWN0IHZjYXBfcnVsZSAqdnJ1bGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5ODMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjk4NDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF90Y19leHRlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjk4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzIwNj1pbnQgdmNhcF9lbmFibGVfbG9va3VwcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyMzYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2VuYWJsZV9sb29rdXBzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMyNDA9Ym9vbCB2Y2FwX2lzX2xhc3RfY2hhaW4oc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBjaWQsIGJvb2wgaW5ncmVzcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzI1OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozMjU5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfaXNfbGFzdF9jaGFpbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjYyPXZvaWQgdmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUzMiBjb3VudGVyX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjY3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMyNjg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjcwPWludCB2Y2FwX3J1bGVfc2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjg4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMyODk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3NldF9jb3VudGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjkxPWludCB2Y2FwX3J1bGVfZ2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzA5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMzMTA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2dldF9jb3VudGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMzMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMzOTQ9aW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDMyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0MzM6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzQzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzQ1MD1pbnQgdmNhcF9ydWxlX21vZF9rZXlfdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDU4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0NTk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX21vZF9rZXlfdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0NjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTM0NjI9aW50IHZjYXBfcnVsZV9yZW1fa2V5KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDc3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0Nzg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3JlbV9rZXkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzQ3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzQ5NT1pbnQgdmNhcF9ydWxlX21vZF9hY3Rpb25fdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1MDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzUwNDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfbW9kX2FjdGlvbl91MzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzUwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzUwNz1pbnQgdmNhcF9maWx0ZXJfcnVsZV9rZXlzKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NDktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzU1MDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZpbHRlcl9ydWxlX2tleXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzU1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzU1ND12Y2FwX3NlbGVjdF9taW5fcnVsZV9rZXlzZXQoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzU3MzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NlbGVjdF9taW5fcnVsZV9rZXlzZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzU3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzU3Nj1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2NvcHlfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICplcnVsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzYxNi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNjE3OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfY29weV9ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2MTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjQzLjk3NTU2NjMwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUyNTQxMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZDQVAgQVBJIFVzYWdlIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgVkNBUCBBUEkgaGVyZS4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoYXQgaXQncyBjbGVhcmx5IGJlaW5nIHV0aWxpemVkIGJ5IHRoZSBoYXJkd2FyZSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycy4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGVzdGFibGlzaGVkIGZhY3QuIEJ1dCBteSBleHBlcnQgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gYSBiaWdnZXIgcXVlc3Rpb246IGFyZSB0aGVzZSB0aGUgKm9ubHkqIGRyaXZlcnMgbGV2ZXJhZ2luZyB0aGUgVkNBUCBBUEkgd2l0aGluIG91ciBjdXJyZW50IHN5c3RlbT8gSSBuZWVkIHRvIGtub3cgaWYgdGhlIGRlcGVuZGVuY3kgZXh0ZW5kcyBiZXlvbmQgdGhpcyBpbW1lZGlhdGUgcGFpci4gVW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiBWQ0FQIEFQSSdzIHVzZSBpcyBjcnVjaWFsIGZvciBhbnkgZnV0dXJlIHJlZmFjdG9yaW5nLCBvcHRpbWl6YXRpb24sIG9yIGV2ZW4gZGVidWdnaW5nIGVmZm9ydHMuIFdlIGhhdmUgdG8gaWRlbnRpZnkgZXZlcnkgY29uc3VtZXIuIElmIGl0J3MgbW9yZSB3aWRlbHkgdXNlZCB0aGFuIEkgY3VycmVudGx5IGJlbGlldmUsIHRoaXMgbWF5IGJlIGEgc3lzdGVtLWxldmVsIGlzc3VlIGFuZCBub3QgY29udGFpbmVkIHRvIHRoZSBkcml2ZXJzIHVzaW5nIHRoZSBBUEkuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBpbnRlZ3JhdGlvbiBmb290cHJpbnQgYWNyb3NzIHRoZSBlbnRpcmUgZHJpdmVyIGVjb3N5c3RlbS4gV2hhdCBvdGhlciBjb2RlIGlzIGltcGxpY2l0bHkgcmVseWluZyBvbiB0aGUgVkNBUCBBUEkncyBmdW5jdGlvbmFsaXR5PyBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIGEgZmV3IG90aGVyIHBsYWNlcyB0aGF0IG5lZWQgbW9yZSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODA5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6NDcuNDI4MTEwMzkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDM1ODQ5Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjYXBfYWRkX3J1bGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYz01ND1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2FkZF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM6OTU6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NDQ3PXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfYWRkKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jOjU1MDpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU1MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9NDg5PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2FkZF9ydWxlX2NvcHkoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDAtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjU0MTpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTE2Nz1zdGF0aWMgaW50IHNwYXJ4NV90Y19mbG93ZXJfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTEzMjMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjEzMjQ6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTMyNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMjU3PXN0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfc3RhdGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjctLyogRW5jb2RlIGFuZCB3cml0ZSBhIHZhbGlkYXRlZCBydWxlIHRvIHRoZSBWQ0FQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMjY4OmludCB2Y2FwX2FkZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTE2Nz1pbnQgdmNhcF92YWxfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCB1MTYgbDNfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE2OC0vKiBBZGQgcnVsZSB0byBhIFZDQVAgaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNjk6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMTcwLS8qIERlbGV0ZSBydWxlIGluIGEgVkNBUCBpbnN0YW5jZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0yNDc9c3RhdGljIHZvaWQgdGVzdF92Y2FwX3huX3J1bGVfY3JlYXRvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsIGludCBjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzozMTE6XFx0cmV0ID0gdmNhcF9hZGRfcnVsZShydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMi1cXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM9MTMzND1zdGF0aWMgdm9pZCB2Y2FwX2FwaV9lbmNvZGVfcnVsZV90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMTQzNC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzoxNDM1OlxcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0xNDM2LVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAwLCByZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDo0OS40NjM5NjcwODVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU5NDAzMjc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWQ0FQIEFQSSBhbmQgRnV6emluZyBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcuIFRoZSBWQ0FQIEFQSSBpcyB1c2VkIGJ5IHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhlc2UgYXJlIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXJzLCB0aGV5IG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUsIGxpa2UgSU9NRU0gYW5kIE9GLCBhbmQgdGhhdCBhdXRvbWF0aWNhbGx5IG1lYW5zIHRoZXkgY2FuJ3QgYmUgZnV6emVkIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2FpdCwgY291bGQgS1VuaXQgdGVzdHMgYmUgdXNlZnVsIGhlcmU/IEhvbGQgb24uLi4gU3l6a2FsbGVyIGRvZXNuJ3QgYWN0dWFsbHkgZnV6eiBLVW5pdCB0ZXN0cyBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEl0IG9ubHkgKnJ1bnMqIHRoZW0gYXQgYm9vdCwgd2hpY2ggaXNuJ3QgZnV6emluZywgaXQncyBqdXN0IGEgc2luZ2xlIHRlc3QuIFRoYXQgZG9lc24ndCBoZWxwIG1lIG11Y2guXG5cbk5vdyBJIHJlbWVtYmVyIHRoZSBwcm9tcHQncyBjcml0ZXJpYSBmb3IgV29ydGhGdXp6aW5nPWZhbHNlLiBJdCBsaXN0cyBtb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvZGUgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdywgYW5kIOKAkyBjcnVjaWFsbHkg4oCTIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBbmQgaGVyZSBpdCBpcyEgVGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBoYXJkd2FyZS1zcGVjaWZpYywgYW5kIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgc28gdGhlIGNvZGUgcGF0aHMgKmFyZSogdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGF0IGxvb2tzIGxpa2UgYSBjbGVhciBcIldvcnRoRnV6emluZz1mYWxzZVwiLlxuXG5CdXQgd2FpdOKApiBJIGFsd2F5cyB3YW50IHRvIGJlIHRob3JvdWdoLiBBcmUgdGhlcmUgKmFueSogb3RoZXIgZHJpdmVycyB0aGF0IG1pZ2h0IHVzZSBWQ0FQPyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgb3RoZXIgZHJpdmVycyB1c2luZyB0aGUgQVBJIGJlZm9yZSBJIGNvbXBsZXRlbHkgY29tbWl0IHRvIHRoYXQgY29uY2x1c2lvbi4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MzUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6NTUuMDU4MDAzNDE3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjEzMzc5NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjYXBfYWRkX3J1bGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYz01ND1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2FkZF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM6OTU6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NDQ3PXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfYWRkKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jOjU1MDpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU1MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9NDg5PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2FkZF9ydWxlX2NvcHkoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDAtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjU0MTpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTE2Nz1zdGF0aWMgaW50IHNwYXJ4NV90Y19mbG93ZXJfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTEzMjMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjEzMjQ6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTMyNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMjU3PXN0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfc3RhdGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjctLyogRW5jb2RlIGFuZCB3cml0ZSBhIHZhbGlkYXRlZCBydWxlIHRvIHRoZSBWQ0FQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMjY4OmludCB2Y2FwX2FkZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTE2Nz1pbnQgdmNhcF92YWxfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCB1MTYgbDNfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE2OC0vKiBBZGQgcnVsZSB0byBhIFZDQVAgaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNjk6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMTcwLS8qIERlbGV0ZSBydWxlIGluIGEgVkNBUCBpbnN0YW5jZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0yNDc9c3RhdGljIHZvaWQgdGVzdF92Y2FwX3huX3J1bGVfY3JlYXRvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsIGludCBjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzozMTE6XFx0cmV0ID0gdmNhcF9hZGRfcnVsZShydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMi1cXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM9MTMzND1zdGF0aWMgdm9pZCB2Y2FwX2FwaV9lbmNvZGVfcnVsZV90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMTQzNC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzoxNDM1OlxcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0xNDM2LVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAwLCByZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDo1Ny4yNzEzOTExMDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5MzM0MTc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb246IE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgY29kZSwgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBvbmx5IHRvdWNoaW5nIHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMsIGFuZCB0aGVpciBhc3NvY2lhdGVkIEtVbml0IHRlc3RzLiBUaGVzZSBhcmUgKnNwZWNpZmljYWxseSogaGFyZHdhcmUgZHJpdmVycyBmb3IgTWljcm9jaGlwIHN3aXRjaGVzLiBOb3csIEkga25vdyB0aGVzZSBpbnNpZGUgYW5kIG91dDsgeW91IGNhbid0IHJlYWxpc3RpY2FsbHkgZXhlcmNpc2UgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSB3aXRob3V0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBBbmQsIGZyYW5rbHksIHRoYXQgbGV2ZWwgb2YgZGV0YWlsZWQgZW11bGF0aW9uICpkb2Vzbid0KiBleGlzdCBpbiBzdGFuZGFyZCBRRU1VIGZvciB0aGVzZSBwYXJ0aWN1bGFyIHN3aXRjaGVzLiBUaHVzLCB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSB3aGVuIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlcmVmb3JlLCBpdCdzIG5vdCBnb2luZyB0byBiZSBwb3NzaWJsZSB0byBmdXp6IHRoZSBjb2RlIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyBmb3IgTWljcm9jaGlwJ3MgVkNBUCwgTEFOOTY2eCwgYW5kIFNwYXJ4NSwgYW5kIHRoZXNlIGNvbXBvbmVudHMgYXJlIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNjMxLCJPdXRwdXRUb2tlbnMiOjEwNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MTowMS45NjQ3MzY2MTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtfpxq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 18:33:34 +0000 UTC FinishedAt: 2026-06-30 18:41:02 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBpbiB0aGUgTWljcm9jaGlwIFZDQVAgKFZlcnNhdGlsZSBDb250ZW50LUF3YXJlIFByb2Nlc3NvcikgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIChsYW45NjZ4IGFuZCBzcGFyeDUpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgKElPTUVNLCBPRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNzBlZDJmZmViYjkzMzgwNDQxNzM1MmU0YTMyZmJkMDgyNTAyN2RlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTg6NDA6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbmluZGV4IDcyZTNiMTg5YmFjNWFjLi5lYjI4ZGY4MGIyODE4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbkBAIC02MDEsNyAmIzQzOzYwMSw2IEBAIHN0YXRpYyB2b2lkIGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmtleXN0cmVhbSk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5tYXNrc3RyZWFtKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmFjdGlvbnN0cmVhbSk7XG4tXHRtdXRleF9kZXN0cm95KFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuIFx0a2ZyZWUoYWRtaW4pO1xuIH1cbiBcbkBAIC02MTUsNyAmIzQzOzYxNCw3IEBAIGxhbjk2NnhfdmNhcF9hZG1pbl9hbGxvYyhzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgc3RydWN0IHZjYXBfY29udHJvbCAqY3RybCxcbiBcdGlmICghYWRtaW4pXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuQEAgLTcyMSw2ICYjNDM7NzIwLDcgQEAgaW50IGxhbjk2NnhfdmNhcF9pbml0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4KVxuIFx0Y3RybC1cdTAwM2VvcHMgPSBcdTAwMjZsYW45NjZ4X3ZjYXBfb3BzO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y3RybC1cdTAwM2VsaXN0KTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmN0cmwtXHUwMDNlbG9jayk7XG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShsYW45NjZ4X3ZjYXBfaW5zdF9jZmcpOyAmIzQzOyYjNDM7aSkge1xuIFx0XHRjZmcgPSBcdTAwMjZsYW45NjZ4X3ZjYXBfaW5zdF9jZmdbaV07XG4gXG5AQCAtNzgwLDUgJiM0Mzs3ODAsNiBAQCB2b2lkIGxhbjk2NnhfdmNhcF9kZWluaXQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngpXG4gXHRcdGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKGFkbWluKTtcbiBcdH1cbiBcbiYjNDM7XHRtdXRleF9kZXN0cm95KFx1MDAyNmN0cmwtXHUwMDNlbG9jayk7XG4gXHRrZnJlZShjdHJsKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xuaW5kZXggOTViOTNlNDZhNDFkY2UuLmNmMzMyZGU2YmY3MzZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5AQCAtMTkzMCw3ICYjNDM7MTkzMCw2IEBAIHN0YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIHtcbiBcdGlmICghYWRtaW4pXG4gXHRcdHJldHVybjtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5rZXlzdHJlYW0pO1xuIFx0a2ZyZWUoYWRtaW4tXHUwMDNlY2FjaGUubWFza3N0cmVhbSk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5hY3Rpb25zdHJlYW0pO1xuQEAgLTE5NTAsNyAmIzQzOzE5NDksNyBAQCBzcGFyeDVfdmNhcF9hZG1pbl9hbGxvYyhzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwsXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRhZG1pbi1cdTAwM2V2dHlwZSA9IGNmZy1cdTAwM2V2dHlwZTtcbiBcdGFkbWluLVx1MDAzZXZpbnN0ID0gY2ZnLVx1MDAzZXZpbnN0O1xuIFx0YWRtaW4tXHUwMDNlaW5ncmVzcyA9IGNmZy1cdTAwM2VpbmdyZXNzO1xuQEAgLTIwNTksNiAmIzQzOzIwNTgsNyBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXG4gXHRjdHJsLVx1MDAzZW9wcyA9IFx1MDAyNnNwYXJ4NV92Y2FwX29wcztcbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmN0cmwtXHUwMDNlbGlzdCk7XG4mIzQzO1x0bXV0ZXhfaW5pdChcdTAwMjZjdHJsLVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIEFSUkFZX1NJWkUoc3Bhcng1X3ZjYXBfaW5zdF9jZmcpOyAmIzQzOyYjNDM7aWR4KSB7XG4gXHRcdGNmZyA9IFx1MDAyNmNvbnN0cy1cdTAwM2V2Y2Fwc19jZmdbaWR4XTtcbiBcdFx0YWRtaW4gPSBzcGFyeDVfdmNhcF9hZG1pbl9hbGxvYyhzcGFyeDUsIGN0cmwsIGNmZyk7XG5AQCAtMjA5Nyw1ICYjNDM7MjA5Nyw2IEBAIHZvaWQgc3Bhcng1X3ZjYXBfZGVpbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCk7XG4gXHRcdHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pO1xuIFx0fVxuJiM0MztcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y3RybC1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKGN0cmwpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuaW5kZXggMGZkYjVlMzYzYmFkYzAuLmZmODZjZGUxMWEzMmM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTkzNCw2ICYjNDM7OTM0LDE2IEBAIHN0YXRpYyBib29sIHZjYXBfcnVsZV9leGlzdHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzO3ZvaWQgdmNhcF9sb2NrKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNldmN0cmwtXHUwMDNlbG9jayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdmNhcF91bmxvY2soc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuJiM0Mzt7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZXZjdHJsLVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIEZpbmQgYSBydWxlIHdpdGggYSBwcm92aWRlZCBydWxlIGlkIHJldHVybiBhIGxvY2tlZCB2Y2FwICovXG4gc3RhdGljIHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKlxuIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG5AQCAtOTQzLDExICYjNDM7OTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG4gXG4gXHQvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFx1MDAyNnZjdHJsLVx1MDAzZWxpc3QsIGxpc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KVxuIFx0XHRcdGlmIChyaS1cdTAwM2VkYXRhLmlkID09IGlkKVxuIFx0XHRcdFx0cmV0dXJuIHJpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHR9XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG5AQCAtOTYxLDE0ICYjNDM7OTcxLDE0IEBAIGludCB2Y2FwX2xvb2t1cF9ydWxlX2J5X2Nvb2tpZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTY0IGNvb2tpZSlcbiBcbiBcdC8qIExvb2sgZm9yIHRoZSBydWxlIGlkIGluIGFsbCB2Y2FwcyAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXHUwMDI2dmN0cmwtXHUwMDNlbGlzdCwgbGlzdCkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF9sb2NrKGFkbWluKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMsIGxpc3QpIHtcbiBcdFx0XHRpZiAocmktXHUwMDNlZGF0YS5jb29raWUgPT0gY29va2llKSB7XG4gXHRcdFx0XHRpZCA9IHJpLVx1MDAzZWRhdGEuaWQ7XG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG4gXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoaWQpXG4gXHRcdFx0cmV0dXJuIGlkO1xuIFx0fVxuQEAgLTk4NSwxMSAmIzQzOzk5NSwxMSBAQCBpbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZClcbiBcdGludCBjb3VudCA9IDA7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVsZW0sIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRpZiAoZWxlbS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXHUwMDNlPSBtaW5fY2lkIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgZWxlbS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXHUwMDNjIG1heF9jaWQpXG4gXHRcdFx0JiM0MzsmIzQzO2NvdW50O1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHR9XG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuQEAgLTIyNjYsNyAmIzQzOzIyNzYsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcdC8qIEluc2VydCB0aGUgbmV3IHJ1bGUgaW4gdGhlIGxpc3Qgb2YgdmNhcCBydWxlcyAqL1xuLVx0bXV0ZXhfbG9jayhcdTAwMjZyaS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0dmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7XG4gXHRyZXQgPSB2Y2FwX2luc2VydF9ydWxlKHJpLCBcdTAwMjZtb3ZlKTtcbkBAIC0yMzAyLDcgJiM0MzsyMzEyLDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xuQEAgLTIzMzAsNyAmIzQzOzIzNDAsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2FsbG9jX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRpZiAodmN0cmwtXHUwMDNldmNhcHNbYWRtaW4tXHUwMDNldnR5cGVdLnJvd3MgPT0gMClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfbG9jayhhZG1pbik7XG4gXHQvKiBDaGVjayBpZiBhIHJ1bGUgd2l0aCB0aGlzIGlkIGFscmVhZHkgZXhpc3RzICovXG4gXHRpZiAodmNhcF9ydWxlX2V4aXN0cyh2Y3RybCwgaWQpKSB7XG4gXHRcdGVyciA9IC1FSU5WQUw7XG5AQCAtMjM2OSwxMyAmIzQzOzIzNzksMTMgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9hbGxvY19ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHRnb3RvIG91dF9mcmVlO1xuIFx0fVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdHJldHVybiAoc3RydWN0IHZjYXBfcnVsZSAqKXJpO1xuIFxuIG91dF9mcmVlOlxuIFx0a2ZyZWUocmkpO1xuIG91dF91bmxvY2s6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcbiB9XG5AQCAtMjQ0Niw3ICYjNDM7MjQ1Niw3IEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4gXG4gXHRydWxlID0gdmNhcF9kZWNvZGVfcnVsZShlbGVtKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZlbGVtLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKGVsZW0tXHUwMDNlYWRtaW4pO1xuIFx0cmV0dXJuIHJ1bGU7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xuQEAgLTI0ODMsNyAmIzQzOzI0OTMsNyBAQCBpbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuIFx0ZXJyID0gIHZjYXBfd3JpdGVfY291bnRlcihyaSwgXHUwMDI2Y3RyKTtcbiBcbiBvdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2socmktXHUwMDNlYWRtaW4pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9tb2RfcnVsZSk7XG5AQCAtMjU3MCw3ICYjNDM7MjU4MCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKVxuIFx0XHRhZG1pbi1cdTAwM2VsYXN0X3VzZWRfYWRkciA9IGVsZW0tXHUwMDNlYWRkcjtcbiBcdH1cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTtcbkBAIC0yNTg1LDcgJiM0MzsyNTk1LDcgQEAgaW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpLCBuZXh0X3JpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHR2Y3RybC1cdTAwM2VvcHMtXHUwMDNlaW5pdChyaS1cdTAwM2VuZGV2LCBhZG1pbiwgcmktXHUwMDNlYWRkciwgcmktXHUwMDNlc2l6ZSk7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNnJpLVx1MDAzZWxpc3QpO1xuQEAgLTI1OTgsNyAmIzQzOzI2MDgsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZXBvcnQtXHUwMDNlbGlzdCk7XG4gXHRcdGtmcmVlKGVwb3J0KTtcbiBcdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMzAxNiw3ICYjNDM7MzAyNiw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdC8qIEZvdW5kIHRoZSBhZG1pbiwgbm93IGZpbmQgdGhlIG9mZmxvYWRhYmxlIHJ1bGVzICovXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHRcdC8qIElzIHRoZSBydWxlIGluIHRoZSBsb29rdXAgZGVmaW5lZCBieSB0aGUgY2hhaW4gKi9cbiBcdFx0XHRpZiAoIShyaS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXHUwMDNlPSBjaGFpbiBcdTAwMjZcdTAwMjZcbkBAIC0zMDM0LDcgJiM0MzszMDQ0LDcgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0XHRpZiAoZXJyKVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuQEAgLTMwNzQsNyAmIzQzOzMwODQsNyBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0LyogRm91bmQgdGhlIGFkbWluLCBub3cgZmluZCB0aGUgcnVsZXMgb24gdGhlIGNoYWluICovXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHRcdGlmIChyaS1cdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgIT0gY2hhaW4pXG4gXHRcdFx0XHRjb250aW51ZTtcbkBAIC0zMDg5LDcgJiM0MzszMDk5LDcgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRicmVhaztcbiBcdH1cbkBAIC0zMTMzLDkgJiM0MzszMTQzLDkgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRlcG9ydC1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXHRlcG9ydC1cdTAwM2VzcmNfY2lkID0gc3JjX2NpZDtcbiBcdGVwb3J0LVx1MDAzZWRzdF9jaWQgPSBkc3RfY2lkO1xuLVx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcG9ydC1cdTAwM2VsaXN0LCBcdTAwMjZhZG1pbi1cdTAwM2VlbmFibGVkKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXG4gXHRpZiAodmNhcF9wYXRoX2V4aXN0KHZjdHJsLCBuZGV2LCBzcmNfY2lkKSkge1xuIFx0XHQvKiBFbmFibGUgY2hhaW5lZCBsb29rdXBzICovXG5AQCAtMzE4NSw5ICYjNDM7MzE5NSw5IEBAIHN0YXRpYyBpbnQgdmNhcF9kaXNhYmxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0ZHN0X2NpZCA9IHZjYXBfZ2V0X25leHRfY2hhaW4odmN0cmwsIG5kZXYsIGRzdF9jaWQpO1xuIFx0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZmb3VuZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR2Y2FwX2xvY2soZm91bmQpO1xuIFx0bGlzdF9kZWwoXHUwMDI2ZXBvcnQtXHUwMDNlbGlzdCk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Zm91bmQtXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soZm91bmQpO1xuIFx0a2ZyZWUoZXBvcnQpO1xuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTMyNzAsOSAmIzQzOzMyODAsOSBAQCBpbnQgdmNhcF9ydWxlX3NldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfbG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXHRlcnIgPSB2Y2FwX3dyaXRlX2NvdW50ZXIocmksIGN0cik7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMzI5MSw5ICYjNDM7MzMwMSw5IEBAIGludCB2Y2FwX3J1bGVfZ2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF9sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdGVyciA9IHZjYXBfcmVhZF9jb3VudGVyKHJpLCBjdHIpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfdW5sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTMzOTUsNyAmIzQzOzM0MDUsNyBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXG4gXHQvKiBJdGVyYXRlIGFsbCBydWxlcyBpbiBlYWNoIFZDQVAgaW5zdGFuY2UgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFx1MDAyNnZjdHJsLVx1MDAzZWxpc3QsIGxpc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4gXHRcdFx0aWYgKHJpLVx1MDAzZWRhdGEuY29va2llICE9IGNvb2tpZSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTM0MTIsMTIgJiM0MzszNDIyLDEyIEBAIGludCB2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0XHRpZiAoZXJyKVxuIFx0XHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0fVxuIFx0cmV0dXJuIGVycjtcbiBcbiB1bmxvY2s6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5pbmRleCA2MDY5YWQ5NWMyN2U5My4uMDViNGIwMmU1OWVmNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5AQCAtMTY0LDcgJiM0MzsxNjQsNyBAQCBzdHJ1Y3QgdmNhcF9hZG1pbiB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7IC8qIGZvciBpbnNlcnRpb24gaW4gdmNhcF9jb250cm9sICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ1bGVzOyAvKiBsaXN0IG9mIHJ1bGVzICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGVuYWJsZWQ7IC8qIGxpc3Qgb2YgZW5hYmxlZCBwb3J0cyAqL1xuLVx0c3RydWN0IG11dGV4IGxvY2s7IC8qIGNvbnRyb2wgYWNjZXNzIHRvIHJ1bGVzICovXG4mIzQzO1x0c3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmw7IC8qIHRoZSBjb250cm9sIGluc3RhbmNlIG93bmluZyB0aGlzIHZjYXAgKi9cbiBcdGVudW0gdmNhcF90eXBlIHZ0eXBlOyAgLyogdHlwZSBvZiB2Y2FwICovXG4gXHRpbnQgdmluc3Q7IC8qIGluc3RhbmNlIG51bWJlciB3aXRoaW4gdGhlIHNhbWUgdHlwZSAqL1xuIFx0aW50IGZpcnN0X2NpZDsgLyogZmlyc3QgY2hhaW4gaWQgaW4gdGhpcyB2Y2FwICovXG5AQCAtMjc1LDYgJiM0MzsyNzUsNyBAQCBzdHJ1Y3QgdmNhcF9jb250cm9sIHtcbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX2luZm8gKnZjYXBzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBtb2RlbHMgKi9cbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX3N0YXRpc3RpY3MgKnN0YXRzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBzdGF0cyAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0OyAvKiBsaXN0IG9mIHZjYXAgaW5zdGFuY2VzICovXG4mIzQzO1x0c3RydWN0IG11dGV4IGxvY2s7IC8qIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gYWxsIHZjYXAgaW5zdGFuY2VzICovXG4gfTtcbiBcbiAjZW5kaWYgLyogX19WQ0FQX0FQSV9fICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG5pbmRleCA1OWJmYmRhMjliYjNkYS4uZTBjNjVjN2FiMjNlMWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xuQEAgLTQxMCw5ICYjNDM7NDEwLDkgQEAgc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcbiBcdH07XG4gXHRpbnQgcmV0O1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZpbmZvLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdHZjYXBfbG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldCA9IHZjYXBfc2hvd19hZG1pbihpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soaW5mby1cdTAwM2VhZG1pbik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBERUZJTkVfU0hPV19BVFRSSUJVVEUodmNhcF9kZWJ1Z2ZzKTtcbkBAIC00MjcsOSAmIzQzOzQyNyw5IEBAIHN0YXRpYyBpbnQgdmNhcF9yYXdfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKVxuIFx0fTtcbiBcdGludCByZXQ7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF9sb2NrKGluZm8tXHUwMDNlYWRtaW4pO1xuIFx0cmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4mIzQzO1x0dmNhcF91bmxvY2soaW5mby1cdTAwM2VhZG1pbik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBERUZJTkVfU0hPV19BVFRSSUJVVEUodmNhcF9yYXdfZGVidWdmcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jXG5pbmRleCA5YzlkMzgwNDIxMjU1ZC4uYWMyYTNiOGM0ZjMyMTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzX2t1bml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xuQEAgLTI0MywxMCAmIzQzOzI0MywxMSBAQCBzdGF0aWMgdm9pZCB2Y2FwX3Rlc3RfYXBpX2luaXQoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIHtcbiBcdC8qIEluaXRpYWxpemUgdGhlIHNoYXJlZCBvYmplY3RzICovXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xuJiM0MztcdG11dGV4X2luaXQoXHUwMDI2dGVzdF92Y3RybC5sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlZW5hYmxlZCk7XG4tXHRtdXRleF9pbml0KFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuJiM0MztcdGFkbWluLVx1MDAzZXZjdHJsID0gXHUwMDI2dGVzdF92Y3RybDtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCwgXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbiBcdG1lbXNldCh0ZXN0X3VwZGF0ZWFkZHIsIDAsIHNpemVvZih0ZXN0X3VwZGF0ZWFkZHIpKTtcbiBcdHRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcbmluZGV4IGNlMjZjY2JkY2NkZjkzLi44M2RlMzg0ZDNlM2JkNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcbkBAIC0yMzMsMTAgJiM0MzsyMzMsMTEgQEAgc3RhdGljIHZvaWQgdmNhcF90ZXN0X2FwaV9pbml0KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiB7XG4gXHQvKiBJbml0aWFsaXplIHRoZSBzaGFyZWQgb2JqZWN0cyAqL1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnRlc3RfdmN0cmwubG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRhZG1pbi1cdTAwM2V2Y3RybCA9IFx1MDAyNnRlc3RfdmN0cmw7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QsIFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XG4gXHRtZW1zZXQodGVzdF91cGRhdGVhZGRyLCAwLCBzaXplb2YodGVzdF91cGRhdGVhZGRyKSk7XG4gXHR0ZXN0X3VwZGF0ZWFkZHJpZHggPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxuaW5kZXggODQ0YmRmNmI1ZjQ1MDIuLmI0MDU3ZmJlM2QxODhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmhcbkBAIC01MCw2ICYjNDM7NTAsOSBAQCBzdHJ1Y3QgdmNhcF9zdHJlYW1faXRlciB7XG4gXG4gLyogQ2hlY2sgdGhhdCB0aGUgY29udHJvbCBoYXMgYSB2YWxpZCBzZXQgb2YgY2FsbGJhY2tzICovXG4gaW50IHZjYXBfYXBpX2NoZWNrKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwpO1xuJiM0MzsvKiBTZXJpYWxpemUgYWNjZXNzIHRvIHRoZSB2Y2FwIGluc3RhbmNlcyBvZiBhIGNvbnRyb2wgKi9cbiYjNDM7dm9pZCB2Y2FwX2xvY2soc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKTtcbiYjNDM7dm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pO1xuIC8qIEVyYXNlIHRoZSBWQ0FQIGNhY2hlIGFyZWEgdXNlZCBvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKi9cbiB2b2lkIHZjYXBfZXJhc2VfY2FjaGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBpbiB0aGUgTWljcm9jaGlwIFZDQVAgKFZlcnNhdGlsZSBDb250ZW50LUF3YXJlIFByb2Nlc3NvcikgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIChsYW45NjZ4IGFuZCBzcGFyeDUpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgKElPTUVNLCBPRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3MGVkMmZmZWJiOTMzODA0NDE3MzUyZTRhMzJmYmQwODI1MDI3ZGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAxODo0MDowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3ZjYXBfaW1wbC5jCmluZGV4IDcyZTNiMTg5YmFjNWFjLi5lYjI4ZGY4MGIyODE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3ZjYXBfaW1wbC5jCkBAIC02MDEsNyAmIzQzOzYwMSw2IEBAIHN0YXRpYyB2b2lkIGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUua2V5c3RyZWFtKTsKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUubWFza3N0cmVhbSk7CiAJa2ZyZWUoYWRtaW4tJmd0O2NhY2hlLmFjdGlvbnN0cmVhbSk7Ci0JbXV0ZXhfZGVzdHJveSgmYW1wO2FkbWluLSZndDtsb2NrKTsKIAlrZnJlZShhZG1pbik7CiB9CiAKQEAgLTYxNSw3ICYjNDM7NjE0LDcgQEAgbGFuOTY2eF92Y2FwX2FkbWluX2FsbG9jKHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLAogCWlmICghYWRtaW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JbXV0ZXhfaW5pdCgmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJYWRtaW4tJmd0O3ZjdHJsID0gY3RybDsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtsaXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtydWxlcyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDthZG1pbi0mZ3Q7ZW5hYmxlZCk7CkBAIC03MjEsNiAmIzQzOzcyMCw3IEBAIGludCBsYW45NjZ4X3ZjYXBfaW5pdChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCkKIAljdHJsLSZndDtvcHMgPSAmYW1wO2xhbjk2NnhfdmNhcF9vcHM7CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2N0cmwtJmd0O2xpc3QpOwomIzQzOwltdXRleF9pbml0KCZhbXA7Y3RybC0mZ3Q7bG9jayk7CiAJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGxhbjk2NnhfdmNhcF9pbnN0X2NmZyk7ICYjNDM7JiM0MztpKSB7CiAJCWNmZyA9ICZhbXA7bGFuOTY2eF92Y2FwX2luc3RfY2ZnW2ldOwogCkBAIC03ODAsNSAmIzQzOzc4MCw2IEBAIHZvaWQgbGFuOTY2eF92Y2FwX2RlaW5pdChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCkKIAkJbGFuOTY2eF92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pOwogCX0KIAomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7Y3RybC0mZ3Q7bG9jayk7CiAJa2ZyZWUoY3RybCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jCmluZGV4IDk1YjkzZTQ2YTQxZGNlLi5jZjMzMmRlNmJmNzM2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMKQEAgLTE5MzAsNyAmIzQzOzE5MzAsNiBAQCBzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIHsKIAlpZiAoIWFkbWluKQogCQlyZXR1cm47Ci0JbXV0ZXhfZGVzdHJveSgmYW1wO2FkbWluLSZndDtsb2NrKTsKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUua2V5c3RyZWFtKTsKIAlrZnJlZShhZG1pbi0mZ3Q7Y2FjaGUubWFza3N0cmVhbSk7CiAJa2ZyZWUoYWRtaW4tJmd0O2NhY2hlLmFjdGlvbnN0cmVhbSk7CkBAIC0xOTUwLDcgJiM0MzsxOTQ5LDcgQEAgc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IHNwYXJ4NSAqc3Bhcng1LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLAogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O3J1bGVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtlbmFibGVkKTsKLQltdXRleF9pbml0KCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwlhZG1pbi0mZ3Q7dmN0cmwgPSBjdHJsOwogCWFkbWluLSZndDt2dHlwZSA9IGNmZy0mZ3Q7dnR5cGU7CiAJYWRtaW4tJmd0O3ZpbnN0ID0gY2ZnLSZndDt2aW5zdDsKIAlhZG1pbi0mZ3Q7aW5ncmVzcyA9IGNmZy0mZ3Q7aW5ncmVzczsKQEAgLTIwNTksNiAmIzQzOzIwNTgsNyBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpCiAJY3RybC0mZ3Q7b3BzID0gJmFtcDtzcGFyeDVfdmNhcF9vcHM7CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2N0cmwtJmd0O2xpc3QpOwomIzQzOwltdXRleF9pbml0KCZhbXA7Y3RybC0mZ3Q7bG9jayk7CiAJZm9yIChpZHggPSAwOyBpZHggJmx0OyBBUlJBWV9TSVpFKHNwYXJ4NV92Y2FwX2luc3RfY2ZnKTsgJiM0MzsmIzQzO2lkeCkgewogCQljZmcgPSAmYW1wO2NvbnN0cy0mZ3Q7dmNhcHNfY2ZnW2lkeF07CiAJCWFkbWluID0gc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3Bhcng1LCBjdHJsLCBjZmcpOwpAQCAtMjA5Nyw1ICYjNDM7MjA5Nyw2IEBAIHZvaWQgc3Bhcng1X3ZjYXBfZGVpbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSkKIAkJbGlzdF9kZWwoJmFtcDthZG1pbi0mZ3Q7bGlzdCk7CiAJCXNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pOwogCX0KJiM0MzsJbXV0ZXhfZGVzdHJveSgmYW1wO2N0cmwtJmd0O2xvY2spOwogCWtmcmVlKGN0cmwpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKaW5kZXggMGZkYjVlMzYzYmFkYzAuLmZmODZjZGUxMWEzMmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKQEAgLTkzNCw2ICYjNDM7OTM0LDE2IEBAIHN0YXRpYyBib29sIHZjYXBfcnVsZV9leGlzdHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0Mzt2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7YWRtaW4tJmd0O3ZjdHJsLSZndDtsb2NrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiYjNDM7ewomIzQzOwltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7dmN0cmwtJmd0O2xvY2spOwomIzQzO30KJiM0MzsKIC8qIEZpbmQgYSBydWxlIHdpdGggYSBwcm92aWRlZCBydWxlIGlkIHJldHVybiBhIGxvY2tlZCB2Y2FwICovCiBzdGF0aWMgc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqCiB2Y2FwX2dldF9sb2NrZWRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKQpAQCAtOTQzLDExICYjNDM7OTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpCiAKIAkvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGFkbWluLCAmYW1wO3ZjdHJsLSZndDtsaXN0LCBsaXN0KSB7Ci0JCW11dGV4X2xvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX2xvY2soYWRtaW4pOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCAmYW1wO2FkbWluLSZndDtydWxlcywgbGlzdCkKIAkJCWlmIChyaS0mZ3Q7ZGF0YS5pZCA9PSBpZCkKIAkJCQlyZXR1cm4gcmk7Ci0JCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfdW5sb2NrKGFkbWluKTsKIAl9CiAJcmV0dXJuIE5VTEw7CiB9CkBAIC05NjEsMTQgJiM0Mzs5NzEsMTQgQEAgaW50IHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1NjQgY29va2llKQogCiAJLyogTG9vayBmb3IgdGhlIHJ1bGUgaWQgaW4gYWxsIHZjYXBzICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgJmFtcDt2Y3RybC0mZ3Q7bGlzdCwgbGlzdCkgewotCQltdXRleF9sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwkJdmNhcF9sb2NrKGFkbWluKTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgJmFtcDthZG1pbi0mZ3Q7cnVsZXMsIGxpc3QpIHsKIAkJCWlmIChyaS0mZ3Q7ZGF0YS5jb29raWUgPT0gY29va2llKSB7CiAJCQkJaWQgPSByaS0mZ3Q7ZGF0YS5pZDsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQotCQltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX3VubG9jayhhZG1pbik7CiAJCWlmIChpZCkKIAkJCXJldHVybiBpZDsKIAl9CkBAIC05ODUsMTEgJiM0Mzs5OTUsMTEgQEAgaW50IHZjYXBfYWRtaW5fcnVsZV9jb3VudChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sIGludCBjaWQpCiAJaW50IGNvdW50ID0gMDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoZWxlbSwgJmFtcDthZG1pbi0mZ3Q7cnVsZXMsIGxpc3QpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfbG9jayhhZG1pbik7CiAJCWlmIChlbGVtLSZndDtkYXRhLnZjYXBfY2hhaW5faWQgJmd0Oz0gbWluX2NpZCAmYW1wOyZhbXA7CiAJCSAgICBlbGVtLSZndDtkYXRhLnZjYXBfY2hhaW5faWQgJmx0OyBtYXhfY2lkKQogCQkJJiM0MzsmIzQzO2NvdW50OwotCQltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX3VubG9jayhhZG1pbik7CiAJfQogCXJldHVybiBjb3VudDsKIH0KQEAgLTIyNjYsNyAmIzQzOzIyNzYsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAJLyogSW5zZXJ0IHRoZSBuZXcgcnVsZSBpbiB0aGUgbGlzdCBvZiB2Y2FwIHJ1bGVzICovCi0JbXV0ZXhfbG9jaygmYW1wO3JpLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfbG9jayhyaS0mZ3Q7YWRtaW4pOwogCiAJdmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7CiAJcmV0ID0gdmNhcF9pbnNlcnRfcnVsZShyaSwgJmFtcDttb3ZlKTsKQEAgLTIzMDIsNyAmIzQzOzIzMTIsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQogCQlnb3RvIG91dDsKIAl9CiBvdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cmktJmd0O2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2socmktJmd0O2FkbWluKTsKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7CkBAIC0yMzMwLDcgJiM0MzsyMzQwLDcgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9hbGxvY19ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCWlmICh2Y3RybC0mZ3Q7dmNhcHNbYWRtaW4tJmd0O3Z0eXBlXS5yb3dzID09IDApCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCi0JbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF9sb2NrKGFkbWluKTsKIAkvKiBDaGVjayBpZiBhIHJ1bGUgd2l0aCB0aGlzIGlkIGFscmVhZHkgZXhpc3RzICovCiAJaWYgKHZjYXBfcnVsZV9leGlzdHModmN0cmwsIGlkKSkgewogCQllcnIgPSAtRUlOVkFMOwpAQCAtMjM2OSwxMyAmIzQzOzIzNzksMTMgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9hbGxvY19ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCQlnb3RvIG91dF9mcmVlOwogCX0KIAotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiAoc3RydWN0IHZjYXBfcnVsZSAqKXJpOwogCiBvdXRfZnJlZToKIAlrZnJlZShyaSk7CiBvdXRfdW5sb2NrOgotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiBFUlJfUFRSKGVycik7CiAKIH0KQEAgLTI0NDYsNyAmIzQzOzI0NTYsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwogCiAJcnVsZSA9IHZjYXBfZGVjb2RlX3J1bGUoZWxlbSk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7ZWxlbS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhlbGVtLSZndDthZG1pbik7CiAJcmV0dXJuIHJ1bGU7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlKTsKQEAgLTI0ODMsNyAmIzQzOzI0OTMsNyBAQCBpbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQogCWVyciA9ICB2Y2FwX3dyaXRlX2NvdW50ZXIocmksICZhbXA7Y3RyKTsKIAogb3V0OgotCW11dGV4X3VubG9jaygmYW1wO3JpLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKHJpLSZndDthZG1pbik7CiAJcmV0dXJuIGVycjsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbW9kX3J1bGUpOwpAQCAtMjU3MCw3ICYjNDM7MjU4MCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKQogCQlhZG1pbi0mZ3Q7bGFzdF91c2VkX2FkZHIgPSBlbGVtLSZndDthZGRyOwogCX0KIAotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTsKQEAgLTI1ODUsNyAmIzQzOzI1OTUsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF9sb2NrKGFkbWluKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmksIG5leHRfcmksICZhbXA7YWRtaW4tJmd0O3J1bGVzLCBsaXN0KSB7CiAJCXZjdHJsLSZndDtvcHMtJmd0O2luaXQocmktJmd0O25kZXYsIGFkbWluLCByaS0mZ3Q7YWRkciwgcmktJmd0O3NpemUpOwogCQlsaXN0X2RlbCgmYW1wO3JpLSZndDtsaXN0KTsKQEAgLTI1OTgsNyAmIzQzOzI2MDgsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbikKIAkJbGlzdF9kZWwoJmFtcDtlcG9ydC0mZ3Q7bGlzdCk7CiAJCWtmcmVlKGVwb3J0KTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhhZG1pbik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTMwMTYsNyAmIzQzOzMwMjYsNyBAQCBzdGF0aWMgaW50IHZjYXBfZW5hYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCQkJY29udGludWU7CiAKIAkJLyogRm91bmQgdGhlIGFkbWluLCBub3cgZmluZCB0aGUgb2ZmbG9hZGFibGUgcnVsZXMgKi8KLQkJbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfbG9jayhhZG1pbik7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmksICZhbXA7YWRtaW4tJmd0O3J1bGVzLCBsaXN0KSB7CiAJCQkvKiBJcyB0aGUgcnVsZSBpbiB0aGUgbG9va3VwIGRlZmluZWQgYnkgdGhlIGNoYWluICovCiAJCQlpZiAoIShyaS0mZ3Q7ZGF0YS52Y2FwX2NoYWluX2lkICZndDs9IGNoYWluICZhbXA7JmFtcDsKQEAgLTMwMzQsNyAmIzQzOzMwNDQsNyBAQCBzdGF0aWMgaW50IHZjYXBfZW5hYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAogCQkJaWYgKGVycikKIAkJCQlicmVhazsKIAkJfQotCQltdXRleF91bmxvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX3VubG9jayhhZG1pbik7CiAJCWlmIChlcnIpCiAJCQlicmVhazsKIAl9CkBAIC0zMDc0LDcgJiM0MzszMDg0LDcgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiAJCQljb250aW51ZTsKIAogCQkvKiBGb3VuZCB0aGUgYWRtaW4sIG5vdyBmaW5kIHRoZSBydWxlcyBvbiB0aGUgY2hhaW4gKi8KLQkJbXV0ZXhfbG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfbG9jayhhZG1pbik7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmksICZhbXA7YWRtaW4tJmd0O3J1bGVzLCBsaXN0KSB7CiAJCQlpZiAocmktJmd0O2RhdGEudmNhcF9jaGFpbl9pZCAhPSBjaGFpbikKIAkJCQljb250aW51ZTsKQEAgLTMwODksNyAmIzQzOzMwOTksNyBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwKIAkJCWlmIChlcnIpCiAJCQkJYnJlYWs7CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwkJdmNhcF91bmxvY2soYWRtaW4pOwogCQlpZiAoZXJyKQogCQkJYnJlYWs7CiAJfQpAQCAtMzEzMyw5ICYjNDM7MzE0Myw5IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCWVwb3J0LSZndDtjb29raWUgPSBjb29raWU7CiAJZXBvcnQtJmd0O3NyY19jaWQgPSBzcmNfY2lkOwogCWVwb3J0LSZndDtkc3RfY2lkID0gZHN0X2NpZDsKLQltdXRleF9sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2soYWRtaW4pOwogCWxpc3RfYWRkX3RhaWwoJmFtcDtlcG9ydC0mZ3Q7bGlzdCwgJmFtcDthZG1pbi0mZ3Q7ZW5hYmxlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhhZG1pbik7CiAKIAlpZiAodmNhcF9wYXRoX2V4aXN0KHZjdHJsLCBuZGV2LCBzcmNfY2lkKSkgewogCQkvKiBFbmFibGUgY2hhaW5lZCBsb29rdXBzICovCkBAIC0zMTg1LDkgJiM0MzszMTk1LDkgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlkc3RfY2lkID0gdmNhcF9nZXRfbmV4dF9jaGFpbih2Y3RybCwgbmRldiwgZHN0X2NpZCk7CiAJfQogCi0JbXV0ZXhfbG9jaygmYW1wO2ZvdW5kLSZndDtsb2NrKTsKJiM0MzsJdmNhcF9sb2NrKGZvdW5kKTsKIAlsaXN0X2RlbCgmYW1wO2Vwb3J0LSZndDtsaXN0KTsKLQltdXRleF91bmxvY2soJmFtcDtmb3VuZC0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKGZvdW5kKTsKIAlrZnJlZShlcG9ydCk7CiAJcmV0dXJuIDA7CiB9CkBAIC0zMjcwLDkgJiM0MzszMjgwLDkgQEAgaW50IHZjYXBfcnVsZV9zZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCW11dGV4X2xvY2soJmFtcDtyaS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2socmktJmd0O2FkbWluKTsKIAllcnIgPSB2Y2FwX3dyaXRlX2NvdW50ZXIocmksIGN0cik7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cmktJmd0O2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2socmktJmd0O2FkbWluKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0zMjkxLDkgJiM0MzszMzAxLDkgQEAgaW50IHZjYXBfcnVsZV9nZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCW11dGV4X2xvY2soJmFtcDtyaS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2socmktJmd0O2FkbWluKTsKIAllcnIgPSB2Y2FwX3JlYWRfY291bnRlcihyaSwgY3RyKTsKLQltdXRleF91bmxvY2soJmFtcDtyaS0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX3VubG9jayhyaS0mZ3Q7YWRtaW4pOwogCiAJcmV0dXJuIGVycjsKIH0KQEAgLTMzOTUsNyAmIzQzOzM0MDUsNyBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiAKIAkvKiBJdGVyYXRlIGFsbCBydWxlcyBpbiBlYWNoIFZDQVAgaW5zdGFuY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGFkbWluLCAmYW1wO3ZjdHJsLSZndDtsaXN0LCBsaXN0KSB7Ci0JCW11dGV4X2xvY2soJmFtcDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CQl2Y2FwX2xvY2soYWRtaW4pOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCAmYW1wO2FkbWluLSZndDtydWxlcywgbGlzdCkgewogCQkJaWYgKHJpLSZndDtkYXRhLmNvb2tpZSAhPSBjb29raWUpCiAJCQkJY29udGludWU7CkBAIC0zNDEyLDEyICYjNDM7MzQyMiwxMiBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiAJCQlpZiAoZXJyKQogCQkJCWdvdG8gdW5sb2NrOwogCQl9Ci0JCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJCXZjYXBfdW5sb2NrKGFkbWluKTsKIAl9CiAJcmV0dXJuIGVycjsKIAogdW5sb2NrOgotCW11dGV4X3VubG9jaygmYW1wO2FkbWluLSZndDtsb2NrKTsKJiM0MzsJdmNhcF91bmxvY2soYWRtaW4pOwogCXJldHVybiBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaAppbmRleCA2MDY5YWQ5NWMyN2U5My4uMDViNGIwMmU1OWVmNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaApAQCAtMTY0LDcgJiM0MzsxNjQsNyBAQCBzdHJ1Y3QgdmNhcF9hZG1pbiB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAvKiBmb3IgaW5zZXJ0aW9uIGluIHZjYXBfY29udHJvbCAqLwogCXN0cnVjdCBsaXN0X2hlYWQgcnVsZXM7IC8qIGxpc3Qgb2YgcnVsZXMgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGVuYWJsZWQ7IC8qIGxpc3Qgb2YgZW5hYmxlZCBwb3J0cyAqLwotCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBjb250cm9sIGFjY2VzcyB0byBydWxlcyAqLwomIzQzOwlzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybDsgLyogdGhlIGNvbnRyb2wgaW5zdGFuY2Ugb3duaW5nIHRoaXMgdmNhcCAqLwogCWVudW0gdmNhcF90eXBlIHZ0eXBlOyAgLyogdHlwZSBvZiB2Y2FwICovCiAJaW50IHZpbnN0OyAvKiBpbnN0YW5jZSBudW1iZXIgd2l0aGluIHRoZSBzYW1lIHR5cGUgKi8KIAlpbnQgZmlyc3RfY2lkOyAvKiBmaXJzdCBjaGFpbiBpZCBpbiB0aGlzIHZjYXAgKi8KQEAgLTI3NSw2ICYjNDM7Mjc1LDcgQEAgc3RydWN0IHZjYXBfY29udHJvbCB7CiAJY29uc3Qgc3RydWN0IHZjYXBfaW5mbyAqdmNhcHM7IC8qIGNsaWVudCBzdXBwbGllZCB2Y2FwIG1vZGVscyAqLwogCWNvbnN0IHN0cnVjdCB2Y2FwX3N0YXRpc3RpY3MgKnN0YXRzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBzdGF0cyAqLwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgLyogbGlzdCBvZiB2Y2FwIGluc3RhbmNlcyAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggbG9jazsgLyogc2VyaWFsaXplIGFjY2VzcyB0byBhbGwgdmNhcCBpbnN0YW5jZXMgKi8KIH07CiAKICNlbmRpZiAvKiBfX1ZDQVBfQVBJX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYwppbmRleCA1OWJmYmRhMjliYjNkYS4uZTBjNjVjN2FiMjNlMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMKQEAgLTQxMCw5ICYjNDM7NDEwLDkgQEAgc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAl9OwogCWludCByZXQ7CiAKLQltdXRleF9sb2NrKCZhbXA7aW5mby0mZ3Q7YWRtaW4tJmd0O2xvY2spOwomIzQzOwl2Y2FwX2xvY2soaW5mby0mZ3Q7YWRtaW4pOwogCXJldCA9IHZjYXBfc2hvd19hZG1pbihpbmZvLSZndDt2Y3RybCwgaW5mby0mZ3Q7YWRtaW4sICZhbXA7b3V0KTsKLQltdXRleF91bmxvY2soJmFtcDtpbmZvLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKGluZm8tJmd0O2FkbWluKTsKIAlyZXR1cm4gcmV0OwogfQogREVGSU5FX1NIT1dfQVRUUklCVVRFKHZjYXBfZGVidWdmcyk7CkBAIC00MjcsOSAmIzQzOzQyNyw5IEBAIHN0YXRpYyBpbnQgdmNhcF9yYXdfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCX07CiAJaW50IHJldDsKIAotCW11dGV4X2xvY2soJmFtcDtpbmZvLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfbG9jayhpbmZvLSZndDthZG1pbik7CiAJcmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLSZndDt2Y3RybCwgaW5mby0mZ3Q7YWRtaW4sICZhbXA7b3V0KTsKLQltdXRleF91bmxvY2soJmFtcDtpbmZvLSZndDthZG1pbi0mZ3Q7bG9jayk7CiYjNDM7CXZjYXBfdW5sb2NrKGluZm8tJmd0O2FkbWluKTsKIAlyZXR1cm4gcmV0OwogfQogREVGSU5FX1NIT1dfQVRUUklCVVRFKHZjYXBfcmF3X2RlYnVnZnMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jCmluZGV4IDljOWQzODA0MjEyNTVkLi5hYzJhM2I4YzRmMzIxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuYwpAQCAtMjQzLDEwICYjNDM7MjQzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiB7CiAJLyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi8KIAlJTklUX0xJU1RfSEVBRCgmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiYjNDM7CW11dGV4X2luaXQoJmFtcDt0ZXN0X3ZjdHJsLmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O3J1bGVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtlbmFibGVkKTsKLQltdXRleF9pbml0KCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwlhZG1pbi0mZ3Q7dmN0cmwgPSAmYW1wO3Rlc3RfdmN0cmw7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2FkbWluLSZndDtsaXN0LCAmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiAJbWVtc2V0KHRlc3RfdXBkYXRlYWRkciwgMCwgc2l6ZW9mKHRlc3RfdXBkYXRlYWRkcikpOwogCXRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYwppbmRleCBjZTI2Y2NiZGNjZGY5My4uODNkZTM4NGQzZTNiZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYwpAQCAtMjMzLDEwICYjNDM7MjMzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pCiB7CiAJLyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi8KIAlJTklUX0xJU1RfSEVBRCgmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiYjNDM7CW11dGV4X2luaXQoJmFtcDt0ZXN0X3ZjdHJsLmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWRtaW4tJmd0O3J1bGVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FkbWluLSZndDtlbmFibGVkKTsKLQltdXRleF9pbml0KCZhbXA7YWRtaW4tJmd0O2xvY2spOwomIzQzOwlhZG1pbi0mZ3Q7dmN0cmwgPSAmYW1wO3Rlc3RfdmN0cmw7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2FkbWluLSZndDtsaXN0LCAmYW1wO3Rlc3RfdmN0cmwubGlzdCk7CiAJbWVtc2V0KHRlc3RfdXBkYXRlYWRkciwgMCwgc2l6ZW9mKHRlc3RfdXBkYXRlYWRkcikpOwogCXRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgKaW5kZXggODQ0YmRmNmI1ZjQ1MDIuLmI0MDU3ZmJlM2QxODhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oCkBAIC01MCw2ICYjNDM7NTAsOSBAQCBzdHJ1Y3QgdmNhcF9zdHJlYW1faXRlciB7CiAKIC8qIENoZWNrIHRoYXQgdGhlIGNvbnRyb2wgaGFzIGEgdmFsaWQgc2V0IG9mIGNhbGxiYWNrcyAqLwogaW50IHZjYXBfYXBpX2NoZWNrKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwpOwomIzQzOy8qIFNlcmlhbGl6ZSBhY2Nlc3MgdG8gdGhlIHZjYXAgaW5zdGFuY2VzIG9mIGEgY29udHJvbCAqLwomIzQzO3ZvaWQgdmNhcF9sb2NrKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbik7CiYjNDM7dm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pOwogLyogRXJhc2UgdGhlIFZDQVAgY2FjaGUgYXJlYSB1c2VkIG9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyAqLwogdm9pZCB2Y2FwX2VyYXNlX2NhY2hlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODUzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFZDQVAgRHJpdmVyIExvY2tpbmcgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIGxvY2tpbmcgbWVjaGFuaXNtIHdpdGhpbiB0aGUgTWljcm9jaGlwIFZDQVAgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHNoaWZ0aW5nIHRoZSBsb2NrIGZyb20gdGhlIGB2Y2FwX2FkbWluYCBzdHJ1Y3R1cmUgb3ZlciB0byB0aGUgYHZjYXBfY29udHJvbGAgc3RydWN0dXJlLiBUaGUgZ29hbCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0byBzZXJpYWxpemUgYWNjZXNzIGFjcm9zcyBhbGwgaW5zdGFuY2VzIG9mIHRoZSBWQ0FQLiBTb3VuZHMgbGlrZSBhIGdvb2QgbW92ZSB0byBjZW50cmFsaXplIHRoZSBsb2NraW5nLCBpZiBpdCB3b3Jrcy4KCkkgc2VlIGl0IHRvdWNoZXMgYSBwcmV0dHkgYnJvYWQgc3dhdGggb2YgZmlsZXM6IGBsYW45NjZ4X3ZjYXBfaW1wbC5jYCwgYHNwYXJ4NV92Y2FwX2ltcGwuY2AsIGB2Y2FwX2FwaS5jYCwgYC5oYCBmaWxlcywgYW5kIGV2ZW4gc29tZSBkZWJ1Z2ZzIGFuZCBLVW5pdCByZWxhdGVkIGNvZGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBhIGZhaXJseSBpbXBhY3RmdWwgY2hhbmdlLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyLgoKSG9sZCBvbi4uLiBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgYmVpbmcgYSBsb2NraW5nIGNoYW5nZSBhbmQgdGhlIGZhY3QgdGhpcyBpcyBhIG5ldHdvcmsgZHJpdmVyLCBhIGtleSBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZC4gSXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNaWNyb2NoaXAmIzM5O3MgU3Bhcng1IGFuZCBMQU45NjZ4IGFyZSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaCBpbXBsZW1lbnRhdGlvbnMsIHJpZ2h0PyBTbywgdW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZW11bGF0b3IgYnVpbHQgZm9yIHRoZXNlIGRldmljZXMsIHRoaXMgZHJpdmVyIHNob3VsZCBiZSBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQuIE1vc3Qgb2YgdGhlc2Ugc3dpdGNoZGV2IGRyaXZlcnMgSSYjMzk7dmUgd29ya2VkIHdpdGggYXJlIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgaGFyZHdhcmUgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGV4cGxpY2l0IHNvZnR3YXJlIGVtdWxhdGlvbiBsYXllciwgbGlrZSB3aGF0IG5ldGRldnNpbSBwcm92aWRlcyAoYnV0IHRoaXMgaXNuJiMzOTt0IHRoYXQga2luZCBvZiBnZW5lcmljIGRyaXZlcikuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBydW4gYSBxdWljayBzZWFyY2ggZm9yIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgd2l0aGluIHRoZSBrZXJuZWwgdG8gY29uZmlybSB0aGF0IHRoZXNlIGRldmljZXMgYXJlIGluZGVlZCBoYXJkd2FyZS1zcGVjaWZpYy4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMgSSYjMzk7bSBvdmVybG9va2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgKFNQQVJYNV9TV0lUQ0h8TEFOOTY2WF9TV0lUQ0gpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6MTpjb25maWcgTEFOOTY2WF9TV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0xhbjk2Nnggc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzoxOmNvbmZpZyBTUEFSWDVfU1dJVENIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NwYXJ4NSBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBLY29uZmlnIGZvciBMQU45NjZYIGFuZCBTUEFSWDUgU3dpdGNoZXMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIE15IGZpcnN0IGltcHVsc2UgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIHRoZSBMQU45NjZYIGFuZCBTUEFSWDUgc3dpdGNoZXMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlc2Ugc3BlY2lmaWMgZGV2aWNlcy4gVGhlIGdvYWwgaGVyZSBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGZpbmUtZ3JhaW5lZCBkZXRhaWxzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBkaXNjcmVwYW5jaWVzIGluIGhvdyB0aGV5JiMzOTtyZSBleHBvc2VkIGluIHRoZSBidWlsZCBzeXN0ZW0uIEFyZSB0aGVyZSBmZWF0dXJlIGZsYWdzIHRoYXQgbWF5IGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3Igb25lIGJ1dCBub3QgdGhlIG90aGVyPyBBcmUgdGhlcmUgaGFyZHdhcmUgb3Igb3RoZXIgc29mdHdhcmUgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHkgb24gYW55IG90aGVyIGRyaXZlcnMgb3IgaGFyZHdhcmUgY29tcG9uZW50cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBhbHNvIHdhbnQgdG8gaWRlbnRpZnkgYW55IGV4aXN0aW5nIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5jZXMgdGhhdCBtaWdodCBtYW5pZmVzdCB0aGVtc2VsdmVzIGluIHRoZSBjb25maWd1cmF0aW9uIG1lbnVzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHBvcnRhYmlsaXR5IGFuZCBtYWtpbmcgc3VyZSB0aGF0IHRoZSBzZXR0aW5ncyBhcmUgaW50dWl0aXZlIGFuZCBoYXZlIGxvZ2ljYWwgZGVmYXVsdHMgZm9yIGJvdGggc3dpdGNoIGZhbWlsaWVzLiBUaGVyZSB3aWxsIGJlIGxvdHMgb2YgZGV0YWlscyBmb3IgdGhlc2Ugc3BlY2lmaWMgc3dpdGNoZXMgYW5kIGlmIEkgZmluZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBhdCB0aGlzIHN0YWdlLCBpdCB3aWxsIHNhdmUgYSBsb3Qgb2YgcGFpbiBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0xhbjk2Nnggc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzozOlx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6NTpcdGRlcGVuZHMgb24gT0ZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6NjpcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOC1cdHNlbGVjdCBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xNT1jb25maWcgTEFOOTY2WF9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTYtXHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6MTc6XHRkZXBlbmRzIG9uIExBTjk2NlhfU1dJVENIIFx1MDAyNlx1MDAyNiBEQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTgtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDg3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlNQQVJYNV9TV0lUQ0ggSW5xdWlyeSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYFNQQVJYNV9TV0lUQ0hgLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIGRldGVybWluZSAqd2h5KiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzcGVjaWZpYyB2YXJpYWJsZSBvciBtb2R1bGUgcmlnaHQgbm93LiBCYXNlZCBvbiBteSBleGlzdGluZyBrbm93bGVkZ2UgYW5kIGNvbnRleHQsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgcmVsZXZhbnQgdG8gYSBzcGVjaWZpYyBwcm9ibGVtIG9yIGFuYWx5c2lzIEkmIzM5O20gY3VycmVudGx5IGRlYWxpbmcgd2l0aC4gVGhlIGZvY3VzIG9uICYjMzQ7Y2hlY2tpbmcmIzM0OyBpbXBsaWVzIEkmIzM5O20gZWl0aGVyIHZlcmlmeWluZyBpdHMgY3VycmVudCBzdGF0ZSwgaXRzIGJlaGF2aW9yIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgb3IgcGVyaGFwcyB0cm91Ymxlc2hvb3RpbmcgYW4gaXNzdWUgcmVsYXRlZCB0byBpdC4gSSB3aWxsIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgaXQgbWVldHMgdGhlIGV4cGVjdGF0aW9ucyBnaXZlbiB0aGUgY3VycmVudCBzaXR1YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZSByZXN1bHQgb2YgdGhpcyBjaGVjayBuZWNlc3NpdGF0ZXMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9mIHJlbGF0ZWQgY29tcG9uZW50cyBvciBzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9MT1jb25maWcgU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTcGFyeDUgc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjM6XHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo1Olx0ZGVwZW5kcyBvbiBPRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjY6XHRkZXBlbmRzIG9uIEFSQ0hfU1BBUlg1IHx8IEFSQ0hfTEFOOTY5WCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTktXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xNz1jb25maWcgU1BBUlg1X0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTIwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtMYW45Njl4IHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVx0c2VsZWN0IFBBR0VfUE9PTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjMwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gQ2hhbGxlbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgZGVwZW5kZW5jeSBvbiBgSEFTX0lPTUVNYCBhbmQgRGV2aWNlIFRyZWUgKGBPRmApLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGVzZSBhcyBoYXJkd2FyZSBkcml2ZXIgZmxhZ3MuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gSSBldmVuIHRvdWNoIHRoaXMgY29kZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8mIzM0OyBUeXBpY2FsbHksIGRyaXZlcnMgdGhhdCB1c2UgRGV2aWNlIFRyZWUgb3IgUENJIHByb2JpbmcgYW5kIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChgSU9NRU1gKSBhcmUgcHJldHR5IGxvY2tlZCBkb3duLiBZb3UmIzM5O2QgbmVlZCBhIHZlcnkgc3BlY2lmaWMgZW11bGF0b3IgZm9yIHRoZSBoYXJkd2FyZSAobGlrZSBhIFBDSSBkZXZpY2UgZW11bGF0b3IpIG9yLCBtYXliZSwgdmlydHVhbCBkcml2ZXIgaW1wbGVtZW50YXRpb25zIHRvIGhhdmUgYW55IGNoYW5jZS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGB2Y2FwX2FwaV9rdW5pdC5jYCBhbmQgYHZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY2AuLi4gdGhvc2UgYXJlIEtVbml0IHRlc3RzISBUaGF0IGNoYW5nZXMgZXZlcnl0aGluZy4gS1VuaXQgdGVzdHMgYXJlICpkZXNpZ25lZCogdG8gcnVuIHdpdGhpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBLVW5pdCB0ZXN0cyBhY3R1YWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgcGFydHMgb2YgdGhlIGNvZGUuIElmIHRoZXkgZG8sIGFuZCBpZiBJIGNhbiBnZXQgdGhlbSBydW5uaW5nLCBJIG1pZ2h0IGhhdmUgYSBzb2xpZCwgdmlydHVhbGl6ZWQgdGVzdGluZyBmcmFtZXdvcmsuIFRoaXMgY291bGQgc2F2ZSBtZSBhIGh1Z2UgaGVhZGFjaGUgb2YgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIGlmIHRoZSBLVW5pdCB0ZXN0cyBhcmUgYSB2aWFibGUgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKlZDQVAuKktVTklUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWc9OD1jb25maWcgVkNBUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnOjM5OmNvbmZpZyBWQ0FQX0tVTklUX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIFZDQVAgbGlicmFyeVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzk2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGVjb25zdHJ1Y3RpbmcgYFZDQVBfS1VOSVRfVEVTVGAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSBgVkNBUF9LVU5JVF9URVNUYCByZWxpZXMgb24uIEl0JiMzOTtzIGEga2V5IHZhcmlhYmxlLCBhbmQgSSBjYW4mIzM5O3QganVzdCBvcGVyYXRlIGluIGEgdmFjdXVtLiBJdCYjMzk7cyBub3QgZW5vdWdoIHRvICprbm93KiBpdCBleGlzdHMsIEkgbmVlZCB0byBrbm93ICp3aGF0KiBtYWtlcyBpdCB0aWNrLiBXaGF0IG90aGVyIGNvbXBvbmVudHMgb3IgY29uZmlndXJhdGlvbnMgYXJlIHRpZWQgdG8gaXRzIHVzZT8gV2hhdCBpbmZyYXN0cnVjdHVyZSBlbGVtZW50cyBpcyBpdCBsZXZlcmFnaW5nPyBJcyBpdCByZWxhdGVkIHRvIHRoZSBrZXJuZWwsIG9yIHNvbWV0aGluZyBicm9hZGVyPyBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgc28gdGhhdCBJIGNhbiBhbnRpY2lwYXRlIGhvdyBpdCBiZWhhdmVzIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBlbnZpcm9ubWVudC1zcGVjaWZpYywgcmVsYXRlZCB0byBhIHNwZWNpZmljIHRlc3RpbmcgZnJhbWV3b3JrLCBvciBzb21ldGhpbmcgZW50aXJlbHkgbW9yZSBleG90aWM/IEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIHRvIGJlIGNvbmZpZGVudCBpbiBob3cgaXQmIzM5O3MgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnPTM5PWNvbmZpZyBWQ0FQX0tVTklUX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIFZDQVAgbGlicmFyeVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnOjQxOlx0ZGVwZW5kcyBvbiBLVU5JVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZzo0MjpcdGRlcGVuZHMgb24gS1VOSVQ9eSBcdTAwMjZcdTAwMjYgVkNBUD15IFx1MDAyNlx1MDAyNiB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnLTQzLVx0c2VsZWN0IERFQlVHX0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjA4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZDQVBfS1VOSVRfVEVTVCBhbmQgdGhlIEZ1enppbmcgQ2hhbGxlbmdlKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgYFZDQVBfS1VOSVRfVEVTVGAgZmxhZywgd2hpY2ggc3VnZ2VzdHMgc29tZSBpbnRlZ3JhdGlvbiB3aXRoIEtVbml0IHRlc3RzLiBCdXQgaGVyZSYjMzk7cyB0aGUgcnViOiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBpc24mIzM5O3QgZGVzaWduZWQgdG8gZGlyZWN0bHkgZnV6eiBLVW5pdCB0ZXN0cy4gSXQgZm9jdXNlcyBvbiBzeXN0ZW0gY2FsbHMsIG5ldHdvcmsgcGFja2V0cywgYW5kIHRoZSBsaWtlLCBub3QgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmLiBUaGUgdGVzdHMgcnVuIGR1cmluZyBib290IG9yIG1vZHVsZSBsb2FkLCBhbmQgU3l6a2FsbGVyIG1pZ2h0IGV4ZWN1dGUgdGhlbSAqb25jZSogZHVyaW5nIHRoYXQgcHJvY2VzcywgYnV0IHRoYXQmIzM5O3Mgbm90IHdoYXQgSSYjMzk7ZCBjYWxsIGVmZmVjdGl2ZSBmdXp6aW5nLiBXZSB3b3VsZG4mIzM5O3QgYmUgYWJsZSB0byBjYXRjaCB0aGUgZWRnZS1jYXNlIGJ1Z3MgZm9yIGEgdGVzdCBydW5uaW5nIG9ubHkgb25jZS4KClNvLCBpZiB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIG9ubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhvc2UgS1VuaXQgdGVzdHMsIGlzIGl0IGV2ZW4gd29ydGggcHVyc3Vpbmcgd2l0aCBTeXprYWxsZXI/IFN5emthbGxlciYjMzk7cyBzdHJlbmd0aCBsaWVzIGluIGl0cyBhYmlsaXR5IHRvIGdlbmVyYXRlIHZhcmllZCBhbmQgY29tcGxleCBpbnB1dHMsIHNvbWV0aGluZyB0aGF0JiMzOTtzIG5vdCB0YWlsb3JlZCB0byB0aGUgS1VuaXQgdGVzdCBleGVjdXRpb24gbW9kZWwuIFdlIGFyZSBtaXNzaW5nIG9wcG9ydHVuaXRpZXMgZm9yIGVkZ2UtY2FzZSBidWdzLiBJdCBmZWVscyBsaWtlIGFuIGluZWZmaWNpZW50IHVzZSBvZiByZXNvdXJjZXMsIHVubGVzcyB3ZSBjYW4gc29tZWhvdyBnZXQgdGhpcyBBUEkgZXhwb3NlZCB0aHJvdWdoIGFub3RoZXIgY2hhbm5lbC4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGhvdyBjYW4gdGhlIFZDQVAgQVBJIGJlIGFjY2Vzc2VkPyBJcyBpdCBleHBvc2VkIHRvIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMsIG9yIGlzIGl0IGV4Y2x1c2l2ZWx5IHVzZWQgaW50ZXJuYWxseSBieSBoYXJkd2FyZSBkcml2ZXJzPyBGaW5kaW5nIG91dCB0aGF0IGFuc3dlciBpcyBjcnVjaWFsIGZvciBkZWNpZGluZyBpZiB0aGlzIGlzIGV2ZW4gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnZjYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzMzPXZjYXBfZmluZF9rZXlzdHJlYW1fa2V5c2V0cyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM2MTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZpbmRfa2V5c3RyZWFtX2tleXNldHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNjY9aW50IHZjYXBfYWRkcl9rZXlzZXRzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzkyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzkzOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkcl9rZXlzZXRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9NDA3PWNvbnN0IHN0cnVjdCB2Y2FwX3NldCAqdmNhcF9rZXlmaWVsZHNldChzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTQyMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjQyMTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2tleWZpZWxkc2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtNDIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9ODg0PWludCB2Y2FwX3NldF9ydWxlX3NldF9rZXlzZXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkwMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjkwMTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF9ydWxlX3NldF9rZXlzZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz05MDQ9aW50IHZjYXBfc2V0X3J1bGVfc2V0X2FjdGlvbnNldChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtOTIwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6OTIxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfc2V0X3J1bGVfc2V0X2FjdGlvbnNldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTk2Nj1pbnQgdmNhcF9sb29rdXBfcnVsZV9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHU2NCBjb29raWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05ODYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzo5ODc6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9sb29rdXBfcnVsZV9ieV9jb29raWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz05OTA9aW50IHZjYXBfYWRtaW5fcnVsZV9jb3VudChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sIGludCBjaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xMDA1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTAwNjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkbWluX3J1bGVfY291bnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xMDA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTYxNT1pbnQgdmNhcF9jaGFpbl9pZF90b19sb29rdXAoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluLCBpbnQgY3VyX2NpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2MjgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNjI5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfY2hhaW5faWRfdG9fbG9va3VwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTYzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE2MzI9c3RydWN0IHZjYXBfYWRtaW4gKnZjYXBfZmluZF9hZG1pbihzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgaW50IGNpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2NDQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNjQ1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZmluZF9hZG1pbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xNjY5PWludCB2Y2FwX2NoYWluX29mZnNldChzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgaW50IGZyb21fY2lkLCBpbnQgdG9fY2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTY4MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE2ODE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9jaGFpbl9vZmZzZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTY4Nz1ib29sIHZjYXBfaXNfbmV4dF9sb29rdXAoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBzcmNfY2lkLCBpbnQgZHN0X2NpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE3MDYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNzA3OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfaXNfbmV4dF9sb29rdXApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xNzA4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTc4Nz1ib29sIHZjYXBfa2V5c2V0X2xpc3RfYWRkKHN0cnVjdCB2Y2FwX2tleXNldF9saXN0ICprZXlzZXRsaXN0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgwMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE4MDE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9rZXlzZXRfbGlzdF9hZGQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xODAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTgyMD1jb25zdCBjaGFyICp2Y2FwX2tleXNldF9uYW1lKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE4MjU6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9rZXlzZXRfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xODI4PWNvbnN0IGNoYXIgKnZjYXBfa2V5ZmllbGRfbmFtZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MzItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxODMzOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfa2V5ZmllbGRfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xOTE4PWJvb2wgdmNhcF9ydWxlX2ZpbmRfa2V5c2V0cyhzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTkyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjE5MjU6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2ZpbmRfa2V5c2V0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE5MjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xOTk3PWludCB2Y2FwX3ZhbF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUxNiBsM19wcm90bylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIwNzUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMDc2OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfdmFsX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMDc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjI2OD1pbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjIzMTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMzIxPXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzOTEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzkyOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWxsb2NfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMzk1PXZvaWQgdmNhcF9mcmVlX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0MTItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDEzOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZnJlZV9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0NDQ9c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2MS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI0NjI6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0NjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNDY1PWludCB2Y2FwX21vZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDk4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ5OTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX21vZF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjUwMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI1NDc9aW50IHZjYXBfZGVsX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTg1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjU4NjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjU4Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI1ODk9aW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNjE0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjYxNTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI2MTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNjMxPWNvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICp2Y2FwX2xvb2t1cF9rZXlmaWVsZChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjY0NS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI2NDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9sb29rdXBfa2V5ZmllbGQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNjQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjczMT1pbnQgdmNhcF9ydWxlX2FkZF9rZXlfYml0KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjczOC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3Mzk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfYml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3NDI9aW50IHZjYXBfcnVsZV9hZGRfa2V5X3UzMihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNzUxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3UzMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNzU0PWludCB2Y2FwX3J1bGVfYWRkX2tleV91NDgoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzYxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjc2MjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV91NDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc2NT1pbnQgdmNhcF9ydWxlX2FkZF9rZXlfdTcyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3NzM6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfdTcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3NzY9aW50IHZjYXBfcnVsZV9hZGRfa2V5X3UxMjgoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzgzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjc4NDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV91MTI4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc4Nj1pbnQgdmNhcF9ydWxlX2dldF9rZXlfdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc5OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MDA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2dldF9rZXlfdTMyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjgwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4MDQ9dmNhcF9maW5kX2FjdGlvbmZpZWxkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9hY3Rpb25fZmllbGQgYWN0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjgxMy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9maW5kX2FjdGlvbmZpZWxkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjgxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4OTc9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX2JpdChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkwNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fYml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkwNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MDk9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3UzMihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkxNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTMyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkxOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MjE9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3U3MihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkyOS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MzA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjkzMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NDc9dm9pZCB2Y2FwX25ldGJ5dGVzX2NvcHkodTggKmRzdCwgdTggKnNyYywgaW50IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjk1My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5NTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9uZXRieXRlc19jb3B5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjk1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NTc9dm9pZCB2Y2FwX3NldF90Y19leHRlcnIoc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmZjbywgc3RydWN0IHZjYXBfcnVsZSAqdnJ1bGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTgzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjk4NDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF90Y19leHRlcnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTg1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzIwNj1pbnQgdmNhcF9lbmFibGVfbG9va3VwcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjM2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2VuYWJsZV9sb29rdXBzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzIzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMyNDA9Ym9vbCB2Y2FwX2lzX2xhc3RfY2hhaW4oc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBjaWQsIGJvb2wgaW5ncmVzcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyNTgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozMjU5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfaXNfbGFzdF9jaGFpbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjYyPXZvaWQgdmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUzMiBjb3VudGVyX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzI2Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMyNjg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzI2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzI3MD1pbnQgdmNhcF9ydWxlX3NldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyODgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozMjg5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9zZXRfY291bnRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMyOTE9aW50IHZjYXBfcnVsZV9nZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzA5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzMxMDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfZ2V0X2NvdW50ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzM5ND1pbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDMyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQzMzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNDUwPWludCB2Y2FwX3J1bGVfbW9kX2tleV91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDU4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQ1OTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfbW9kX2tleV91MzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDYwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzQ2Mj1pbnQgdmNhcF9ydWxlX3JlbV9rZXkoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDc3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQ3ODpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfcmVtX2tleSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0NzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNDk1PWludCB2Y2FwX3J1bGVfbW9kX2FjdGlvbl91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1MDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNTA0OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9tb2RfYWN0aW9uX3UzMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1MDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNTA3PWludCB2Y2FwX2ZpbHRlcl9ydWxlX2tleXMoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NDktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNTUwOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZmlsdGVyX3J1bGVfa2V5cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNTU0PXZjYXBfc2VsZWN0X21pbl9ydWxlX2tleXNldChzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NzItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNTczOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfc2VsZWN0X21pbl9ydWxlX2tleXNldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zNTc2PXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfY29weV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKmVydWxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzYxNi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM2MTc6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9jb3B5X3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNjE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZDQVAgQVBJIFVzYWdlIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBWQ0FQIEFQSSBoZXJlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoYXQgaXQmIzM5O3MgY2xlYXJseSBiZWluZyB1dGlsaXplZCBieSB0aGUgaGFyZHdhcmUgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZXN0YWJsaXNoZWQgZmFjdC4gQnV0IG15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGJpZ2dlciBxdWVzdGlvbjogYXJlIHRoZXNlIHRoZSAqb25seSogZHJpdmVycyBsZXZlcmFnaW5nIHRoZSBWQ0FQIEFQSSB3aXRoaW4gb3VyIGN1cnJlbnQgc3lzdGVtPyBJIG5lZWQgdG8ga25vdyBpZiB0aGUgZGVwZW5kZW5jeSBleHRlbmRzIGJleW9uZCB0aGlzIGltbWVkaWF0ZSBwYWlyLiBVbmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIFZDQVAgQVBJJiMzOTtzIHVzZSBpcyBjcnVjaWFsIGZvciBhbnkgZnV0dXJlIHJlZmFjdG9yaW5nLCBvcHRpbWl6YXRpb24sIG9yIGV2ZW4gZGVidWdnaW5nIGVmZm9ydHMuIFdlIGhhdmUgdG8gaWRlbnRpZnkgZXZlcnkgY29uc3VtZXIuIElmIGl0JiMzOTtzIG1vcmUgd2lkZWx5IHVzZWQgdGhhbiBJIGN1cnJlbnRseSBiZWxpZXZlLCB0aGlzIG1heSBiZSBhIHN5c3RlbS1sZXZlbCBpc3N1ZSBhbmQgbm90IGNvbnRhaW5lZCB0byB0aGUgZHJpdmVycyB1c2luZyB0aGUgQVBJLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24gZm9vdHByaW50IGFjcm9zcyB0aGUgZW50aXJlIGRyaXZlciBlY29zeXN0ZW0uIFdoYXQgb3RoZXIgY29kZSBpcyBpbXBsaWNpdGx5IHJlbHlpbmcgb24gdGhlIFZDQVAgQVBJJiMzOTtzIGZ1bmN0aW9uYWxpdHk/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgYSBmZXcgb3RoZXIgcGxhY2VzIHRoYXQgbmVlZCBtb3JlIGF0dGVudGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmNhcF9hZGRfcnVsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jPTU0PXN0YXRpYyBpbnQgbGFuOTY2eF9wdHBfYWRkX3RyYXAoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYzo5NTpcdGVyciA9IHZjYXBfYWRkX3J1bGUodnJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jPTQ0Nz1zdGF0aWMgaW50IGxhbjk2NnhfdGNfZmxvd2VyX2FkZChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF90Y19mbG93ZXIuYzo1NTA6XHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTUxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYz00ODk9c3RhdGljIGludCBzcGFyeDVfdGNfYWRkX3J1bGVfY29weShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDAtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYzo1NDE6XHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTU0Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYz0xMTY3PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2Zsb3dlcl9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTEzMjMtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYzoxMzI0Olx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy0xMzI1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTIyNTc9c3RhdGljIHZvaWQgdmNhcF9ydWxlX3NldF9zdGF0ZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICpyaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjctLyogRW5jb2RlIGFuZCB3cml0ZSBhIHZhbGlkYXRlZCBydWxlIHRvIHRoZSBWQ0FQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjIyNjg6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjI2OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMzE3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjMxODpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkZF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaD0xNjc9aW50IHZjYXBfdmFsX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgdTE2IGwzX3Byb3RvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE2OC0vKiBBZGQgcnVsZSB0byBhIFZDQVAgaW5zdGFuY2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oOjE2OTppbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE3MC0vKiBEZWxldGUgcnVsZSBpbiBhIFZDQVAgaW5zdGFuY2UgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jPTI0Nz1zdGF0aWMgdm9pZCB0ZXN0X3ZjYXBfeG5fcnVsZV9jcmVhdG9yKHN0cnVjdCBrdW5pdCAqdGVzdCwgaW50IGNpZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMC1cdC8qIEFkZCBydWxlIHdpdGggd3JpdGUgY2FsbGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM6MzExOlx0cmV0ID0gdmNhcF9hZGRfcnVsZShydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMzEyLVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIDAsIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0xMzM0PXN0YXRpYyB2b2lkIHZjYXBfYXBpX2VuY29kZV9ydWxlX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMTQzNC1cdC8qIEFkZCBydWxlIHdpdGggd3JpdGUgY2FsbGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM6MTQzNTpcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTE0MzYtXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgcmV0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MzUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVkNBUCBBUEkgYW5kIEZ1enppbmcgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLiBUaGUgVkNBUCBBUEkgaXMgdXNlZCBieSB0aGUgYGxhbjk2NnhgIGFuZCBgc3Bhcng1YCBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoZXNlIGFyZSBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVycywgdGhleSBuZWVkIHNwZWNpZmljIGhhcmR3YXJlLCBsaWtlIElPTUVNIGFuZCBPRiwgYW5kIHRoYXQgYXV0b21hdGljYWxseSBtZWFucyB0aGV5IGNhbiYjMzk7dCBiZSBmdXp6ZWQgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXYWl0LCBjb3VsZCBLVW5pdCB0ZXN0cyBiZSB1c2VmdWwgaGVyZT8gSG9sZCBvbi4uLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgYWN0dWFsbHkgZnV6eiBLVW5pdCB0ZXN0cyBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEl0IG9ubHkgKnJ1bnMqIHRoZW0gYXQgYm9vdCwgd2hpY2ggaXNuJiMzOTt0IGZ1enppbmcsIGl0JiMzOTtzIGp1c3QgYSBzaW5nbGUgdGVzdC4gVGhhdCBkb2VzbiYjMzk7dCBoZWxwIG1lIG11Y2guCgpOb3cgSSByZW1lbWJlciB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGZvciBXb3J0aEZ1enppbmc9ZmFsc2UuIEl0IGxpc3RzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29kZSBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdywgYW5kIOKAkyBjcnVjaWFsbHkg4oCTIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBbmQgaGVyZSBpdCBpcyEgVGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBoYXJkd2FyZS1zcGVjaWZpYywgYW5kIHRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIHNvIHRoZSBjb2RlIHBhdGhzICphcmUqIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCBsb29rcyBsaWtlIGEgY2xlYXIgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4KCkJ1dCB3YWl04oCmIEkgYWx3YXlzIHdhbnQgdG8gYmUgdGhvcm91Z2guIEFyZSB0aGVyZSAqYW55KiBvdGhlciBkcml2ZXJzIHRoYXQgbWlnaHQgdXNlIFZDQVA/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgZHJpdmVycyB1c2luZyB0aGUgQVBJIGJlZm9yZSBJIGNvbXBsZXRlbHkgY29tbWl0IHRvIHRoYXQgY29uY2x1c2lvbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjYXBfYWRkX3J1bGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYz01ND1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2FkZF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM6OTU6XHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF90Y19mbG93ZXIuYz00NDc9c3RhdGljIGludCBsYW45NjZ4X3RjX2Zsb3dlcl9hZGQoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM6NTUwOlx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU1MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9NDg5PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2FkZF9ydWxlX2NvcHkoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtNTQwLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM6NTQxOlx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTE2Nz1zdGF0aWMgaW50IHNwYXJ4NV90Y19mbG93ZXJfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy0xMzIzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM6MTMyNDpcdGVyciA9IHZjYXBfYWRkX3J1bGUodnJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTMyNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMjU3PXN0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfc3RhdGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMjY3LS8qIEVuY29kZSBhbmQgd3JpdGUgYSB2YWxpZGF0ZWQgcnVsZSB0byB0aGUgVkNBUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMjY4OmludCB2Y2FwX2FkZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjIzMTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50Lmg9MTY3PWludCB2Y2FwX3ZhbF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUxNiBsM19wcm90byk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNjgtLyogQWRkIHJ1bGUgdG8gYSBWQ0FQIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNjk6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNzAtLyogRGVsZXRlIHJ1bGUgaW4gYSBWQ0FQIGluc3RhbmNlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0yNDc9c3RhdGljIHZvaWQgdGVzdF92Y2FwX3huX3J1bGVfY3JlYXRvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsIGludCBjaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0zMTAtXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jOjMxMTpcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMi1cdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAwLCByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM9MTMzND1zdGF0aWMgdm9pZCB2Y2FwX2FwaV9lbmNvZGVfcnVsZV90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTE0MzQtXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jOjE0MzU6XHRyZXQgPSB2Y2FwX2FkZF9ydWxlKHJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0xNDM2LVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIDAsIHJldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjMxCgkJCQkJCQlvdXRwdXQ6IDEwNwoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb246IE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIHRoZSBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBvbmx5IHRvdWNoaW5nIHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMsIGFuZCB0aGVpciBhc3NvY2lhdGVkIEtVbml0IHRlc3RzLiBUaGVzZSBhcmUgKnNwZWNpZmljYWxseSogaGFyZHdhcmUgZHJpdmVycyBmb3IgTWljcm9jaGlwIHN3aXRjaGVzLiBOb3csIEkga25vdyB0aGVzZSBpbnNpZGUgYW5kIG91dDsgeW91IGNhbiYjMzk7dCByZWFsaXN0aWNhbGx5IGV4ZXJjaXNlIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgd2l0aG91dCB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4gQW5kLCBmcmFua2x5LCB0aGF0IGxldmVsIG9mIGRldGFpbGVkIGVtdWxhdGlvbiAqZG9lc24mIzM5O3QqIGV4aXN0IGluIHN0YW5kYXJkIFFFTVUgZm9yIHRoZXNlIHBhcnRpY3VsYXIgc3dpdGNoZXMuIFRodXMsIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIHdoZW4gcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBUaGVyZWZvcmUsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBwb3NzaWJsZSB0byBmdXp6IHRoZSBjb2RlIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4gSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gaGFyZHdhcmUtc3BlY2lmaWMgc3dpdGNoIGRyaXZlcnMgZm9yIE1pY3JvY2hpcCYjMzk7cyBWQ0FQLCBMQU45NjZ4LCBhbmQgU3Bhcng1LCBhbmQgdGhlc2UgY29tcG9uZW50cyBhcmUgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTg6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MDYuNDIwNTY2ODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU0NDIzMzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGluIHRoZSBNaWNyb2NoaXAgVkNBUCAoVmVyc2F0aWxlIENvbnRlbnQtQXdhcmUgUHJvY2Vzc29yKSBBUEksIHdoaWNoIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgaGFyZHdhcmUtc3BlY2lmaWMgc3dpdGNoIGRyaXZlcnMgKGxhbjk2NnggYW5kIHNwYXJ4NSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSAoSU9NRU0sIE9GKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MDYuNDIwNTc1NTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTQ0NTAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3MGVkMmZmZWJiOTMzODA0NDE3MzUyZTRhMzJmYmQwODI1MDI3ZGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTg6NDA6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcXG5pbmRleCA3MmUzYjE4OWJhYzVhYy4uZWIyOGRmODBiMjgxOGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcXG5AQCAtNjAxLDcgKzYwMSw2IEBAIHN0YXRpYyB2b2lkIGxhbjk2NnhfdmNhcF9hZG1pbl9mcmVlKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcXG4gXFx0a2ZyZWUoYWRtaW4tXFx1MDAzZWNhY2hlLmtleXN0cmVhbSk7XFxuIFxcdGtmcmVlKGFkbWluLVxcdTAwM2VjYWNoZS5tYXNrc3RyZWFtKTtcXG4gXFx0a2ZyZWUoYWRtaW4tXFx1MDAzZWNhY2hlLmFjdGlvbnN0cmVhbSk7XFxuLVxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4gXFx0a2ZyZWUoYWRtaW4pO1xcbiB9XFxuIFxcbkBAIC02MTUsNyArNjE0LDcgQEAgbGFuOTY2eF92Y2FwX2FkbWluX2FsbG9jKHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLFxcbiBcXHRpZiAoIWFkbWluKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0YWRtaW4tXFx1MDAzZXZjdHJsID0gY3RybDtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VsaXN0KTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhZG1pbi1cXHUwMDNlZW5hYmxlZCk7XFxuQEAgLTcyMSw2ICs3MjAsNyBAQCBpbnQgbGFuOTY2eF92Y2FwX2luaXQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngpXFxuIFxcdGN0cmwtXFx1MDAzZW9wcyA9IFxcdTAwMjZsYW45NjZ4X3ZjYXBfb3BzO1xcbiBcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmN0cmwtXFx1MDAzZWxpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGxhbjk2NnhfdmNhcF9pbnN0X2NmZyk7ICsraSkge1xcbiBcXHRcXHRjZmcgPSBcXHUwMDI2bGFuOTY2eF92Y2FwX2luc3RfY2ZnW2ldO1xcbiBcXG5AQCAtNzgwLDUgKzc4MCw2IEBAIHZvaWQgbGFuOTY2eF92Y2FwX2RlaW5pdChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eClcXG4gXFx0XFx0bGFuOTY2eF92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pO1xcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4gXFx0a2ZyZWUoY3RybCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbmluZGV4IDk1YjkzZTQ2YTQxZGNlLi5jZjMzMmRlNmJmNzM2YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXFxuQEAgLTE5MzAsNyArMTkzMCw2IEBAIHN0YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxcbiB7XFxuIFxcdGlmICghYWRtaW4pXFxuIFxcdFxcdHJldHVybjtcXG4tXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbiBcXHRrZnJlZShhZG1pbi1cXHUwMDNlY2FjaGUua2V5c3RyZWFtKTtcXG4gXFx0a2ZyZWUoYWRtaW4tXFx1MDAzZWNhY2hlLm1hc2tzdHJlYW0pO1xcbiBcXHRrZnJlZShhZG1pbi1cXHUwMDNlY2FjaGUuYWN0aW9uc3RyZWFtKTtcXG5AQCAtMTk1MCw3ICsxOTQ5LDcgQEAgc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IHNwYXJ4NSAqc3Bhcng1LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLFxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZWxpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZXJ1bGVzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VlbmFibGVkKTtcXG4tXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRhZG1pbi1cXHUwMDNldmN0cmwgPSBjdHJsO1xcbiBcXHRhZG1pbi1cXHUwMDNldnR5cGUgPSBjZmctXFx1MDAzZXZ0eXBlO1xcbiBcXHRhZG1pbi1cXHUwMDNldmluc3QgPSBjZmctXFx1MDAzZXZpbnN0O1xcbiBcXHRhZG1pbi1cXHUwMDNlaW5ncmVzcyA9IGNmZy1cXHUwMDNlaW5ncmVzcztcXG5AQCAtMjA1OSw2ICsyMDU4LDcgQEAgaW50IHNwYXJ4NV92Y2FwX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1KVxcbiBcXHRjdHJsLVxcdTAwM2VvcHMgPSBcXHUwMDI2c3Bhcng1X3ZjYXBfb3BzO1xcbiBcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmN0cmwtXFx1MDAzZWxpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBBUlJBWV9TSVpFKHNwYXJ4NV92Y2FwX2luc3RfY2ZnKTsgKytpZHgpIHtcXG4gXFx0XFx0Y2ZnID0gXFx1MDAyNmNvbnN0cy1cXHUwMDNldmNhcHNfY2ZnW2lkeF07XFxuIFxcdFxcdGFkbWluID0gc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3Bhcng1LCBjdHJsLCBjZmcpO1xcbkBAIC0yMDk3LDUgKzIwOTcsNiBAQCB2b2lkIHNwYXJ4NV92Y2FwX2RlaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZhZG1pbi1cXHUwMDNlbGlzdCk7XFxuIFxcdFxcdHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pO1xcbiBcXHR9XFxuK1xcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmN0cmwtXFx1MDAzZWxvY2spO1xcbiBcXHRrZnJlZShjdHJsKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbmluZGV4IDBmZGI1ZTM2M2JhZGMwLi5mZjg2Y2RlMTFhMzJjNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbkBAIC05MzQsNiArOTM0LDE2IEBAIHN0YXRpYyBib29sIHZjYXBfcnVsZV9leGlzdHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuK3tcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZXZjdHJsLVxcdTAwM2Vsb2NrKTtcXG4rfVxcbitcXG4rdm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuK3tcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNldmN0cmwtXFx1MDAzZWxvY2spO1xcbit9XFxuK1xcbiAvKiBGaW5kIGEgcnVsZSB3aXRoIGEgcHJvdmlkZWQgcnVsZSBpZCByZXR1cm4gYSBsb2NrZWQgdmNhcCAqL1xcbiBzdGF0aWMgc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqXFxuIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuQEAgLTk0MywxMSArOTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuIFxcbiBcXHQvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXFx1MDAyNnZjdHJsLVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF9sb2NrKGFkbWluKTtcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdClcXG4gXFx0XFx0XFx0aWYgKHJpLVxcdTAwM2VkYXRhLmlkID09IGlkKVxcbiBcXHRcXHRcXHRcXHRyZXR1cm4gcmk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRcXHR2Y2FwX3VubG9jayhhZG1pbik7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5AQCAtOTYxLDE0ICs5NzEsMTQgQEAgaW50IHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1NjQgY29va2llKVxcbiBcXG4gXFx0LyogTG9vayBmb3IgdGhlIHJ1bGUgaWQgaW4gYWxsIHZjYXBzICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFxcdTAwMjZ2Y3RybC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG4gXFx0XFx0XFx0aWYgKHJpLVxcdTAwM2VkYXRhLmNvb2tpZSA9PSBjb29raWUpIHtcXG4gXFx0XFx0XFx0XFx0aWQgPSByaS1cXHUwMDNlZGF0YS5pZDtcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXHRcXHRpZiAoaWQpXFxuIFxcdFxcdFxcdHJldHVybiBpZDtcXG4gXFx0fVxcbkBAIC05ODUsMTEgKzk5NSwxMSBAQCBpbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZClcXG4gXFx0aW50IGNvdW50ID0gMDtcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZWxlbSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdCkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGlmIChlbGVtLVxcdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgXFx1MDAzZT0gbWluX2NpZCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgZWxlbS1cXHUwMDNlZGF0YS52Y2FwX2NoYWluX2lkIFxcdTAwM2MgbWF4X2NpZClcXG4gXFx0XFx0XFx0Kytjb3VudDtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gY291bnQ7XFxuIH1cXG5AQCAtMjI2Niw3ICsyMjc2LDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0LyogSW5zZXJ0IHRoZSBuZXcgcnVsZSBpbiB0aGUgbGlzdCBvZiB2Y2FwIHJ1bGVzICovXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnJpLVxcdTAwM2VhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXG4gXFx0dmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7XFxuIFxcdHJldCA9IHZjYXBfaW5zZXJ0X3J1bGUocmksIFxcdTAwMjZtb3ZlKTtcXG5AQCAtMjMwMiw3ICsyMzEyLDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gb3V0Olxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNnJpLVxcdTAwM2VhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfdW5sb2NrKHJpLVxcdTAwM2VhZG1pbik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZGRfcnVsZSk7XFxuQEAgLTIzMzAsNyArMjM0MCw3IEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0aWYgKHZjdHJsLVxcdTAwM2V2Y2Fwc1thZG1pbi1cXHUwMDNldnR5cGVdLnJvd3MgPT0gMClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdC8qIENoZWNrIGlmIGEgcnVsZSB3aXRoIHRoaXMgaWQgYWxyZWFkeSBleGlzdHMgKi9cXG4gXFx0aWYgKHZjYXBfcnVsZV9leGlzdHModmN0cmwsIGlkKSkge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbkBAIC0yMzY5LDEzICsyMzc5LDEzIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0cmV0dXJuIChzdHJ1Y3QgdmNhcF9ydWxlICopcmk7XFxuIFxcbiBvdXRfZnJlZTpcXG4gXFx0a2ZyZWUocmkpO1xcbiBvdXRfdW5sb2NrOlxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiBcXG4gfVxcbkBAIC0yNDQ2LDcgKzI0NTYsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xcbiBcXG4gXFx0cnVsZSA9IHZjYXBfZGVjb2RlX3J1bGUoZWxlbSk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZWxlbS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhlbGVtLVxcdTAwM2VhZG1pbik7XFxuIFxcdHJldHVybiBydWxlO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xcbkBAIC0yNDgzLDcgKzI0OTMsNyBAQCBpbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxcbiBcXHRlcnIgPSAgdmNhcF93cml0ZV9jb3VudGVyKHJpLCBcXHUwMDI2Y3RyKTtcXG4gXFxuIG91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyaS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbW9kX3J1bGUpO1xcbkBAIC0yNTcwLDcgKzI1ODAsNyBAQCBpbnQgdmNhcF9kZWxfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBpZClcXG4gXFx0XFx0YWRtaW4tXFx1MDAzZWxhc3RfdXNlZF9hZGRyID0gZWxlbS1cXHUwMDNlYWRkcjtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2RlbF9ydWxlKTtcXG5AQCAtMjU4NSw3ICsyNTk1LDcgQEAgaW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyaSwgbmV4dF9yaSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdCkge1xcbiBcXHRcXHR2Y3RybC1cXHUwMDNlb3BzLVxcdTAwM2Vpbml0KHJpLVxcdTAwM2VuZGV2LCBhZG1pbiwgcmktXFx1MDAzZWFkZHIsIHJpLVxcdTAwM2VzaXplKTtcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNnJpLVxcdTAwM2VsaXN0KTtcXG5AQCAtMjU5OCw3ICsyNjA4LDcgQEAgaW50IHZjYXBfZGVsX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZlcG9ydC1cXHUwMDNlbGlzdCk7XFxuIFxcdFxcdGtmcmVlKGVwb3J0KTtcXG4gXFx0fVxcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMzAxNiw3ICszMDI2LDcgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHQvKiBGb3VuZCB0aGUgYWRtaW4sIG5vdyBmaW5kIHRoZSBvZmZsb2FkYWJsZSBydWxlcyAqL1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG4gXFx0XFx0XFx0LyogSXMgdGhlIHJ1bGUgaW4gdGhlIGxvb2t1cCBkZWZpbmVkIGJ5IHRoZSBjaGFpbiAqL1xcbiBcXHRcXHRcXHRpZiAoIShyaS1cXHUwMDNlZGF0YS52Y2FwX2NoYWluX2lkIFxcdTAwM2U9IGNoYWluIFxcdTAwMjZcXHUwMDI2XFxuQEAgLTMwMzQsNyArMzA0NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuIFxcdFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRcXHR2Y2FwX3VubG9jayhhZG1pbik7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuQEAgLTMwNzQsNyArMzA4NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9kaXNhYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdC8qIEZvdW5kIHRoZSBhZG1pbiwgbm93IGZpbmQgdGhlIHJ1bGVzIG9uIHRoZSBjaGFpbiAqL1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG4gXFx0XFx0XFx0aWYgKHJpLVxcdTAwM2VkYXRhLnZjYXBfY2hhaW5faWQgIT0gY2hhaW4pXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbkBAIC0zMDg5LDcgKzMwOTksNyBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZV9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4gXFx0XFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHZjYXBfdW5sb2NrKGFkbWluKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdH1cXG5AQCAtMzEzMyw5ICszMTQzLDkgQEAgc3RhdGljIGludCB2Y2FwX2VuYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdGVwb3J0LVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuIFxcdGVwb3J0LVxcdTAwM2VzcmNfY2lkID0gc3JjX2NpZDtcXG4gXFx0ZXBvcnQtXFx1MDAzZWRzdF9jaWQgPSBkc3RfY2lkO1xcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhhZG1pbik7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmVwb3J0LVxcdTAwM2VsaXN0LCBcXHUwMDI2YWRtaW4tXFx1MDAzZWVuYWJsZWQpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXG4gXFx0aWYgKHZjYXBfcGF0aF9leGlzdCh2Y3RybCwgbmRldiwgc3JjX2NpZCkpIHtcXG4gXFx0XFx0LyogRW5hYmxlIGNoYWluZWQgbG9va3VwcyAqL1xcbkBAIC0zMTg1LDkgKzMxOTUsOSBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdGRzdF9jaWQgPSB2Y2FwX2dldF9uZXh0X2NoYWluKHZjdHJsLCBuZGV2LCBkc3RfY2lkKTtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2Zm91bmQtXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX2xvY2soZm91bmQpO1xcbiBcXHRsaXN0X2RlbChcXHUwMDI2ZXBvcnQtXFx1MDAzZWxpc3QpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmZvdW5kLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soZm91bmQpO1xcbiBcXHRrZnJlZShlcG9ydCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTMyNzAsOSArMzI4MCw5IEBAIGludCB2Y2FwX3J1bGVfc2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2cmktXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF9sb2NrKHJpLVxcdTAwM2VhZG1pbik7XFxuIFxcdGVyciA9IHZjYXBfd3JpdGVfY291bnRlcihyaSwgY3RyKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyaS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbkBAIC0zMjkxLDkgKzMzMDEsOSBAQCBpbnQgdmNhcF9ydWxlX2dldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnJpLVxcdTAwM2VhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdHZjYXBfbG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXHRlcnIgPSB2Y2FwX3JlYWRfY291bnRlcihyaSwgY3RyKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyaS1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhyaS1cXHUwMDNlYWRtaW4pO1xcbiBcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbkBAIC0zMzk1LDcgKzM0MDUsNyBAQCBpbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuIFxcbiBcXHQvKiBJdGVyYXRlIGFsbCBydWxlcyBpbiBlYWNoIFZDQVAgaW5zdGFuY2UgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXFx1MDAyNnZjdHJsLVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF9sb2NrKGFkbWluKTtcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXFx1MDAyNmFkbWluLVxcdTAwM2VydWxlcywgbGlzdCkge1xcbiBcXHRcXHRcXHRpZiAocmktXFx1MDAzZWRhdGEuY29va2llICE9IGNvb2tpZSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTM0MTIsMTIgKzM0MjIsMTIgQEAgaW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbiBcXHRcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0fVxcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0dmNhcF91bmxvY2soYWRtaW4pO1xcbiBcXHR9XFxuIFxcdHJldHVybiBlcnI7XFxuIFxcbiB1bmxvY2s6XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhhZG1pbik7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaFxcbmluZGV4IDYwNjlhZDk1YzI3ZTkzLi4wNWI0YjAyZTU5ZWY1ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuaFxcbkBAIC0xNjQsNyArMTY0LDcgQEAgc3RydWN0IHZjYXBfYWRtaW4ge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7IC8qIGZvciBpbnNlcnRpb24gaW4gdmNhcF9jb250cm9sICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgcnVsZXM7IC8qIGxpc3Qgb2YgcnVsZXMgKi9cXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBlbmFibGVkOyAvKiBsaXN0IG9mIGVuYWJsZWQgcG9ydHMgKi9cXG4tXFx0c3RydWN0IG11dGV4IGxvY2s7IC8qIGNvbnRyb2wgYWNjZXNzIHRvIHJ1bGVzICovXFxuK1xcdHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsOyAvKiB0aGUgY29udHJvbCBpbnN0YW5jZSBvd25pbmcgdGhpcyB2Y2FwICovXFxuIFxcdGVudW0gdmNhcF90eXBlIHZ0eXBlOyAgLyogdHlwZSBvZiB2Y2FwICovXFxuIFxcdGludCB2aW5zdDsgLyogaW5zdGFuY2UgbnVtYmVyIHdpdGhpbiB0aGUgc2FtZSB0eXBlICovXFxuIFxcdGludCBmaXJzdF9jaWQ7IC8qIGZpcnN0IGNoYWluIGlkIGluIHRoaXMgdmNhcCAqL1xcbkBAIC0yNzUsNiArMjc1LDcgQEAgc3RydWN0IHZjYXBfY29udHJvbCB7XFxuIFxcdGNvbnN0IHN0cnVjdCB2Y2FwX2luZm8gKnZjYXBzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBtb2RlbHMgKi9cXG4gXFx0Y29uc3Qgc3RydWN0IHZjYXBfc3RhdGlzdGljcyAqc3RhdHM7IC8qIGNsaWVudCBzdXBwbGllZCB2Y2FwIHN0YXRzICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgLyogbGlzdCBvZiB2Y2FwIGluc3RhbmNlcyAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogc2VyaWFsaXplIGFjY2VzcyB0byBhbGwgdmNhcCBpbnN0YW5jZXMgKi9cXG4gfTtcXG4gXFxuICNlbmRpZiAvKiBfX1ZDQVBfQVBJX18gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXFxuaW5kZXggNTliZmJkYTI5YmIzZGEuLmUwYzY1YzdhYjIzZTFlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xcbkBAIC00MTAsOSArNDEwLDkgQEAgc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcXG4gXFx0fTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmluZm8tXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF9sb2NrKGluZm8tXFx1MDAzZWFkbWluKTtcXG4gXFx0cmV0ID0gdmNhcF9zaG93X2FkbWluKGluZm8tXFx1MDAzZXZjdHJsLCBpbmZvLVxcdTAwM2VhZG1pbiwgXFx1MDAyNm91dCk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2aW5mby1cXHUwMDNlYWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHR2Y2FwX3VubG9jayhpbmZvLVxcdTAwM2VhZG1pbik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gREVGSU5FX1NIT1dfQVRUUklCVVRFKHZjYXBfZGVidWdmcyk7XFxuQEAgLTQyNyw5ICs0MjcsOSBAQCBzdGF0aWMgaW50IHZjYXBfcmF3X2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcXG4gXFx0fTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmluZm8tXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF9sb2NrKGluZm8tXFx1MDAzZWFkbWluKTtcXG4gXFx0cmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLVxcdTAwM2V2Y3RybCwgaW5mby1cXHUwMDNlYWRtaW4sIFxcdTAwMjZvdXQpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmluZm8tXFx1MDAzZWFkbWluLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dmNhcF91bmxvY2soaW5mby1cXHUwMDNlYWRtaW4pO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIERFRklORV9TSE9XX0FUVFJJQlVURSh2Y2FwX3Jhd19kZWJ1Z2ZzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jXFxuaW5kZXggOWM5ZDM4MDQyMTI1NWQuLmFjMmEzYjhjNGYzMjE3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xcbkBAIC0yNDMsMTAgKzI0MywxMSBAQCBzdGF0aWMgdm9pZCB2Y2FwX3Rlc3RfYXBpX2luaXQoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxcbiB7XFxuIFxcdC8qIEluaXRpYWxpemUgdGhlIHNoYXJlZCBvYmplY3RzICovXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZ0ZXN0X3ZjdHJsLmxvY2spO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZWxpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZXJ1bGVzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkbWluLVxcdTAwM2VlbmFibGVkKTtcXG4tXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWRtaW4tXFx1MDAzZWxvY2spO1xcbitcXHRhZG1pbi1cXHUwMDNldmN0cmwgPSBcXHUwMDI2dGVzdF92Y3RybDtcXG4gXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2YWRtaW4tXFx1MDAzZWxpc3QsIFxcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xcbiBcXHRtZW1zZXQodGVzdF91cGRhdGVhZGRyLCAwLCBzaXplb2YodGVzdF91cGRhdGVhZGRyKSk7XFxuIFxcdHRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jXFxuaW5kZXggY2UyNmNjYmRjY2RmOTMuLjgzZGUzODRkM2UzYmQ0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jXFxuQEAgLTIzMywxMCArMjMzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXFxuIHtcXG4gXFx0LyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi9cXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNnRlc3RfdmN0cmwubG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhZG1pbi1cXHUwMDNlbGlzdCk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRtaW4tXFx1MDAzZWVuYWJsZWQpO1xcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZhZG1pbi1cXHUwMDNlbG9jayk7XFxuK1xcdGFkbWluLVxcdTAwM2V2Y3RybCA9IFxcdTAwMjZ0ZXN0X3ZjdHJsO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZhZG1pbi1cXHUwMDNlbGlzdCwgXFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XFxuIFxcdG1lbXNldCh0ZXN0X3VwZGF0ZWFkZHIsIDAsIHNpemVvZih0ZXN0X3VwZGF0ZWFkZHIpKTtcXG4gXFx0dGVzdF91cGRhdGVhZGRyaWR4ID0gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oXFxuaW5kZXggODQ0YmRmNmI1ZjQ1MDIuLmI0MDU3ZmJlM2QxODhjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxcbkBAIC01MCw2ICs1MCw5IEBAIHN0cnVjdCB2Y2FwX3N0cmVhbV9pdGVyIHtcXG4gXFxuIC8qIENoZWNrIHRoYXQgdGhlIGNvbnRyb2wgaGFzIGEgdmFsaWQgc2V0IG9mIGNhbGxiYWNrcyAqL1xcbiBpbnQgdmNhcF9hcGlfY2hlY2soc3RydWN0IHZjYXBfY29udHJvbCAqY3RybCk7XFxuKy8qIFNlcmlhbGl6ZSBhY2Nlc3MgdG8gdGhlIHZjYXAgaW5zdGFuY2VzIG9mIGEgY29udHJvbCAqL1xcbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pO1xcbit2b2lkIHZjYXBfdW5sb2NrKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbik7XFxuIC8qIEVyYXNlIHRoZSBWQ0FQIGNhY2hlIGFyZWEgdXNlZCBvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKi9cXG4gdm9pZCB2Y2FwX2VyYXNlX2NhY2hlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjA3LjAyMDc2NjY4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5NDQwMjQwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBpbiB0aGUgTWljcm9jaGlwIFZDQVAgKFZlcnNhdGlsZSBDb250ZW50LUF3YXJlIFByb2Nlc3NvcikgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhcmR3YXJlLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIChsYW45NjZ4IGFuZCBzcGFyeDUpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgKElPTUVNLCBPRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDcwZWQyZmZlYmI5MzM4MDQ0MTczNTJlNGEzMmZiZDA4MjUwMjdkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE4OjQwOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbmluZGV4IDcyZTNiMTg5YmFjNWFjLi5lYjI4ZGY4MGIyODE4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdmNhcF9pbXBsLmNcbkBAIC02MDEsNyArNjAxLDYgQEAgc3RhdGljIHZvaWQgbGFuOTY2eF92Y2FwX2FkbWluX2ZyZWUoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIFx0a2ZyZWUoYWRtaW4tXHUwMDNlY2FjaGUua2V5c3RyZWFtKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLm1hc2tzdHJlYW0pO1xuIFx0a2ZyZWUoYWRtaW4tXHUwMDNlY2FjaGUuYWN0aW9uc3RyZWFtKTtcbi1cdG11dGV4X2Rlc3Ryb3koXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4gXHRrZnJlZShhZG1pbik7XG4gfVxuIFxuQEAgLTYxNSw3ICs2MTQsNyBAQCBsYW45NjZ4X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKmN0cmwsXG4gXHRpZiAoIWFkbWluKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiBcbi1cdG11dGV4X2luaXQoXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuQEAgLTcyMSw2ICs3MjAsNyBAQCBpbnQgbGFuOTY2eF92Y2FwX2luaXQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngpXG4gXHRjdHJsLVx1MDAzZW9wcyA9IFx1MDAyNmxhbjk2NnhfdmNhcF9vcHM7XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjdHJsLVx1MDAzZWxpc3QpO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZjdHJsLVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobGFuOTY2eF92Y2FwX2luc3RfY2ZnKTsgKytpKSB7XG4gXHRcdGNmZyA9IFx1MDAyNmxhbjk2NnhfdmNhcF9pbnN0X2NmZ1tpXTtcbiBcbkBAIC03ODAsNSArNzgwLDYgQEAgdm9pZCBsYW45NjZ4X3ZjYXBfZGVpbml0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4KVxuIFx0XHRsYW45NjZ4X3ZjYXBfYWRtaW5fZnJlZShhZG1pbik7XG4gXHR9XG4gXG4rXHRtdXRleF9kZXN0cm95KFx1MDAyNmN0cmwtXHUwMDNlbG9jayk7XG4gXHRrZnJlZShjdHJsKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xuaW5kZXggOTViOTNlNDZhNDFkY2UuLmNmMzMyZGU2YmY3MzZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5AQCAtMTkzMCw3ICsxOTMwLDYgQEAgc3RhdGljIHZvaWQgc3Bhcng1X3ZjYXBfYWRtaW5fZnJlZShzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4ge1xuIFx0aWYgKCFhZG1pbilcbiBcdFx0cmV0dXJuO1xuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmtleXN0cmVhbSk7XG4gXHRrZnJlZShhZG1pbi1cdTAwM2VjYWNoZS5tYXNrc3RyZWFtKTtcbiBcdGtmcmVlKGFkbWluLVx1MDAzZWNhY2hlLmFjdGlvbnN0cmVhbSk7XG5AQCAtMTk1MCw3ICsxOTQ5LDcgQEAgc3Bhcng1X3ZjYXBfYWRtaW5fYWxsb2Moc3RydWN0IHNwYXJ4NSAqc3Bhcng1LCBzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsLFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VydWxlcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VlbmFibGVkKTtcbi1cdG11dGV4X2luaXQoXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRhZG1pbi1cdTAwM2V2Y3RybCA9IGN0cmw7XG4gXHRhZG1pbi1cdTAwM2V2dHlwZSA9IGNmZy1cdTAwM2V2dHlwZTtcbiBcdGFkbWluLVx1MDAzZXZpbnN0ID0gY2ZnLVx1MDAzZXZpbnN0O1xuIFx0YWRtaW4tXHUwMDNlaW5ncmVzcyA9IGNmZy1cdTAwM2VpbmdyZXNzO1xuQEAgLTIwNTksNiArMjA1OCw3IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbiBcdGN0cmwtXHUwMDNlb3BzID0gXHUwMDI2c3Bhcng1X3ZjYXBfb3BzO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y3RybC1cdTAwM2VsaXN0KTtcbitcdG11dGV4X2luaXQoXHUwMDI2Y3RybC1cdTAwM2Vsb2NrKTtcbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBBUlJBWV9TSVpFKHNwYXJ4NV92Y2FwX2luc3RfY2ZnKTsgKytpZHgpIHtcbiBcdFx0Y2ZnID0gXHUwMDI2Y29uc3RzLVx1MDAzZXZjYXBzX2NmZ1tpZHhdO1xuIFx0XHRhZG1pbiA9IHNwYXJ4NV92Y2FwX2FkbWluX2FsbG9jKHNwYXJ4NSwgY3RybCwgY2ZnKTtcbkBAIC0yMDk3LDUgKzIwOTcsNiBAQCB2b2lkIHNwYXJ4NV92Y2FwX2RlaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXG4gXHRcdGxpc3RfZGVsKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QpO1xuIFx0XHRzcGFyeDVfdmNhcF9hZG1pbl9mcmVlKGFkbWluKTtcbiBcdH1cbitcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y3RybC1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKGN0cmwpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuaW5kZXggMGZkYjVlMzYzYmFkYzAuLmZmODZjZGUxMWEzMmM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTkzNCw2ICs5MzQsMTYgQEAgc3RhdGljIGJvb2wgdmNhcF9ydWxlX2V4aXN0cyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2V2Y3RybC1cdTAwM2Vsb2NrKTtcbit9XG4rXG4rdm9pZCB2Y2FwX3VubG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4re1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZXZjdHJsLVx1MDAzZWxvY2spO1xuK31cbitcbiAvKiBGaW5kIGEgcnVsZSB3aXRoIGEgcHJvdmlkZWQgcnVsZSBpZCByZXR1cm4gYSBsb2NrZWQgdmNhcCAqL1xuIHN0YXRpYyBzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICpcbiB2Y2FwX2dldF9sb2NrZWRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuQEAgLTk0MywxMSArOTUzLDExIEBAIHZjYXBfZ2V0X2xvY2tlZF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG4gXG4gXHQvKiBMb29rIGZvciB0aGUgcnVsZSBpZCBpbiBhbGwgdmNhcHMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoYWRtaW4sIFx1MDAyNnZjdHJsLVx1MDAzZWxpc3QsIGxpc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF9sb2NrKGFkbWluKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMsIGxpc3QpXG4gXHRcdFx0aWYgKHJpLVx1MDAzZWRhdGEuaWQgPT0gaWQpXG4gXHRcdFx0XHRyZXR1cm4gcmk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0fVxuIFx0cmV0dXJuIE5VTEw7XG4gfVxuQEAgLTk2MSwxNCArOTcxLDE0IEBAIGludCB2Y2FwX2xvb2t1cF9ydWxlX2J5X2Nvb2tpZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTY0IGNvb2tpZSlcbiBcbiBcdC8qIExvb2sgZm9yIHRoZSBydWxlIGlkIGluIGFsbCB2Y2FwcyAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShhZG1pbiwgXHUwMDI2dmN0cmwtXHUwMDNlbGlzdCwgbGlzdCkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0XHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHRcdGlmIChyaS1cdTAwM2VkYXRhLmNvb2tpZSA9PSBjb29raWUpIHtcbiBcdFx0XHRcdGlkID0gcmktXHUwMDNlZGF0YS5pZDtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcdFx0fVxuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdFx0aWYgKGlkKVxuIFx0XHRcdHJldHVybiBpZDtcbiBcdH1cbkBAIC05ODUsMTEgKzk5NSwxMSBAQCBpbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZClcbiBcdGludCBjb3VudCA9IDA7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVsZW0sIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGlmIChlbGVtLVx1MDAzZWRhdGEudmNhcF9jaGFpbl9pZCBcdTAwM2U9IG1pbl9jaWQgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBlbGVtLVx1MDAzZWRhdGEudmNhcF9jaGFpbl9pZCBcdTAwM2MgbWF4X2NpZClcbiBcdFx0XHQrK2NvdW50O1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdH1cbiBcdHJldHVybiBjb3VudDtcbiB9XG5AQCAtMjI2Niw3ICsyMjc2LDcgQEAgaW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXHQvKiBJbnNlcnQgdGhlIG5ldyBydWxlIGluIHRoZSBsaXN0IG9mIHZjYXAgcnVsZXMgKi9cbi1cdG11dGV4X2xvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0dmNhcF9ydWxlX3NldF9zdGF0ZShyaSk7XG4gXHRyZXQgPSB2Y2FwX2luc2VydF9ydWxlKHJpLCBcdTAwMjZtb3ZlKTtcbkBAIC0yMzAyLDcgKzIzMTIsNyBAQCBpbnQgdmNhcF9hZGRfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBvdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkZF9ydWxlKTtcbkBAIC0yMzMwLDcgKzIzNDAsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2FsbG9jX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRpZiAodmN0cmwtXHUwMDNldmNhcHNbYWRtaW4tXHUwMDNldnR5cGVdLnJvd3MgPT0gMClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF9sb2NrKGFkbWluKTtcbiBcdC8qIENoZWNrIGlmIGEgcnVsZSB3aXRoIHRoaXMgaWQgYWxyZWFkeSBleGlzdHMgKi9cbiBcdGlmICh2Y2FwX3J1bGVfZXhpc3RzKHZjdHJsLCBpZCkpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbkBAIC0yMzY5LDEzICsyMzc5LDEzIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfYWxsb2NfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0Z290byBvdXRfZnJlZTtcbiBcdH1cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdHJldHVybiAoc3RydWN0IHZjYXBfcnVsZSAqKXJpO1xuIFxuIG91dF9mcmVlOlxuIFx0a2ZyZWUocmkpO1xuIG91dF91bmxvY2s6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhhZG1pbik7XG4gXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuIH1cbkBAIC0yNDQ2LDcgKzI0NTYsNyBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuIFxuIFx0cnVsZSA9IHZjYXBfZGVjb2RlX3J1bGUoZWxlbSk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2ZWxlbS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGVsZW0tXHUwMDNlYWRtaW4pO1xuIFx0cmV0dXJuIHJ1bGU7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xuQEAgLTI0ODMsNyArMjQ5Myw3IEBAIGludCB2Y2FwX21vZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXG4gXHRlcnIgPSAgdmNhcF93cml0ZV9jb3VudGVyKHJpLCBcdTAwMjZjdHIpO1xuIFxuIG91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZyaS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbW9kX3J1bGUpO1xuQEAgLTI1NzAsNyArMjU4MCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKVxuIFx0XHRhZG1pbi1cdTAwM2VsYXN0X3VzZWRfYWRkciA9IGVsZW0tXHUwMDNlYWRkcjtcbiBcdH1cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZGVsX3J1bGUpO1xuQEAgLTI1ODUsNyArMjU5NSw3IEBAIGludCB2Y2FwX2RlbF9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpLCBuZXh0X3JpLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuIFx0XHR2Y3RybC1cdTAwM2VvcHMtXHUwMDNlaW5pdChyaS1cdTAwM2VuZGV2LCBhZG1pbiwgcmktXHUwMDNlYWRkciwgcmktXHUwMDNlc2l6ZSk7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNnJpLVx1MDAzZWxpc3QpO1xuQEAgLTI1OTgsNyArMjYwOCw3IEBAIGludCB2Y2FwX2RlbF9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxuIFx0XHRsaXN0X2RlbChcdTAwMjZlcG9ydC1cdTAwM2VsaXN0KTtcbiBcdFx0a2ZyZWUoZXBvcnQpO1xuIFx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTMwMTYsNyArMzAyNiw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdC8qIEZvdW5kIHRoZSBhZG1pbiwgbm93IGZpbmQgdGhlIG9mZmxvYWRhYmxlIHJ1bGVzICovXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4gXHRcdFx0LyogSXMgdGhlIHJ1bGUgaW4gdGhlIGxvb2t1cCBkZWZpbmVkIGJ5IHRoZSBjaGFpbiAqL1xuIFx0XHRcdGlmICghKHJpLVx1MDAzZWRhdGEudmNhcF9jaGFpbl9pZCBcdTAwM2U9IGNoYWluIFx1MDAyNlx1MDAyNlxuQEAgLTMwMzQsNyArMzA0NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuQEAgLTMwNzQsNyArMzA4NCw3IEBAIHN0YXRpYyBpbnQgdmNhcF9kaXNhYmxlX3J1bGVzKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQvKiBGb3VuZCB0aGUgYWRtaW4sIG5vdyBmaW5kIHRoZSBydWxlcyBvbiB0aGUgY2hhaW4gKi9cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF9sb2NrKGFkbWluKTtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyaSwgXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMsIGxpc3QpIHtcbiBcdFx0XHRpZiAocmktXHUwMDNlZGF0YS52Y2FwX2NoYWluX2lkICE9IGNoYWluKVxuIFx0XHRcdFx0Y29udGludWU7XG5AQCAtMzA4OSw3ICszMDk5LDcgQEAgc3RhdGljIGludCB2Y2FwX2Rpc2FibGVfcnVsZXMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4gXHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdFx0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuQEAgLTMxMzMsOSArMzE0Myw5IEBAIHN0YXRpYyBpbnQgdmNhcF9lbmFibGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0ZXBvcnQtXHUwMDNlY29va2llID0gY29va2llO1xuIFx0ZXBvcnQtXHUwMDNlc3JjX2NpZCA9IHNyY19jaWQ7XG4gXHRlcG9ydC1cdTAwM2Vkc3RfY2lkID0gZHN0X2NpZDtcbi1cdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2soYWRtaW4pO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcG9ydC1cdTAwM2VsaXN0LCBcdTAwMjZhZG1pbi1cdTAwM2VlbmFibGVkKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcbiBcdGlmICh2Y2FwX3BhdGhfZXhpc3QodmN0cmwsIG5kZXYsIHNyY19jaWQpKSB7XG4gXHRcdC8qIEVuYWJsZSBjaGFpbmVkIGxvb2t1cHMgKi9cbkBAIC0zMTg1LDkgKzMxOTUsOSBAQCBzdGF0aWMgaW50IHZjYXBfZGlzYWJsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdGRzdF9jaWQgPSB2Y2FwX2dldF9uZXh0X2NoYWluKHZjdHJsLCBuZGV2LCBkc3RfY2lkKTtcbiBcdH1cbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2Zm91bmQtXHUwMDNlbG9jayk7XG4rXHR2Y2FwX2xvY2soZm91bmQpO1xuIFx0bGlzdF9kZWwoXHUwMDI2ZXBvcnQtXHUwMDNlbGlzdCk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Zm91bmQtXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhmb3VuZCk7XG4gXHRrZnJlZShlcG9ydCk7XG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMzI3MCw5ICszMjgwLDkgQEAgaW50IHZjYXBfcnVsZV9zZXRfY291bnRlcihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZyaS1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfbG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXHRlcnIgPSB2Y2FwX3dyaXRlX2NvdW50ZXIocmksIGN0cik7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cmktXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhyaS1cdTAwM2VhZG1pbik7XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0zMjkxLDkgKzMzMDEsOSBAQCBpbnQgdmNhcF9ydWxlX2dldF9jb3VudGVyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0cilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF9sb2NrKHJpLVx1MDAzZWFkbWluKTtcbiBcdGVyciA9IHZjYXBfcmVhZF9jb3VudGVyKHJpLCBjdHIpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJpLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF91bmxvY2socmktXHUwMDNlYWRtaW4pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMzM5NSw3ICszNDA1LDcgQEAgaW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFxuIFx0LyogSXRlcmF0ZSBhbGwgcnVsZXMgaW4gZWFjaCBWQ0FQIGluc3RhbmNlICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGFkbWluLCBcdTAwMjZ2Y3RybC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfbG9jayhhZG1pbik7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocmksIFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzLCBsaXN0KSB7XG4gXHRcdFx0aWYgKHJpLVx1MDAzZWRhdGEuY29va2llICE9IGNvb2tpZSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTM0MTIsMTIgKzM0MjIsMTIgQEAgaW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHRcdGlmIChlcnIpXG4gXHRcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2YWRtaW4tXHUwMDNlbG9jayk7XG4rXHRcdHZjYXBfdW5sb2NrKGFkbWluKTtcbiBcdH1cbiBcdHJldHVybiBlcnI7XG4gXG4gdW5sb2NrOlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF91bmxvY2soYWRtaW4pO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5pbmRleCA2MDY5YWQ5NWMyN2U5My4uMDViNGIwMmU1OWVmNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5oXG5AQCAtMTY0LDcgKzE2NCw3IEBAIHN0cnVjdCB2Y2FwX2FkbWluIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgLyogZm9yIGluc2VydGlvbiBpbiB2Y2FwX2NvbnRyb2wgKi9cbiBcdHN0cnVjdCBsaXN0X2hlYWQgcnVsZXM7IC8qIGxpc3Qgb2YgcnVsZXMgKi9cbiBcdHN0cnVjdCBsaXN0X2hlYWQgZW5hYmxlZDsgLyogbGlzdCBvZiBlbmFibGVkIHBvcnRzICovXG4tXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogY29udHJvbCBhY2Nlc3MgdG8gcnVsZXMgKi9cbitcdHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsOyAvKiB0aGUgY29udHJvbCBpbnN0YW5jZSBvd25pbmcgdGhpcyB2Y2FwICovXG4gXHRlbnVtIHZjYXBfdHlwZSB2dHlwZTsgIC8qIHR5cGUgb2YgdmNhcCAqL1xuIFx0aW50IHZpbnN0OyAvKiBpbnN0YW5jZSBudW1iZXIgd2l0aGluIHRoZSBzYW1lIHR5cGUgKi9cbiBcdGludCBmaXJzdF9jaWQ7IC8qIGZpcnN0IGNoYWluIGlkIGluIHRoaXMgdmNhcCAqL1xuQEAgLTI3NSw2ICsyNzUsNyBAQCBzdHJ1Y3QgdmNhcF9jb250cm9sIHtcbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX2luZm8gKnZjYXBzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBtb2RlbHMgKi9cbiBcdGNvbnN0IHN0cnVjdCB2Y2FwX3N0YXRpc3RpY3MgKnN0YXRzOyAvKiBjbGllbnQgc3VwcGxpZWQgdmNhcCBzdGF0cyAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0OyAvKiBsaXN0IG9mIHZjYXAgaW5zdGFuY2VzICovXG4rXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogc2VyaWFsaXplIGFjY2VzcyB0byBhbGwgdmNhcCBpbnN0YW5jZXMgKi9cbiB9O1xuIFxuICNlbmRpZiAvKiBfX1ZDQVBfQVBJX18gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbmluZGV4IDU5YmZiZGEyOWJiM2RhLi5lMGM2NWM3YWIyM2UxZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG5AQCAtNDEwLDkgKzQxMCw5IEBAIHN0YXRpYyBpbnQgdmNhcF9kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpXG4gXHR9O1xuIFx0aW50IHJldDtcbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2aW5mby1cdTAwM2VhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdHZjYXBfbG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldCA9IHZjYXBfc2hvd19hZG1pbihpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIERFRklORV9TSE9XX0FUVFJJQlVURSh2Y2FwX2RlYnVnZnMpO1xuQEAgLTQyNyw5ICs0MjcsOSBAQCBzdGF0aWMgaW50IHZjYXBfcmF3X2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcbiBcdH07XG4gXHRpbnQgcmV0O1xuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZpbmZvLVx1MDAzZWFkbWluLVx1MDAzZWxvY2spO1xuK1x0dmNhcF9sb2NrKGluZm8tXHUwMDNlYWRtaW4pO1xuIFx0cmV0ID0gdmNhcF9zaG93X2FkbWluX3JhdyhpbmZvLVx1MDAzZXZjdHJsLCBpbmZvLVx1MDAzZWFkbWluLCBcdTAwMjZvdXQpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluZm8tXHUwMDNlYWRtaW4tXHUwMDNlbG9jayk7XG4rXHR2Y2FwX3VubG9jayhpbmZvLVx1MDAzZWFkbWluKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIERFRklORV9TSE9XX0FUVFJJQlVURSh2Y2FwX3Jhd19kZWJ1Z2ZzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzX2t1bml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzX2t1bml0LmNcbmluZGV4IDljOWQzODA0MjEyNTVkLi5hYzJhM2I4YzRmMzIxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmc19rdW5pdC5jXG5AQCAtMjQzLDEwICsyNDMsMTEgQEAgc3RhdGljIHZvaWQgdmNhcF90ZXN0X2FwaV9pbml0KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbilcbiB7XG4gXHQvKiBJbml0aWFsaXplIHRoZSBzaGFyZWQgb2JqZWN0cyAqL1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbitcdG11dGV4X2luaXQoXHUwMDI2dGVzdF92Y3RybC5sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWxpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlcnVsZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWRtaW4tXHUwMDNlZW5hYmxlZCk7XG4tXHRtdXRleF9pbml0KFx1MDAyNmFkbWluLVx1MDAzZWxvY2spO1xuK1x0YWRtaW4tXHUwMDNldmN0cmwgPSBcdTAwMjZ0ZXN0X3ZjdHJsO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0LCBcdTAwMjZ0ZXN0X3ZjdHJsLmxpc3QpO1xuIFx0bWVtc2V0KHRlc3RfdXBkYXRlYWRkciwgMCwgc2l6ZW9mKHRlc3RfdXBkYXRlYWRkcikpO1xuIFx0dGVzdF91cGRhdGVhZGRyaWR4ID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuY1xuaW5kZXggY2UyNmNjYmRjY2RmOTMuLjgzZGUzODRkM2UzYmQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuY1xuQEAgLTIzMywxMCArMjMzLDExIEBAIHN0YXRpYyB2b2lkIHZjYXBfdGVzdF9hcGlfaW5pdChzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pXG4ge1xuIFx0LyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG9iamVjdHMgKi9cbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnRlc3RfdmN0cmwubGlzdCk7XG4rXHRtdXRleF9pbml0KFx1MDAyNnRlc3RfdmN0cmwubG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZG1pbi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZXJ1bGVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFkbWluLVx1MDAzZWVuYWJsZWQpO1xuLVx0bXV0ZXhfaW5pdChcdTAwMjZhZG1pbi1cdTAwM2Vsb2NrKTtcbitcdGFkbWluLVx1MDAzZXZjdHJsID0gXHUwMDI2dGVzdF92Y3RybDtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YWRtaW4tXHUwMDNlbGlzdCwgXHUwMDI2dGVzdF92Y3RybC5saXN0KTtcbiBcdG1lbXNldCh0ZXN0X3VwZGF0ZWFkZHIsIDAsIHNpemVvZih0ZXN0X3VwZGF0ZWFkZHIpKTtcbiBcdHRlc3RfdXBkYXRlYWRkcmlkeCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oXG5pbmRleCA4NDRiZGY2YjVmNDUwMi4uYjQwNTdmYmUzZDE4OGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaFxuQEAgLTUwLDYgKzUwLDkgQEAgc3RydWN0IHZjYXBfc3RyZWFtX2l0ZXIge1xuIFxuIC8qIENoZWNrIHRoYXQgdGhlIGNvbnRyb2wgaGFzIGEgdmFsaWQgc2V0IG9mIGNhbGxiYWNrcyAqL1xuIGludCB2Y2FwX2FwaV9jaGVjayhzdHJ1Y3QgdmNhcF9jb250cm9sICpjdHJsKTtcbisvKiBTZXJpYWxpemUgYWNjZXNzIHRvIHRoZSB2Y2FwIGluc3RhbmNlcyBvZiBhIGNvbnRyb2wgKi9cbit2b2lkIHZjYXBfbG9jayhzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4pO1xuK3ZvaWQgdmNhcF91bmxvY2soc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKTtcbiAvKiBFcmFzZSB0aGUgVkNBUCBjYWNoZSBhcmVhIHVzZWQgb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nICovXG4gdm9pZCB2Y2FwX2VyYXNlX2NhY2hlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjA3LjAyMDc2OTY4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MjIyNzQyNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkNBUCBEcml2ZXIgTG9ja2luZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgbG9ja2luZyBtZWNoYW5pc20gd2l0aGluIHRoZSBNaWNyb2NoaXAgVkNBUCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBzaGlmdGluZyB0aGUgbG9jayBmcm9tIHRoZSBgdmNhcF9hZG1pbmAgc3RydWN0dXJlIG92ZXIgdG8gdGhlIGB2Y2FwX2NvbnRyb2xgIHN0cnVjdHVyZS4gVGhlIGdvYWwsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdG8gc2VyaWFsaXplIGFjY2VzcyBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZiB0aGUgVkNBUC4gU291bmRzIGxpa2UgYSBnb29kIG1vdmUgdG8gY2VudHJhbGl6ZSB0aGUgbG9ja2luZywgaWYgaXQgd29ya3MuXG5cbkkgc2VlIGl0IHRvdWNoZXMgYSBwcmV0dHkgYnJvYWQgc3dhdGggb2YgZmlsZXM6IGBsYW45NjZ4X3ZjYXBfaW1wbC5jYCwgYHNwYXJ4NV92Y2FwX2ltcGwuY2AsIGB2Y2FwX2FwaS5jYCwgYC5oYCBmaWxlcywgYW5kIGV2ZW4gc29tZSBkZWJ1Z2ZzIGFuZCBLVW5pdCByZWxhdGVkIGNvZGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBhIGZhaXJseSBpbXBhY3RmdWwgY2hhbmdlLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyLlxuXG5Ib2xkIG9uLi4uIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhpcyBiZWluZyBhIGxvY2tpbmcgY2hhbmdlIGFuZCB0aGUgZmFjdCB0aGlzIGlzIGEgbmV0d29yayBkcml2ZXIsIGEga2V5IHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLiBJcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE1pY3JvY2hpcCdzIFNwYXJ4NSBhbmQgTEFOOTY2eCBhcmUgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2ggaW1wbGVtZW50YXRpb25zLCByaWdodD8gU28sIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZW11bGF0b3IgYnVpbHQgZm9yIHRoZXNlIGRldmljZXMsIHRoaXMgZHJpdmVyIHNob3VsZCBiZSBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQuIE1vc3Qgb2YgdGhlc2Ugc3dpdGNoZGV2IGRyaXZlcnMgSSd2ZSB3b3JrZWQgd2l0aCBhcmUgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBoYXJkd2FyZSB1bmxlc3MgdGhlcmUncyBhbiBleHBsaWNpdCBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIsIGxpa2Ugd2hhdCBuZXRkZXZzaW0gcHJvdmlkZXMgKGJ1dCB0aGlzIGlzbid0IHRoYXQga2luZCBvZiBnZW5lcmljIGRyaXZlcikuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgc2VhcmNoIGZvciBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIHdpdGhpbiB0aGUga2VybmVsIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBkZXZpY2VzIGFyZSBpbmRlZWQgaGFyZHdhcmUtc3BlY2lmaWMuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODUzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MTMuOTQzMDQ2NDg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTY1OTYyMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIChTUEFSWDVfU1dJVENIfExBTjk2NlhfU1dJVENIKVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjE6Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJMYW45NjZ4IHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTpjb25maWcgU1BBUlg1X1NXSVRDSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTcGFyeDUgc3dpdGNoIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MjAuMjU5NjUwNjE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NDQ0MDkwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEtjb25maWcgZm9yIExBTjk2NlggYW5kIFNQQVJYNSBTd2l0Y2hlcyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBNeSBmaXJzdCBpbXB1bHNlIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYm90aCB0aGUgTEFOOTY2WCBhbmQgU1BBUlg1IHN3aXRjaGVzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZXNlIHNwZWNpZmljIGRldmljZXMuIFRoZSBnb2FsIGhlcmUgaXNuJ3QganVzdCBhIGNhc3VhbCBnbGFuY2U7IEknbSBsb29raW5nIGZvciB0aGUgZmluZS1ncmFpbmVkIGRldGFpbHMuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGRpc2NyZXBhbmNpZXMgaW4gaG93IHRoZXkncmUgZXhwb3NlZCBpbiB0aGUgYnVpbGQgc3lzdGVtLiBBcmUgdGhlcmUgZmVhdHVyZSBmbGFncyB0aGF0IG1heSBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIG9uZSBidXQgbm90IHRoZSBvdGhlcj8gQXJlIHRoZXJlIGhhcmR3YXJlIG9yIG90aGVyIHNvZnR3YXJlIGRlcGVuZGVuY2llcywgc3BlY2lmaWNhbGx5IG9uIGFueSBvdGhlciBkcml2ZXJzIG9yIGhhcmR3YXJlIGNvbXBvbmVudHMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkgYWxzbyB3YW50IHRvIGlkZW50aWZ5IGFueSBleGlzdGluZyBhcmNoaXRlY3R1cmFsIGRpZmZlcmVuY2VzIHRoYXQgbWlnaHQgbWFuaWZlc3QgdGhlbXNlbHZlcyBpbiB0aGUgY29uZmlndXJhdGlvbiBtZW51cy4gSSdtIHRoaW5raW5nIGFib3V0IHBvcnRhYmlsaXR5IGFuZCBtYWtpbmcgc3VyZSB0aGF0IHRoZSBzZXR0aW5ncyBhcmUgaW50dWl0aXZlIGFuZCBoYXZlIGxvZ2ljYWwgZGVmYXVsdHMgZm9yIGJvdGggc3dpdGNoIGZhbWlsaWVzLiBUaGVyZSB3aWxsIGJlIGxvdHMgb2YgZGV0YWlscyBmb3IgdGhlc2Ugc3BlY2lmaWMgc3dpdGNoZXMgYW5kIGlmIEkgZmluZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBhdCB0aGlzIHN0YWdlLCBpdCB3aWxsIHNhdmUgYSBsb3Qgb2YgcGFpbiBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc4OSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjIzLjc0NDA5NDE0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjM1NzUzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJMYW45NjZ4IHN3aXRjaCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzozOlxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBPRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjc6XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MTU9Y29uZmlnIExBTjk2NlhfRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xNi1cXHRib29sIFxcXCJEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6MTc6XFx0ZGVwZW5kcyBvbiBMQU45NjZYX1NXSVRDSCBcXHUwMDI2XFx1MDAyNiBEQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTE4LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDoyMy44MzA0NTk5NjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAyNjgyMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqU1BBUlg1X1NXSVRDSCBJbnF1aXJ5KipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYFNQQVJYNV9TV0lUQ0hgLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIGRldGVybWluZSAqd2h5KiBJJ20gbG9va2luZyBhdCB0aGlzIHNwZWNpZmljIHZhcmlhYmxlIG9yIG1vZHVsZSByaWdodCBub3cuIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSBhbmQgY29udGV4dCwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHJlbGV2YW50IHRvIGEgc3BlY2lmaWMgcHJvYmxlbSBvciBhbmFseXNpcyBJJ20gY3VycmVudGx5IGRlYWxpbmcgd2l0aC4gVGhlIGZvY3VzIG9uIFwiY2hlY2tpbmdcIiBpbXBsaWVzIEknbSBlaXRoZXIgdmVyaWZ5aW5nIGl0cyBjdXJyZW50IHN0YXRlLCBpdHMgYmVoYXZpb3IgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBvciBwZXJoYXBzIHRyb3VibGVzaG9vdGluZyBhbiBpc3N1ZSByZWxhdGVkIHRvIGl0LiBJIHdpbGwgaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgd2hldGhlciBpdCBtZWV0cyB0aGUgZXhwZWN0YXRpb25zIGdpdmVuIHRoZSBjdXJyZW50IHNpdHVhdGlvbi4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcmVzdWx0IG9mIHRoaXMgY2hlY2sgbmVjZXNzaXRhdGVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiByZWxhdGVkIGNvbXBvbmVudHMgb3Igc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ4NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjI3LjAzMzE0NTAzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzc4ODI5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9MT1jb25maWcgU1BBUlg1X1NXSVRDSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTcGFyeDUgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzpcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gT0ZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIEFSQ0hfU1BBUlg1IHx8IEFSQ0hfTEFOOTY5WCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOS1cXHRzZWxlY3QgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE3PWNvbmZpZyBTUEFSWDVfRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSCBcXHUwMDI2XFx1MDAyNiBEQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMjAtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVxcdGJvb2wgXFxcIkxhbjk2OXggc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzA6XFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MjcuMzExMDM2Mjc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MzY3MjA3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZpcnR1YWxpemF0aW9uIENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBkZXBlbmRlbmN5IG9uIGBIQVNfSU9NRU1gIGFuZCBEZXZpY2UgVHJlZSAoYE9GYCkuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoZXNlIGFzIGhhcmR3YXJlIGRyaXZlciBmbGFncy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkNhbiBJIGV2ZW4gdG91Y2ggdGhpcyBjb2RlIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwP1wiIFR5cGljYWxseSwgZHJpdmVycyB0aGF0IHVzZSBEZXZpY2UgVHJlZSBvciBQQ0kgcHJvYmluZyBhbmQgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKGBJT01FTWApIGFyZSBwcmV0dHkgbG9ja2VkIGRvd24uIFlvdSdkIG5lZWQgYSB2ZXJ5IHNwZWNpZmljIGVtdWxhdG9yIGZvciB0aGUgaGFyZHdhcmUgKGxpa2UgYSBQQ0kgZGV2aWNlIGVtdWxhdG9yKSBvciwgbWF5YmUsIHZpcnR1YWwgZHJpdmVyIGltcGxlbWVudGF0aW9ucyB0byBoYXZlIGFueSBjaGFuY2UuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIGB2Y2FwX2FwaV9rdW5pdC5jYCBhbmQgYHZjYXBfYXBpX2RlYnVnZnNfa3VuaXQuY2AuLi4gdGhvc2UgYXJlIEtVbml0IHRlc3RzISBUaGF0IGNoYW5nZXMgZXZlcnl0aGluZy4gS1VuaXQgdGVzdHMgYXJlICpkZXNpZ25lZCogdG8gcnVuIHdpdGhpbiB2aXJ0dWFsIGVudmlyb25tZW50cy5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIEtVbml0IHRlc3RzIGFjdHVhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBwYXJ0cyBvZiB0aGUgY29kZS4gSWYgdGhleSBkbywgYW5kIGlmIEkgY2FuIGdldCB0aGVtIHJ1bm5pbmcsIEkgbWlnaHQgaGF2ZSBhIHNvbGlkLCB2aXJ0dWFsaXplZCB0ZXN0aW5nIGZyYW1ld29yay4gVGhpcyBjb3VsZCBzYXZlIG1lIGEgaHVnZSBoZWFkYWNoZSBvZiBkZWFsaW5nIHdpdGggaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBMZXQncyBkaWcgaW4gYW5kIHNlZSBpZiB0aGUgS1VuaXQgdGVzdHMgYXJlIGEgdmlhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6MzEuODk0NzExMzc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjY5NTczMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qVkNBUC4qS1VOSVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZz04PWNvbmZpZyBWQ0FQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWc6Mzk6Y29uZmlnIFZDQVBfS1VOSVRfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiS1VuaXQgdGVzdCBmb3IgVkNBUCBsaWJyYXJ5XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjM0LjU2NDMwMDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjE3MzUxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgcHJlc2VudGVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYFZDQVBfS1VOSVRfVEVTVGAgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgYFZDQVBfS1VOSVRfVEVTVGAgcmVsaWVzIG9uLiBJdCdzIGEga2V5IHZhcmlhYmxlLCBhbmQgSSBjYW4ndCBqdXN0IG9wZXJhdGUgaW4gYSB2YWN1dW0uIEl0J3Mgbm90IGVub3VnaCB0byAqa25vdyogaXQgZXhpc3RzLCBJIG5lZWQgdG8ga25vdyAqd2hhdCogbWFrZXMgaXQgdGljay4gV2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIGl0cyB1c2U/IFdoYXQgaW5mcmFzdHJ1Y3R1cmUgZWxlbWVudHMgaXMgaXQgbGV2ZXJhZ2luZz8gSXMgaXQgcmVsYXRlZCB0byB0aGUga2VybmVsLCBvciBzb21ldGhpbmcgYnJvYWRlcj8gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIHNvIHRoYXQgSSBjYW4gYW50aWNpcGF0ZSBob3cgaXQgYmVoYXZlcyB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgZW52aXJvbm1lbnQtc3BlY2lmaWMsIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29yaywgb3Igc29tZXRoaW5nIGVudGlyZWx5IG1vcmUgZXhvdGljPyBJIG5lZWQgdGhlIGZ1bGwgcGljdHVyZSB0byBiZSBjb25maWRlbnQgaW4gaG93IGl0J3MgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3OTYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDozOC4yODYwNDExMzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NTEyMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24uKlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWc9Mzk9Y29uZmlnIFZDQVBfS1VOSVRfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiS1VuaXQgdGVzdCBmb3IgVkNBUCBsaWJyYXJ5XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZzo0MTpcXHRkZXBlbmRzIG9uIEtVTklUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZzo0MjpcXHRkZXBlbmRzIG9uIEtVTklUPXkgXFx1MDAyNlxcdTAwMjYgVkNBUD15IFxcdTAwMjZcXHUwMDI2IHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC9LY29uZmlnLTQzLVxcdHNlbGVjdCBERUJVR19GU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDozOC4zNzM1NjE2NTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzOTA1NzgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWQ0FQX0tVTklUX1RFU1QgYW5kIHRoZSBGdXp6aW5nIENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgYFZDQVBfS1VOSVRfVEVTVGAgZmxhZywgd2hpY2ggc3VnZ2VzdHMgc29tZSBpbnRlZ3JhdGlvbiB3aXRoIEtVbml0IHRlc3RzLiBCdXQgaGVyZSdzIHRoZSBydWI6IFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGlzbid0IGRlc2lnbmVkIHRvIGRpcmVjdGx5IGZ1enogS1VuaXQgdGVzdHMuIEl0IGZvY3VzZXMgb24gc3lzdGVtIGNhbGxzLCBuZXR3b3JrIHBhY2tldHMsIGFuZCB0aGUgbGlrZSwgbm90IHRoZSB0ZXN0IGluZnJhc3RydWN0dXJlIGl0c2VsZi4gVGhlIHRlc3RzIHJ1biBkdXJpbmcgYm9vdCBvciBtb2R1bGUgbG9hZCwgYW5kIFN5emthbGxlciBtaWdodCBleGVjdXRlIHRoZW0gKm9uY2UqIGR1cmluZyB0aGF0IHByb2Nlc3MsIGJ1dCB0aGF0J3Mgbm90IHdoYXQgSSdkIGNhbGwgZWZmZWN0aXZlIGZ1enppbmcuIFdlIHdvdWxkbid0IGJlIGFibGUgdG8gY2F0Y2ggdGhlIGVkZ2UtY2FzZSBidWdzIGZvciBhIHRlc3QgcnVubmluZyBvbmx5IG9uY2UuXG5cblNvLCBpZiB0aGUgY29kZSBpbiBxdWVzdGlvbiAqaXMqIG9ubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhvc2UgS1VuaXQgdGVzdHMsIGlzIGl0IGV2ZW4gd29ydGggcHVyc3Vpbmcgd2l0aCBTeXprYWxsZXI/IFN5emthbGxlcidzIHN0cmVuZ3RoIGxpZXMgaW4gaXRzIGFiaWxpdHkgdG8gZ2VuZXJhdGUgdmFyaWVkIGFuZCBjb21wbGV4IGlucHV0cywgc29tZXRoaW5nIHRoYXQncyBub3QgdGFpbG9yZWQgdG8gdGhlIEtVbml0IHRlc3QgZXhlY3V0aW9uIG1vZGVsLiBXZSBhcmUgbWlzc2luZyBvcHBvcnR1bml0aWVzIGZvciBlZGdlLWNhc2UgYnVncy4gSXQgZmVlbHMgbGlrZSBhbiBpbmVmZmljaWVudCB1c2Ugb2YgcmVzb3VyY2VzLCB1bmxlc3Mgd2UgY2FuIHNvbWVob3cgZ2V0IHRoaXMgQVBJIGV4cG9zZWQgdGhyb3VnaCBhbm90aGVyIGNoYW5uZWwuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGhvdyBjYW4gdGhlIFZDQVAgQVBJIGJlIGFjY2Vzc2VkPyBJcyBpdCBleHBvc2VkIHRvIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMsIG9yIGlzIGl0IGV4Y2x1c2l2ZWx5IHVzZWQgaW50ZXJuYWxseSBieSBoYXJkd2FyZSBkcml2ZXJzPyBGaW5kaW5nIG91dCB0aGF0IGFuc3dlciBpcyBjcnVjaWFsIGZvciBkZWNpZGluZyBpZiB0aGlzIGlzIGV2ZW4gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjA4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjQzLjkxMjYyNDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTMzNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnZjYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMzMz12Y2FwX2ZpbmRfa2V5c3RyZWFtX2tleXNldHMoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNjE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9maW5kX2tleXN0cmVhbV9rZXlzZXRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzY2PWludCB2Y2FwX2FkZHJfa2V5c2V0cyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzkyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM5MzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FkZHJfa2V5c2V0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTQwNz1jb25zdCBzdHJ1Y3QgdmNhcF9zZXQgKnZjYXBfa2V5ZmllbGRzZXQoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTQyMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzo0MjE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9rZXlmaWVsZHNldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy00MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTg4ND1pbnQgdmNhcF9zZXRfcnVsZV9zZXRfa2V5c2V0KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkwMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzo5MDE6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9zZXRfcnVsZV9zZXRfa2V5c2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTkwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9OTA0PWludCB2Y2FwX3NldF9ydWxlX3NldF9hY3Rpb25zZXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtOTIwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjkyMTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF9ydWxlX3NldF9hY3Rpb25zZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtOTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz05NjY9aW50IHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1NjQgY29va2llKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy05ODYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6OTg3OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbG9va3VwX3J1bGVfYnlfY29va2llKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTk4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9OTkwPWludCB2Y2FwX2FkbWluX3J1bGVfY291bnQoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluLCBpbnQgY2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xMDA1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjEwMDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9hZG1pbl9ydWxlX2NvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTEwMDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE2MTU9aW50IHZjYXBfY2hhaW5faWRfdG9fbG9va3VwKHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGN1cl9jaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2MjgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTYyOTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2NoYWluX2lkX3RvX2xvb2t1cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0xNjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0xNjMyPXN0cnVjdCB2Y2FwX2FkbWluICp2Y2FwX2ZpbmRfYWRtaW4oc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2NDQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTY0NTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZpbmRfYWRtaW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTY2OT1pbnQgdmNhcF9jaGFpbl9vZmZzZXQoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBmcm9tX2NpZCwgaW50IHRvX2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTY4MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxNjgxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfY2hhaW5fb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE2ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE2ODc9Ym9vbCB2Y2FwX2lzX25leHRfbG9va3VwKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBpbnQgc3JjX2NpZCwgaW50IGRzdF9jaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE3MDYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTcwNzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2lzX25leHRfbG9va3VwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE3MDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE3ODc9Ym9vbCB2Y2FwX2tleXNldF9saXN0X2FkZChzdHJ1Y3QgdmNhcF9rZXlzZXRfbGlzdCAqa2V5c2V0bGlzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgwMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxODAxOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfa2V5c2V0X2xpc3RfYWRkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTE4MjA9Y29uc3QgY2hhciAqdmNhcF9rZXlzZXRfbmFtZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxODI1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfa2V5c2V0X25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTgyOD1jb25zdCBjaGFyICp2Y2FwX2tleWZpZWxkX25hbWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTE4MzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MTgzMzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2tleWZpZWxkX25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTgzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTkxOD1ib29sIHZjYXBfcnVsZV9maW5kX2tleXNldHMoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTkyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoxOTI1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9maW5kX2tleXNldHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMTkyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MTk5Nz1pbnQgdmNhcF92YWxfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCB1MTYgbDNfcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIwNzUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjA3NjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3ZhbF9ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIwNzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTIyNjg9aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjMyMT1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2FsbG9jX3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIzOTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjM5MjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2FsbG9jX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjM5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjM5NT12b2lkIHZjYXBfZnJlZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0MTItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQxMzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZyZWVfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNDQ0PXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDYyOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjQ2NT1pbnQgdmNhcF9tb2RfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDk4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI0OTk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9tb2RfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNTQ3PWludCB2Y2FwX2RlbF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTg1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI1ODY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9kZWxfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNTg5PWludCB2Y2FwX2RlbF9ydWxlcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNjE0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI2MTU6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9kZWxfcnVsZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjYxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjYzMT1jb25zdCBzdHJ1Y3QgdmNhcF9maWVsZCAqdmNhcF9sb29rdXBfa2V5ZmllbGQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjY0NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNjQ2OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfbG9va3VwX2tleWZpZWxkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI2NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3MzE9aW50IHZjYXBfcnVsZV9hZGRfa2V5X2JpdChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjczOC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNzM5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X2JpdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNzQyPWludCB2Y2FwX3J1bGVfYWRkX2tleV91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NTAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjc1MTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV91MzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc1ND1pbnQgdmNhcF9ydWxlX2FkZF9rZXlfdTQ4KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzYxLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3NjI6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfdTQ4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI3NjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI3NjU9aW50IHZjYXBfcnVsZV9hZGRfa2V5X3U3MihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjc3Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNzczOkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3U3Mik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNzc2PWludCB2Y2FwX3J1bGVfYWRkX2tleV91MTI4KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzgzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI3ODQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9rZXlfdTEyOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9Mjc4Nj1pbnQgdmNhcF9ydWxlX2dldF9rZXlfdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNzk5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MDA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2dldF9rZXlfdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI4MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4MDQ9dmNhcF9maW5kX2FjdGlvbmZpZWxkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9hY3Rpb25fZmllbGQgYWN0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yODEzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI4MTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9maW5kX2FjdGlvbmZpZWxkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI4MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI4OTc9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX2JpdChzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTA1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MDY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fYml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MDk9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3UzMihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTE3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MTg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5MTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5MjE9aW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3U3MihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTI5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5MzA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2FkZF9hY3Rpb25fdTcyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NDc9dm9pZCB2Y2FwX25ldGJ5dGVzX2NvcHkodTggKmRzdCwgdTggKnNyYywgaW50IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yOTUzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI5NTQ6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9uZXRieXRlc19jb3B5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5NTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI5NTc9dm9pZCB2Y2FwX3NldF90Y19leHRlcnIoc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmZjbywgc3RydWN0IHZjYXBfcnVsZSAqdnJ1bGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI5ODMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6Mjk4NDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NldF90Y19leHRlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjk4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzIwNj1pbnQgdmNhcF9lbmFibGVfbG9va3VwcyhzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyMzYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2VuYWJsZV9sb29rdXBzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMyNDA9Ym9vbCB2Y2FwX2lzX2xhc3RfY2hhaW4oc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIGludCBjaWQsIGJvb2wgaW5ncmVzcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzI1OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozMjU5OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfaXNfbGFzdF9jaGFpbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjYyPXZvaWQgdmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIHUzMiBjb3VudGVyX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjY3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMyNjg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3NldF9jb3VudGVyX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjcwPWludCB2Y2FwX3J1bGVfc2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMjg4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMyODk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3NldF9jb3VudGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMyOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0zMjkxPWludCB2Y2FwX3J1bGVfZ2V0X2NvdW50ZXIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgc3RydWN0IHZjYXBfY291bnRlciAqY3RyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzA5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMzMTA6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX2dldF9jb3VudGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMzMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMzOTQ9aW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDMyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0MzM6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzQzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzQ1MD1pbnQgdmNhcF9ydWxlX21vZF9rZXlfdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDU4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0NTk6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX21vZF9rZXlfdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0NjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTM0NjI9aW50IHZjYXBfcnVsZV9yZW1fa2V5KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDc3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0Nzg6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9ydWxlX3JlbV9rZXkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzQ3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzQ5NT1pbnQgdmNhcF9ydWxlX21vZF9hY3Rpb25fdTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1MDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzUwNDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfbW9kX2FjdGlvbl91MzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzUwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzUwNz1pbnQgdmNhcF9maWx0ZXJfcnVsZV9rZXlzKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NDktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzU1MDpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2ZpbHRlcl9ydWxlX2tleXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzU1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzU1ND12Y2FwX3NlbGVjdF9taW5fcnVsZV9rZXlzZXQoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM1NzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzU3MzpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3NlbGVjdF9taW5fcnVsZV9rZXlzZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzU3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzU3Nj1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2NvcHlfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICplcnVsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzYxNi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzozNjE3OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfY29weV9ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM2MTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE4OjQwOjQzLjk3NTU2NjMwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUyNTQxMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZDQVAgQVBJIFVzYWdlIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgVkNBUCBBUEkgaGVyZS4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoYXQgaXQncyBjbGVhcmx5IGJlaW5nIHV0aWxpemVkIGJ5IHRoZSBoYXJkd2FyZSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycy4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGVzdGFibGlzaGVkIGZhY3QuIEJ1dCBteSBleHBlcnQgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gYSBiaWdnZXIgcXVlc3Rpb246IGFyZSB0aGVzZSB0aGUgKm9ubHkqIGRyaXZlcnMgbGV2ZXJhZ2luZyB0aGUgVkNBUCBBUEkgd2l0aGluIG91ciBjdXJyZW50IHN5c3RlbT8gSSBuZWVkIHRvIGtub3cgaWYgdGhlIGRlcGVuZGVuY3kgZXh0ZW5kcyBiZXlvbmQgdGhpcyBpbW1lZGlhdGUgcGFpci4gVW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiBWQ0FQIEFQSSdzIHVzZSBpcyBjcnVjaWFsIGZvciBhbnkgZnV0dXJlIHJlZmFjdG9yaW5nLCBvcHRpbWl6YXRpb24sIG9yIGV2ZW4gZGVidWdnaW5nIGVmZm9ydHMuIFdlIGhhdmUgdG8gaWRlbnRpZnkgZXZlcnkgY29uc3VtZXIuIElmIGl0J3MgbW9yZSB3aWRlbHkgdXNlZCB0aGFuIEkgY3VycmVudGx5IGJlbGlldmUsIHRoaXMgbWF5IGJlIGEgc3lzdGVtLWxldmVsIGlzc3VlIGFuZCBub3QgY29udGFpbmVkIHRvIHRoZSBkcml2ZXJzIHVzaW5nIHRoZSBBUEkuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBpbnRlZ3JhdGlvbiBmb290cHJpbnQgYWNyb3NzIHRoZSBlbnRpcmUgZHJpdmVyIGVjb3N5c3RlbS4gV2hhdCBvdGhlciBjb2RlIGlzIGltcGxpY2l0bHkgcmVseWluZyBvbiB0aGUgVkNBUCBBUEkncyBmdW5jdGlvbmFsaXR5PyBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIGEgZmV3IG90aGVyIHBsYWNlcyB0aGF0IG5lZWQgbW9yZSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODA5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6NDcuNDI4MTEwMzkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDM1ODQ5Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjYXBfYWRkX3J1bGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYz01ND1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2FkZF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM6OTU6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NDQ3PXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfYWRkKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jOjU1MDpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU1MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9NDg5PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2FkZF9ydWxlX2NvcHkoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDAtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjU0MTpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTE2Nz1zdGF0aWMgaW50IHNwYXJ4NV90Y19mbG93ZXJfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTEzMjMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjEzMjQ6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTMyNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMjU3PXN0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfc3RhdGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjctLyogRW5jb2RlIGFuZCB3cml0ZSBhIHZhbGlkYXRlZCBydWxlIHRvIHRoZSBWQ0FQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMjY4OmludCB2Y2FwX2FkZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTE2Nz1pbnQgdmNhcF92YWxfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCB1MTYgbDNfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE2OC0vKiBBZGQgcnVsZSB0byBhIFZDQVAgaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNjk6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMTcwLS8qIERlbGV0ZSBydWxlIGluIGEgVkNBUCBpbnN0YW5jZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0yNDc9c3RhdGljIHZvaWQgdGVzdF92Y2FwX3huX3J1bGVfY3JlYXRvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsIGludCBjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzozMTE6XFx0cmV0ID0gdmNhcF9hZGRfcnVsZShydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMi1cXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM9MTMzND1zdGF0aWMgdm9pZCB2Y2FwX2FwaV9lbmNvZGVfcnVsZV90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMTQzNC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzoxNDM1OlxcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0xNDM2LVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAwLCByZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDo0OS40NjM5NjcwODVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU5NDAzMjc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWQ0FQIEFQSSBhbmQgRnV6emluZyBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcuIFRoZSBWQ0FQIEFQSSBpcyB1c2VkIGJ5IHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhlc2UgYXJlIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXJzLCB0aGV5IG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUsIGxpa2UgSU9NRU0gYW5kIE9GLCBhbmQgdGhhdCBhdXRvbWF0aWNhbGx5IG1lYW5zIHRoZXkgY2FuJ3QgYmUgZnV6emVkIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2FpdCwgY291bGQgS1VuaXQgdGVzdHMgYmUgdXNlZnVsIGhlcmU/IEhvbGQgb24uLi4gU3l6a2FsbGVyIGRvZXNuJ3QgYWN0dWFsbHkgZnV6eiBLVW5pdCB0ZXN0cyBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEl0IG9ubHkgKnJ1bnMqIHRoZW0gYXQgYm9vdCwgd2hpY2ggaXNuJ3QgZnV6emluZywgaXQncyBqdXN0IGEgc2luZ2xlIHRlc3QuIFRoYXQgZG9lc24ndCBoZWxwIG1lIG11Y2guXG5cbk5vdyBJIHJlbWVtYmVyIHRoZSBwcm9tcHQncyBjcml0ZXJpYSBmb3IgV29ydGhGdXp6aW5nPWZhbHNlLiBJdCBsaXN0cyBtb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvZGUgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdywgYW5kIOKAkyBjcnVjaWFsbHkg4oCTIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBbmQgaGVyZSBpdCBpcyEgVGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBoYXJkd2FyZS1zcGVjaWZpYywgYW5kIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgc28gdGhlIGNvZGUgcGF0aHMgKmFyZSogdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGF0IGxvb2tzIGxpa2UgYSBjbGVhciBcIldvcnRoRnV6emluZz1mYWxzZVwiLlxuXG5CdXQgd2FpdOKApiBJIGFsd2F5cyB3YW50IHRvIGJlIHRob3JvdWdoLiBBcmUgdGhlcmUgKmFueSogb3RoZXIgZHJpdmVycyB0aGF0IG1pZ2h0IHVzZSBWQ0FQPyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgb3RoZXIgZHJpdmVycyB1c2luZyB0aGUgQVBJIGJlZm9yZSBJIGNvbXBsZXRlbHkgY29tbWl0IHRvIHRoYXQgY29uY2x1c2lvbi4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MzUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTg6NDA6NTUuMDU4MDAzNDE3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjEzMzc5NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjYXBfYWRkX3J1bGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYz01ND1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2FkZF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM6OTU6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy05Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NDQ3PXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfYWRkKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jOjU1MDpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU1MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9NDg5PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2FkZF9ydWxlX2NvcHkoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDAtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjU0MTpcXHRlcnIgPSB2Y2FwX2FkZF9ydWxlKHZydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy01NDItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTE2Nz1zdGF0aWMgaW50IHNwYXJ4NV90Y19mbG93ZXJfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTEzMjMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjEzMjQ6XFx0ZXJyID0gdmNhcF9hZGRfcnVsZSh2cnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTMyNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yMjU3PXN0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfc3RhdGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTIyNjctLyogRW5jb2RlIGFuZCB3cml0ZSBhIHZhbGlkYXRlZCBydWxlIHRvIHRoZSBWQ0FQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMjY4OmludCB2Y2FwX2FkZF9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yMjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxNy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyMzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfYWRkX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTE2Nz1pbnQgdmNhcF92YWxfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLCB1MTYgbDNfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE2OC0vKiBBZGQgcnVsZSB0byBhIFZDQVAgaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNjk6aW50IHZjYXBfYWRkX3J1bGUoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMTcwLS8qIERlbGV0ZSBydWxlIGluIGEgVkNBUCBpbnN0YW5jZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYz0yNDc9c3RhdGljIHZvaWQgdGVzdF92Y2FwX3huX3J1bGVfY3JlYXRvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsIGludCBjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzozMTE6XFx0cmV0ID0gdmNhcF9hZGRfcnVsZShydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9rdW5pdC5jLTMxMi1cXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmM9MTMzND1zdGF0aWMgdm9pZCB2Y2FwX2FwaV9lbmNvZGVfcnVsZV90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2t1bml0LmMtMTQzNC1cXHQvKiBBZGQgcnVsZSB3aXRoIHdyaXRlIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYzoxNDM1OlxcdHJldCA9IHZjYXBfYWRkX3J1bGUocnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfa3VuaXQuYy0xNDM2LVxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAwLCByZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MDo1Ny4yNzEzOTExMDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5MzM0MTc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb246IE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgY29kZSwgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBvbmx5IHRvdWNoaW5nIHRoZSBgbGFuOTY2eGAgYW5kIGBzcGFyeDVgIGRyaXZlcnMsIGFuZCB0aGVpciBhc3NvY2lhdGVkIEtVbml0IHRlc3RzLiBUaGVzZSBhcmUgKnNwZWNpZmljYWxseSogaGFyZHdhcmUgZHJpdmVycyBmb3IgTWljcm9jaGlwIHN3aXRjaGVzLiBOb3csIEkga25vdyB0aGVzZSBpbnNpZGUgYW5kIG91dDsgeW91IGNhbid0IHJlYWxpc3RpY2FsbHkgZXhlcmNpc2UgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSB3aXRob3V0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBBbmQsIGZyYW5rbHksIHRoYXQgbGV2ZWwgb2YgZGV0YWlsZWQgZW11bGF0aW9uICpkb2Vzbid0KiBleGlzdCBpbiBzdGFuZGFyZCBRRU1VIGZvciB0aGVzZSBwYXJ0aWN1bGFyIHN3aXRjaGVzLiBUaHVzLCB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSB3aGVuIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlcmVmb3JlLCBpdCdzIG5vdCBnb2luZyB0byBiZSBwb3NzaWJsZSB0byBmdXp6IHRoZSBjb2RlIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyBmb3IgTWljcm9jaGlwJ3MgVkNBUCwgTEFOOTY2eCwgYW5kIFNwYXJ4NSwgYW5kIHRoZXNlIGNvbXBvbmVudHMgYXJlIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNjMxLCJPdXRwdXRUb2tlbnMiOjEwNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxODo0MTowMS45NjQ3MzY2MTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaW4gdGhlIE1pY3JvY2hpcCBWQ0FQIChWZXJzYXRpbGUgQ29udGVudC1Bd2FyZSBQcm9jZXNzb3IpIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBoYXJkd2FyZS1zcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyAobGFuOTY2eCBhbmQgc3Bhcng1KS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIChJT01FTSwgT0YpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtfpxq[1] Phase: Running StartedAt: 2026-06-30 18:41:12 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtfpxq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-30 18:41:12 +0000 UTC FinishedAt: 2026-06-30 18:41:19 +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,}