Name: series-workflowlvwxm Phase: Failed StartedAt: 2026-08-10 22:21:14 +0000 UTC FinishedAt: 2026-08-10 22:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvwxm[0] Phase: Succeeded StartedAt: 2026-08-10 22:21:14 +0000 UTC FinishedAt: 2026-08-10 22:40:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvwxm[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 22:21:14 +0000 UTC FinishedAt: 2026-08-10 22:40:59 +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+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWIyOWMxMDYwN2U0NzNjYWJhYmQ5MTZhZjAwZjczYzVmYjlhOThlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIyOjM3OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbmluZGV4IDhiOWNlN2NiZmZmOWIuLjFmYjVmM2NiZTkzYzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbkBAIC0zMDcxLDcgJiM0MzszMDcxLDggQEAgc3RhdGljIHZvaWQgaWdjX3hkcF94bWl0X3pjKHN0cnVjdCBpZ2NfcmluZyAqcmluZylcbiBcdFx0b2xpbmZvX3N0YXR1cyA9IHhkcF9kZXNjLmxlbiBcdTAwM2NcdTAwM2MgSUdDX0FEVlRYRF9QQVlMRU5fU0hJRlQ7XG4gXG4gXHRcdGRtYSA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuLVx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuJiM0MztcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuJiM0MztcdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbiBcdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hLCB4ZHBfZGVzYy5sZW4pO1xuIFx0XHRiaSA9IFx1MDAyNnJpbmctXHUwMDNldHhfYnVmZmVyX2luZm9bbnR1XTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcbmluZGV4IDNkMTlkYWQ4Zjg2ODguLmQxOTRlZWRkZDdiNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuQEAgLTk5LDcgJiM0Mzs5OSw3IEBAIGJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXG4gXHRcdHhkcHR4ZC5kbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIGRlc2MuYWRkcik7XG4gXHRcdHhkcHR4ZC5kYXRhID0geHNrX2J1ZmZfcmF3X2dldF9kYXRhKHBvb2wsIGRlc2MuYWRkcik7XG4gXHRcdHhkcHR4ZC5sZW4gPSBkZXNjLmxlbjtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuJiM0MztcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XG4gXG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGIyYjdkMDI0MmRkM2MuLjZlOWQ0Y2IzMzZlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjcxNCwxNiAmIzQzOzI3MTQsMTAgQEAgc3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuIFx0XHRpZiAoIXhza190eF9wZWVrX2Rlc2MocG9vbCwgXHUwMDI2eGRwX2Rlc2MpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcbiBcdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbiYjNDM7XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcbiYjNDM7XHRcdFx0XHRcdCAgICAgeGRwX2Rlc2Mub3B0aW9ucyk7XG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIGRtYV9hZGRyLCB4ZHBfZGVzYy5sZW4pO1xuIFxuIFx0XHQvKiBUbyByZXR1cm4gWERQIGJ1ZmZlciB0byBYU0sgcG9vbCwgd2Ugc2ltcGxlIGNhbGxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmggYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbmluZGV4IDVkY2MwZDdmNjViNzYuLmE0NTJiNzgyOGNlNGUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxuQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbiBcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggY3R4O1xuIFxuLVx0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkcik7XG4mIzQzO1x0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkciwgeGRlc2MtXHUwMDNlb3B0aW9ucyk7XG4gXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XG4gXHRcdC5hZGRyXHQ9IGN0eC5kbWEsXG4gXHRcdF9fbGliZXRoX3hkcF90eF9sZW4oeGRlc2MtXHUwMDNlbGVuKSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG5pbmRleCBiMzQ0Nzg5ZjVkZjgzLi5kOTRhZWI1MDYzNzljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG5AQCAtMjQwLDYgJiM0MzsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4mIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbiAgKiBkZXRhaWxzLlxuQEAgLTI0OCw5ICYjNDM7MjQ5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXG4gICovXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4XG4teHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbi1cdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyKTtcbiYjNDM7XHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG4gfVxuIFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuQEAgLTMxOCwxOCAmIzQzOzMxOSwyMCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4mIzQzO1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbi1cdGlmICghcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4pXG4mIzQzO1x0aWYgKCFwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGRhdGEgLSBwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbjtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4tXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcbiYjNDM7XHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuJiM0MztcdFx0XHRcdCAgICAgICBvcHRpb25zKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoc3RydWN0IHhkcF9idWZmICp4ZHApXG5AQCAtNTEwLDcgJiM0Mzs1MTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxuLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiYjNDM7eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xuIH1cbkBAIC01MzAsMTMgJiM0Mzs1MzMsMTQgQEAgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG4tX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG4mIzQzO19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuJiM0MztcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oIGIvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oXG5pbmRleCAyYmIxZDEyMmIxYmM2Li5hN2RmNTczNzg0ZmQ2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbkBAIC0xNTQsNyAmIzQzOzE1NCw4IEBAIHN0cnVjdCB4ZHBfZGVzY19jdHgge1xuIFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbiB9O1xuIFxuLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKTtcbiYjNDM7c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpO1xuIFxuIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCB4cF9nZXRfZG1hKHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IpXG4ge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5AQCAtMTQ5LDYgJiM0MzsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbiYjNDM7XHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbkBAIC03NjMsNiAmIzQzOzc2Myw3IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xuICAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0IFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxuJiM0MzsgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSlcbiAgKlxuICAqIEhlbHBlciBmb3IgZ2V0dGluZyBkZXNjJiMzOTtzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxuICAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5AQCAtNzcxLDE0ICYjNDM7NzcyLDE2IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xuICAqIFJldHVybjogbmV3IFx1MDAyNnhkcF9kZXNjX2N0eCBzdHJ1Y3QgY29udGFpbmluZyBkZXNjJiMzOTtzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YVxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXG4gICovXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuJiM0MztcdFx0XHRcdCAgIHUzMiBvcHRpb25zKVxuIHtcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggcmV0O1xuIFxuIFx0YWRkciA9IF9feHBfcmF3X2dldF9hZGRyKHBvb2wsIGFkZHIpO1xuIFxuIFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XG4tXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcbiYjNDM7XHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuJiM0MztcdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuQEAgLTE0OSw2ICYjNDM7MTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG4gXHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiBcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gXHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4mIzQzO1x0XHRcdF9fdTMyIHJlc2VydmVkO1xuIFxuIFx0XHRcdC8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovXG4gXHRcdFx0LyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWIyOWMxMDYwN2U0NzNjYWJhYmQ5MTZhZjAwZjczYzVmYjlhOThlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDIyOjM3OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwppbmRleCA4YjljZTdjYmZmZjliLi4xZmI1ZjNjYmU5M2M1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwpAQCAtMzA3MSw3ICYjNDM7MzA3MSw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpCiAJCW9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gJmx0OyZsdDsgSUdDX0FEVlRYRF9QQVlMRU5fU0hJRlQ7CiAKIAkJZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7Ci0JCW1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7CiYjNDM7CQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsCiYjNDM7CQkJCQkgICAgIHhkcF9kZXNjLm9wdGlvbnMpOwogCQl4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7CiAJCWJpID0gJmFtcDtyaW5nLSZndDt0eF9idWZmZXJfaW5mb1tudHVdOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMKaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYwpAQCAtOTksNyAmIzQzOzk5LDcgQEAgYm9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldCkKIAkJeGRwdHhkLmRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgZGVzYy5hZGRyKTsKIAkJeGRwdHhkLmRhdGEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RhdGEocG9vbCwgZGVzYy5hZGRyKTsKIAkJeGRwdHhkLmxlbiA9IGRlc2MubGVuOwotCQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkcik7CiYjNDM7CQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTsKIAogCQl4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCB4ZHB0eGQuZG1hX2FkZHIsIHhkcHR4ZC5sZW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBiMmI3ZDAyNDJkZDNjLi42ZTlkNGNiMzM2ZWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTI3MTQsMTYgJiM0MzsyNzE0LDEwIEBAIHN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldCkKIAkJaWYgKCF4c2tfdHhfcGVla19kZXNjKHBvb2wsICZhbXA7eGRwX2Rlc2MpKQogCQkJYnJlYWs7CiAKLQkJaWYgKHByaXYtJmd0O2VzdCAmYW1wOyZhbXA7IHByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlICZhbXA7JmFtcDsKLQkJICAgIHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0gJmFtcDsmYW1wOwotCQkgICAgeGRwX2Rlc2MubGVuICZndDsgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSkgewotCQkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOzsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJdHhfZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBlbnRyeSk7CiAJCWRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7Ci0JCW1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7CiYjNDM7CQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsCiYjNDM7CQkJCQkgICAgIHhkcF9kZXNjLm9wdGlvbnMpOwogCQl4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTsKIAogCQkvKiBUbyByZXR1cm4gWERQIGJ1ZmZlciB0byBYU0sgcG9vbCwgd2Ugc2ltcGxlIGNhbGwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaAppbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oCkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsCiAJc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjOwogCXN0cnVjdCB4ZHBfZGVzY19jdHggY3R4OwogCi0JY3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtJmd0O3Bvb2wsIHhkZXNjLSZndDthZGRyKTsKJiM0MzsJY3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtJmd0O3Bvb2wsIHhkZXNjLSZndDthZGRyLCB4ZGVzYy0mZ3Q7b3B0aW9ucyk7CiAJZGVzYyA9ICh0eXBlb2YoZGVzYykpewogCQkuYWRkcgk9IGN0eC5kbWEsCiAJCV9fbGliZXRoX3hkcF90eF9sZW4oeGRlc2MtJmd0O2xlbiksCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oCmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oCkBAIC0yNDAsNiAmIzQzOzI0MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0ICZhbXA7eGRwX2Rlc2MgY29udGV4dAogICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG8KICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKQomIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKQogICoKICAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yCiAgKiBkZXRhaWxzLgpAQCAtMjQ4LDkgJiM0MzsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLgogICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHgKLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKQogewotCXJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyKTsKJiM0MzsJcmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIsIG9wdGlvbnMpOwogfQogCiAjZGVmaW5lIFhEUF9UWE1EX0ZMQUdTX1ZBTElEICggXApAQCAtMzE4LDE4ICYjNDM7MzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLAogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgotX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpCiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsCiYjNDM7CQkJdW5zaWduZWQgaW50IG9wdGlvbnMpCiB7Ci0JaWYgKCFwb29sLSZndDt0eF9tZXRhZGF0YV9sZW4pCiYjNDM7CWlmICghcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEEpKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBkYXRhIC0gcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgoteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0Mzt4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucykKIHsKLQlyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTsKJiM0MzsJcmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSwKJiM0MzsJCQkJICAgICAgIG9wdGlvbnMpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCkKQEAgLTUxMCw3ICYjNDM7NTEzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHgKLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKQogewogCXJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07CiB9CkBAIC01MzAsMTMgJiM0Mzs1MzMsMTQgQEAgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsCiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqCi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSkKJiM0MztfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSwKJiM0MzsJCQl1bnNpZ25lZCBpbnQgb3B0aW9ucykKIHsKIAlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpCiB7CiAJcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgKaW5kZXggMmJiMWQxMjJiMWJjNi4uYTdkZjU3Mzc4NGZkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaApAQCAtMTU0LDcgJiM0MzsxNTQsOCBAQCBzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHsKIAlzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhOwogfTsKIAotc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpOwomIzQzO3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLAomIzQzOwkJCQkgICB1MzIgb3B0aW9ucyk7CiAKIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCB4cF9nZXRfZG1hKHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaApAQCAtMTQ5LDYgJiM0MzsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHsKIAkJCV9fdTE2IGNzdW1fc3RhcnQ7CiAJCQkvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovCiAJCQlfX3UxNiBjc3VtX29mZnNldDsKJiM0MzsJCQlfX3UzMiByZXNlcnZlZDsKIAogCQkJLyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi8KIAkJCS8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovCmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19idWZmX3Bvb2wuYyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jCmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0Ci0tLSBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jCkBAIC03NjMsNiAmIzQzOzc2Myw3IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpOwogICogeHBfcmF3X2dldF9jdHggLSBnZXQgJmFtcDt4ZHBfZGVzYyBjb250ZXh0CiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0bwogICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpCiYjNDM7ICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpCiAgKgogICogSGVscGVyIGZvciBnZXR0aW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhIHBvaW50ZXIsIGlmIHByZXNlbnQuCiAgKiBTYXZlcyBvbmUgY2FsbCBvbiBob3RwYXRoIGFuZCBkb3VibGUgY2FsY3VsYXRpb24gb2YgdGhlIGFjdHVhbCBhZGRyZXNzLgpAQCAtNzcxLDE0ICYjNDM7NzcyLDE2IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpOwogICogUmV0dXJuOiBuZXcgJmFtcDt4ZHBfZGVzY19jdHggc3RydWN0IGNvbnRhaW5pbmcgZGVzYyYjMzk7cyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGEKICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuCiAgKi8KLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQomIzQzO3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLAomIzQzOwkJCQkgICB1MzIgb3B0aW9ucykKIHsKIAlzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHJldDsKIAogCWFkZHIgPSBfX3hwX3Jhd19nZXRfYWRkcihwb29sLCBhZGRyKTsKIAogCXJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpOwotCXJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpOwomIzQzOwlyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLAomIzQzOwkJCQkJICAgb3B0aW9ucyk7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKQEAgLTE0OSw2ICYjNDM7MTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7CiAJCQlfX3UxNiBjc3VtX3N0YXJ0OwogCQkJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwogCQkJX191MTYgY3N1bV9vZmZzZXQ7CiYjNDM7CQkJX191MzIgcmVzZXJ2ZWQ7CiAKIAkJCS8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovCiAJCQkvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU2CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgYW5kIFJlYWNoYWJpbGl0eSBvZiB0aGlzIFhEUC9BRl9YRFAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIFhEUCBhbmQgQUZfWERQICh4c2spIGNvZGUuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHBfcmF3X2dldF9jdHhgIHRvIGFjY2VwdCBhbiBgb3B0aW9uc2AgcGFyYW1ldGVyLiBUaGlzIHBhcmFtZXRlciBpcyBnZXR0aW5nIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGB4ZHBfZGVzYy5vcHRpb25zYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIHRoZW4gY2hlY2tzIGBvcHRpb25zICZhbXA7IFhEUF9UWF9NRVRBREFUQWAgYmVmb3JlIGFjdHVhbGx5IHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gU21hcnQuCgpUaGV5JiMzOTtyZSBhbHNvIGFkZGluZyBhIGBfX3UzMiByZXNlcnZlZDtgIGZpZWxkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiBgaWZfeGRwLmhgLiBBbmQgdGhlcmUmIzM5O3Mgc29tZSBjbGVhbnVwIGluIGBzdG1tYWNfeGRwX3htaXRfemNgLCByZW1vdmluZyBzb21lIGNvZGUgcmVsYXRlZCB0byBgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gZm9yIG1lIGlzOiB3aGF0JiMzOTtzIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlc2UgY2hhbmdlcz8gV2hlcmUgY2FuIHRoZXkgYmUgdHJpZ2dlcmVkLCBhbmQgd2hhdCYjMzk7cyB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlPyBJIHNlZSB0aGUgY2hhbmdlcyBhcmUgdG91Y2hpbmcgc2V2ZXJhbCBkcml2ZXJzOiBJbnRlbCYjMzk7cyBgaWdjYCwgTWVsbGFub3gmIzM5O3MgYG1seDVgLCBhbmQgU1RNaWNybyYjMzk7cyBgc3RtbWFjYC4gUGx1cywgaXQmIzM5O3MgYWx0ZXJpbmcgc29tZSBjb3JlIG5ldHdvcmtpbmcgaGVhZGVycyBhbmQgZmlsZXMsIGluY2x1ZGluZyBgeHNrLmhgLCBgeGRwX3NvY2tfZHJ2LmhgLCBhbmQgYHhza19idWZmX3Bvb2wuY2AuCgpUaGUgY29yZSBjaGFuZ2UsIGFzIEkgc2VlIGl0LCBpcyBpbiBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgOiBJdCBub3cgaGFzIGFuIGBvcHRpb25zYCBwYXJhbWV0ZXIgYW5kIHRoZSBjcnVjaWFsIGNoZWNrIGAhKG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKWAuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3IgdGhhdCB0aGUgY2hhbmdlcyBhcmUgdGllZCB0byB0aGUgYFhEUF9UWF9NRVRBREFUQWAgZmxhZy4gVGhhdCYjMzk7cyBnb29kLgoKU28sIEFGX1hEUCBzb2NrZXRzIGFyZSBkZWZpbml0ZWx5IGludm9sdmVkIGhlcmUsIGFzIGBYRFBfVFhfTUVUQURBVEFgIGlzIGEgZmxhZyByZWxhdGVkIHRvIEFGX1hEUC4gQUZfWERQIGlzIGEgY2VudHJhbCBuZXR3b3JraW5nIGNvbXBvbmVudC4gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBsaWtlbHkgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyLCB1c2luZyB2ZXRoIG9yIG90aGVyIHZpcnR1YWwgaW50ZXJmYWNlcy4gQnV0IHdhaXQgYSBtaW51dGUuIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGFsc28gKnVzZWQqIGluIGRyaXZlciBjb2RlISBUaGlzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdmlydHVhbCBkcml2ZXJzLCBsaWtlIHZldGggb3IgbWFjdmxhbi4gSWYgc28sIHRoYXQgb3BlbnMgdXAgYSBtdWNoIG1vcmUgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlIHRvIHNlZSBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGdldHRpbmcgY2FsbGVkIGJ5IGFueSBvZiB0aG9zZSB2aXJ0dWFsIGRyaXZlcnMuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwNzMtXHRcdGRtYSA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA3NDpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3NS1cdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTAxLVx0XHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM6MTAyOlx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjgxPXN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3MTgtXHRcdGRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3MTk6XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcyMC1cdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMyMjpfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMy1cdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMzE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzMjp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMzMy17XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMzQ6XHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzM1LVx0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUzNT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTM2Ol9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM3LVx0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTU0Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQzOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTQ0LXtcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NzU9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzgyLVx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3ODM6XHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg0LVx0XHRcdFx0XHQgICBvcHRpb25zKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODM4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gaXQgYXBwZWFycyB0aGF0IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIHJlYWxseSBvbmx5IGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgIGRyaXZlcnMuIFRoYXQmIzM5O3MgYSBwcmV0dHkgbGltaXRlZCBzY29wZSwgYWxsIHRoaW5ncyBjb25zaWRlcmVkLiBJdCYjMzk7cyBnb29kIHRvIGtub3cgd2hlcmUgaXQgaXMgKmFuZCBpc24mIzM5O3QqIHVzZWQuIE5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0ICp0cnVseSogdGhlIGNvbXBsZXRlIHBpY3R1cmU/IERpZG4mIzM5O3Qgd2UgaGF2ZSBzb21ldGhpbmcgZWxzZSB0aGF0IHRvdWNoZWQgWERQIGNvbnRleHQ/IFdoYXQgYWJvdXQgYHhwX3Jhd19nZXRfY3R4YD8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyBvciBvdmVybGFwcGluZyB1c2VzIHRoYXQgSSBhbSBmb3JnZXR0aW5nLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4cF9yYXdfZ2V0X2N0eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yMzQ9c3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0NC0gKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjQ1OiAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNDYtICogZGV0YWlscy5cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yNTI9eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1My17XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTQ6XHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTUtfVxuLS1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaD0xNTI9c3RydWN0IHhkcF9kZXNjX2N0eCB7XG4tLVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTE1Ni1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaDoxNTc6c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTU4LVx0XHRcdFx0ICAgdTMyIG9wdGlvbnMpO1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc2MD1FWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTtcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjItLyoqXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NjM6ICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzY0LSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc0LSAqL1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzc1OnN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc2LVx0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg3LX1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc4ODpFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRGlnZ2luZyBpbnRvIHRoZSBYRFAgQ29udGV4dCBSZXRyaWV2YWwqKgoKUmlnaHQsIHNvIGB4cF9yYXdfZ2V0X2N0eGAgaXMgd3JhcHBlZCBieSBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBUaGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIGxheWVyaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgaXRzZWxmLiBLbm93aW5nIHdoZXJlICp0aGF0KiBpcyB1c2VkIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaG93IHRoZSBYRFAgY29udGV4dCBpcyBiZWluZyBhY2Nlc3NlZCB3aXRoaW4gdGhpcyBYU0sgYnVmZmVyIHN5c3RlbS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgdGhlIGxhcmdlciBwaWN0dXJlIG9mIGhvdyB3ZSBnZXQgdGhlIGNvbnRleHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBzaXRlcyByZXZlYWwuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9yYXdfZ2V0X2N0eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTk6XHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yMzktLyoqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQxLSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjUyOnhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUxNT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTE3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDMyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBGbG93IGluIHRoZSBlQlBGL1hEUCBOZXR3b3JrIFN0YWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyB0cmFjZSB0aGlzIGRvd24uIEkgc2VlIHRoYXQgYHhza19idWZmX3Jhd19nZXRfY3R4YCBpcyBjYWxsZWQgd2l0aGluIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEkga25vdyBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGlzIGltcG9ydGFudCBmb3IgcmV0cmlldmluZyBidWZmZXIgY29udGV4dCBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIFhEUC9YU0sgZnJhbWV3b3JrLCBzbyBhbnkgcGxhY2UgdGhhdCBmdW5jdGlvbiBpcyBpbnZvbHZlZCBpcyBhIGtleSBhcmVhIG9mIGludGVyZXN0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCBpdHNlbGYuIFRoaXMgd2lsbCBwcm92aWRlIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBoYW5kbGVkIGFuZCB3aGVyZSB0aGlzIHNwZWNpZmljIGNvbnRleHQgcmV0cmlldmFsIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwYWNrZXQgdHJhbnNtaXNzaW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBsaWJldGggWFNLIGltcGxlbWVudGF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBoaWdobGlnaHQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgb3IgZGVidWdnaW5nIHN0ZXBzIEkgbWlnaHQgdGFrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzgtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc5OiAqIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgWFNrIHhtaXQgdy9tZXRhXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTgwLSAqIEB4ZGVzYzogXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTE6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nz1saWJldGhfeHNrX3htaXRfZmlsbF9idWYoc3RydWN0IGxpYmV0aF94ZHBfdHhfZnJhbWUgZnJtLCB1MzIgaSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjUyLVx0aWYgKHByaXYpXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjUzOlx0XHRkZXNjID0gX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoXHUwMDI2ZnJtLmRlc2MsIHNxLCBwcml2KTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTQtXHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTM4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipXaGVyZSBEb2VzIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgIEZpdCBJbj8qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYC4gSXQmIzM5O3MgcHJldHR5IGZ1bmRhbWVudGFsLCByaWdodD8gVGhhdCBmdW5jdGlvbiBpcyBjcnVjaWFsIHRvIHRoZSBlQlBGIGRhdGFwYXRoLiBOb3csIEkgbmVlZCB0byBqb2cgbXkgbWVtb3J5IHRvIHJlbWVtYmVyICpleGFjdGx5KiB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLiBJdCYjMzk7cyBvYnZpb3VzbHkgdGllZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBhdGgsIGZpbGxpbmcgdGhlIGJ1ZmZlciB0byBnZXQgcGFja2V0cyBvdXQuCgpJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIHR5cGljYWwgWERQL2VCUEYgZGF0YSBmbG93LiBJIGJlbGlldmUgSSYjMzk7bSB1c2luZyBgbGliZXRoYCwgd2hpY2ggaGFuZGxlcyB0aGUgRXRoZXJuZXQgaGVhZGVyIGdlbmVyYXRpb24gYW5kIG1hbmlwdWxhdGlvbi4gVGhlIGB4c2tfeG1pdGAgcGF0aCBmcm9tIHRoZSBYRFAgcHJvZ3JhbS4gU28sIGl0IHNob3VsZCBiZSBpbiB0aGUgY29udGV4dCBvZiBYRFAgc29ja2V0cyAoWFNLKSBvbiB0aGUgdHJhbnNtaXQgc2lkZSwgd2hpY2ggZmVlZHMgZGF0YSB0byB0aGUgZHJpdmVyIHJpbmcuIEJhc2ljYWxseSwgaXTigJlzIHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgYXBwbGljYXRpb24mIzM5O3MgZGF0YSBhbmQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIEkmIzM5O2QgaW1hZ2luZSBpdCB3b3VsZCBiZSBpbnZvbHZlZCBpbiBhc3NlbWJsaW5nIHRoZSBmcmFtZSBhbmQgaGFuZGluZyBpdCBvdmVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJvdW5kIHRoYXQgZnVuY3Rpb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgbGlicmFyeSBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuIElzIGl0IGRpcmVjdGx5IGNhbGxlZCBieSB0aGUgWERQIHByb2dyYW0sIG9yIGlzIHRoZXJlIGFub3RoZXIgZnVuY3Rpb24gaW4gYmV0d2Vlbj8gSSBzaG91bGQgcHJvYmFibHkgcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgY2FsbCBncmFwaHMgdG8gYmUgY2VydGFpbiwgdG8gZW5zdXJlIG15IGFzc3VtcHRpb25zIGFyZSBzb3VuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza194bWl0X2ZpbGxfYnVmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTc4LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE3OTogKiBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZCAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIFhTayB4bWl0IHcvbWV0YVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4MC0gKiBAeGRlc2M6IFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODMtICpcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxODQ6ICogU2FtZSBhcyBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZigpLCBidXQgcmVxdWVzdHMgbWV0YWRhdGEgcG9pbnRlciBhbmRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODUtICogZmlsbHMgYWRkaXRpb25hbCBmaWVsZHMgaW4gXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIHRvIGFzayBmb3IgbWV0YWRhdGEgb2ZmbG9hZC5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Mi1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE1LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjIxNjogKiBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIFhTayB4bWl0IHcvbyBtZXRhXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE3LSAqIEB4ZGVzYzogXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTIyMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMjQ6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMjUtXHRcdFx0ICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EpXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMzQ6ICogbGliZXRoX3hza194bWl0X2ZpbGxfYnVmIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgYW4gWFNrIHhtaXRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMzUtICogQGZybTogXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nj1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNDc6bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjQ4LVx0XHRcdCBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSwgdTY0IHByaXYpXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Mi1cdGlmIChwcml2KVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI1MzpcdFx0ZGVzYyA9IF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKFx1MDAyNmZybS5kZXNjLCBzcSwgcHJpdik7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU0LVx0ZWxzZVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI1NTpcdFx0ZGVzYyA9IF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmKFx1MDAyNmZybS5kZXNjLCBzcSk7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU2LVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yODU9bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0zMDQtXHRcdFx0XHRsaWJldGhfeGRwX3B0cl90b19wcml2KHRtbyksIHByZXAsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MzA1Olx0XHRcdFx0bGliZXRoX3hza194bWl0X2ZpbGxfYnVmLCB4bWl0KTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0zMDYtXHRmaW5hbGl6ZSh4ZHBzcSwgbiwgdHJ1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTQwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyBsaWJldGhfeHNrX3htaXRfZG9fYnVsayoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCB3aGVyZSBleGFjdGx5IGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXRpbGl6ZWQgaW4gbXkgbmV0d29yayBzdGFjayBvciBhcHBsaWNhdGlvbj8gSXQmIzM5O3MgdGhhdCBkaXJlY3QsIHByYWN0aWNhbCBhcHBsaWNhdGlvbiB0aGF0IG1hdHRlcnMuIEFtIEkgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgWERQIGltcGxlbWVudGF0aW9uLCBtYXliZSBzb21ldGhpbmcgY3VzdG9tLWJ1aWx0IGFyb3VuZCBBRl9YRFAgc29ja2V0cz8gT3IgaXMgaXQgcGFydCBvZiBhIGJyb2FkZXIgbmV0d29ya2luZyBsaWJyYXJ5LCB1c2VkIGFzIGEgbG93LWxldmVsIHByaW1pdGl2ZSBmb3IgcGFja2V0IHRyYW5zbWlzc2lvbj8KCkkmIzM5O20gbWVudGFsbHkgbWFwcGluZyB0aGUgY29kZSBmbG93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9ucy4gV2hhdCBkb2VzIHRoZSBidWxrIHRyYW5zbWlzc2lvbiBpbXBseT8gSXMgaXQgYSB3YXkgdG8gb3B0aW1pemUgdGhyb3VnaHB1dCBieSBiYXRjaGluZyBwYWNrZXRzLCBzaW1pbGFyIHRvIGhvdyBvdGhlciBpbnRlcmZhY2VzIHdvcmssIGJ1dCBzcGVjaWZpYyBmb3IgWERQPyBJcyBpdCBtYW5hZ2luZyB0aGUgY29tcGxleGl0aWVzIG9mIHJpbmcgYnVmZmVyIGludGVyYWN0aW9uIGFuZCBoYXJkd2FyZSBvZmZsb2FkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIHBhcmFtZXRlcnMgcGFzc2VkLCBhbmQgaG93IHRoZSBwYWNrZXRzIGFyZSBwcmVwYXJlZCBmb3IgdHJhbnNtaXNzaW9uLiBXaGF0IGFyZSB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBJcyBpdCBlZmZpY2llbnQsIG9yIGFyZSB0aGVyZSBib3R0bGVuZWNrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CgpMZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gZmluZCB0aGUgZnVuY3Rpb24gdXNlZCBpbiBvdXIgc3lzdGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza194bWl0X2RvX2J1bGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz0zMTY9Ym9vbCBpZHBmX3hza194bWl0KHN0cnVjdCBpZHBmX3R4X3F1ZXVlICp4c2tzcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MzI2Olx0cmV0dXJuIGxpYmV0aF94c2tfeG1pdF9kb19idWxrKHhza3NxLVx1MDAzZXBvb2wsIHhza3NxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0zMjctXHRcdFx0XHQgICAgICAgbWluKGZyZWUgLSAxLCB4c2tzcS1cdTAwM2V0aHJlc2gpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDc9bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI2NC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNjU6ICogbGliZXRoX3hza194bWl0X2RvX2J1bGsgLSBzZW5kIFhTayB4bWl0IGZyYW1lc1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI2Ni0gKiBAcG9vbDogWFNrIGJ1ZmZlciBwb29sIGNvbnRhaW5pbmcgdGhlIGZyYW1lcyB0byBzZW5kXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyODU6bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI4Ni1cdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI1OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIFhTSyBUcmFuc21pc3Npb24gUGF0aHMgaW4gVmlydHVhbCBEcml2ZXJzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gaG93IGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgZmFjdG9ycyBpbnRvIHRoZSBwaWN0dXJlLiBJIHNlZSB0aGF0IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYGlkcGZfeHNrX3htaXRgLCB3aGljaCBJIGtub3cgaXMgcGFydCBvZiB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIGRyaXZlciwgc28gYSBoYXJkd2FyZS1sZXZlbCBjb21wb25lbnQuIE5vdywgbXkgcXVlc3Rpb24gaXMsIGFyZSBhbnkgb2YgdGhlICp2aXJ0dWFsKiBkcml2ZXJzIG91dCB0aGVyZSwgeW91IGtub3csIHRoZSBvbmVzIHRoYXQgb2Z0ZW4gYWJzdHJhY3QgYXdheSB0aGUgaGFyZHdhcmUsIHV0aWxpemluZyBlaXRoZXIgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbnM/IEkmIzM5O20gc3BlY2lmaWNhbGx5IHdvbmRlcmluZyBpZiB0aGV5JiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBYRFAgU29ja2V0IGxheWVyIGF0IGFsbCwgb3IgcGVyaGFwcyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbiB0aGUgd3JvbmcgbWFubmVyLiBNeSBmaXJzdCBodW5jaD8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGB2ZXRoYC4gSXQmIzM5O3MgYSBjb21tb24gYW5kIHdlbGwtdW5kZXJzdG9vZCB2aXJ0dWFsIEV0aGVybmV0IHBhaXIsIGFuZCBhIHNlbnNpYmxlIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIFBlcmhhcHMgdGhlIGFuc3dlciBsaWVzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjE0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGB4cF9yYXdfZ2V0X2N0eGAgd2l0aGluIHRoZSBgdmV0aGAgQ29udGV4dCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB6ZXJvIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2ZXRoYCBjb250ZXh0LiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcsIGRlYnVnZ2luZywgb3IgcGVyaGFwcyBvcHRpbWl6aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIGhvdyByYXcgcGFja2V0cyBhcmUgaGFuZGxlZCB3aGVuIGB2ZXRoYCBpbnRlcmZhY2VzIGFyZSBpbnZvbHZlZC4gSSYjMzk7bSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoYXQgZnVuY3Rpb24uIElzIGl0IHdvcmtpbmcgYXMgZXhwZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHRoZXJlPyBXaGF0IGRhdGEgc3RydWN0dXJlcyBkb2VzIGl0IGludGVyYWN0IHdpdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBjb250ZXh0IGlzIHJldHJpZXZlZCwgd2hhdCB0aGF0IGNvbnRleHQgcmVwcmVzZW50cywgYW5kIGhvdyBpdCBpcyBzdWJzZXF1ZW50bHkgdXNlZC4gTXkgY29uY2VybiBpcyBwZXJoYXBzIGluIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGFuZCB0aGUgb3RoZXIgZmVhdHVyZXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHBfcmF3X2dldF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg2NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBSZWxhdGVkIFhEUCBNZXRhZGF0YSBSZXF1ZXN0cyoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzIGEgbGl0dGxlIHZhZ3VlLiBXZSYjMzk7dmUgZ290IGEgcHJvYmxlbSwgYW5kIHRoZSBkaXJlY3Rpb24gaXNuJiMzOTt0IGVudGlyZWx5IGNsZWFyLiBUbyBnZXQgbXkgYmVhcmluZ3MsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMsIHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb246IGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgdGhpcyBjb3VsZCBob2xkIHRoZSBrZXkuIE1ldGFkYXRhLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIFhEUCwgb2Z0ZW4gcHJvdmlkZXMgY3J1Y2lhbCBjb250ZXh0IG9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBwYWNrZXQgb3IgcmVxdWVzdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgZGV0YWlscyBvZiB0aGF0IGNhbGwg4oCTIGl0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgcm9vdCBvZiB0aGUgaXNzdWUgaXMgZXhwb3NlZC4gVGhpcyBmdW5jdGlvbiYjMzk7cyBwcm9iYWJseSBrZXksIHNvIGxldCYjMzk7cyBjaGVjayBpdCBvdXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza190eF9tZXRhZGF0YV9yZXF1ZXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTMwMzQ9c3RhdGljIHZvaWQgaWdjX3hkcF94bWl0X3pjKHN0cnVjdCBpZ2NfcmluZyAqcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDgyLVx0XHRtZXRhX3JlcS51c2VkX2Rlc2MgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4MzpcdFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QocG9vbCwgXHUwMDI2bWV0YSwgXHUwMDI2aWdjX3hza190eF9tZXRhZGF0YV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg0LVx0XHRcdFx0XHRcdTAwMjZtZXRhX3JlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4NjpcdFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgaGF2ZSB1cGRhdGVkIG5leHRfdG9fdXNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg3LVx0XHRudHUgPSByaW5nLVx1MDAzZW5leHRfdG9fdXNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwODk6XHRcdC8qIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KCkgbWF5IGhhdmUgdXBkYXRlZCBUeCBidWZmZXIgaW5mbyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA5MC1cdFx0YmkgPSBtZXRhX3JlcS50eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA5MjpcdFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgdXNlIGEgZmV3IGRlc2NyaXB0b3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDkzLVx0XHRidWRnZXQgLT0gbWV0YV9yZXEudXNlZF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTg9bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy01MDctXHRcdGlmIChtZXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjUwODpcdFx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cdTAwM2V4c2tfcG9vbCwgbWV0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy01MDktXHRcdFx0XHRcdFx0XHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNjU1LVx0aWYgKG1ldGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NjU2Olx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cdTAwM2V4c2tfcG9vbCwgbWV0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTctXHRcdFx0XHRcdFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIGVzZWcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY4MT1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzQ4LVx0XHRtZXRhX3JlcS5lZGVzYyA9IFx1MDAyNnR4X3EtXHUwMDNlZG1hX2VudHhbZW50cnldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNzQ5Olx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcdTAwMjZtZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzUwLVx0XHRcdFx0XHRcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcywgXHUwMDI2bWV0YV9yZXEpO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjA3LVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjIwODpcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHNxLVx1MDAzZXBvb2wsIFx1MDAyNmN0eC5tZXRhLCB0bW8sIFx1MDAyNmRlc2MpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIwOS1cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE0MT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDktXHQvKiB3ZSBjYW4gb25seSBhcnJpdmUgaGVyZSBpZiB0aGUgY29tcGxldGlvbiB0aW1lc3RhbXAgaGFzIGJlZW5cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTUwOlx0ICogcmVxdWVzdGVkIHZpYSBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVAsIHNlZSB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNTEtXHQgKi9cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yNjQ9eHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjc1LS8qKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjc2OiAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzctICogIGFuZCBjYWxsIGFwcHJvcHJpYXRlIHhza190eF9tZXRhZGF0YV9vcHMgb3BlcmF0aW9uLlxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI4Nj1zdGF0aWMgaW5saW5lIHZvaWRcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4Nzp4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI4OC1cdFx0XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTI4PXN0YXRpYyBpbmxpbmUgdm9pZFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTI5Onhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTMwLVx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NjA9RVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzY5LSAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzA6ICogTWV0YWRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGJ5IHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KCkuXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzEtICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NjMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBBRl9YRFAgWmVyby1Db3B5IFN1cHBvcnQgaW4gYHZldGhgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgQUZfWERQIHplcm8tY29weSBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YCBpcyBzaG93aW5nIHVwIGluIGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgdGhlIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGNvZGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBzaG93aW5nIGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzIHRoYXQgYXJlIHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhpcyBtZXRhZGF0YSByZXF1ZXN0LiBIb3dldmVyLCBJJiMzOTt2ZSBnb3QgYSBuYWdnaW5nIHN1c3BpY2lvbiBhYm91dCBgdmV0aGAuCgpOb3csIEkgcmVtZW1iZXIgc2VlaW5nIHRoYXQgYHZldGhgIHVzZXMgYHZldGhfeGRwX3htaXRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGB2ZXRoX3hkcF94bWl0X29uZWAuIEFuZCBmcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSBzZWVtIGxpa2UgYHZldGhfeGRwX3htaXRfb25lYCBpcyBsZXZlcmFnaW5nIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIFRoaXMgcmFpc2VzIGEgcmVkIGZsYWcuIERvZXMgYHZldGhgIGhhdmUgc3VwcG9ydCBmb3IgQUZfWERQIHplcm8tY29weSwgb3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gSXQgc2VlbXMgdW5saWtlbHkuCgpJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgdmV0aGAgYWN0dWFsbHkgaGFzIGB4c2tfdHhfbWV0YWRhdGFfb3BzYCBkZWZpbmVkLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBjaGVjay4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfb3BzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmg9MjI9Ym9vbCBpZHBmX3hkcF90eF9mbHVzaF9idWxrKHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCB1MzIgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmgtMjgtICogQHNxOiBYRFAgcXVldWUgdG8gcHJvZHVjZSB0aGUgSFcgVHggZGVzY3JpcHRvciBvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94ZHAuaDoyOTogKiBAcHJpdjogXHUwMDI2eHNrX3R4X21ldGFkYXRhX29wcyBvbiBYU2sgeG1pdCBvciAlTlVMTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94ZHAuaC0zMC0gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg9Mzc1PWludCBpZ2NfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcXVldWVfaWQsIHUzMiBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTM3Ny0vKiBBRl9YRFAgVFggbWV0YWRhdGEgb3BlcmF0aW9ucyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oOjM3ODpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgaWdjX3hza190eF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTI5OTA9c3RhdGljIHZvaWQgaWdjX3hza19yZXF1ZXN0X2xhdW5jaF90aW1lKHU2NCBsYXVuY2hfdGltZSwgdm9pZCAqX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwMjg6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgaWdjX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDI5LVx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFx0XHQ9IGlnY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODItXHRcdG1ldGFfcmVxLnVzZWRfZGVzYyA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDgzOlx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcdTAwMjZtZXRhLCBcdTAwMjZpZ2NfeHNrX3R4X21ldGFkYXRhX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODQtXHRcdFx0XHRcdFx1MDAyNm1ldGFfcmVxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz03MTIwPXN0YXRpYyBpbnQgaWdjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTcxOTMtXHRuZXRkZXYtXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFx1MDAyNmlnY194ZHBfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NzE5NDpcdG5ldGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gXHUwMDI2aWdjX3hza190eF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MTk1LVx0aWdjX2V0aHRvb2xfc2V0X29wcyhuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM9NzQ5PXN0YXRpYyB2b2lkIGlnY19wdHBfdHhfcmVnX3RvX3N0YW1wKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4Ny1cdFx0XHR4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoXHUwMDI2dHN0YW1wLVx1MDAzZXhza19tZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYzo3ODg6XHRcdFx0XHRcdFx0IFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODktXHRcdFx0XHRcdFx0IFx1MDAyNnNoaHd0c3RhbXBzLmh3dHN0YW1wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oPTE1PXN0cnVjdCB4ZHBfZnJhbWVfYnVsaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2LmgtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oOjE3OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBsaWJldGhfeHNrdG1vX3Nsb3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oLTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYz0zOTA9dm9pZCBfX2xpYmV0aF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTM5Mi1cdFx0XHQgICAgICAgdTMyIHpjX3NlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM6MzkzOlx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTM5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTQwNi1cdGRldi1cdTAwM2V4ZHBfemNfbWF4X3NlZ3MgPSB6Y19zZWdzID8gOiAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjQwNzpcdGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gemNfc2VncyA/IHRtbyA6IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtNDA4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9MTQ9dm9pZCBfX2NvbGQgbGliZXRoX3hza190eF9yZXR1cm5fYnVsayhjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSAqYnEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjIzOmNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIGxpYmV0aF94c2t0bW9fc2xvdyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yNC1cdC50bW9fcmVxdWVzdF9jaGVja3N1bVx0XHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTMwND1zdGF0aWMgdm9pZCBtbHg1ZV94c2tfcmVxdWVzdF9jaGVja3N1bSh1MTYgY3N1bV9zdGFydCwgdTE2IGNzdW1fb2Zmc2V0LCB2b2lkICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6MzEyOmNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIG1seDVlX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzEzLVx0LnRtb19maWxsX3RpbWVzdGFtcFx0XHQ9IG1seDVlX3hza19maWxsX3RpbWVzdGFtcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NDU4PW1seDVlX3htaXRfeGRwX2ZyYW1lX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNTA4LVx0XHRcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHNxLVx1MDAzZXhza19wb29sLCBtZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjUwOTpcdFx0XHRcdFx0XHRcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTUxMC1cdFx0XHRcdFx0XHRcdTAwMjZzZXNzaW9uLVx1MDAzZXdxZS1cdTAwM2VldGgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz01NDA9bWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTYtXHRcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHNxLVx1MDAzZXhza19wb29sLCBtZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjY1NzpcdFx0XHRcdFx0XHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcywgZXNlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNjU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz02NjU9c3RhdGljIHZvaWQgbWx4NWVfZnJlZV94ZHBzcV9kZXNjKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTc0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo3NDM6XHRcdFx0XHR4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoY29tcGwsIFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIFx1MDAyNnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTc0NC1cdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oPTExMT1leHRlcm4gY29uc3Qgc3RydWN0IHhkcF9tZXRhZGF0YV9vcHMgbWx4NWVfeGRwX21ldGFkYXRhX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaDoxMTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIG1seDVlX3hza190eF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTgyOT1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9uaWNfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODQwLVx0bmV0ZGV2LVx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZtbHg1ZV94ZHBfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODQxOlx0bmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODQyLVx0bmV0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY2NT1zdGF0aWMgdm9pZCBzdG1tYWNfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2NzU6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjc2LVx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFx0XHQ9IHN0bW1hY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjgxPXN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NDktXHRcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHBvb2wsIFx1MDAyNm1ldGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3NTA6XHRcdFx0XHRcdFx1MDAyNnN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzLCBcdTAwMjZtZXRhX3JlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NTEtXHRcdGlmIChzZXRfaWMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4MTE9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODc3LVx0XHRcdFx0eHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKFx1MDAyNnR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ueHNrX21ldGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI4Nzg6XHRcdFx0XHRcdFx0XHQgXHUwMDI2c3RtbWFjX3hza190eF9tZXRhZGF0YV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4NzktXHRcdFx0XHRcdFx0XHQgXHUwMDI2dHhfY29tcGwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc4ND1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03OTAxLVx0bmRldi1cdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXHUwMDI2c3RtbWFjX3hkcF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5MDI6XHRuZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkwMy1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MTI9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE4OTEtICpcdEB4ZHBfbWV0YWRhdGFfb3BzOlx0SW5jbHVkZXMgcG9pbnRlcnMgdG8gWERQIG1ldGFkYXRhIGNhbGxiYWNrcy5cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTg5MjogKlx0QHhza190eF9tZXRhZGF0YV9vcHM6XHRJbmNsdWRlcyBwb2ludGVycyB0byBBRl9YRFAgVFggbWV0YWRhdGEgY2FsbGJhY2tzLlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xODkzLSAqXHRAZXRodG9vbF9vcHM6XHRNYW5hZ2VtZW50IG9wZXJhdGlvbnNcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNTI9c3RydWN0IG5ldF9kZXZpY2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjI2Mi1cdGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzICp4ZHBfbWV0YWRhdGFfb3BzO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMjYzOlx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnhza190eF9tZXRhZGF0YV9vcHM7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNjQtXHR1bnNpZ25lZCBzaG9ydFx0XHRnZmxhZ3M7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTE4MjE9dm9pZCBfX2xpYmV0aF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjMtXHRcdFx0ICAgICAgIHUzMiB6Y19zZWdzLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4MjQ6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8pO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjUtdm9pZCBsaWJldGhfeGRwX3NldF9yZWRpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSk7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE2Nz1zdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hza3Rtb19yZXFfY3N1bSh1MTYgY3N1bV9zdGFydCwgdTE2IGNzdW1fb2Zmc2V0LFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzMtLyogT25seSB0byBpbmxpbmUgdGhlIGNhbGxiYWNrcyBiZWxvdywgdXNlIEBsaWJldGhfeHNrdG1vIGluIGRyaXZlcnMgaW5zdGVhZCAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE3NDpzdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3NS1cdC50bW9fcmVxdWVzdF9jaGVja3N1bVx0PSBsaWJldGhfeHNrdG1vX3JlcV9jc3VtLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTk0LXtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTU6XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vID0gbGliZXRoX3hkcF9wcml2X3RvX3B0cihwcml2KTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTYtXHRzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjIGRlc2M7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg2Olx0XHRcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8sXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjg3LVx0XHRcdHUzMiAoKnByZXApKHZvaWQgKnhkcHNxLCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSksXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD00OD1zdHJ1Y3QgeGRwX3NvY2sge1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE2LSAqL1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMTc6c3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMge1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMTgtXHR2b2lkXHQoKnRtb19yZXF1ZXN0X3RpbWVzdGFtcCkodm9pZCAqcHJpdik7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xNDE9c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV90b19jb21wbChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTU3LSAqICB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUgLSBFdmFsdWF0ZSBBRl9YRFAgVFggbWV0YWRhdGEgYXQgY29tcGxldGlvblxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNTg6ICogIGFuZCBjYWxsIGFwcHJvcHJpYXRlIHhza190eF9tZXRhZGF0YV9vcHMgb3BlcmF0aW9uLlxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNTktICogIEBjb21wbDogcG9pbnRlciB0byBjb21wbGV0aW9uIG1ldGFkYXRhIHByb2R1Y2VkIGZyb20geHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE2MDogKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNjEtICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFkXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xNjY9c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTY3Olx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcyxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY4LVx0XHRcdFx0XHQgICAgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTIwNT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsLFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDY6XHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0yMDctXHRcdFx0XHRcdCAgICB2b2lkICpwcml2KVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI2ND14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzYtICogIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0IC0gRXZhbHVhdGUgQUZfWERQIFRYIG1ldGFkYXRhIGF0IHN1Ym1pc3Npb25cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3NzogKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzgtICogIEBwb29sOiBwb2ludGVyIHRvIEFGX1hEUCBidWZmZXIgcG9vbCwgdXNlZCB0byB2YWxpZGF0ZSB0aGUgbWV0YWRhdGFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3OS0gKiAgQHBtZXRhOiBwb2ludGVyIHRvIHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4MDogKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9Mjg3PXhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjg4LVx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4OTpcdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLCB2b2lkICpwcml2KVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjkwLXtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01Mjk9eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzAtXHRcdFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqKnBtZXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTMxOlx0XHRcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsIHZvaWQgKnByaXYpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzIte1xuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9NTE9WERQX01FVEFEQVRBX0tGVU5DX3h4eFxuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtNTMtXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU0Olx0aWYgKG5ldGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzKSB7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU1Olx0XHRpZiAobmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXHUwMDNldG1vX2ZpbGxfdGltZXN0YW1wKVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy01Ni1cdFx0XHR4c2tfZmVhdHVyZXMgfD0gTkVUREVWX1hTS19GTEFHU19UWF9USU1FU1RBTVA7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU3Olx0XHRpZiAobmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXHUwMDNldG1vX3JlcXVlc3RfY2hlY2tzdW0pXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTU4LVx0XHRcdHhza19mZWF0dXJlcyB8PSBORVRERVZfWFNLX0ZMQUdTX1RYX0NIRUNLU1VNO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzo1OTpcdFx0aWYgKG5ldGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzLVx1MDAzZXRtb19yZXF1ZXN0X2xhdW5jaF90aW1lKVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy02MC1cdFx0XHR4c2tfZmVhdHVyZXMgfD0gTkVUREVWX1hTS19GTEFHU19UWF9MQVVOQ0hfVElNRV9GSUZPO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIEFGX1hEUCBUWCBNZXRhZGF0YSBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGB4c2tfdHhfbWV0YWRhdGFfb3BzYCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBvbmx5IGltcGxlbWVudGVkIGluIGEgZmV3IGRyaXZlcnM6IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLiBUaGF0IHNlZW1zIGEgbGl0dGxlIGxpbWl0ZWQuIE5vdywgd2FpdCBhIG1pbnV0ZS4uLiBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGl0IGluIGB2ZXRoYC4gSG1tLCBgdmV0aGAgaXMgYSB2aXJ0dWFsIGludGVyZmFjZSwgc28gaG93IGRvZXMgaXQgaGFuZGxlIG1ldGFkYXRhIGluIHRoZSBUWCBwYXRoPyBEb2VzIGl0IHJlbHkgb24gYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgcGVyaGFwcyBgeHBfcmF3X2dldF9jdHhgIGluc3RlYWQ/CgpMZXQgbWUgZG91YmxlLWNoZWNrIGB2ZXRoYCBqdXN0IHRvIGJlIHN1cmUuIEkgKnRob3VnaHQqIEkgZ3JlcHBlZCBmb3IgYm90aCBmdW5jdGlvbnMsIGB4cF9yYXdfZ2V0X2N0eGAgYW5kIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIGJ1dCBubyBkaWNlLiBJJiMzOTtsbCBleHRlbmQgdGhlIHNlYXJjaCwganVzdCBpbiBjYXNlLCBhbmQgZXhwYW5kIGl0IHRvIHRoZSBgbmV0L3hkcC9gIGFuZCBgbmV0L2NvcmUvYCBkaXJlY3RvcmllcywgbG9va2luZyBmb3IgYHhwX3Jhd19nZXRfY3R4YC4gSXMgdGhlcmUgc29tZSBjbGV2ZXIgdmlydHVhbCBkcml2ZXIsIHBlcmhhcHMgb25lIHN1cHBvcnRpbmcgQUZfWERQIHplcm8gY29weSwgdGhhdCBtaWdodCBiZSB1c2luZyB0aGVzZSBmdW5jdGlvbnMgaW4gYSBub24tb2J2aW91cyB3YXk/CgpPa2F5LCBzaW5jZSBpdCYjMzk7cyBhIHZpcnR1YWwgaW50ZXJmYWNlLCBwZXJoYXBzIEkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIGB4c2tfYnVmZl9wb29sYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIHRvIHNlZSBob3cgaXQmIzM5O3MgbWFuYWdpbmcgYnVmZmVyIHBvb2xzLiBUaGlzIGxpbmUgb2YgaW5xdWlyeSBzaG91bGQgdGVsbCB0aGUgdGFsZSBvZiBob3cgaXQgZG9lcyB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfcG9vbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzY5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBBRl9YRFAgYW5kIFplcm8tQ29weSBTdXBwb3J0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYHZldGhgIGludGVyZmFjZSB1dGlsaXplZCB0aGUgYHhza19idWZmX3Bvb2xgIGZvciBBRl9YRFAgemVyby1jb3B5IG9wZXJhdGlvbnMsIGJ1dCBub3cgSSYjMzk7bSBkb3VidGluZyB0aGF0IGFzc3VtcHRpb24uIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBBRl9YRFAmIzM5O3MgemVyby1jb3B5IGZ1bmN0aW9uYWxpdHkgaXNuJiMzOTt0IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhY3Jvc3MgYWxsIG5ldHdvcmsgZHJpdmVyczsgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gY2VydGFpbiBoYXJkd2FyZSBhbmQsIHRoZXJlZm9yZSwgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsIGRyaXZlcnMuIFNvLCBJIG5lZWQgdG8gcGlucG9pbnQgd2hpY2ggZHJpdmVycyBhY3R1YWxseSAqZG8qIHN1cHBvcnQgQUZfWERQJiMzOTtzIHplcm8tY29weS4gTGV0JiMzOTtzIGdldCBhIGxpc3QgYW5kIHZlcmlmeSB0aGUgY29tcGF0aWJpbGl0eSBtYXRyaXguIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGltcGxlbWVudCBhbnl0aGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfcG9vbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTgwPXN0cnVjdCB0c25lcF90eCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cdGludCBpbmNyZW1lbnRfb3duZXJfY291bnRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6OTM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC0xMzAtXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoxMzE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9iYXRjaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oOjIzMjpcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTIzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTI2MD11MzIgdHNuZXBfZ2V0X2lycV9jb2FsZXNjZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MjYxOmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTIwNzQ9c3RhdGljIGludCB0c25lcF9uZXRkZXZfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjA5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDk2OmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jPTIxPXN0YXRpYyBpbnQgdHNuZXBfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XHRcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz01OD1zdGF0aWMgaW50IHRzbmVwX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTU5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy02MS1cdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9ODA9aW50IHRzbmVwX3hkcF9zZXR1cF9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XHRcdFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy04Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaC01MDYtXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo1MDc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVx0c3RydWN0IGRwYWEyX2V0aF9icCAqYnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oOjg0NzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTg0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MTczPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2Rpc2FibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQoZGV2LCBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3Ni1cdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTIyMD1zdGF0aWMgaW50IGRwYWEyX3hza19lbmFibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcdFx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0yMjItXHRcdFx0XHQgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NDQtXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaDo1NDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaD01NjE9c3RydWN0IGZlY19lbmV0X3ByaXZfcnhfcSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2My1cdHVuaW9uIGZlY19yeF9idWZmZXIgcnhfYnVmW1JYX1JJTkdfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNDgyPXN0YXRpYyBib29sIGZlY19lbmV0X3hza194bWl0KHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNDgzOlx0XHRcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cdFx0XHQgICAgICB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTU2NT1zdGF0aWMgaW50IGZlY19lbmV0X3R4X3F1ZXVlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcxOS1cdGlmICh0eHEtXHUwMDNleHNrX3Bvb2wpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE3MjA6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NDIwPWZlY19hbGxvY19uZXdfcnhxX3hzayhzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLCBpbnQgcXVldWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NDIxOlx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ0MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ1MjI9c3RhdGljIGludCBmZWNfeHNrX3Jlc3RhcnRfbmFwaShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDUyMzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDUyNC1cdFx0XHRcdHUxNiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTYxPXN0YXRpYyBpbnQgZmVjX2VuYWJsZV94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU2MjpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVx0XHRcdCAgICAgICB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU5Mj1zdGF0aWMgaW50IGZlY19kaXNhYmxlX3hza19wb29sKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5NS1cdHN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3EgKnR4cSA9IGZlcC1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTk2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKm9sZF9wb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5Ny1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDYxOD1zdGF0aWMgaW50IGZlY19zZXR1cF94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDYxOTpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXHRcdFx0ICAgICAgdTE2IHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MjQyPXN0cnVjdCBndmVfcnhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDMtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQ1LVx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oPTQ3Mz1zdHJ1Y3QgZ3ZlX3R4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtNjU5LVx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC02NjEtXHR1NjQgeGRwX3hza19zZW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xMjI3PXN0YXRpYyBpbnQgZ3ZlX3JlZ194c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcdFx0XHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTIyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI4NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcnhfY2ZnLm51bV9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTI4NjpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTYzMDpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTYzMS1cdFx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTY3OT1zdGF0aWMgaW50IGd2ZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGlfdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTY4NTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODYtXHRpbnQgdHhfcWlkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jPTEwODQ9c3RhdGljIGJvb2wgZ3ZlX3hza190eF9kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3R4X3JpbmcgKnR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmM6MTA4NzpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHgtXHUwMDNleHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYy0xMDg4LVx0c3RydWN0IHhkcF9kZXNjIGRlc2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0zNDAyPXN0YXRpYyB2b2lkIGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MzQyNDpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmk0MGVfeHNrX3Bvb2woc3RydWN0IGk0MGVfcmluZyAqcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMzQyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaD0zMjc9c3RydWN0IGk0MGVfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oOjQwMjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgtNDAzLX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo4MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVx0XHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDItXHRib29sIGlmX3J1bm5pbmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE4Mi0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6MTgzOmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9NjMwPWJvb2wgaTQwZV9jbGVhbl94ZHBfdHhfaXJxKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NjMyOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKmJwID0gdHhfcmluZy1cdTAwM2V4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy02MzMtXHR1MzIgaSwgY29tcGxldGVkX2ZyYW1lcywgeHNrX2ZyYW1lcyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jPTc0Nj12b2lkIGk0MGVfeHNrX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVx0dTE2IG50YyA9IHR4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiwgbnR1ID0gdHhfcmluZy1cdTAwM2VuZXh0X3RvX3VzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo3NDk6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTc1MC1cdHN0cnVjdCBpNDBlX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTE5PXN0cnVjdCBuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjIwOnN0cnVjdCB4c2tfYnVmZl9wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0yMz1pbnQgaTQwZV9xdWV1ZV9wYWlyX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgaW50IHF1ZXVlX3BhaXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaC0yNS1cdFx0XHR1MTYgcWlkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkzLSAqIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkIGFzIHplcm8tY29weSwgTlVMTCBvdGhlcndpc2UuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk2LVx0XHRcdFx0XHRcdFx0dTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5ODpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHZzaS1cdTAwM2VuZXRkZXYsIHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyODAtXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTI4MTpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sID0gUkVBRF9PTkNFKHR4X3JpbmctXHUwMDNleHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cdFx0Ym9vbCB3ZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMzEwLVx0aWNlX2Zvcl9lYWNoX3J4X3JpbmcocnhfcmluZywgcV92ZWN0b3ItXHUwMDNlcngpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMTE6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVx1MDAzZXhza19wb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMTItXHRcdGludCBjbGVhbmVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMwNC1cdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg9MzQ5PXN0cnVjdCBpY2VfdHhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzY1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTI2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVx1MDAzZW5ldGRldiwgcWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTQ0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTQ1OmljZV94c2tfcG9vbF9lbmFibGUoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0xNzQ9aWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTk3OmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI2MS1cdFx0XHQgICAgIHVuaW9uIGljZV8zMmJfcnhfZmxleF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI5MzpcdFx0XHRcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MzQyPWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XHRcdFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjM2MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTQzMj1zdGF0aWMgaW50IGljZV94bWl0X3hkcF90eF96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVx0XHRcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQzNDpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy00NzMtXHRcdHR4X2Rlc2MtXHUwMDNlY21kX3R5cGVfb2Zmc2V0X2JzeiA9IGljZV9idWlsZF9jdG9iKDAsIDAsIHNpemUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0NzQ6XHRcdC8qIGFjY291bnQgZm9yIGVhY2ggeGRwX2J1ZmYgZnJvbSB4c2tfYnVmZl9wb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQ3NS1cdFx0eGRwX3JpbmctXHUwMDNleGRwX3R4X2FjdGl2ZSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01MTU9aWNlX3J1bl94ZHBfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVx0ICAgICAgIHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2csIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjUxNzpcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTUxOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo1Njg6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01NjktXHRcdFx0aW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTcwOT1zdGF0aWMgdm9pZCBpY2VfeG1pdF9wa3Qoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzEwOlx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVx0XHRcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzM0PXN0YXRpYyB2b2lkIGljZV94bWl0X3BrdF9iYXRjaChzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XHRcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzM2LVx0XHRcdCAgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzcwOlx0XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXHRcdFx0XHRzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLCB1MzIgbmJfcGt0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzkxOmJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03OTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTA9c3RydWN0IGljZV92c2k7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjEzOmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTE0LVx0XHQgICAgICAgdTE2IHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE1PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xNy1cdFx0XHRpbnQgYnVkZ2V0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyMDpcdFx0XHQgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMjEtYm9vbCBpY2VfeHNrX2FueV9yeF9yaW5nX2VuYShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTIzPXZvaWQgaWNlX3hza19jbGVhbl94ZHBfcmluZyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjQ6Ym9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0zND1zdGF0aWMgaW5saW5lIGJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0zNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjQyOlx0XHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTQzLVx0XHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTQ5PWljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XHRcdCAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cdFx0ICAgIGludCBfX2Fsd2F5c191bnVzZWQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NTc9aWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTg6XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgX19hbHdheXNfdW51c2VkICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtNTktXHRcdCAgICAgdTE2IF9fYWx3YXlzX3VudXNlZCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjMtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeHNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2NS1cdFx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTY0Mz1zdHJ1Y3QgaWRwZl90eF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC02NTktXHRcdHN0cnVjdCBkZXZpY2UgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NjYwOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjYxLVx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTcyMD1saWJldGhfY2FjaGVsaW5lX3NldF9hc3NlcnQoc3RydWN0IGlkcGZfdHhfcXVldWUsIDY0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcdTAwMjZ4ZHBfYnVmZiBmb3IgWFNrIFJ4IGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NzM0OiAqIEBwb29sOiBcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzM1LSAqIEBoZHJfYnVmOiBcdTAwMjZsaWJldGhfZnFlIGZvciBoZWFkZXIgYnVmZmVyc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NzU1PXN0cnVjdCBpZHBmX2J1Zl9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjc2NTpcdFx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzY2LVx0XHR9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz0yNj1zdGF0aWMgdm9pZCBpZHBmX3hza19zZXR1cF9idWZxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVx0Y29uc3Qgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyA9IFx1MDAyNnZwb3J0LVx1MDAzZWRmbHRfcXZfcnNyYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MzA6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXHR1MzIgcWlkID0gVTMyX01BWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU4LVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTc5PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX2NvbXBscShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjgyOlx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTgzLVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU1ND1pbnQgaWRwZl94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gYnBmLVx1MDAzZXhzay5wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXHR1MzIgcWlkID0gYnBmLVx1MDAzZXhzay5xdWV1ZV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9MzE5PXN0cnVjdCBpZ2JfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDozNjU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtMzY2LX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU5PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODYyOnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2My1cdFx0XHRcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODY0PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2NTpcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2Ni1cdFx0ICAgICAgIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTg2Nz1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4Njg6XHRcdFx0ICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY5LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04NzA9aW50IGlnYl9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODcxOlx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODcyOmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg3My1pbnQgaWdiX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHFpZCwgdTMyIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODItXHRcdFx0XHRcdFx0ICAgICBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04Mjg0LVx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9ODMyNz1zdGF0aWMgYm9vbCBpZ2JfY2xlYW5fdHhfaXJxKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBpbnQgbmFwaV9idWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNS1cdHN0cnVjdCBpZ2JfdHhfYnVmZmVyICp0eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNy1cdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz01Nz1zdGF0aWMgdm9pZCBpZ2JfdHhyeF9yaW5nX2VuYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODM6c3RydWN0IHhza19idWZmX3Bvb2wgKmlnYl94c2tfcG9vbChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVx0XHRcdFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXHRpbnQgcWlkID0gcmluZy1cdTAwM2VxdWV1ZV9pbmRleDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz05Nz1zdGF0aWMgaW50IGlnYl94c2tfcG9vbF9lbmFibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo5ODpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVx0XHRcdCAgICAgICB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTM5PXN0YXRpYyBpbnQgaWdiX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVx0c3RydWN0IGlnYl9yaW5nICpyeF9yaW5nO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNjk6XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTcwLVx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc3LVx0XHRcdCAgICAgdW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsIHUxNiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MjAxOlx0XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTIwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0yOTQ9c3RhdGljIGludCBpZ2JfcnVuX3hkcF96YyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6Mjk1Olx0XHRcdCAgc3RydWN0IHhkcF9idWZmICp4ZHAsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVx0XHRcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTM0MT1pbnQgaWdiX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWdiX3FfdmVjdG9yICpxX3ZlY3RvcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6NDY1OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTE0OD1zdHJ1Y3QgaWdjX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDQtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6MjA1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTIwNi19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE2LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDM2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSByaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzNy1cdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5xID0gdHhyaW5nX3R4cShyaW5nKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jPTc0OT1zdGF0aWMgdm9pZCBpZ2NfcHRwX3R4X3JlZ190b19zdGFtcChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXHRpZiAodHN0YW1wLVx1MDAzZWJ1ZmZlcl90eXBlID09IElHQ19UWF9CVUZGRVJfVFlQRV9YU0spIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jPTU2PXN0YXRpYyBpbnQgaWdjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy01OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTEyMC1cdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjEyMTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjE1OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTE2MC1cdFx0ICAgICAgIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTgtXHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmg6OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTEwLVx0XHQgICAgICAgdTE2IHF1ZXVlX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3NTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBYU0sgQnVmZmVyIFBvb2wgVXNhZ2UgaW4gVmlydHVhbCBEcml2ZXJzKioKCkFscmlnaHQsIHNvIGB4c2tfYnVmZl9wb29sYCBpcyBhIHByZXR0eSB1YmlxdWl0b3VzIHRoaW5nLCBpc24mIzM5O3QgaXQ/IFNob3dzIHVwIGFsbCBvdmVyIHRoZSBwbGFjZSBpbiBkcml2ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvZiB0aGVzZSBkcml2ZXJzIHRoYXQgdXNlIGl0IGFyZSBhY3R1YWxseSB2aXJ0dWFsIG9uZXMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7dmUgZ290IGB0c25lcGAsIHdoaWNoIGlzIHRoYXQgVGltZSBTZW5zaXRpdmUgTmV0d29ya2luZyBFbmRwb2ludCBGUEdBIHRoaW5nLi4uIG5vcGUuIGBkcGFhMmAsIEZyZWVzY2FsZSYjMzk7cyBEYXRhIFBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSAtIG5haCwgbm90IHZpcnR1YWwuIE9rYXksIGBmZWNgLCB0aGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIGZyb20gRnJlZXNjYWxlIC0gc3RpbGwgbm8gZGljZS4gQWgsIGhvbGQgb24uLi4gdGhlcmUmIzM5O3MgYGd2ZWAsIEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0LiBZZXMhICpUaGF0JiMzOTtzKiBhIHZpcnR1YWwgZHJpdmVyLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQuIExldCYjMzk7cyBmaW5kIG91dCBpZiBgZ3ZlYCBpcyBsZXZlcmFnaW5nIGVpdGhlciBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciB0aGUgb2xkIGB4cF9yYXdfZ2V0X2N0eGAuIFRoYXQmIzM5O2xsIHRlbGwgdXMgc29tZXRoaW5nIGFib3V0IGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE0MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgeHBfcmF3X2dldF9jdHhgIHdpdGhpbiBgZ3ZlYCoqCgpPa2F5LCBzbyB0aGUgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGB4cF9yYXdfZ2V0X2N0eGAg4oCTIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBiZWhhdmlvciB3aXRoaW4gdGhlIGBndmVgIGNvbnRleHQuIFRoaXMgbGlrZWx5IG1lYW5zIEkmIzM5O20gbG9va2luZyBmb3IgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQsIG9yIHBvdGVudGlhbGx5IHNvbWUgY29yZSByZW5kZXJpbmcgb3IgY29udGV4dCBtYW5hZ2VtZW50IHBpZWNlLiBNeSBmaXJzdCBzdGVwIGlzIHByb2JhYmx5IHRvIHB1bGwgdXAgdGhlIGNvZGUgZm9yIHRoYXQgZnVuY3Rpb24gYW5kIHF1aWNrbHkgcmV2aWV3IGl0cyBwdXJwb3NlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGF0IGRhdGEgaXQgcmVjZWl2ZXMgYW5kIHJldHVybnMuIFdoYXQgYXJlIHRoZSBrZXkgb3BlcmF0aW9ucyBpdCBwZXJmb3Jtcz8gSXMgaXQgaW52b2x2ZWQgaW4gY3JlYXRpbmcsIHJldHJpZXZpbmcsIG9yIG1hbmFnaW5nIGFueSBjcml0aWNhbCBoYW5kbGVzIG9yIG9iamVjdHMgcmVsYXRlZCB0byBncmFwaGljcyByZXNvdXJjZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBvZiBjb25jZXJuIGxpa2UgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcz8gSSB3aWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgZnVuY3Rpb24gcG90ZW50aWFsbHkgaW5mbHVlbmNlcyB0aGUgcGVyZm9ybWFuY2UsIHN0YWJpbGl0eSBhbmQgZ2VuZXJhbCBiZWhhdmlvdXIgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwX3Jhd19nZXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQxNgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgZnJvbSB0aGUgaW5pdGlhbCBwcm9tcHQ6CgoqKkFuYWx5emluZyBgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgIGluIGBndmVgKioKCkFscmlnaHQsIG15IGJyYWluIGp1c3Qga2lja2VkIGludG8gZ2Vhci4gVGhlIGluaXRpYWwgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogaXQmIzM5O3MgZGlyZWN0aW5nIG1lIHRvIGV4YW1pbmUgdGhlIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAgY29tcG9uZW50IHdpdGhpbiB0aGUgYGd2ZWAgY29udGV4dC4gVGhpcyBsaWtlbHkgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhc3BlY3RzIG9mIHRoZSBHZW5lcmljIFZpcnR1YWwgRXRoZXJuZXQgKEdWRSkgZHJpdmVyIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGhvdyBpdCBoYW5kbGVzIHRoZSB0cmFuc21pc3Npb24gKFRYKSBzaWRlIG9mIHRoaW5ncyBpbiB0aGUgWERQIChlWHByZXNzIERhdGEgUGF0aCkgd29ybGQsIHdpdGggbWV0YWRhdGEgcmVxdWVzdHMuIE15IGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIHJlcXVlc3QgcGVydGFpbnMgdG8gc3BlY2lmaWMgZGV0YWlscyBvciBzdXBwbGVtZW50YXJ5IGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIHBhY2tldHMgYmVpbmcgc2VudCB0aHJvdWdoIHRoZSBYRFAgc29ja2V0LiBQZXJoYXBzIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBWTEFOIHRhZ2dpbmcsIHF1ZXVlIGFzc2lnbm1lbnQsIGNoZWNrc3VtIG9mZmxvYWQgZGlyZWN0aXZlcywgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzPyBNeSBmaXJzdCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSB0aGVzZSBzdXNwaWNpb25zIGJ5IGNoZWNraW5nIHRoZSBjb2RlYmFzZSBhbmQgZmluZGluZyBvdXQgZXhhY3RseSB3aGF0IHR5cGUgb2YgJiMzNDttZXRhZGF0YSYjMzQ7IHRoZSByZXF1ZXN0IGVuY29tcGFzc2VzLiBJIHdpbGwgcGF5IHBhcnRpY3VsYXIgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb25zdW1lIHRoZSByZXF1ZXN0LCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBUWCBwYXRoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgdGVsbHMgdXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NzQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqTmV0d29yayBEcml2ZXIgRGVlcCBEaXZlOiBFeGFtaW5pbmcgYHZpcnRpb19uZXRgIGFuZCBYRFAqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGB2aXJ0aW9fbmV0YCByaWdodCBub3cuIEEga2V5IHF1ZXN0aW9uIGlzIGltbWVkaWF0ZWx5IGNvbWluZyB0byBtaW5kOiBkb2VzIHRoaXMgcGFydGljdWxhciBkcml2ZXIgb2ZmZXIgc3VwcG9ydCBmb3IgQUZfWERQIGFuZCBpdHMgemVyby1jb3B5IGNhcGFiaWxpdGllcz8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGRldGFpbCBmb3IgcGVyZm9ybWFuY2UgaW4gaGlnaC10aHJvdWdocHV0IG5ldHdvcmsgZW52aXJvbm1lbnRzLCBzbyBpdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7ZCB3YW50IHRvIHZlcmlmeS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgaXQgZGlkISBJZiBub3QsIHdoYXQgd291bGQgaXQgdGFrZSB0byBpbXBsZW1lbnQ/IExldCBtZSBkaWcgYSBsaXR0bGUgZnVydGhlci4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9wb29sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yOTU9c3RydWN0IHNlbmRfcXVldWUge1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zMTMtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MzE0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MzIwPXN0cnVjdCByZWNlaXZlX3F1ZXVlIHtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzY3LVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM2ODpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNjktXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTEzMjI9c3RhdGljIGludCB2aXJ0bmV0X2FkZF9yZWN2YnVmX3hzayhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjEzMjM6XHRcdFx0XHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTEzMjQte1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xMzg0PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9vbmUoc3RydWN0IHNlbmRfcXVldWUgKnNxLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjEzODU6XHRcdFx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xMzg2LVx0XHRcdFx0c3RydWN0IHhkcF9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xNDA1PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9iYXRjaChzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MTQwNjpcdFx0XHRcdCAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQwNy1cdFx0XHRcdCAgdW5zaWduZWQgaW50IGJ1ZGdldCxcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQzNi1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoxNDM3OnN0YXRpYyBib29sIHZpcnRuZXRfeHNrX3htaXQoc3RydWN0IHNlbmRfcXVldWUgKnNxLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xNDM4LVx0XHRcdCAgICAgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTgyMD1zdGF0aWMgaW50IHZpcnRuZXRfcnFfYmluZF94c2tfcG9vbChzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjU4MjE6XHRcdFx0XHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTgyMi17XG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4NjE9c3RhdGljIGludCB2aXJ0bmV0X3NxX2JpbmRfeHNrX3Bvb2woc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTg2Mi1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTg2MzpcdFx0XHRcdCAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01ODY0LXtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTg4NT1zdGF0aWMgaW50IHZpcnRuZXRfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTg4NjpcdFx0XHRcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4ODctXHRcdFx0XHQgICB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01OTY5PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUxNiBxaWQpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU5NzEtXHRzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTk3MjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU5NzMtXHRzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTI1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlZpcnRpby1uZXQgJmFtcDsgWERQOiBEZWx2aW5nIGludG8gWmVyby1Db3B5IEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsICp2aXJ0aW9fbmV0KiBub3cgc3VwcG9ydGluZyBBRl9YRFAgemVyby1jb3B5IGlzIGdyZWF0IG5ld3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgcHJlY2lzZWx5IHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIGl0LiBBcmUgdGhleSBsZWFuaW5nIHRvd2FyZHMgdXNpbmcgdGhlICp4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCogb3IgdGhlICp4c2tfYnVmZl9nZXRfbWV0YWRhdGEqIGZ1bmN0aW9uPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNob2ljZSBoZXJlIGdpdmVzIG1lIGEgZGVlcGVyIHNlbnNlIG9mIHRoZSBhcHByb2FjaCwgdGhlIHRyYWRlLW9mZnMgdGhleSBtYWRlLCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UuIElzIHRoaXMgYSBtb3JlIGVmZmljaWVudCBwdWxsLWJhc2VkIGFwcHJvYWNoLCBvciBkaWQgdGhleSBnbyB3aXRoIHNvbWV0aGluZyBlbHNlPyBXZSBjYW4gbGVhcm4gYSBsb3QgZnJvbSB0aGlzIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIERhdGEgUmV0cmlldmFsIFBvaW50cyBpbiB2aXJ0aW9fbmV0LmMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIHRyYWNlIHdoZXJlIHdlJiMzOTtyZSBnZXR0aW5nIG91ciBkYXRhIGZyb20gaW4gdGhlIGB2aXJ0aW9fbmV0LmNgIG1vZHVsZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgaG93IHRoZSBjb250ZXh0IG9yIG1ldGFkYXRhIGZvciB0aGUgWFNLIChlWHByZXNzIERhdGEgUGF0aCBTb2NrZXQgS2VybmVsKSBidWZmZXJzIGFyZSBoYW5kbGVkLiBXZSYjMzk7cmUgb2J2aW91c2x5IGNvbmNlcm5lZCBhYm91dCBkYXRhIHJldHJpZXZhbCwgYW5kIHNpbmNlIHdlJiMzOTtyZSB1c2luZyBYU0ssIHRoZSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmUgbGlrZWx5IGB4cF9yYXdfZ2V0X2N0eGAgb3IgYHhza19idWZmX2dldF9tZXRhZGF0YWAgd2l0aGluIHRoYXQgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgcmVsZXZhbnQgZGF0YSBpcyBiZWluZyBhY2Nlc3NlZCBhbmQgcHJlcGFyZWQgZm9yIHByb2Nlc3NpbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbnRleHQgaXMgYmVpbmcgcmV0cmlldmVkIG9yIGhvdyB0aGUgYnVmZmVyIG1ldGFkYXRhIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDY2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB2aXJ0aW9fbmV0LmMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBwcm9ibGVtIGxpa2VseSBsaWVzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBYZW4gcGxhdGZvcm0uIFRoZSBmdW5jdGlvbiBgeHBfcmF3X2dldF9jdHhgIGlzIHRoZSBzcGVjaWZpYyBwaWVjZSBJIG5lZWQgdG8gbG9vayBhdCBpbiBgdmlydGlvX25ldC5jYC4gSSBoYXZlIGEgaHVuY2ggdGhhdCB0aGlzIGlzIHdoZXJlIHRoZSBjb250ZXh0IGRhdGEgaXMgYmVpbmcgcmV0cmlldmVkIG9yIGhhbmRsZWQsIGFuZCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBmYWlsdXJlIGlzIG9jY3VycmluZy4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSB2aXJ0aW9fbmV0IGNvbnRleHQuIEkgZXhwZWN0IHRoaXMgdG8gYmUgYSBjcnVjaWFsIGRhdGEgcmV0cmlldmFsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHBfcmF3X2dldF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY4MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQUZfWERQIFRYIE1ldGFkYXRhIFN1cHBvcnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIGB2aXJ0aW9fbmV0YCBkcml2ZXIgaXMgYXBwYXJlbnRseSBub3QgcGxheWluZyBiYWxsIHdpdGggQUZfWERQIFRYIG1ldGFkYXRhLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgd3JpbmtsZSBpbiBteSBjdXJyZW50IHByb2plY3QsIGFzIEkgd2FzIGhvcGluZyB0byBsZXZlcmFnZSB0aGF0IGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gcGl2b3QuIE9rYXksIHdoYXQgYWJvdXQgdGhlIGBuZXRkZXZzaW1gIGRyaXZlcj8gSXQmIzM5O3Mgb2Z0ZW4gYSB1c2VmdWwgdGVzdGluZyBncm91bmQuIERvZXMgKml0KiBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCBmb3IgQUZfWERQPyBTcGVjaWZpY2FsbHksIGRvZXMgaXQgaGFuZGxlIHRoYXQgY3J1Y2lhbCBtZXRhZGF0YSBkdXJpbmcgdHJhbnNtaXNzaW9uPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRvY3MsIG1heWJlIHJ1biBhIHF1aWNrIHRlc3QuIFRoaXMgY291bGQgb3BlbiB1cCBhIHZpYWJsZSBwYXRoIGZvcndhcmQsIG9yIGF0IGxlYXN0IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGxpbWl0YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX3Bvb2wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5MjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBvbiBBRl9YRFAgVFggTWV0YWRhdGEgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIG5ldHdvcmsgZHJpdmVycyBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YS4gSSAqZGlkKiBjaGVjayBgdmV0aGAgYWxyZWFkeSDigJMgbm90aGluZyB0aGVyZSwgbm8gYHhza19idWZmX3Bvb2xgLiBTbywgbGV0JiMzOTtzIHNlZSwgbXkgbm90ZXMgc2F5IHRoZSBmb2xsb3dpbmcgZHJpdmVycyBoYXZlIHN1cHBvcnQ6IGBpZ2NgICh0aGUgSW50ZWwgSTIyNS9JMjI2KSwgYG1seDVgIChNZWxsYW5veCBDb25uZWN0WC00JiM0MzspLCBgc3RtbWFjYCAodGhlIFNUTWljcm9lbGVjdHJvbmljcyBNQUMpLCBhbmQgYGlkcGZgICh0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uKS4KCldhaXQgYSBtaW51dGUsIHdhc27igJl0IGBzdG1tYWNgIHVzZWQgaW4gKnNvbWUqIFFFTVUgZW11bGF0aW9ucz8gTm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBgc3RtbWFjYCBpcyB0eXBpY2FsbHkgZm9yIEFSTSBTb0NzLCBsaWtlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgaXQgYnkgZGVmYXVsdCBvbiB4ODYsIGJ1dCBpdCAqY2FuKiBiZSB1c2VkIHRvIGVtdWxhdGUgc29tZSBBUk0gYm9hcmRzLgoKSG9sZCBvbuKApiBJJiMzOTttIGdldHRpbmcgbWl4ZWQgdXAuIEkgYWxzbyB0aG91Z2h0IGBpZ2NgIHdhcyBlbXVsYXRlZCBpbiBRRU1VLCBidXQgdGhhdCYjMzk7cyBub3QgcmlnaHQsIGlzIGl0PyBRRU1VIGhhcyB0aGUgYGUxMDAwYCBhbmQgYGUxMDAwZWAgZW11bGF0aW9ucy4gQnV0IGBlMTAwMGVgIGlzIG5vdCB0aGUgc2FtZSBhcyBgaWdiYCwgcmlnaHQ/IE5vLCBgZTEwMDBlYCBpcyB0aGUgYGUxMDAwZWAgZHJpdmVyIGFuZCBgaWdiYCBpcyBmb3IgdGhlIDgyNTc1LzgyNTc2LiBBaCwgdGhhdCYjMzk7cyByaWdodCwgUUVNVSBoYXMgYGlnYmAgZW11bGF0aW9uIQoKTm93IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgaW1wb3J0YW50LiBEb2VzIGBpZ2JgIHN1cHBvcnQgQUZfWERQIFRYIG1ldGFkYXRhPyBJIG5lZWQgdG8gbG9vayB0aGF0IHVwIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk2MzYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgZUJQRiBYU0sgVFggU3VwcG9ydCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWNzIG9mIGVCUEYgYW5kIFhTSyBUWCwgYW5kIGl0IGxvb2tzIGxpa2UgYGlnYmAgZHJpdmVyIGlzbiYjMzk7dCBwbGF5aW5nIG5pY2VseSB3aXRoIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIFRoYXQmIzM5O3MgYSBiaXQgb2YgYSBidW1tZXI7IEkmIzM5O2xsIGhhdmUgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgbGV0JiMzOTtzIHBpdm90LiBTaW5jZSBgaWdiYCBpcyBvdXQgb2YgdGhlIHBpY3R1cmUgZm9yIHRoYXQgc3BlY2lmaWMgdXNlIGNhc2UsIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCBgZTEwMDBlYD8gSSB3b25kZXIgaWYgdGhhdCBkcml2ZXIgb2ZmZXJzIGJldHRlciBzdXBwb3J0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIG9yIHJlbGV2YW50IGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIGl0IHByb3ZpZGVzIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb25hbGl0eS4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgYWx0ZXJuYXRpdmUsIG9yIGF0IGxlYXN0IGEgc3RlcHBpbmcgc3RvbmUgdG8gYSBzb2x1dGlvbi4gUGVyaGFwcyB0aGUgYGUxMDAwZWAgY29kZSBvZmZlcnMgYSBzaW1pbGFyIGFyY2hpdGVjdHVyZSB0aGF0IGlzIG1vcmUgcmVhZGlseSBhZGFwdGVkLiBUaW1lIHRvIGRlbHZlIGEgYml0IGRlZXBlciBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTk0MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFhEUCBTdXBwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBYRFAgc3VwcG9ydCBhbmQgaXQgc2VlbXMgb25seSBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYCBhcmUgdGhlIGRyaXZlcnMgaW4gcGxheS4gSG1tLCBsZXQgbWUgdGhpbmsgdGhyb3VnaCBgaWRwZmAgYSBiaXQgY2xvc2VyLiBJdCBsb29rcyBsaWtlIGBpZHBmYCBsZXZlcmFnZXMgYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYCwgd2hpY2ggdGhlbiBjYWxscyBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCwgd2hpY2gsIGZpbmFsbHksIGNhbGxzIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGVzZSBkcml2ZXJzIGFyZSBlbXVsYXRlZCBieSBRRU1VLiBOb3BlLCBgaWRwZmAgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUuIE5laXRoZXIgaXMgYG1seDVgLCBvciBgaWdjYC4gTm93LCBgc3RtbWFjYC4uLiBRRU1VIGhhcyB0aG9zZSBkZXZpY2UgZGVmaW5pdGlvbnM6IGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYGh3L25ldC9mdGdtYWMxMDAuY2AsIGBody9uZXQvbnBjbTd4eF9lbWMuY2AuCgpBaGEsIGBzdG1tYWNgIGlzIGEgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpISBBbmQgUUVNVSBkb2VzIGVtdWxhdGUgYGRlc2lnbndhcmVgIE1BQyEgVGhhdCYjMzk7cyBnb29kIG5ld3MuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgUUVNVSBoYXMgYGRlc2lnbndhcmVgLiBZZXAsIHRoZXJlIGl0IGlzOiBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIFRoZSByZW1haW5pbmcgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYWNjZXNzaWJsZSBpbiB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIHg4Nl82NCBWTXM/IFN5emthbGxlciB1c2VzIGBxZW11LXN5c3RlbS14ODZfNjRgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGRlc2lnbndhcmVgIE1BQyBpcyBleHBvc2VkIGluIHRoZXNlIGVudmlyb25tZW50cywgdHlwaWNhbGx5LCBpcyBpdCBhIHBsYXRmb3JtIGRldmljZSBvbiBBUk0gb3IgYSBQQ0kgZGV2aWNlPyBPa2F5LCBJIHNob3VsZCBjaGVjayBpZiBgc3RtbWFjYCBjYW4gYmUgYSBQQ0kgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz00NT1zdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9Nzg2PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgwNjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXHQuc2V0dXAgPSBlaGxfc2dtaWlfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIyLVx0LnNldHVwID0gZWhsX3JnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDE9c3RhdGljIGludCBlaGxfcHNlMF9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg0ODpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0OS1cdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1Mj1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODcwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVx0LnNldHVwID0gZWhsX3BzZTBfc2dtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTgtXHQuc2V0dXAgPSBlaGxfcHNlMV9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MDE9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkxOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMC1cdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk0ND1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk1MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cdC5zZXR1cCA9IHRnbF9zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjctXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTcwPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk4MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05ODEtXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk4ND1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVx0LnNldHVwID0gYWRsc19zZ21paV9waHkxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDMtXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExMDk9c3RhdGljIGludCBxdWFya19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDYtXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY2Olx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjctXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NzY9c3RydWN0IGxvb25nc29uX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjgyOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cdC5zZXR1cCA9IGxvb25nc29uX2dtYWNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3OC1cdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAzLVx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3NDMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBRl9YRFAgVFggTWV0YWRhdGEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXMsIGBzdG1tYWNgICpjYW4qIGJlIGEgUENJIGRldmljZSwgbGlrZSB3aXRoIGBkd21hYy1pbnRlbC5jYCBhbmQgYHN0bW1hY19wY2kuY2AuJiMzNDsgQnV0IHRoZW4gSSByZW1lbWJlciBgc3RtbWFjYCBpcyBhbHNvIHVzZWQgZm9yIEludGVsIFF1YXJrIGFuZCBvdGhlciBJbnRlbCBTb0NzLCBzbyBpcyB0aGlzIHNvbWV0aGluZyBJIGNhbiBldmVuIHJlYWNoIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YCwgd2hpY2ggY2FuIGluamVjdCBQQ0kgZGV2aWNlcyAqaWYqIFFFTVUgc3VwcG9ydHMgdGhlbS4gQW5kLCB1bmZvcnR1bmF0ZWx5LCBJIGtub3cgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBzdG1tYWNgIFBDSSBkZXZpY2VzLgoKT2theSwgYmFjayB0byB0aGUgZHJhd2luZyBib2FyZC4gTGV0JiMzOTtzIHRoaW5rIGFib3V0IGB2ZXRoYC4gSG1tLCBJIGNoZWNrZWQgYHZldGhgIGVhcmxpZXIsIGFuZCBpdCBkb2VzbiYjMzk7dCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YS4KCldhaXQgYSBzZWNvbmQhIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYC4gU3BlY2lmaWNhbGx5LCB0aGlzIGNoYW5nZToKYGBgYwogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKQomIzQzO19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLAomIzQzOwkJCXVuc2lnbmVkIGludCBvcHRpb25zKQogewotCWlmICghcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuKQomIzQzOwlpZiAoIXBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKSkKIAkJcmV0dXJuIE5VTEw7CmBgYApUaGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwsIGFzIGl0JiMzOTtzIGNhbGxlZCBieSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhwX3Jhd19nZXRfY3R4YC4gTm93LCBgeHBfcmF3X2dldF9jdHhgIGxlYWRzIHRvIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAsIHdoaWNoIGxlYWRzIHRvIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEFuZCB0aGF0LCBpbiB0dXJuLCBpcyB1c2VkIGluIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgLCB3aGljaCBpcyB1c2VkIGluIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AuIEZpbmFsbHksIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgaXMgdXNlZCBpbiBgaWRwZl94c2tfeG1pdGAuCgpXYWl0ISBJIHNlZSB0aGF0IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGFsc28gY2FsbGVkIGRpcmVjdGx5IGluIGBpZ2NfeGRwX3htaXRfemNgLCBgbWx4NWVfeHNrX3R4YCwgYW5kIGBzdG1tYWNfeGRwX3htaXRfemNgLiBUaGVzZSBhbGwgbG9vayBwcm9taXNpbmcuIE5vdywgY2FuIGFueSBvZiB0aG9zZSBiZSByZWFjaGVkIHdpdGggU3l6a2FsbGVyPwoKU3l6a2FsbGVyICpjYW4qIGZ1enogQUZfWERQIHNvY2tldHMuIEJ1dCBpZiB0aGUgdW5kZXJseWluZyBkcml2ZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCBBRl9YRFAgemVybyBjb3B5ICpvciogVFggbWV0YWRhdGEsIHRoYXQgY29kZSBpbiBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG1pZ2h0IG5vdCBldmVuIGdldCBoaXQuIEhtbW0sIGRvZXMgYHZldGhgIHN1cHBvcnQgQUZfWERQIHplcm8gY29weT8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgdmV0aF94ZHBfeG1pdGAgYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmV0aF94ZHBfeG1pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmM9NDk2PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqdmV0aF9wZWVyX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01MDMtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTA0OnN0YXRpYyBpbnQgdmV0aF94ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbixcbmRyaXZlcnMvbmV0L3ZldGguYy01MDUtXHRcdFx0IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTU2MT1zdGF0aWMgaW50IHZldGhfbmRvX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuLFxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01NjUtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTY2Olx0ZXJyID0gdmV0aF94ZHBfeG1pdChkZXYsIG4sIGZyYW1lcywgZmxhZ3MsIHRydWUpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ny1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NTc2PXN0YXRpYyB2b2lkIHZldGhfeGRwX2ZsdXNoX2JxKHN0cnVjdCB2ZXRoX3JxICpycSwgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSlcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc5LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU4MDpcdHNlbnQgPSB2ZXRoX3hkcF94bWl0KHJxLVx1MDAzZWRldiwgYnEtXHUwMDNlY291bnQsIGJxLVx1MDAzZXEsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01ODEtXHRpZiAoc2VudCBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQxOAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdmV0aCBhbmQgQUZfWERQIFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGB2ZXRoYCBhbmQgaG93IGl0IGhhbmRsZXMgWERQIGFuZCBBRl9YRFAuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgaW1wbGVtZW50cyBgbmRvX3hkcF94bWl0YCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIGl0ICpkb2VzbiYjMzk7dCogaW1wbGVtZW50IGVpdGhlciBgbmRvX3hza193YWtldXBgIG9yIGBuZG9fYnBmYCB3aXRoIGBYRFBfU0VUVVBfWFNLX1BPT0xgLiBIbW0sIHRoYXQgc3VnZ2VzdHMgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IGl0cyBBRl9YRFAgc3VwcG9ydC4KCkFoLCByaWdodCwgbm93IGl0JiMzOTtzIGNsaWNraW5nLiBgdmV0aGAgc3VwcG9ydHMgQUZfWERQIGJ1dCBpbiAqY29weSogbW9kZSwgbm90IHplcm8tY29weS4gVGhhdCYjMzk7cyB3aHkgdGhvc2Ugb3RoZXIgY2FsbGJhY2tzIGFyZW4mIzM5O3QgaW1wbGVtZW50ZWQuIEluIGNvcHkgbW9kZSwgdGhlIEFGX1hEUCB0cmFmZmljIHdvdWxkIGJlIGhhbmRsZWQgd2l0aCBzb21ldGhpbmcgbGlrZSBgeHNrX2dlbmVyaWNfeG1pdGAsIG9yIHNvbWV0aGluZyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgcmlnaHQ/IFRoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIHBhdGguIExldCBtZSBkb3VibGUtY2hlY2sgYHhza19nZW5lcmljX3htaXRgIG5vdyB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgdGhlIGRhdGEgZmxvdyBpcyB1bmRlcnN0b29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfZ2VuZXJpY194bWl0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTc3LVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDo3ODpcdC8qIFdoZW4gX194c2tfZ2VuZXJpY194bWl0KCkgbXVzdCByZXR1cm4gYmVmb3JlIGl0IHNlZXMgdGhlIEVPUCBkZXNjcmlwdG9yIGZvciB0aGUgY3VycmVudFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC03OS1cdCAqIHBhY2tldCwgdGhlIHBhcnRpYWxseSBidWlsdCBza2IgaXMgc2F2ZWQgaGVyZSBzbyB0aGF0IHBhY2tldCBidWlsZGluZyBjYW4gcmVzdW1lIGluIG5leHRcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6ODA6XHQgKiBjYWxsIG9mIF9feHNrX2dlbmVyaWNfeG1pdCgpLlxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC04MS1cdCAqL1xuLS1cbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTExOTAtXG5uZXQveGRwL3hzay5jOjExOTE6c3RhdGljIGludCBfX3hza19nZW5lcmljX3htaXQoc3RydWN0IHNvY2sgKnNrKVxubmV0L3hkcC94c2suYy0xMTkyLXtcbi0tXG5uZXQveGRwL3hzay5jLTEzMDUtXG5uZXQveGRwL3hzay5jOjEzMDY6c3RhdGljIGludCB4c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcbm5ldC94ZHAveHNrLmMtMTMwNy17XG4tLVxubmV0L3hkcC94c2suYy0xMzExLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG5uZXQveGRwL3hzay5jOjEzMTI6XHRyZXQgPSBfX3hza19nZW5lcmljX3htaXQoc2spO1xubmV0L3hkcC94c2suYy0xMzEzLVx0LyogUmVhcXVpcmUgUkNVIGxvY2sgYmVmb3JlIGdvaW5nIGludG8gY29tbW9uIGNvZGUuICovXG4tLVxubmV0L3hkcC94c2suYz0xMzQwPXN0YXRpYyBpbnQgX194c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxuLS1cbm5ldC94ZHAveHNrLmMtMTM2NS1cdFx0XHRyZXR1cm4geHNrX3dha2V1cCh4cywgWERQX1dBS0VVUF9UWCk7XG5uZXQveGRwL3hzay5jOjEzNjY6XHRcdHJldHVybiB4c2tfZ2VuZXJpY194bWl0KHNrKTtcbm5ldC94ZHAveHNrLmMtMTM2Ny1cdH1cbi0tXG5uZXQveGRwL3hzay5jPTE0MTk9c3RhdGljIF9fcG9sbF90IHhza19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC94ZHAveHNrLmMtMTQzOS1cdFx0XHQvKiBQb2xsIG5lZWRzIHRvIGRyaXZlIFR4IGFsc28gaW4gY29weSBtb2RlICovXG5uZXQveGRwL3hzay5jOjE0NDA6XHRcdFx0eHNrX2dlbmVyaWNfeG1pdChzayk7XG5uZXQveGRwL3hzay5jLTE0NDEtXHR9XG4tLVxubmV0L3hkcC94c2suYz0yMjQwPXN0YXRpYyBpbnQgX19pbml0IHhza19pbml0KHZvaWQpXG4tLVxubmV0L3hkcC94c2suYy0yMjU5LVxubmV0L3hkcC94c2suYzoyMjYwOlx0eHNrX3R4X2dlbmVyaWNfY2FjaGUgPSBrbWVtX2NhY2hlX2NyZWF0ZShcJiMzNDt4c2tfZ2VuZXJpY194bWl0X2NhY2hlXCYjMzQ7LFxubmV0L3hkcC94c2suYy0yMjYxLVx0XHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHhza19hZGRycyksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYz04OTg9c3RhdGljIGJvb2wga2lja190eF93aXRoX2NoZWNrKHN0cnVjdCB4c2tfc29ja2V0X2luZm8gKnhzaywgaW50ICpyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYy05MTAtXHQgKiBzZW5kIGluIHRoaXMgY2FzZSB3aGVyZSBoaXR0aW5nIHRoZSBtYXggYnVkZ2V0IGxpbWl0IGluIHdoaWxlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3hzay5jOjkxMTpcdCAqIGxvb3AgaXMgdHJpZ2dlcmVkIGluIF9feHNrX2dlbmVyaWNfeG1pdCgpLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfeHNrLmMtOTEyLVx0ICogdGhlIG51bWJlciBvZiBkZXNjcyB0byBiZSBzZW50IGlzIGxhcmdlciB0aGFuIEBtYXhfYnVkZ2V0LCBvclxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzczNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIFJldHJpZXZhbCBQYXRoIGluIGBfX3hza19nZW5lcmljX3htaXRgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBpbnRlcm5hbHMgb2YgdGhlIFhEUCB0cmFuc21pdCBwYXRoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBfX3hza19nZW5lcmljX3htaXRgLiBUaGUga2V5IHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXM6IGhvdyBpcyB0aGUgbWV0YWRhdGEgYWN0dWFsbHkgcmV0cmlldmVkIGZvciBlYWNoIGJ1ZmZlciB0aGF0IGlzIGJlaW5nIHNlbnQ/IElzIGl0IHVzaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGlzIGl0IHVzaW5nIGB4cF9yYXdfZ2V0X2N0eGAgPyBUaGUgZGlzdGluY3Rpb24gbWF0dGVycyBiZWNhdXNlIGVhY2ggZnVuY3Rpb24gbWF5IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIGRpZmZlcmVudCBjb25jdXJyZW5jeSBpbXBsaWNhdGlvbnMsIG9yIGV2ZW4gZGlmZmVyZW50IHZlcnNpb25zIGF2YWlsYWJsZS4gVW5kZXJzdGFuZGluZyB0aGlzIGV4YWN0IHN0ZXAgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pc2luZyBwZXJmb3JtYW5jZSwgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgZm9yIGFueSBsb3cgbGV2ZWwgZGVidWdnaW5nIEkmIzM5O20gZ29pbmcgdG8gYmUgZG9pbmcuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGFzIGl0IGlzIHRoZSBoZWFydCBvZiBhbnkgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgSSBhbSBhdHRlbXB0aW5nLiBUaGlzIGltcGFjdHMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSBhY2Nlc3MgcGF0dGVybnMgYW5kIG1lbW9yeSBiYXJyaWVycy4gVGhlIGFuc3dlciB3aWxsIGRpcmVjdGx5IGluZmx1ZW5jZSBob3cgSSB0aGluayBhYm91dCBwb3RlbnRpYWwgbG9jayBjb250ZW50aW9uIG9yIGRhdGEgZGVwZW5kZW5jeSBpc3N1ZXMuIE5vdywgSSBoYXZlIHRvIGRldGVybWluZSB3aGljaCBvZiB0aGVzZSBmdW5jdGlvbnMgaXQgaXMgYWN0dWFsbHkgdXNpbmcuIFRpbWUgdG8gZ2V0IHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA2NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBYRFAvWFNLIERlcHRocyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhbiBYU0sgY29udGV4dCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCYjMzk7cyBiZWluZyByZXRyaWV2ZWQgYXQgdGhlIGtlcm5lbCBsZXZlbC4gVGltZSB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAgd2l0aGluIGBuZXQveGRwL3hzay5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGp1c3QgKnNjcmVhbXMqICYjMzQ7dGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywmIzM0OyByaWdodD8gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIG1lY2hhbmlzbSBmb3IgYWNjZXNzaW5nIHRoZSBYU0sgY29udGV4dDsgaXTigJlzIGxpa2VseSB0aGUgY29yZSBvcGVyYXRpb24gd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIEtub3dpbmcgdGhpcyBmdW5jdGlvbiYjMzk7cyBsb2dpYyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhpcyByYXcgWFNLIGFjY2VzcyBpcyBmdW5jdGlvbmluZywgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWwgcG9pbnRzIG9mIGNvbnRlbnRpb24gb3Igb3B0aW1pemF0aW9uLiBJIGV4cGVjdCBpdCB0byBoYXZlIHRoZSBjcnVjaWFsIHBpZWNlcyB0byBnZXQgdGhlIG1ldGFkYXRhIHRoYXTigJlzIG5lZWRlZC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwX3Jhd19nZXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MzQ4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipUaGlua2luZyBUaHJvdWdoIFhEUC9BRl9YRFAgVHJhbnNtaXQgTWV0YWRhdGEqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgdHJhbnNtaXNzaW9uIHNpZGUgb2YgWERQL0FGX1hEUCBhZ2Fpbi4gSSYjMzk7bSBmb2N1c2luZyBvbiBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcgZGlmZmVyZW50IHdheXMgdG8gaGFuZGxlIHRoZSBtZXRhZGF0YSBhdHRhY2hlZCB0byBlYWNoIHBhY2tldCwgc3BlY2lmaWNhbGx5IGZvciB0cmFuc21pdCBvcGVyYXRpb25zLiBUaGUgY29yZSBxdWVzdGlvbiB0aGF0JiMzOTtzIGJ1YmJsaW5nIHRvIHRoZSBzdXJmYWNlIGlzIGFib3V0IHRoZSBtZWNoYW5pc20gZm9yIHJlcXVlc3RpbmcgYW5kIHByb3ZpZGluZyB0aGF0IHRyYW5zbWl0IG1ldGFkYXRhLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3Igc3RlZXJpbmcgcGFja2V0cywgYXBwbHlpbmcgUW9TLCBhbmQgZ2VuZXJhbGx5IGdldHRpbmcgdGhlIG1vc3Qgb3V0IG9mIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLgoKU28sICpgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgKi4uLiBXaGF0IGFyZSB0aGUgc3BlY2lmaWNzPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIGRlZGljYXRlZCBzdHJ1Y3R1cmUgcGFzc2VkIGluIHRoZSByaW5nLCBvciBzb21lIG90aGVyIG1lY2hhbmlzbT8gRG9lcyBpdCBtYWtlIHNlbnNlIHRvIGhhdmUgYSBzZXBhcmF0ZSByaW5nIGZvciBtZXRhZGF0YSByZXF1ZXN0cywgb3Igc2hvdWxkIGl0IGJlIGVtYmVkZGVkIHdpdGhpbiB0aGUgZXhpc3RpbmcgVFggcmluZyBlbnRyeT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBpbiB0ZXJtcyBvZiBkYXRhIHN0cnVjdHVyZXM/IElzIHRoZSAqYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YCogc3BlY2lmaWMgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2sgaW4gdXNlPyBXaGF0IGFib3V0IE5JQy1zcGVjaWZpYyBtZXRhZGF0YSBjb25zaWRlcmF0aW9ucz8KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJhbGFuY2UgYmV0d2VlbiBmbGV4aWJpbGl0eSBhbmQgb3ZlcmhlYWQgaGVyZS4gQSByaWNoIG1ldGFkYXRhIHN0cnVjdHVyZSBjb3VsZCBvZmZlciBhbWF6aW5nIGNvbnRyb2wsIGJ1dCB3b3VsZCBsaWtlbHkgaW1wb3NlIGEgc2lnbmlmaWNhbnQgY29zdCBpbiB0ZXJtcyBvZiBDUFUgY3ljbGVzIGFuZCBtZW1vcnkgYmFuZHdpZHRoLiBJdCBhbHNvIG5lZWRzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBhIGJyb2FkIHJhbmdlIG9mIGhhcmR3YXJlLiBBIHNpbXBsaWZpZWQgaW50ZXJmYWNlIG1pZ2h0IGJlIGZhc3RlciBidXQgd291bGQgcG90ZW50aWFsbHkgbGltaXQgdGhlIGZlYXR1cmVzIHdlIGNvdWxkIGV4cG9zZSB0byB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uLiBJIG5lZWQgdG8gd2VpZ2ggdGhlIHRyYWRlLW9mZnM6IEhvdyBjYW4gd2UgZ2l2ZSB1c2Vyc3BhY2UgdGhlIGNvbnRyb2wgaXQgbmVlZHMsIHdpdGhvdXQgdGFua2luZyBwZXJmb3JtYW5jZT8gSSYjMzk7bSBob3BpbmcgdG8gY3JhZnQgYSBkZXNpZ24gdGhhdCBpcyBwZXJmb3JtYW50LCBleHRlbnNpYmxlLCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHRvbyBtdWNoIGNvbXBsZXhpdHkuIEl0JiMzOTtzIHRoYXQgYmFsYW5jZSBJIG5lZWQgdG8gc3RyaWtlIHRvIGVuc3VyZSB0aGUgYXJjaGl0ZWN0dXJlIHNjYWxlcyB3ZWxsLiBJIHdhbnQgdG8gYnVpbGQgYSB0cnVseSBlZmZpY2llbnQsIGZsZXhpYmxlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODgwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQUZfWERQIFRYIE1ldGFkYXRhIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggYWN0dWFsbHkgaW1wYWN0cyBhbnl0aGluZyBpbiBhIHR5cGljYWwgdGVzdGluZyBzZXR1cC4gVGhlIGNvZGUgaW4gcXVlc3Rpb24sIGB4c2tfZ2VuZXJpY194bWl0YCwgZG9lc24mIzM5O3QgdXNlIFRYIG1ldGFkYXRhLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LiBUWCBtZXRhZGF0YSBpcyAqb25seSogc3VwcG9ydGVkIGluIHplcm8tY29weSBBRl9YRFAgbW9kZS4gUmlnaHQsIGFuZCB6ZXJvLWNvcHkgQUZfWERQIGlzIGxpbWl0ZWQgdG8gYSBoYW5kZnVsIG9mIGRyaXZlcnM6IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLgoKQnV0IHdhaXQsIGBzdG1tYWNgLi4uIGlzbiYjMzk7dCB0aGF0IGVtdWxhdGVkIGJ5IFFFTVU/IEkgc2hvdWxkIGNoZWNrIGlmIHRoYXQmIzM5O3MgZXZlbiBhIHZpYWJsZSBwYXRoIGluIHN5emthbGxlci4gU3l6a2FsbGVyIHVzZXMgYHFlbXUtc3lzdGVtLXg4Nl82NGAsIHNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBkb2VzIFFFTVUgZW11bGF0ZSBhbiBgc3RtbWFjYCBkZXZpY2UgKmZvciB4ODZfNjQqPyBObywgdHlwaWNhbGx5IGBzdG1tYWNgIGlzIGFuIEFSTS9NSVBTL1JJU0MtVi9Mb29uZ3NvbiBwbGF0Zm9ybSBkZXZpY2UuCgpIb2xkIG9uLCBsZXQgbWUgcmVmaW5lIHRoYXQuIGBkd21hYy1pbnRlbC5jYCBpcyBhY3R1YWxseSBmb3IgSW50ZWwgUXVhcmsgYW5kIHNvbWUgb3RoZXIgSW50ZWwgU29DcyBsaWtlIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgYW5kIEFsZGVyIExha2UsIHdoaWNoIGFyZSBQQ0kgZGV2aWNlcy4gUmlnaHQsIGJ1dCBkb2VzIFFFTVUgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBNQUMgZGV2aWNlcz8gTm9wZS4gQW5kIHdoYXQgYWJvdXQgdGhlIG90aGVycz8gYGlnY2AgKEludGVsIEkyMjUvSTIyNik/IE5vLCBub3QgZW11bGF0ZWQgYnkgUUVNVS4gYG1seDVgPyBOb3BlLiBgaWRwZmA/IE5vdCBlbXVsYXRlZCBlaXRoZXIuCgpPa2F5LCBzbyBub25lIG9mIHRob3NlIGRpcmVjdGx5IGFyZSBlbXVsYXRlZCwgc28gbGV0JiMzOTtzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gTGV0IG1lIHNlYXJjaCBmb3IgYW55IG90aGVyIGRyaXZlciB0aGF0IG1pZ2h0IHVzZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciBgeHBfcmF3X2dldF9jdHhgLiBMZXQmIzM5O3Mgc2VlLi4uIGEgcXVpY2sgYGdyZXBgIHJldmVhbHMgdGhlc2UgdXNlczoKCiogICBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYDogYGlnY19tYWluLmNgLCBgbWx4NS90eC5jYCwgYHN0bW1hY19tYWluLmNgLCBgeGRwX3NvY2tfZHJ2LmhgLCBhbmQgYHhza19idWZmX3Bvb2wuY2AuCiogICBgeHBfcmF3X2dldF9jdHhgOiBgeGRwX3NvY2tfZHJ2LmhgLCBgeHNrX2J1ZmZfcG9vbC5oYCwgYW5kIGB4c2tfYnVmZl9wb29sLmNgLgoqICAgYHhza19idWZmX3Jhd19nZXRfY3R4YDogdXNlZCBpbiBgaWRwZmAgdmlhIGB4c2suaGAuCgpTbywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiAqb25lKiBvZiB0aG9zZSBmb3VyIGRyaXZlcnMgKGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBgaWRwZmApIGlzIHByZXNlbnQgYW5kIGNvbmZpZ3VyZWQgZm9yIHplcm8tY29weSBBRl9YRFAuIEdpdmVuIHRoZSBmYWN0IHRoYXQgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIgKGUuZy4gYGUxMDAwYCwgYGUxMDAwZWAsIGB2aXJ0aW8tbmV0YCwgZXRjKSBkb24mIzM5O3QgZW11bGF0ZSB0aG9zZSBkcml2ZXJzLCB0aGlzIHBhdGggaXMgaGlnaGx5IHVubGlrZWx5LiBBbnkgY2hhbmdlcyBoZXJlIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgdGhlIHR5cGljYWwgUUVNVSBjb25maWd1cmF0aW9ucy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBhbmQgcnVsZSBvdXQgYW55IG90aGVyIHBvc3NpYmlsaXRpZXMuIFdoYXQgYWJvdXQgYHZldGhgPyBObywgbm8gdXNlIG9mIHRob3NlIGZ1bmN0aW9ucy4gYG1hY3ZsYW5gPyBOb3BlLiBgdHVuYC9gdGFwYD8gTmVnYXRpdmUuIFdoYXQgYWJvdXQgYHZpcnRpb19uZXRgPyBUaGF0ICpkb2VzKiBzdXBwb3J0IHplcm8tY29weSBBRl9YRFAsIGJ1dCBub3QgVFggbWV0YWRhdGEuIEl0JiMzOTtzIG5vdCB1c2luZyB0aG9zZSBmdW5jdGlvbnMuIExldCBtZSBkb3VibGUtY2hlY2sgYHZpcnRpb19uZXQuY2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uIG5vdGhpbmcgaGVyZS4KCkNvbmNsdXNpb246IHRoaXMgcGF0Y2ggaXMgYWxtb3N0IGNlcnRhaW5seSBkZWFkIGNvZGUgaW4gYW55IHN0YW5kYXJkIHRlc3RpbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA0NjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqQ2hlY2tpbmcgZm9yIGB4c2tfdHhfbWV0YWRhdGFgIGluIGBuZXRkZXZzaW1gKioKClJpZ2h0LCBzbyBJIHJhbiBhIHF1aWNrIHNlYXJjaCwgYW5kLi4uIG5vdGhpbmcuIE5vIGltbWVkaWF0ZSBoaXRzLiBUaGF0JiMzOTtzIGEgbGl0dGxlIHN1cnByaXNpbmcsIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBwb3RlbnRpYWwgdXNhZ2UuIE9rYXksIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgd2l0aGluIHRoZSBgbmV0ZGV2c2ltYCBjb2RlYmFzZSBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgYHhza190eF9tZXRhZGF0YWAuIEkga25vdyB0aGlzIGlzIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHNvIGEgdGFyZ2V0ZWQgc2VhcmNoIHNob3VsZCBiZSBmYWlybHkgZWZmaWNpZW50LiBHb3R0YSBiZSB0aG9yb3VnaC4gRXZlbiBhIGNvbW1lbnQgbWVudGlvbmluZyBpdCBpcyB3b3J0aCBub3RpbmcuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFJlYWNoaW5nIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHdhbGwgaGVyZS4gVGhlcmUmIzM5O3Mgbm8gc3RyYWlnaHRmb3J3YXJkIG1hdGNoIGZvciB0aGUgdGFyZ2V0LiBMZXQgbWUgcmV0aGluayB0aGlzIGZyb20gdGhlIGdyb3VuZCB1cC4gVGhlIHByaW1hcnkgZ29hbCBpcyB0byB0cmlnZ2VyIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAsIHdoaWNoLCBiZWluZyBhbiBpbmxpbmUgZnVuY3Rpb24sIHByZXNlbnRzIHVuaXF1ZSBjaGFsbGVuZ2VzLgoKRmlyc3QsIEkgbmVlZCB0byBjb25zaWRlciBgc3RtbWFjYC4gQ2FuIEkgZXZlbiBwcm9iZSB0aGlzIGluIFFFTVU/IFFFTVUgKmRvZXMqIGhhdmUgYGh3L25ldC9kZXNpZ253YXJlLmNgLCBidXQgaXQmIzM5O3MgaW5zdGFudGlhdGVkIGFzIGEgc3lzYnVzIGRldmljZSwgbm90IGEgUENJIGRldmljZS4gSG9sZCBvbiB0aG91Z2gsIHRoZXJlJiMzOTtzIGBzdG1tYWNfcGNpLmNgLCBhIFBDSSB3cmFwcGVyIGZvciBgc3RtbWFjYC4gQ291bGQgSSBpbmplY3QgYSBQQ0kgZGV2aWNlIHVzaW5nIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIHZlbmRvciBJRCBgUENJX1ZFTkRPUl9JRF9TVE1JQ1JPYCAoMHgxMDRhKSBhbmQgZGV2aWNlIElEIGBQQ0lfREVWSUNFX0lEX1NUTUlDUk9fTUFDYCAoMHgzNzk4KT8KCk5vdywgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX3NldHVwYCwgaWYgdGhlIGtlcm5lbCBzdXBwb3J0cyBQQ0kgaG90cGx1ZyBhbmQgdGhlIGRyaXZlciBpcyBsb2FkZWQuIEJ1dCwgd2FpdCwgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFN5emthbGxlciBkb2VzbiYjMzk7dCBhY3R1YWxseSAqZW11bGF0ZSogYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLiBJdCBsZXZlcmFnZXMgZWl0aGVyIGB2aGNpYCBvciBRRU1VJiMzOTtzIGJ1aWx0LWluIGRldmljZXMsIGNvcnJlY3Q/IExvb2tpbmcgY2xvc2VyLCB0aGVyZSYjMzk7cyBubyBkZWRpY2F0ZWQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsIGFzIEkmIzM5O2QgaGF2ZSBleHBlY3RlZCwgbGlrZSB3aGF0IGV4aXN0cyBmb3IgVVNCIHZpYSBgc3l6X3VzYl9jb25uZWN0YCwgb3Igd2lmaSB3aXRoIGBzeXpfODAyMTFfaW5qZWN0YC4gRm9yIFBDSSwgc3l6a2FsbGVyIHJlbGllcyBvbiBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIFZNLgoKU28gdGhlIGNvcmUgcHJvYmxlbSBiZWNvbWVzIHRoaXM6IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBmb3IgUENJIGRldmljZXMsIHVubGlrZSB0aGUgVVNCIHN1YnN5c3RlbS4gYHZmaW9gIGlzIHRoZSBvbmx5IGFsdGVybmF0aXZlLCBidXQgdGhhdCYjMzk7cyBmb3IgcGFzc2luZyB0aHJvdWdoICpyZWFsKiBoYXJkd2FyZS4gU28gaWYgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBoYXJkd2FyZSwgSSYjMzk7bSBzdHVjay4KCkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHN0bW1hY2AgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3MgZGVmYXVsdCBjb25maWd1cmF0aW9uLiBJdCB1c3VhbGx5IGluY2x1ZGVzIGEgd2lkZSByYW5nZSBvZiBkcml2ZXJzLCBidXQgZXZlbiBpZiBpdCYjMzk7cyBwcmVzZW50LCB0aGUgYHByb2JlYCBmdW5jdGlvbiB3aWxsIGZhaWwgd2l0aG91dCB0aGUgY29ycmVjdCBoYXJkd2FyZSAob3IgaXRzIGVtdWxhdGlvbiBpbiBRRU1VKSwgYW5kIHRodXMsIHRoZSBuZXRkZXYgd29uJiMzOTt0IGJlIGNyZWF0ZWQuIFdpdGhvdXQgdGhlIG5ldGRldiwgdGhlcmUgaXMgbm8gd2F5IHRvIGJpbmQgYW4gQUZfWERQIHNvY2tldC4gTm8gc29ja2V0IGJpbmRpbmcgbWVhbnMgbm8gYWNjZXNzIHRvIHRoZSBUWCBwYXRoIGFuZCB0aHVzLCBubyBhY2Nlc3MgdG8gYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBkaXJlY3RseS4KCk9rYXksIGxldCYjMzk7cyBiYWNrIHVwLiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZSB0byB0aGlzIGZ1bmN0aW9uPyBJdCYjMzk7cyBpbmxpbmUsIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgYHhza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIExldCYjMzk7cyBleHBsb3JlIHRoZSBjYWxsZXJzIHRvIHRob3NlIGZ1bmN0aW9ucyB0byBmaW5kIGFsdGVybmF0ZSB3YXlzIHRvIHJlYWNoIHRoZSBpbmxpbmUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMjI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjMtXHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzMyPXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMzLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzUtXHRcdFx0XHQgICAgICAgb3B0aW9ucyk7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTM1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzctXHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9Nzc1PXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4Mi1cdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzgzOlx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4NC1cdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNDEzCgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDExNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlOiBVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhpcyBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBjb2RlIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSwgc3BlY2lmaWNhbGx5IHRoZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVudHMuIEkmIzM5O3ZlIHRyYWNlZCB0aGVzZSBmdW5jdGlvbnMgYW5kIGZvdW5kIHRoZXkgYXJlIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYSBoYW5kZnVsIG9mIGhhcmR3YXJlIGRyaXZlcnM6IGBpZ2NgIChJbnRlbCBJMjI1L0kyMjYpLCBgbWx4NWAgKE1lbGxhbm94IENvbm5lY3RYLTQmIzQzOyksIGBzdG1tYWNgIChTVE1pY3JvZWxlY3Ryb25pY3MgTUFDKSwgYW5kIGBpZHBmYCAoSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uKS4KCkNydWNpYWxseSwgbm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsaXplZCBvciBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBvcGVyYXRlcyBpbi4gSSBkb3VibGUtY2hlY2tlZCBgaWdjYCwgYG1seDVgLCBhbmQgYGlkcGZgIHRvIGNvbmZpcm0gdGhleSBhcmUgbm90IGVtdWxhdGVkLCBhbmQgd2hpbGUgYHN0bW1hY2AgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGJlIGluc3RhbnRpYXRlZCB2aWEgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgbGV2ZXJhZ2UgdGhhdC4gTXkgcmV2aWV3IG9mIHRoZSBRRU1VIHNvdXJjZSBjb25maXJtcyB0aGF0IGBpZ2NgIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBzZXR1cCBhbmQgc3l6a2FsbGVyIHVzZXMgdGhlIGBlMTAwMGAgb3IgYHZpcnRpby1uZXRgIGRyaXZlcnMgYnkgZGVmYXVsdC4KCk5vdywgd2hpbGUgdGhlIHBhdGNoICpkb2VzKiB0b3VjaCBzb21lIGluY2x1ZGUgZmlsZXMgKGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGBpbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhgLCBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCkgYW5kIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2AsIHRoZSBhY3R1YWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiB0aGVzZSBmaWxlcyBhcmUgbGltaXRlZCB0byBpbmxpbmUgZnVuY3Rpb25zIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBUaGVzZSBjaGFuZ2VzIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIHNhbWUgaGFyZHdhcmUgZHJpdmVycyBtZW50aW9uZWQgcHJldmlvdXNseS4gVGhlIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgIGNoYW5nZSBhZGRzIGEgYF9fdTMyIHJlc2VydmVkO2AgZmllbGQgd2hpY2ggaXMgYSBVQVBJIGNoYW5nZSBidXQgZG9lc24mIzM5O3QsIGluIGFuZCBvZiBpdHNlbGYsIGFsdGVyIGFueSByZWFjaGFibGUga2VybmVsIGV4ZWN1dGlvbiBmbG93LgoKSW4gc2hvcnQsIHRoZSBwYXRjaCBtb2RpZmllcyBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gb3VyIHRhcmdldCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBjb3JlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBjaGFuZ2VzIGluIHRoZSBzaGFyZWQgaGVhZGVyIGZpbGVzIGFuZCB0aGUgYG5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jYCBmaWxlIGFyZSBhbGwgdHJhbnNpdGl2ZWx5IG9ubHkgcmVhY2hhYmxlIGZyb20gdGhvc2Ugc2FtZSBoYXJkd2FyZSBkcml2ZXJzLiBUaGVyZWZvcmUsIGJhc2VkIG9uIHRoZSBkb2N1bWVudGVkIGNyaXRlcmlhLCB0aGlzIHBhdGNoIHBlcmZlY3RseSBmaXRzIHRoZSBkZWZpbml0aW9uIG9mICYjMzQ7dW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsJiMzNDsgYW5kIGl0IGlzIHNhZmUgdG8gYXNzaWduIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgVFggbWV0YWRhdGEgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgZm9yIHRoZSBYRFBfVFhfTUVUQURBVEEgZmxhZyBpbiB0aGUgZGVzY3JpcHRvciBvcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIEl0IHVwZGF0ZXMgdGhlIHhza19idWZmX2dldF9tZXRhZGF0YSBhbmQgeHBfcmF3X2dldF9jdHggaGVscGVycyBhbmQgdGhlaXIgY2FsbGVycy4gSG93ZXZlciwgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCB6ZXJvLWNvcHkgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IGEgZmV3IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnM6IGlnYywgbWx4NSwgc3RtbWFjLCBhbmQgaWRwZi4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsLCBub3IgYXJlIHRoZXkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSB2ZXRoIGFuZCB2aXJ0aW9fbmV0IGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBkbyBub3Qgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIGRvIG5vdCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzc6NDkuMzU5MDc5MTkyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MTM1Mjk1OTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo0OS4zNTkwODQ4NjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Nzk0NzA4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGViMjljMTA2MDdlNDczY2FiYWJkOTE2YWYwMGY3M2M1ZmI5YTk4ZTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMjI6Mzc6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbmluZGV4IDhiOWNlN2NiZmZmOWIuLjFmYjVmM2NiZTkzYzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbkBAIC0zMDcxLDcgKzMwNzEsOCBAQCBzdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbiBcXHRcXHRvbGluZm9fc3RhdHVzID0geGRwX2Rlc2MubGVuIFxcdTAwM2NcXHUwMDNjIElHQ19BRFZUWERfUEFZTEVOX1NISUZUO1xcbiBcXG4gXFx0XFx0ZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuLVxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuK1xcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcXG4gXFx0XFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hLCB4ZHBfZGVzYy5sZW4pO1xcbiBcXHRcXHRiaSA9IFxcdTAwMjZyaW5nLVxcdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXFxuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcXG5AQCAtOTksNyArOTksNyBAQCBib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHR4ZHB0eGQuZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCBkZXNjLmFkZHIpO1xcbiBcXHRcXHR4ZHB0eGQuZGF0YSA9IHhza19idWZmX3Jhd19nZXRfZGF0YShwb29sLCBkZXNjLmFkZHIpO1xcbiBcXHRcXHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XFxuLVxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyKTtcXG4rXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XFxuIFxcbiBcXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCB4ZHB0eGQuZG1hX2FkZHIsIHhkcHR4ZC5sZW4pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi42ZTlkNGNiMzM2ZWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTI3MTQsMTYgKzI3MTQsMTAgQEAgc3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbiBcXHRcXHRpZiAoIXhza190eF9wZWVrX2Rlc2MocG9vbCwgXFx1MDAyNnhkcF9kZXNjKSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbi1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZXN0IFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICB4ZHBfZGVzYy5sZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdKSB7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXG4gXFx0XFx0dHhfZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBlbnRyeSk7XFxuIFxcdFxcdGRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuLVxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuK1xcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcXG4gXFx0XFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7XFxuIFxcbiBcXHRcXHQvKiBUbyByZXR1cm4gWERQIGJ1ZmZlciB0byBYU0sgcG9vbCwgd2Ugc2ltcGxlIGNhbGxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXFxuaW5kZXggNWRjYzBkN2Y2NWI3Ni4uYTQ1MmI3ODI4Y2U0ZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcXG5AQCAtMTk2LDcgKzE5Niw3IEBAIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXFxuIFxcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcXG4gXFx0c3RydWN0IHhkcF9kZXNjX2N0eCBjdHg7XFxuIFxcbi1cXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cXHUwMDNlcG9vbCwgeGRlc2MtXFx1MDAzZWFkZHIpO1xcbitcXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cXHUwMDNlcG9vbCwgeGRlc2MtXFx1MDAzZWFkZHIsIHhkZXNjLVxcdTAwM2VvcHRpb25zKTtcXG4gXFx0ZGVzYyA9ICh0eXBlb2YoZGVzYykpe1xcbiBcXHRcXHQuYWRkclxcdD0gY3R4LmRtYSxcXG4gXFx0XFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cXHUwMDNlbGVuKSxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmggYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcXG4rKysgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxcbkBAIC0yNDAsNiArMjQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbiAgKiB4c2tfYnVmZl9yYXdfZ2V0X2N0eCAtIGdldCBcXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xcbiAgKiBAYWRkcjogZGVzYyBhZGRyZXNzIChmcm9tIHVzZXJzcGFjZSlcXG4rICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXFxuICAqXFxuICAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yXFxuICAqIGRldGFpbHMuXFxuQEAgLTI0OCw5ICsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXFxuICAqL1xcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcXG4teHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbit4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbiB7XFxuLVxcdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyKTtcXG4rXFx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIsIG9wdGlvbnMpO1xcbiB9XFxuIFxcbiAjZGVmaW5lIFhEUF9UWE1EX0ZMQUdTX1ZBTElEICggXFxcXFxcbkBAIC0zMTgsMTggKzMxOSwyMCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4tX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbitcXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4ge1xcbi1cXHRpZiAoIXBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbilcXG4rXFx0aWYgKCFwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW4gfHwgIShvcHRpb25zIFxcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRyZXR1cm4gZGF0YSAtIHBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbjtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4teHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4tXFx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XFxuK1xcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXFxuK1xcdFxcdFxcdFxcdCAgICAgICBvcHRpb25zKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIHhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoc3RydWN0IHhkcF9idWZmICp4ZHApXFxuQEAgLTUxMCw3ICs1MTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuK3hza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4gXFx0cmV0dXJuIChzdHJ1Y3QgeGRwX2Rlc2NfY3R4KXsgfTtcXG4gfVxcbkBAIC01MzAsMTMgKzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4tX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbitcXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4ge1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4teHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oIGIvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oXFxuaW5kZXggMmJiMWQxMjJiMWJjNi4uYTdkZjU3Mzc4NGZkNiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcXG4rKysgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcXG5AQCAtMTU0LDcgKzE1NCw4IEBAIHN0cnVjdCB4ZHBfZGVzY19jdHgge1xcbiBcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xcbiB9O1xcbiBcXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpO1xcbitzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcXG4rXFx0XFx0XFx0XFx0ICAgdTMyIG9wdGlvbnMpO1xcbiBcXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcXG4ge1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbkBAIC0xNDksNiArMTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XFxuIFxcdFxcdFxcdF9fdTE2IGNzdW1fc3RhcnQ7XFxuIFxcdFxcdFxcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cXG4gXFx0XFx0XFx0X191MTYgY3N1bV9vZmZzZXQ7XFxuK1xcdFxcdFxcdF9fdTMyIHJlc2VydmVkO1xcbiBcXG4gXFx0XFx0XFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cXG4gXFx0XFx0XFx0LyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcXG4rKysgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xcbkBAIC03NjMsNiArNzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuICAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0IFxcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXFxuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxcbisgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSlcXG4gICpcXG4gICogSGVscGVyIGZvciBnZXR0aW5nIGRlc2MncyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGEgcG9pbnRlciwgaWYgcHJlc2VudC5cXG4gICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy5cXG5AQCAtNzcxLDE0ICs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuICAqIFJldHVybjogbmV3IFxcdTAwMjZ4ZHBfZGVzY19jdHggc3RydWN0IGNvbnRhaW5pbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YVxcbiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLlxcbiAgKi9cXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbitcXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucylcXG4ge1xcbiBcXHRzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHJldDtcXG4gXFxuIFxcdGFkZHIgPSBfX3hwX3Jhd19nZXRfYWRkcihwb29sLCBhZGRyKTtcXG4gXFxuIFxcdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xcbi1cXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG4rXFx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgb3B0aW9ucyk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuKysrIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcXG4gXFx0XFx0XFx0X191MTYgY3N1bV9zdGFydDtcXG4gXFx0XFx0XFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xcbiBcXHRcXHRcXHRfX3UxNiBjc3VtX29mZnNldDtcXG4rXFx0XFx0XFx0X191MzIgcmVzZXJ2ZWQ7XFxuIFxcbiBcXHRcXHRcXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xcbiBcXHRcXHRcXHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo0OS44Mzc2NzAyMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzg2NTY2OTI3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgVFggbWV0YWRhdGEgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgZm9yIHRoZSBYRFBfVFhfTUVUQURBVEEgZmxhZyBpbiB0aGUgZGVzY3JpcHRvciBvcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIEl0IHVwZGF0ZXMgdGhlIHhza19idWZmX2dldF9tZXRhZGF0YSBhbmQgeHBfcmF3X2dldF9jdHggaGVscGVycyBhbmQgdGhlaXIgY2FsbGVycy4gSG93ZXZlciwgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCB6ZXJvLWNvcHkgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IGEgZmV3IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnM6IGlnYywgbWx4NSwgc3RtbWFjLCBhbmQgaWRwZi4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsLCBub3IgYXJlIHRoZXkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSB2ZXRoIGFuZCB2aXJ0aW9fbmV0IGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBkbyBub3Qgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIGRvIG5vdCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWIyOWMxMDYwN2U0NzNjYWJhYmQ5MTZhZjAwZjczYzVmYjlhOThlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIyOjM3OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuaW5kZXggOGI5Y2U3Y2JmZmY5Yi4uMWZiNWYzY2JlOTNjNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuQEAgLTMwNzEsNyArMzA3MSw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4gXHRcdG9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gXHUwMDNjXHUwMDNjIElHQ19BRFZUWERfUEFZTEVOX1NISUZUO1xuIFxuIFx0XHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4gXHRcdGJpID0gXHUwMDI2cmluZy1cdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXG5AQCAtOTksNyArOTksNyBAQCBib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxuIFx0XHR4ZHB0eGQuZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQuZGF0YSA9IHhza19idWZmX3Jhd19nZXRfZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XG4tXHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XG4gXG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGIyYjdkMDI0MmRkM2MuLjZlOWQ0Y2IzMzZlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjcxNCwxNiArMjcxNCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcbiBcdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTtcbiBcbiBcdFx0LyogVG8gcmV0dXJuIFhEUCBidWZmZXIgdG8gWFNLIHBvb2wsIHdlIHNpbXBsZSBjYWxsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG5pbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbkBAIC0xOTYsNyArMTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbiBcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggY3R4O1xuIFxuLVx0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkcik7XG4rXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbiBcdGRlc2MgPSAodHlwZW9mKGRlc2MpKXtcbiBcdFx0LmFkZHJcdD0gY3R4LmRtYSxcbiBcdFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cdTAwM2VsZW4pLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbkBAIC0yNDAsNiArMjQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0IFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxuKyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbiAgKiBkZXRhaWxzLlxuQEAgLTI0OCw5ICsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4tXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkcik7XG4rXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG4gfVxuIFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuQEAgLTMxOCwxOCArMzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuK1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbi1cdGlmICghcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4pXG4rXHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZGF0YSAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4ge1xuLVx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG4rXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuK1x0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbkBAIC01MTAsNyArNTEzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xuIH1cbkBAIC01MzAsMTMgKzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbitfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbitcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbisrKyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxuQEAgLTE1NCw3ICsxNTQsOCBAQCBzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHtcbiBcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XG4gfTtcbiBcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcik7XG4rc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4rXHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4gXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbkBAIC0xNDksNiArMTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG4gXHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiBcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gXHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4rXHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuKysrIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbkBAIC03NjMsNiArNzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4rICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXG4gICpcbiAgKiBIZWxwZXIgZm9yIGdldHRpbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxuICAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5AQCAtNzcxLDE0ICs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogUmV0dXJuOiBuZXcgXHUwMDI2eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MncyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGFcbiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLlxuICAqL1xuLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuK1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4ge1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7XG4gXG4gXHRhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7XG4gXG4gXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbi1cdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuK1x0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcbitcdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbitcdFx0XHRfX3UzMiByZXNlcnZlZDtcbiBcbiBcdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuIFx0XHRcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo0OS44Mzc2NzI5NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ2Mjk1MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgYW5kIFJlYWNoYWJpbGl0eSBvZiB0aGlzIFhEUC9BRl9YRFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBYRFAgYW5kIEFGX1hEUCAoeHNrKSBjb2RlLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHBfcmF3X2dldF9jdHhgIHRvIGFjY2VwdCBhbiBgb3B0aW9uc2AgcGFyYW1ldGVyLiBUaGlzIHBhcmFtZXRlciBpcyBnZXR0aW5nIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGB4ZHBfZGVzYy5vcHRpb25zYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIHRoZW4gY2hlY2tzIGBvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEFgIGJlZm9yZSBhY3R1YWxseSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIFNtYXJ0LlxuXG5UaGV5J3JlIGFsc28gYWRkaW5nIGEgYF9fdTMyIHJlc2VydmVkO2AgZmllbGQgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGluIGBpZl94ZHAuaGAuIEFuZCB0aGVyZSdzIHNvbWUgY2xlYW51cCBpbiBgc3RtbWFjX3hkcF94bWl0X3pjYCwgcmVtb3Zpbmcgc29tZSBjb2RlIHJlbGF0ZWQgdG8gYHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBtZSBpczogd2hhdCdzIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlc2UgY2hhbmdlcz8gV2hlcmUgY2FuIHRoZXkgYmUgdHJpZ2dlcmVkLCBhbmQgd2hhdCdzIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2U/IEkgc2VlIHRoZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBzZXZlcmFsIGRyaXZlcnM6IEludGVsJ3MgYGlnY2AsIE1lbGxhbm94J3MgYG1seDVgLCBhbmQgU1RNaWNybydzIGBzdG1tYWNgLiBQbHVzLCBpdCdzIGFsdGVyaW5nIHNvbWUgY29yZSBuZXR3b3JraW5nIGhlYWRlcnMgYW5kIGZpbGVzLCBpbmNsdWRpbmcgYHhzay5oYCwgYHhkcF9zb2NrX2Rydi5oYCwgYW5kIGB4c2tfYnVmZl9wb29sLmNgLlxuXG5UaGUgY29yZSBjaGFuZ2UsIGFzIEkgc2VlIGl0LCBpcyBpbiBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgOiBJdCBub3cgaGFzIGFuIGBvcHRpb25zYCBwYXJhbWV0ZXIgYW5kIHRoZSBjcnVjaWFsIGNoZWNrIGAhKG9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSlgLiBUaGlzIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgdGhlIGNoYW5nZXMgYXJlIHRpZWQgdG8gdGhlIGBYRFBfVFhfTUVUQURBVEFgIGZsYWcuIFRoYXQncyBnb29kLlxuXG5TbywgQUZfWERQIHNvY2tldHMgYXJlIGRlZmluaXRlbHkgaW52b2x2ZWQgaGVyZSwgYXMgYFhEUF9UWF9NRVRBREFUQWAgaXMgYSBmbGFnIHJlbGF0ZWQgdG8gQUZfWERQLiBBRl9YRFAgaXMgYSBjZW50cmFsIG5ldHdvcmtpbmcgY29tcG9uZW50LiBJJ20gdGhpbmtpbmcgSSBjYW4gbGlrZWx5IGZ1enogdGhpcyB3aXRoIHN5emthbGxlciwgdXNpbmcgdmV0aCBvciBvdGhlciB2aXJ0dWFsIGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLiBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbHNvICp1c2VkKiBpbiBkcml2ZXIgY29kZSEgVGhpcyB3YXJyYW50cyBhIGRlZXBlciBsb29rLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdmlydHVhbCBkcml2ZXJzLCBsaWtlIHZldGggb3IgbWFjdmxhbi4gSWYgc28sIHRoYXQgb3BlbnMgdXAgYSBtdWNoIG1vcmUgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UgdG8gc2VlIGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZ2V0dGluZyBjYWxsZWQgYnkgYW55IG9mIHRob3NlIHZpcnR1YWwgZHJpdmVycy4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo1Ny45ODM5NzA1MTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMTAxNjYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3My1cXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc0OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc1LVxcdFxcdFxcdFxcdFxcdCAgICAgeGRwX2Rlc2Mub3B0aW9ucyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXFx0XFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY4MT1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3MTgtXFx0XFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3MTk6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcyMC1cXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMy1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMzMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzMjp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzMte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMzNS1cXHRcXHRcXHRcXHQgICAgICAgb3B0aW9ucyk7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01MzU9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM3LVxcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQzOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTU0NC17XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NzU9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODItXFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzgzOlxcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgIG9wdGlvbnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo1OS42OTQ5OTMxNDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDczMzA3OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgYHhza19idWZmX2dldF9tZXRhZGF0YWAgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gaXQgYXBwZWFycyB0aGF0IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIHJlYWxseSBvbmx5IGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgIGRyaXZlcnMuIFRoYXQncyBhIHByZXR0eSBsaW1pdGVkIHNjb3BlLCBhbGwgdGhpbmdzIGNvbnNpZGVyZWQuIEl0J3MgZ29vZCB0byBrbm93IHdoZXJlIGl0IGlzICphbmQgaXNuJ3QqIHVzZWQuIE5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0ICp0cnVseSogdGhlIGNvbXBsZXRlIHBpY3R1cmU/IERpZG4ndCB3ZSBoYXZlIHNvbWV0aGluZyBlbHNlIHRoYXQgdG91Y2hlZCBYRFAgY29udGV4dD8gV2hhdCBhYm91dCBgeHBfcmF3X2dldF9jdHhgPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIG9yIG92ZXJsYXBwaW5nIHVzZXMgdGhhdCBJIGFtIGZvcmdldHRpbmcuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODM4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MDIuNzY4MzAzNDA1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzkwMDAwNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBfcmF3X2dldF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0NC0gKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI0NTogKiBXcmFwcGVyIGZvciB4cF9yYXdfZ2V0X2N0eCgpIHRvIGJlIHVzZWQgaW4gZHJpdmVycywgc2VlIGl0cyBrZG9jIGZvclxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0Ni0gKiBkZXRhaWxzLlxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUyPXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjUzLXtcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTQ6XFx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIsIG9wdGlvbnMpO1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1NS19XFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg9MTUyPXN0cnVjdCB4ZHBfZGVzY19jdHgge1xcbi0tXFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTE1Ni1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg6MTU3OnN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTgtXFx0XFx0XFx0XFx0ICAgdTMyIG9wdGlvbnMpO1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzYwPUVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzYyLS8qKlxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc2MzogKiB4cF9yYXdfZ2V0X2N0eCAtIGdldCBcXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc2NC0gKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc0LSAqL1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc3NTpzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzYtXFx0XFx0XFx0XFx0ICAgdTMyIG9wdGlvbnMpXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODctfVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc4ODpFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfY3R4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MDQuNzA3MzA4MTA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwMjcxMTIwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBYRFAgQ29udGV4dCBSZXRyaWV2YWwqKlxuXG5SaWdodCwgc28gYHhwX3Jhd19nZXRfY3R4YCBpcyB3cmFwcGVkIGJ5IGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBsYXllcmluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGl0c2VsZi4gS25vd2luZyB3aGVyZSAqdGhhdCogaXMgdXNlZCBpcyBnb2luZyB0byBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGhvdyB0aGUgWERQIGNvbnRleHQgaXMgYmVpbmcgYWNjZXNzZWQgd2l0aGluIHRoaXMgWFNLIGJ1ZmZlciBzeXN0ZW0uIEl0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgdGhlIGxhcmdlciBwaWN0dXJlIG9mIGhvdyB3ZSBnZXQgdGhlIGNvbnRleHQuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIHNpdGVzIHJldmVhbC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MDcuNDEwMDIxNjM3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDA1ODE4NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcmF3X2dldF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MT1fX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk5OlxcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkciwgeGRlc2MtXFx1MDAzZW9wdGlvbnMpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXFx0ZGVzYyA9ICh0eXBlb2YoZGVzYykpe1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTIzOS0vKipcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNDEtICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTI6eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTE1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjA4Ljk1MDYwODQ1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTc2MzAyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERhdGEgRmxvdyBpbiB0aGUgZUJQRi9YRFAgTmV0d29yayBTdGFjayoqXG5cbkFscmlnaHQsIGxldCdzIHRyYWNlIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGlzIGNhbGxlZCB3aXRoaW4gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gSSBrbm93IGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgaXMgaW1wb3J0YW50IGZvciByZXRyaWV2aW5nIGJ1ZmZlciBjb250ZXh0IGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgWERQL1hTSyBmcmFtZXdvcmssIHNvIGFueSBwbGFjZSB0aGF0IGZ1bmN0aW9uIGlzIGludm9sdmVkIGlzIGEga2V5IGFyZWEgb2YgaW50ZXJlc3QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGl0c2VsZi4gVGhpcyB3aWxsIHByb3ZpZGUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoZSBkYXRhIGlzIGJlaW5nIGhhbmRsZWQgYW5kIHdoZXJlIHRoaXMgc3BlY2lmaWMgY29udGV4dCByZXRyaWV2YWwgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHBhY2tldCB0cmFuc21pc3Npb24gcHJvY2VzcyB3aXRoaW4gdGhlIGxpYmV0aCBYU0sgaW1wbGVtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGhpZ2hsaWdodCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMgSSBtaWdodCB0YWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MTIuNDY4MjQxNzk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM1MzQ3MzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzgtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE3OTogKiBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZCAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIFhTayB4bWl0IHcvbWV0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODAtICogQHhkZXNjOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTE6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTkyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nz1saWJldGhfeHNrX3htaXRfZmlsbF9idWYoc3RydWN0IGxpYmV0aF94ZHBfdHhfZnJhbWUgZnJtLCB1MzIgaSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTItXFx0aWYgKHByaXYpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI1MzpcXHRcXHRkZXNjID0gX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoXFx1MDAyNmZybS5kZXNjLCBzcSwgcHJpdik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1NC1cXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjE0LjAwMzU5NjI1M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgwNjQ5MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKldoZXJlIERvZXMgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAgRml0IEluPyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYC4gSXQncyBwcmV0dHkgZnVuZGFtZW50YWwsIHJpZ2h0PyBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwgdG8gdGhlIGVCUEYgZGF0YXBhdGguIE5vdywgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnkgdG8gcmVtZW1iZXIgKmV4YWN0bHkqIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gSXQncyBvYnZpb3VzbHkgdGllZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBhdGgsIGZpbGxpbmcgdGhlIGJ1ZmZlciB0byBnZXQgcGFja2V0cyBvdXQuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBYRFAvZUJQRiBkYXRhIGZsb3cuIEkgYmVsaWV2ZSBJJ20gdXNpbmcgYGxpYmV0aGAsIHdoaWNoIGhhbmRsZXMgdGhlIEV0aGVybmV0IGhlYWRlciBnZW5lcmF0aW9uIGFuZCBtYW5pcHVsYXRpb24uIFRoZSBgeHNrX3htaXRgIHBhdGggZnJvbSB0aGUgWERQIHByb2dyYW0uIFNvLCBpdCBzaG91bGQgYmUgaW4gdGhlIGNvbnRleHQgb2YgWERQIHNvY2tldHMgKFhTSykgb24gdGhlIHRyYW5zbWl0IHNpZGUsIHdoaWNoIGZlZWRzIGRhdGEgdG8gdGhlIGRyaXZlciByaW5nLiBCYXNpY2FsbHksIGl04oCZcyB0aGUgYnJpZGdlIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uJ3MgZGF0YSBhbmQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIEknZCBpbWFnaW5lIGl0IHdvdWxkIGJlIGludm9sdmVkIGluIGFzc2VtYmxpbmcgdGhlIGZyYW1lIGFuZCBoYW5kaW5nIGl0IG92ZXIuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcm91bmQgdGhhdCBmdW5jdGlvbiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBsaWJyYXJ5IGZvciBtZW1vcnkgbWFuYWdlbWVudC4gSXMgaXQgZGlyZWN0bHkgY2FsbGVkIGJ5IHRoZSBYRFAgcHJvZ3JhbSwgb3IgaXMgdGhlcmUgYW5vdGhlciBmdW5jdGlvbiBpbiBiZXR3ZWVuPyBJIHNob3VsZCBwcm9iYWJseSByZXZpZXcgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBjYWxsIGdyYXBocyB0byBiZSBjZXJ0YWluLCB0byBlbnN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEzOCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjE4LjE4NDI0NzU5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NDk5NzgzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaWJldGhfeHNrX3htaXRfZmlsbF9idWZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc5OiAqIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgWFNrIHhtaXQgdy9tZXRhXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4MC0gKiBAeGRlc2M6IFxcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODMtICpcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTg0OiAqIFNhbWUgYXMgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoKSwgYnV0IHJlcXVlc3RzIG1ldGFkYXRhIHBvaW50ZXIgYW5kXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4NS0gKiBmaWxscyBhZGRpdGlvbmFsIGZpZWxkcyBpbiBcXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIHRvIGFzayBmb3IgbWV0YWRhdGEgb2ZmbG9hZC5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE1LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMTY6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L28gbWV0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMTctICogQHhkZXNjOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjIzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMjQ6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjI1LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzMy0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjM0OiAqIGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIGFuIFhTayB4bWl0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzNS0gKiBAZnJtOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNDc6bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI0OC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsIHU2NCBwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Mi1cXHRpZiAocHJpdilcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjUzOlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcXHUwMDI2ZnJtLmRlc2MsIHNxLCBwcml2KTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU0LVxcdGVsc2VcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjU1OlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihcXHUwMDI2ZnJtLmRlc2MsIHNxKTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU2LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA0LVxcdFxcdFxcdFxcdGxpYmV0aF94ZHBfcHRyX3RvX3ByaXYodG1vKSwgcHJlcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MzA1OlxcdFxcdFxcdFxcdGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiwgeG1pdCk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTMwNi1cXHRmaW5hbGl6ZSh4ZHBzcSwgbiwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjE5Ljc3OTI1MTQ3MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIyMjU4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIGxpYmV0aF94c2tfeG1pdF9kb19idWxrKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCB3aGVyZSBleGFjdGx5IGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXRpbGl6ZWQgaW4gbXkgbmV0d29yayBzdGFjayBvciBhcHBsaWNhdGlvbj8gSXQncyB0aGF0IGRpcmVjdCwgcHJhY3RpY2FsIGFwcGxpY2F0aW9uIHRoYXQgbWF0dGVycy4gQW0gSSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBYRFAgaW1wbGVtZW50YXRpb24sIG1heWJlIHNvbWV0aGluZyBjdXN0b20tYnVpbHQgYXJvdW5kIEFGX1hEUCBzb2NrZXRzPyBPciBpcyBpdCBwYXJ0IG9mIGEgYnJvYWRlciBuZXR3b3JraW5nIGxpYnJhcnksIHVzZWQgYXMgYSBsb3ctbGV2ZWwgcHJpbWl0aXZlIGZvciBwYWNrZXQgdHJhbnNtaXNzaW9uP1xuXG5JJ20gbWVudGFsbHkgbWFwcGluZyB0aGUgY29kZSBmbG93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9ucy4gV2hhdCBkb2VzIHRoZSBidWxrIHRyYW5zbWlzc2lvbiBpbXBseT8gSXMgaXQgYSB3YXkgdG8gb3B0aW1pemUgdGhyb3VnaHB1dCBieSBiYXRjaGluZyBwYWNrZXRzLCBzaW1pbGFyIHRvIGhvdyBvdGhlciBpbnRlcmZhY2VzIHdvcmssIGJ1dCBzcGVjaWZpYyBmb3IgWERQPyBJcyBpdCBtYW5hZ2luZyB0aGUgY29tcGxleGl0aWVzIG9mIHJpbmcgYnVmZmVyIGludGVyYWN0aW9uIGFuZCBoYXJkd2FyZSBvZmZsb2FkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIHBhcmFtZXRlcnMgcGFzc2VkLCBhbmQgaG93IHRoZSBwYWNrZXRzIGFyZSBwcmVwYXJlZCBmb3IgdHJhbnNtaXNzaW9uLiBXaGF0IGFyZSB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBJcyBpdCBlZmZpY2llbnQsIG9yIGFyZSB0aGVyZSBib3R0bGVuZWNrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/XG5cbkxldCdzIGRyaWxsIGRvd24gaW50byB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIEkgbmVlZCB0byBrbm93IHdoZXJlIEkgY2FuIGZpbmQgdGhlIGZ1bmN0aW9uIHVzZWQgaW4gb3VyIHN5c3RlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjMuMjAxNTEzNzExWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU5MDMwNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aF94c2tfeG1pdF9kb19idWxrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MzE2PWJvb2wgaWRwZl94c2tfeG1pdChzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqeHNrc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMyNjpcXHRyZXR1cm4gbGliZXRoX3hza194bWl0X2RvX2J1bGsoeHNrc3EtXFx1MDAzZXBvb2wsIHhza3NxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzI3LVxcdFxcdFxcdFxcdCAgICAgICBtaW4oZnJlZSAtIDEsIHhza3NxLVxcdTAwM2V0aHJlc2gpLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nz1saWJldGhfeHNrX3htaXRfZmlsbF9idWYoc3RydWN0IGxpYmV0aF94ZHBfdHhfZnJhbWUgZnJtLCB1MzIgaSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjQtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI2NTogKiBsaWJldGhfeHNrX3htaXRfZG9fYnVsayAtIHNlbmQgWFNrIHhtaXQgZnJhbWVzXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI2Ni0gKiBAcG9vbDogWFNrIGJ1ZmZlciBwb29sIGNvbnRhaW5pbmcgdGhlIGZyYW1lcyB0byBzZW5kXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9Mjg0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyODU6bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yODYtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjQuNzYwNTQ4NTk1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMjc0ODU4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBYU0sgVHJhbnNtaXNzaW9uIFBhdGhzIGluIFZpcnR1YWwgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiBob3cgYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYCBmYWN0b3JzIGludG8gdGhlIHBpY3R1cmUuIEkgc2VlIHRoYXQgaXQncyBiZWluZyBjYWxsZWQgd2l0aGluIGBpZHBmX3hza194bWl0YCwgd2hpY2ggSSBrbm93IGlzIHBhcnQgb2YgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiBkcml2ZXIsIHNvIGEgaGFyZHdhcmUtbGV2ZWwgY29tcG9uZW50LiBOb3csIG15IHF1ZXN0aW9uIGlzLCBhcmUgYW55IG9mIHRoZSAqdmlydHVhbCogZHJpdmVycyBvdXQgdGhlcmUsIHlvdSBrbm93LCB0aGUgb25lcyB0aGF0IG9mdGVuIGFic3RyYWN0IGF3YXkgdGhlIGhhcmR3YXJlLCB1dGlsaXppbmcgZWl0aGVyIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGB4cF9yYXdfZ2V0X2N0eGAgaW4gdGhlaXIgaW1wbGVtZW50YXRpb25zPyBJJ20gc3BlY2lmaWNhbGx5IHdvbmRlcmluZyBpZiB0aGV5J3JlIGludGVyYWN0aW5nIHdpdGggdGhlIFhEUCBTb2NrZXQgbGF5ZXIgYXQgYWxsLCBvciBwZXJoYXBzIEknbSBsb29raW5nIGF0IHRoaXMgaW4gdGhlIHdyb25nIG1hbm5lci4gTXkgZmlyc3QgaHVuY2g/IExldCdzIHRha2UgYSBsb29rIGF0IGB2ZXRoYC4gSXQncyBhIGNvbW1vbiBhbmQgd2VsbC11bmRlcnN0b29kIHZpcnR1YWwgRXRoZXJuZXQgcGFpciwgYW5kIGEgc2Vuc2libGUgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gUGVyaGFwcyB0aGUgYW5zd2VyIGxpZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjkuNzg4MDM3MTI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIyMTQwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjkuODM2MjY3MTU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzEyMzYxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byBgeHBfcmF3X2dldF9jdHhgIHdpdGhpbiB0aGUgYHZldGhgIENvbnRleHQqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB6ZXJvIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2ZXRoYCBjb250ZXh0LiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgSSdtIHRyb3VibGVzaG9vdGluZywgZGVidWdnaW5nLCBvciBwZXJoYXBzIG9wdGltaXppbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaG93IHJhdyBwYWNrZXRzIGFyZSBoYW5kbGVkIHdoZW4gYHZldGhgIGludGVyZmFjZXMgYXJlIGludm9sdmVkLiBJJ20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGF0IGZ1bmN0aW9uLiBJcyBpdCB3b3JraW5nIGFzIGV4cGVjdGVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyB0aGVyZT8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgZG9lcyBpdCBpbnRlcmFjdCB3aXRoPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgY29udGV4dCBpcyByZXRyaWV2ZWQsIHdoYXQgdGhhdCBjb250ZXh0IHJlcHJlc2VudHMsIGFuZCBob3cgaXQgaXMgc3Vic2VxdWVudGx5IHVzZWQuIE15IGNvbmNlcm4gaXMgcGVyaGFwcyBpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIG90aGVyIGZlYXR1cmVzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYxNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjMyLjk2NzUwNjcxMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MjY2MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhwX3Jhd19nZXRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MzMuMDEzMDQzMzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2MTMzMDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgUmVsYXRlZCBYRFAgTWV0YWRhdGEgUmVxdWVzdHMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzIGEgbGl0dGxlIHZhZ3VlLiBXZSd2ZSBnb3QgYSBwcm9ibGVtLCBhbmQgdGhlIGRpcmVjdGlvbiBpc24ndCBlbnRpcmVseSBjbGVhci4gVG8gZ2V0IG15IGJlYXJpbmdzLCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMsIHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb246IGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyB0aGlzIGNvdWxkIGhvbGQgdGhlIGtleS4gTWV0YWRhdGEsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgWERQLCBvZnRlbiBwcm92aWRlcyBjcnVjaWFsIGNvbnRleHQgb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIHBhY2tldCBvciByZXF1ZXN0LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBjYWxsIOKAkyBpdCdzIGxpa2VseSB3aGVyZSB0aGUgcm9vdCBvZiB0aGUgaXNzdWUgaXMgZXhwb3NlZC4gVGhpcyBmdW5jdGlvbidzIHByb2JhYmx5IGtleSwgc28gbGV0J3MgY2hlY2sgaXQgb3V0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjg2NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjM2LjM3NDM3NTcwMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NjUwMTY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM0PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDgyLVxcdFxcdG1ldGFfcmVxLnVzZWRfZGVzYyA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4MzpcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcXHUwMDI2bWV0YSwgXFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODQtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1ldGFfcmVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwODY6XFx0XFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgaGF2ZSB1cGRhdGVkIG5leHRfdG9fdXNlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA4Ny1cXHRcXHRudHUgPSByaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwODk6XFx0XFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgaGF2ZSB1cGRhdGVkIFR4IGJ1ZmZlciBpbmZvICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA5MC1cXHRcXHRiaSA9IG1ldGFfcmVxLnR4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwOTI6XFx0XFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgdXNlIGEgZmV3IGRlc2NyaXB0b3JzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA5My1cXHRcXHRidWRnZXQgLT0gbWV0YV9yZXEudXNlZF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTQ1OD1tbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNTA3LVxcdFxcdGlmIChtZXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo1MDg6XFx0XFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3Qoc3EtXFx1MDAzZXhza19wb29sLCBtZXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy01MDktXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTUtXFx0aWYgKG1ldGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjY1NjpcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cXHUwMDNleHNrX3Bvb2wsIG1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTY1Ny1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcywgZXNlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2ODE9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzQ4LVxcdFxcdG1ldGFfcmVxLmVkZXNjID0gXFx1MDAyNnR4X3EtXFx1MDAzZWRtYV9lbnR4W2VudHJ5XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3NDk6XFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QocG9vbCwgXFx1MDAyNm1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzUwLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcywgXFx1MDAyNm1ldGFfcmVxKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDctXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjIwODpcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cXHUwMDNlcG9vbCwgXFx1MDAyNmN0eC5tZXRhLCB0bW8sIFxcdTAwMjZkZXNjKTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjA5LVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xNDE9c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV90b19jb21wbChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDktXFx0Lyogd2UgY2FuIG9ubHkgYXJyaXZlIGhlcmUgaWYgdGhlIGNvbXBsZXRpb24gdGltZXN0YW1wIGhhcyBiZWVuXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNTA6XFx0ICogcmVxdWVzdGVkIHZpYSBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVAsIHNlZSB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTUxLVxcdCAqL1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjY0PXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjc1LS8qKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3NjogKiAgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QgLSBFdmFsdWF0ZSBBRl9YRFAgVFggbWV0YWRhdGEgYXQgc3VibWlzc2lvblxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3Ny0gKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yODY9c3RhdGljIGlubGluZSB2b2lkXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjg3Onhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI4OC1cXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01Mjg9c3RhdGljIGlubGluZSB2b2lkXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTI5Onhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzMC1cXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NjA9RVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjktICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy5cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzA6ICogTWV0YWRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGJ5IHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KCkuXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzcxLSAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjM3Ljk1MDg4MzY0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDczNjkxNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQUZfWERQIFplcm8tQ29weSBTdXBwb3J0IGluIGB2ZXRoYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBBRl9YRFAgemVyby1jb3B5IGlzIGhhbmRsZWQgaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgIGlzIHNob3dpbmcgdXAgaW4gYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGFuZCB0aGUgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAgY29kZS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgc2hvd2luZyBhIGZldyBkaWZmZXJlbnQgZHJpdmVycyB0aGF0IGFyZSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoaXMgbWV0YWRhdGEgcmVxdWVzdC4gSG93ZXZlciwgSSd2ZSBnb3QgYSBuYWdnaW5nIHN1c3BpY2lvbiBhYm91dCBgdmV0aGAuXG5cbk5vdywgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBgdmV0aGAgdXNlcyBgdmV0aF94ZHBfeG1pdGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHZldGhfeGRwX3htaXRfb25lYC4gQW5kIGZyb20gYSBxdWljayBnbGFuY2UsIGl0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgc2VlbSBsaWtlIGB2ZXRoX3hkcF94bWl0X29uZWAgaXMgbGV2ZXJhZ2luZyBgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgLiBUaGlzIHJhaXNlcyBhIHJlZCBmbGFnLiBEb2VzIGB2ZXRoYCBoYXZlIHN1cHBvcnQgZm9yIEFGX1hEUCB6ZXJvLWNvcHksIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IEl0IHNlZW1zIHVubGlrZWx5LlxuXG5JJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGB2ZXRoYCBhY3R1YWxseSBoYXMgYHhza190eF9tZXRhZGF0YV9vcHNgIGRlZmluZWQuIExldCdzIGRpZyBpbiBhbmQgY2hlY2suIFRoYXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg2MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozODo0Mi40MjQ1NzgxNTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzIyNDcxMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hkcC5oPTIyPWJvb2wgaWRwZl94ZHBfdHhfZmx1c2hfYnVsayhzdHJ1Y3QgbGliZXRoX3hkcF90eF9idWxrICpicSwgdTMyIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmgtMjgtICogQHNxOiBYRFAgcXVldWUgdG8gcHJvZHVjZSB0aGUgSFcgVHggZGVzY3JpcHRvciBvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmg6Mjk6ICogQHByaXY6IFxcdTAwMjZ4c2tfdHhfbWV0YWRhdGFfb3BzIG9uIFhTayB4bWl0IG9yICVOVUxMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94ZHAuaC0zMC0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0zNzU9aW50IGlnY194c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxdWV1ZV9pZCwgdTMyIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0zNzctLyogQUZfWERQIFRYIG1ldGFkYXRhIG9wZXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6Mzc4OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtMzc5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9Mjk5MD1zdGF0aWMgdm9pZCBpZ2NfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAyODpjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDI5LVxcdC50bW9fcmVxdWVzdF90aW1lc3RhbXBcXHRcXHQ9IGlnY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM0PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDgyLVxcdFxcdG1ldGFfcmVxLnVzZWRfZGVzYyA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4MzpcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcXHUwMDI2bWV0YSwgXFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODQtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1ldGFfcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTcxMjA9c3RhdGljIGludCBpZ2NfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MTkzLVxcdG5ldGRldi1cXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFxcdTAwMjZpZ2NfeGRwX21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo3MTk0OlxcdG5ldGRldi1cXHUwMDNleHNrX3R4X21ldGFkYXRhX29wcyA9IFxcdTAwMjZpZ2NfeHNrX3R4X21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MTk1LVxcdGlnY19ldGh0b29sX3NldF9vcHMobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM9NzQ5PXN0YXRpYyB2b2lkIGlnY19wdHBfdHhfcmVnX3RvX3N0YW1wKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmMtNzg3LVxcdFxcdFxcdHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShcXHUwMDI2dHN0YW1wLVxcdTAwM2V4c2tfbWV0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jOjc4ODpcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmMtNzg5LVxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2hod3RzdGFtcHMuaHd0c3RhbXApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaD0xNT1zdHJ1Y3QgeGRwX2ZyYW1lX2J1bGs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaC0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oOjE3OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBsaWJldGhfeHNrdG1vX3Nsb3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaC0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYz0zOTA9dm9pZCBfX2xpYmV0aF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtMzkyLVxcdFxcdFxcdCAgICAgICB1MzIgemNfc2VncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM6MzkzOlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYy0zOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTQwNi1cXHRkZXYtXFx1MDAzZXhkcF96Y19tYXhfc2VncyA9IHpjX3NlZ3MgPyA6IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjQwNzpcXHRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSB6Y19zZWdzID8gdG1vIDogTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtNDA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz0xND12b2lkIF9fY29sZCBsaWJldGhfeHNrX3R4X3JldHVybl9idWxrKGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lICpicSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6MjM6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yNC1cXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cXHRcXHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9MzA0PXN0YXRpYyB2b2lkIG1seDVlX3hza19yZXF1ZXN0X2NoZWNrc3VtKHUxNiBjc3VtX3N0YXJ0LCB1MTYgY3N1bV9vZmZzZXQsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzozMTI6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzEzLVxcdC50bW9fZmlsbF90aW1lc3RhbXBcXHRcXHQ9IG1seDVlX3hza19maWxsX3RpbWVzdGFtcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTg9bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTUwOC1cXHRcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cXHUwMDNleHNrX3Bvb2wsIG1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjUwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNTEwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzZXNzaW9uLVxcdTAwM2V3cWUtXFx1MDAzZWV0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTYtXFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3Qoc3EtXFx1MDAzZXhza19wb29sLCBtZXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo2NTc6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIGVzZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NjY1PXN0YXRpYyB2b2lkIG1seDVlX2ZyZWVfeGRwc3FfZGVzYyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTc0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NzQzOlxcdFxcdFxcdFxcdHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShjb21wbCwgXFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIFxcdTAwMjZwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNzQ0LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD0xMTE9ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzIG1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjExMjpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01ODI5PXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX25pY19uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTg0MC1cXHRuZXRkZXYtXFx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcXHUwMDI2bWx4NWVfeGRwX21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU4NDE6XFx0bmV0ZGV2LVxcdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gXFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODQyLVxcdG5ldGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2NjU9c3RhdGljIHZvaWQgc3RtbWFjX3hza19yZXF1ZXN0X2xhdW5jaF90aW1lKHU2NCBsYXVuY2hfdGltZSwgdm9pZCAqX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNjc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzYtXFx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFxcdFxcdD0gc3RtbWFjX3hza19yZXF1ZXN0X3RpbWVzdGFtcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY4MT1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NDktXFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QocG9vbCwgXFx1MDAyNm1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNzUwOlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcywgXFx1MDAyNm1ldGFfcmVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NTEtXFx0XFx0aWYgKHNldF9pYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yODExPXN0YXRpYyBpbnQgc3RtbWFjX3R4X2NsZWFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IGJ1ZGdldCwgdTMyIHF1ZXVlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODc3LVxcdFxcdFxcdFxcdHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShcXHUwMDI2dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ueHNrX21ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyODc4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c3RtbWFjX3hza190eF9tZXRhZGF0YV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODc5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2dHhfY29tcGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg0PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkwMS1cXHRuZGV2LVxcdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXFx1MDAyNnN0bW1hY194ZHBfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzkwMjpcXHRuZGV2LVxcdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gXFx1MDAyNnN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkwMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTgxMj1lbnVtIG5ldGRldl9yZWdfc3RhdGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xODkxLSAqXFx0QHhkcF9tZXRhZGF0YV9vcHM6XFx0SW5jbHVkZXMgcG9pbnRlcnMgdG8gWERQIG1ldGFkYXRhIGNhbGxiYWNrcy5cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE4OTI6ICpcXHRAeHNrX3R4X21ldGFkYXRhX29wczpcXHRJbmNsdWRlcyBwb2ludGVycyB0byBBRl9YRFAgVFggbWV0YWRhdGEgY2FsbGJhY2tzLlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTg5My0gKlxcdEBldGh0b29sX29wczpcXHRNYW5hZ2VtZW50IG9wZXJhdGlvbnNcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjE1Mj1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNjItXFx0Y29uc3Qgc3RydWN0IHhkcF9tZXRhZGF0YV9vcHMgKnhkcF9tZXRhZGF0YV9vcHM7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMjYzOlxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp4c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjI2NC1cXHR1bnNpZ25lZCBzaG9ydFxcdFxcdGdmbGFncztcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaD0xODIxPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjMtXFx0XFx0XFx0ICAgICAgIHUzMiB6Y19zZWdzLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODI0OlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgyNS12b2lkIGxpYmV0aF94ZHBfc2V0X3JlZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNjc9c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94c2t0bW9fcmVxX2NzdW0odTE2IGNzdW1fc3RhcnQsIHUxNiBjc3VtX29mZnNldCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzMtLyogT25seSB0byBpbmxpbmUgdGhlIGNhbGxiYWNrcyBiZWxvdywgdXNlIEBsaWJldGhfeHNrdG1vIGluIGRyaXZlcnMgaW5zdGVhZCAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTc1LVxcdC50bW9fcmVxdWVzdF9jaGVja3N1bVxcdD0gbGliZXRoX3hza3Rtb19yZXFfY3N1bSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTQte1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTU6XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyA9IGxpYmV0aF94ZHBfcHJpdl90b19wdHIocHJpdik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Ni1cXHRzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjIGRlc2M7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9Mjg1PWxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg2OlxcdFxcdFxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8sXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI4Ny1cXHRcXHRcXHR1MzIgKCpwcmVwKSh2b2lkICp4ZHBzcSwgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EpLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD00OD1zdHJ1Y3QgeGRwX3NvY2sge1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMTYtICovXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMTc6c3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMge1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE4LVxcdHZvaWRcXHQoKnRtb19yZXF1ZXN0X3RpbWVzdGFtcCkodm9pZCAqcHJpdik7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE0MT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE1Ny0gKiAgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlIC0gRXZhbHVhdGUgQUZfWERQIFRYIG1ldGFkYXRhIGF0IGNvbXBsZXRpb25cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE1ODogKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNTktICogIEBjb21wbDogcG9pbnRlciB0byBjb21wbGV0aW9uIG1ldGFkYXRhIHByb2R1Y2VkIGZyb20geHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjA6ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE2MS0gKiAgQHByaXY6IHBvaW50ZXIgdG8gZHJpdmVyLXByaXZhdGUgYXJlYWRcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTY2PXN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjc6XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNjgtXFx0XFx0XFx0XFx0XFx0ICAgIHZvaWQgKnByaXYpXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTIwNT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MjA2OlxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMjA3LVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjY0PXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjc2LSAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjc3OiAqICBhbmQgY2FsbCBhcHByb3ByaWF0ZSB4c2tfdHhfbWV0YWRhdGFfb3BzIG9wZXJhdGlvbi5cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzgtICogIEBwb29sOiBwb2ludGVyIHRvIEFGX1hEUCBidWZmZXIgcG9vbCwgdXNlZCB0byB2YWxpZGF0ZSB0aGUgbWV0YWRhdGFcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzktICogIEBwbWV0YTogcG9pbnRlciB0byBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjgwOiAqICBAb3BzOiBwb2ludGVyIHRvIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yODc9eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjg4LVxcdFxcdFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODk6XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcywgdm9pZCAqcHJpdilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTAte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTI5PXhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzMC1cXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTMxOlxcdFxcdFxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsIHZvaWQgKnByaXYpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTMyLXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9NTE9WERQX01FVEFEQVRBX0tGVU5DX3h4eFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy01My1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU0OlxcdGlmIChuZXRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMpIHtcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU1OlxcdFxcdGlmIChuZXRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXFx1MDAzZXRtb19maWxsX3RpbWVzdGFtcClcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTU2LVxcdFxcdFxcdHhza19mZWF0dXJlcyB8PSBORVRERVZfWFNLX0ZMQUdTX1RYX1RJTUVTVEFNUDtcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU3OlxcdFxcdGlmIChuZXRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXFx1MDAzZXRtb19yZXF1ZXN0X2NoZWNrc3VtKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtNTgtXFx0XFx0XFx0eHNrX2ZlYXR1cmVzIHw9IE5FVERFVl9YU0tfRkxBR1NfVFhfQ0hFQ0tTVU07XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzo1OTpcXHRcXHRpZiAobmV0ZGV2LVxcdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzLVxcdTAwM2V0bW9fcmVxdWVzdF9sYXVuY2hfdGltZSlcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTYwLVxcdFxcdFxcdHhza19mZWF0dXJlcyB8PSBORVRERVZfWFNLX0ZMQUdTX1RYX0xBVU5DSF9USU1FX0ZJRk87XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjQzLjk1NjgzMTg5N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzU0MTg4MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQUZfWERQIFRYIE1ldGFkYXRhIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGB4c2tfdHhfbWV0YWRhdGFfb3BzYCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIG9ubHkgaW1wbGVtZW50ZWQgaW4gYSBmZXcgZHJpdmVyczogYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGFuZCBgaWRwZmAuIFRoYXQgc2VlbXMgYSBsaXR0bGUgbGltaXRlZC4gTm93LCB3YWl0IGEgbWludXRlLi4uIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBpdCBpbiBgdmV0aGAuIEhtbSwgYHZldGhgIGlzIGEgdmlydHVhbCBpbnRlcmZhY2UsIHNvIGhvdyBkb2VzIGl0IGhhbmRsZSBtZXRhZGF0YSBpbiB0aGUgVFggcGF0aD8gRG9lcyBpdCByZWx5IG9uIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIHBlcmhhcHMgYHhwX3Jhd19nZXRfY3R4YCBpbnN0ZWFkP1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGB2ZXRoYCBqdXN0IHRvIGJlIHN1cmUuIEkgKnRob3VnaHQqIEkgZ3JlcHBlZCBmb3IgYm90aCBmdW5jdGlvbnMsIGB4cF9yYXdfZ2V0X2N0eGAgYW5kIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIGJ1dCBubyBkaWNlLiBJJ2xsIGV4dGVuZCB0aGUgc2VhcmNoLCBqdXN0IGluIGNhc2UsIGFuZCBleHBhbmQgaXQgdG8gdGhlIGBuZXQveGRwL2AgYW5kIGBuZXQvY29yZS9gIGRpcmVjdG9yaWVzLCBsb29raW5nIGZvciBgeHBfcmF3X2dldF9jdHhgLiBJcyB0aGVyZSBzb21lIGNsZXZlciB2aXJ0dWFsIGRyaXZlciwgcGVyaGFwcyBvbmUgc3VwcG9ydGluZyBBRl9YRFAgemVybyBjb3B5LCB0aGF0IG1pZ2h0IGJlIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucyBpbiBhIG5vbi1vYnZpb3VzIHdheT9cblxuT2theSwgc2luY2UgaXQncyBhIHZpcnR1YWwgaW50ZXJmYWNlLCBwZXJoYXBzIEkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIGB4c2tfYnVmZl9wb29sYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIHRvIHNlZSBob3cgaXQncyBtYW5hZ2luZyBidWZmZXIgcG9vbHMuIFRoaXMgbGluZSBvZiBpbnF1aXJ5IHNob3VsZCB0ZWxsIHRoZSB0YWxlIG9mIGhvdyBpdCBkb2VzIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6NDkuMzExMDIzMTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjM5ODc2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjQ5LjQ3MzQzMjkyNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA2MzI2NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQUZfWERQIGFuZCBaZXJvLUNvcHkgU3VwcG9ydCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYHZldGhgIGludGVyZmFjZSB1dGlsaXplZCB0aGUgYHhza19idWZmX3Bvb2xgIGZvciBBRl9YRFAgemVyby1jb3B5IG9wZXJhdGlvbnMsIGJ1dCBub3cgSSdtIGRvdWJ0aW5nIHRoYXQgYXNzdW1wdGlvbi4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IEFGX1hEUCdzIHplcm8tY29weSBmdW5jdGlvbmFsaXR5IGlzbid0IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhY3Jvc3MgYWxsIG5ldHdvcmsgZHJpdmVyczsgaXQncyBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlIGFuZCwgdGhlcmVmb3JlLCB0aGUgY29ycmVzcG9uZGluZyBrZXJuZWwgZHJpdmVycy4gU28sIEkgbmVlZCB0byBwaW5wb2ludCB3aGljaCBkcml2ZXJzIGFjdHVhbGx5ICpkbyogc3VwcG9ydCBBRl9YRFAncyB6ZXJvLWNvcHkuIExldCdzIGdldCBhIGxpc3QgYW5kIHZlcmlmeSB0aGUgY29tcGF0aWJpbGl0eSBtYXRyaXguIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGltcGxlbWVudCBhbnl0aGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNjksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozODo1My4wNzk3NjI0MTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjIwNDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9wb29sXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkxOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD04MD1zdHJ1Y3QgdHNuZXBfdHgge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cXHRpbnQgaW5jcmVtZW50X293bmVyX2NvdW50ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDo5MzpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMC1cXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MTMxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cXHRzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHBfYmF0Y2g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyMzI6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD0yNjA9dTMyIHRzbmVwX2dldF9pcnFfY29hbGVzY2Uoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyNjE6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjA3ND1zdGF0aWMgaW50IHRzbmVwX25ldGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwOTY6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9MjE9c3RhdGljIGludCB0c25lcF94ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XFx0XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9NTg9c3RhdGljIGludCB0c25lcF94ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtNTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTYxLVxcdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz04MD1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTUwNi1cXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmg6NTA3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVxcdHN0cnVjdCBkcGFhMl9ldGhfYnAgKmJwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo4NDc6aW50IGRwYWEyX3hza19zZXR1cF9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtODQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTE3Mz1zdGF0aWMgaW50IGRwYWEyX3hza19kaXNhYmxlX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKGRldiwgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc2LVxcdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MjIwPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2VuYWJsZV9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcXHRcXHRcXHRcXHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTIyMi1cXHRcXHRcXHRcXHQgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0zMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU0NC1cXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTQ1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oPTU2MT1zdHJ1Y3QgZmVjX2VuZXRfcHJpdl9yeF9xIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NjMtXFx0dW5pb24gZmVjX3J4X2J1ZmZlciByeF9idWZbUlhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTQ4Mj1zdGF0aWMgYm9vbCBmZWNfZW5ldF94c2tfeG1pdChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE0ODM6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cXHRcXHRcXHQgICAgICB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNTY1PXN0YXRpYyBpbnQgZmVjX2VuZXRfdHhfcXVldWUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTE3MTktXFx0aWYgKHR4cS1cXHUwMDNleHNrX3Bvb2wpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNzIwOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0xNzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDQyMD1mZWNfYWxsb2NfbmV3X3J4cV94c2soc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCwgaW50IHF1ZXVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQ0MjE6XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDQyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTIyPXN0YXRpYyBpbnQgZmVjX3hza19yZXN0YXJ0X25hcGkoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTIzOlxcdFxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1MjQtXFx0XFx0XFx0XFx0dTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU2MT1zdGF0aWMgaW50IGZlY19lbmFibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTYyOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVxcdFxcdFxcdCAgICAgICB1MTYgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTkyPXN0YXRpYyBpbnQgZmVjX2Rpc2FibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTUtXFx0c3RydWN0IGZlY19lbmV0X3ByaXZfdHhfcSAqdHhxID0gZmVwLVxcdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU5NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqb2xkX3Bvb2wgPSB0eHEtXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTctXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ2MTg9c3RhdGljIGludCBmZWNfc2V0dXBfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NjE5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXFx0XFx0XFx0ICAgICAgdTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaD0yNDI9c3RydWN0IGd2ZV9yeF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQzLVxcdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDUtXFx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9NDczPXN0cnVjdCBndmVfdHhfcmluZyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY1OS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3RhdHNzOyAvKiBzeW5jIHN0YXRzIGZvciAzMmJpdCBhcmNocyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY2MS1cXHR1NjQgeGRwX3hza19zZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyMjc9c3RhdGljIGludCBndmVfcmVnX3hza19wb29sKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VyeF9jZmcubnVtX3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjEyODY6XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE2MzA6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjMxLVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Nzk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpX3R4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxNjg1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjg2LVxcdGludCB0eF9xaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYz0xMDg0PXN0YXRpYyBib29sIGd2ZV94c2tfdHhfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV90eF9yaW5nICp0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jOjEwODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB0eC1cXHUwMDNleHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmMtMTA4OC1cXHRzdHJ1Y3QgeGRwX2Rlc2MgZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MzQwMj1zdGF0aWMgdm9pZCBpNDBlX2NvbmZpZ194cHNfdHhfcmluZyhzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjM0MjQ6c3RhdGljIHN0cnVjdCB4c2tfYnVmZl9wb29sICppNDBlX3hza19wb29sKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg9MzI3PXN0cnVjdCBpNDBlX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg6NDAyOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oLTQwMy19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6ODM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVxcdFxcdFxcdFxcdHUxNiBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE0MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjE0MTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtMTQyLVxcdGJvb2wgaWZfcnVubmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxODM6aW50IGk0MGVfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXFx0XFx0XFx0dTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz02MzA9Ym9vbCBpNDBlX2NsZWFuX3hkcF90eF9pcnEoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjYzMjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNjMzLVxcdHUzMiBpLCBjb21wbGV0ZWRfZnJhbWVzLCB4c2tfZnJhbWVzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz03NDY9dm9pZCBpNDBlX3hza19jbGVhbl90eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVxcdHUxNiBudGMgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuLCBudHUgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NzQ5OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpicCA9IHR4X3JpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy03NTAtXFx0c3RydWN0IGk0MGVfdHhfYnVmZmVyICp0eF9iaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0xOT1zdHJ1Y3QgbmV0X2RldmljZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmg6MjA6c3RydWN0IHhza19idWZmX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTIzPWludCBpNDBlX3F1ZXVlX3BhaXJfZW5hYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgcXVldWVfcGFpcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmgtMjUtXFx0XFx0XFx0dTE2IHFpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5My0gKiBhdHRhY2hlZCBhbmQgY29uZmlndXJlZCBhcyB6ZXJvLWNvcHksIE5VTEwgb3RoZXJ3aXNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHR1MTYgcWlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaDo3OTg6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4MC1cXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNldHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMjgxOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRSh0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cXHRcXHRib29sIHdkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMC1cXHRpY2VfZm9yX2VhY2hfcnhfcmluZyhyeF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMzExOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMi1cXHRcXHRpbnQgY2xlYW5lZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzA0LVxcdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzA1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaD0zNDk9c3RydWN0IGljZV90eF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozNjU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTEyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxMjY6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xMjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE0ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxNDU6aWNlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE3ND1pY2VfcmVhbGxvY19yeF94ZHBfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIGJvb2wgcG9vbF9wcmVzZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xOTYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxOTc6aW50IGljZV94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI1OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNjEtXFx0XFx0XFx0ICAgICB1bmlvbiBpY2VfMzJiX3J4X2ZsZXhfZGVzYyAqcnhfZGVzYywgdTE2IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoyOTM6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0zNDI9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNjM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NDMyPXN0YXRpYyBpbnQgaWNlX3htaXRfeGRwX3R4X3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0MzQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDczLVxcdFxcdHR4X2Rlc2MtXFx1MDAzZWNtZF90eXBlX29mZnNldF9ic3ogPSBpY2VfYnVpbGRfY3RvYigwLCAwLCBzaXplLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQ3NDpcXHRcXHQvKiBhY2NvdW50IGZvciBlYWNoIHhkcF9idWZmIGZyb20geHNrX2J1ZmZfcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDc1LVxcdFxcdHhkcF9yaW5nLVxcdTAwM2V4ZHBfdHhfYWN0aXZlKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTUxNT1pY2VfcnVuX3hkcF96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVxcdCAgICAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTE3OlxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTY4OlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTU2OS1cXHRcXHRcXHRpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MDk9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0KHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MTA6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgc3RydWN0IHhkcF9kZXNjICpkZXNjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MzQ9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0X2JhdGNoKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTczNi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc3MDpcXHRcXHRcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXFx0XFx0XFx0XFx0c3RydWN0IHhkcF9kZXNjICpkZXNjcywgdTMyIG5iX3BrdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc5MTpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTEwPXN0cnVjdCBpY2VfdnNpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoxMzppbnQgaWNlX3hza19wb29sX3NldHVwKHN0cnVjdCBpY2VfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTQtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTU9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTctXFx0XFx0XFx0aW50IGJ1ZGdldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjA6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yMS1ib29sIGljZV94c2tfYW55X3J4X3JpbmdfZW5hKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0yMz12b2lkIGljZV94c2tfY2xlYW5feGRwX3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyNDpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTM0PXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgX19hbHdheXNfdW51c2VkICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo0MjpcXHRcXHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC00My1cXHRcXHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NDk9aWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgX19hbHdheXNfdW51c2VkICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XFx0XFx0ICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cXHRcXHQgICAgaW50IF9fYWx3YXlzX3VudXNlZCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTU3PWljZV9hbGxvY19yeF9idWZzX3pjKHN0cnVjdCBpY2VfcnhfcmluZyBfX2Fsd2F5c191bnVzZWQgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo1ODpcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01OS1cXHRcXHQgICAgIHUxNiBfX2Fsd2F5c191bnVzZWQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2My1cXHRcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4c2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjUtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NjQzPXN0cnVjdCBpZHBmX3R4X3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjU5LVxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjY2MDpcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTY2MS1cXHR9O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaD03MjA9bGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHN0cnVjdCBpZHBmX3R4X3F1ZXVlLCA2NCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcXHUwMDI2eGRwX2J1ZmYgZm9yIFhTayBSeCBidWZmZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3MzQ6ICogQHBvb2w6IFxcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTczNS0gKiBAaGRyX2J1ZjogXFx1MDAyNmxpYmV0aF9mcWUgZm9yIGhlYWRlciBidWZmZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTc1NT1zdHJ1Y3QgaWRwZl9idWZfcXVldWUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXFx0XFx0XFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3NjU6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjYtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MjY9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfYnVmcShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVxcdGNvbnN0IHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMgPSBcXHUwMDI2dnBvcnQtXFx1MDAzZWRmbHRfcXZfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXFx0dTMyIHFpZCA9IFUzMl9NQVg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTgtXFx0dTMyIHFpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9Nzk9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfY29tcGxxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6ODI6XFx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04My1cXHR1MzIgcWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz01NTQ9aW50IGlkcGZfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IGJwZi1cXHUwMDNleHNrLnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXFx0dTMyIHFpZCA9IGJwZi1cXHUwMDNleHNrLnF1ZXVlX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTMxOT1zdHJ1Y3QgaWdiX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjM2NTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2Ni19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU5PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODYyOnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODY0PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NjU6XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjYtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04Njc9Ym9vbCBpZ2JfYWxsb2NfcnhfYnVmZmVyc196YyhzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2ODpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY5LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODcwPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NzE6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCBjb25zdCBpbnQgYnVkZ2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODcyOmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NzMtaW50IGlnYl94c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxaWQsIHUzMiBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODI4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODQtXFx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04MzI3PXN0YXRpYyBib29sIGlnYl9jbGVhbl90eF9pcnEoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIGludCBuYXBpX2J1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgzMzUtXFx0c3RydWN0IGlnYl90eF9idWZmZXIgKnR4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04MzM3LVxcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTU3PXN0YXRpYyB2b2lkIGlnYl90eHJ4X3JpbmdfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo4MzpzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqaWdiX3hza19wb29sKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXFx0aW50IHFpZCA9IHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9OTc9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjk4OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0xMzk9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTQxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVxcdHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTY5OlxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3MC1cXHRcXHQgICAgICAgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3Ny1cXHRcXHRcXHQgICAgIHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjIwMTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9Mjk0PXN0YXRpYyBpbnQgaWdiX3J1bl94ZHBfemMoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoyOTU6XFx0XFx0XFx0ICBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVxcdFxcdFxcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MzQxPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjQ2NTpib29sIGlnYl94bWl0X3pjKHN0cnVjdCBpZ2JfcmluZyAqdHhfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0xNDg9c3RydWN0IGlnY19yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDQtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoyMDU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDYtfSBfX19fY2FjaGVsaW5lX2ludGVybm9kZWFsaWduZWRfaW5fc21wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNi1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM0PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAzNjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IHJpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwMzctXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbnEgPSB0eHJpbmdfdHhxKHJpbmcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYz03NDk9c3RhdGljIHZvaWQgaWdjX3B0cF90eF9yZWdfdG9fc3RhbXAoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXFx0aWYgKHRzdGFtcC1cXHUwMDNlYnVmZmVyX3R5cGUgPT0gSUdDX1RYX0JVRkZFUl9UWVBFX1hTSykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmM9NTY9c3RhdGljIGludCBpZ2NfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTIwLVxcdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxMjE6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxNTk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTYwLVxcdFxcdCAgICAgICB1MTYgcXVldWVfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuaC04LVxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oOjk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmgtMTAtXFx0XFx0ICAgICAgIHUxNiBxdWV1ZV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjUzLjIzNTk3MjA2NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc2NjYwNDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgWFNLIEJ1ZmZlciBQb29sIFVzYWdlIGluIFZpcnR1YWwgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIGB4c2tfYnVmZl9wb29sYCBpcyBhIHByZXR0eSB1YmlxdWl0b3VzIHRoaW5nLCBpc24ndCBpdD8gU2hvd3MgdXAgYWxsIG92ZXIgdGhlIHBsYWNlIGluIGRyaXZlcnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRoZXNlIGRyaXZlcnMgdGhhdCB1c2UgaXQgYXJlIGFjdHVhbGx5IHZpcnR1YWwgb25lcy4gTGV0J3Mgc2VlLi4uIEkndmUgZ290IGB0c25lcGAsIHdoaWNoIGlzIHRoYXQgVGltZSBTZW5zaXRpdmUgTmV0d29ya2luZyBFbmRwb2ludCBGUEdBIHRoaW5nLi4uIG5vcGUuIGBkcGFhMmAsIEZyZWVzY2FsZSdzIERhdGEgUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIC0gbmFoLCBub3QgdmlydHVhbC4gT2theSwgYGZlY2AsIHRoZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgZnJvbSBGcmVlc2NhbGUgLSBzdGlsbCBubyBkaWNlLiBBaCwgaG9sZCBvbi4uLiB0aGVyZSdzIGBndmVgLCBHb29nbGUgVmlydHVhbCBFdGhlcm5ldC4gWWVzISAqVGhhdCdzKiBhIHZpcnR1YWwgZHJpdmVyLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQuIExldCdzIGZpbmQgb3V0IGlmIGBndmVgIGlzIGxldmVyYWdpbmcgZWl0aGVyIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIHRoZSBvbGQgYHhwX3Jhd19nZXRfY3R4YC4gVGhhdCdsbCB0ZWxsIHVzIHNvbWV0aGluZyBhYm91dCBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzU2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjU3LjgxMjYzNjM2OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5MzcyMjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWZmX2dldF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6NTcuODU2NTc5NTM3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzk4NzkyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgeHBfcmF3X2dldF9jdHhgIHdpdGhpbiBgZ3ZlYCoqXG5cbk9rYXksIHNvIHRoZSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYHhwX3Jhd19nZXRfY3R4YCDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgYGd2ZWAgY29udGV4dC4gVGhpcyBsaWtlbHkgbWVhbnMgSSdtIGxvb2tpbmcgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIGdyYXBoaWNzIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LCBvciBwb3RlbnRpYWxseSBzb21lIGNvcmUgcmVuZGVyaW5nIG9yIGNvbnRleHQgbWFuYWdlbWVudCBwaWVjZS4gTXkgZmlyc3Qgc3RlcCBpcyBwcm9iYWJseSB0byBwdWxsIHVwIHRoZSBjb2RlIGZvciB0aGF0IGZ1bmN0aW9uIGFuZCBxdWlja2x5IHJldmlldyBpdHMgcHVycG9zZS4gSSdsbCBiZSBsb29raW5nIGZvciB3aGF0IGRhdGEgaXQgcmVjZWl2ZXMgYW5kIHJldHVybnMuIFdoYXQgYXJlIHRoZSBrZXkgb3BlcmF0aW9ucyBpdCBwZXJmb3Jtcz8gSXMgaXQgaW52b2x2ZWQgaW4gY3JlYXRpbmcsIHJldHJpZXZpbmcsIG9yIG1hbmFnaW5nIGFueSBjcml0aWNhbCBoYW5kbGVzIG9yIG9iamVjdHMgcmVsYXRlZCB0byBncmFwaGljcyByZXNvdXJjZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBvZiBjb25jZXJuIGxpa2UgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcz8gSSB3aWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgZnVuY3Rpb24gcG90ZW50aWFsbHkgaW5mbHVlbmNlcyB0aGUgcGVyZm9ybWFuY2UsIHN0YWJpbGl0eSBhbmQgZ2VuZXJhbCBiZWhhdmlvdXIgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MTQyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MDEuMTM2NDYxNDYxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk3MDk1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBfcmF3X2dldF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjAxLjE4MTQ0MDE0OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTUzNTQyMzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgZnJvbSB0aGUgaW5pdGlhbCBwcm9tcHQ6XG5cbioqQW5hbHl6aW5nIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAgaW4gYGd2ZWAqKlxuXG5BbHJpZ2h0LCBteSBicmFpbiBqdXN0IGtpY2tlZCBpbnRvIGdlYXIuIFRoZSBpbml0aWFsIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgZGlyZWN0aW5nIG1lIHRvIGV4YW1pbmUgdGhlIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAgY29tcG9uZW50IHdpdGhpbiB0aGUgYGd2ZWAgY29udGV4dC4gVGhpcyBsaWtlbHkgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGFzcGVjdHMgb2YgdGhlIEdlbmVyaWMgVmlydHVhbCBFdGhlcm5ldCAoR1ZFKSBkcml2ZXIgYW5kLCBtb3JlIHNwZWNpZmljYWxseSwgaG93IGl0IGhhbmRsZXMgdGhlIHRyYW5zbWlzc2lvbiAoVFgpIHNpZGUgb2YgdGhpbmdzIGluIHRoZSBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSB3b3JsZCwgd2l0aCBtZXRhZGF0YSByZXF1ZXN0cy4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgcmVxdWVzdCBwZXJ0YWlucyB0byBzcGVjaWZpYyBkZXRhaWxzIG9yIHN1cHBsZW1lbnRhcnkgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgcGFja2V0cyBiZWluZyBzZW50IHRocm91Z2ggdGhlIFhEUCBzb2NrZXQuIFBlcmhhcHMgaXQncyBkZWFsaW5nIHdpdGggVkxBTiB0YWdnaW5nLCBxdWV1ZSBhc3NpZ25tZW50LCBjaGVja3N1bSBvZmZsb2FkIGRpcmVjdGl2ZXMsIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcz8gTXkgZmlyc3Qgc3RlcCB3aWxsIGJlIHRvIGNvbmZpcm0gdGhlc2Ugc3VzcGljaW9ucyBieSBjaGVja2luZyB0aGUgY29kZWJhc2UgYW5kIGZpbmRpbmcgb3V0IGV4YWN0bHkgd2hhdCB0eXBlIG9mIFwibWV0YWRhdGFcIiB0aGUgcmVxdWVzdCBlbmNvbXBhc3Nlcy4gSSB3aWxsIHBheSBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCB0aGUgZnVuY3Rpb25zIHRoYXQgY29uc3VtZSB0aGUgcmVxdWVzdCwgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgVFggcGF0aC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgdGVsbHMgdXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDE2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MDUuMTM0OTg0NDIyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTEzNjQxNjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza190eF9tZXRhZGF0YV9yZXF1ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOTowNS4zODYzNTU2NDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MDQ3MDEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqTmV0d29yayBEcml2ZXIgRGVlcCBEaXZlOiBFeGFtaW5pbmcgYHZpcnRpb19uZXRgIGFuZCBYRFAqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGB2aXJ0aW9fbmV0YCByaWdodCBub3cuIEEga2V5IHF1ZXN0aW9uIGlzIGltbWVkaWF0ZWx5IGNvbWluZyB0byBtaW5kOiBkb2VzIHRoaXMgcGFydGljdWxhciBkcml2ZXIgb2ZmZXIgc3VwcG9ydCBmb3IgQUZfWERQIGFuZCBpdHMgemVyby1jb3B5IGNhcGFiaWxpdGllcz8gVGhhdCdzIGEgY3JpdGljYWwgZGV0YWlsIGZvciBwZXJmb3JtYW5jZSBpbiBoaWdoLXRocm91Z2hwdXQgbmV0d29yayBlbnZpcm9ubWVudHMsIHNvIGl0J3MgdGhlIGZpcnN0IHRoaW5nIEknZCB3YW50IHRvIHZlcmlmeS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgaXQgZGlkISBJZiBub3QsIHdoYXQgd291bGQgaXQgdGFrZSB0byBpbXBsZW1lbnQ/IExldCBtZSBkaWcgYSBsaXR0bGUgZnVydGhlci4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjA4LjM3NjgyNzQ4NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyMzg5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI5NT1zdHJ1Y3Qgc2VuZF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzEzLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozMTQ6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MzIwPXN0cnVjdCByZWNlaXZlX3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNjctXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM2ODpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xMzIyPXN0YXRpYyBpbnQgdmlydG5ldF9hZGRfcmVjdmJ1Zl94c2soc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MTMyMzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xMzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xMzg0PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9vbmUoc3RydWN0IHNlbmRfcXVldWUgKnNxLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoxMzg1OlxcdFxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xMzg2LVxcdFxcdFxcdFxcdHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xNDA1PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9iYXRjaChzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EsXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjE0MDY6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQwNy1cXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBidWRnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQzNi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MTQzNzpzdGF0aWMgYm9vbCB2aXJ0bmV0X3hza194bWl0KHN0cnVjdCBzZW5kX3F1ZXVlICpzcSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTE0MzgtXFx0XFx0XFx0ICAgICBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4MjA9c3RhdGljIGludCB2aXJ0bmV0X3JxX2JpbmRfeHNrX3Bvb2woc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTgyMTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4NjE9c3RhdGljIGludCB2aXJ0bmV0X3NxX2JpbmRfeHNrX3Bvb2woc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4NjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzZW5kX3F1ZXVlICpzcSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTg2MzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4ODU9c3RhdGljIGludCB2aXJ0bmV0X3hza19wb29sX2VuYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo1ODg2OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01ODg3LVxcdFxcdFxcdFxcdCAgIHUxNiBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTk2OT1zdGF0aWMgaW50IHZpcnRuZXRfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU5NzEtXFx0c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo1OTcyOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01OTczLVxcdHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MDguNDI0MDc0OTA1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODA3MTU2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlZpcnRpby1uZXQgXHUwMDI2IFhEUDogRGVsdmluZyBpbnRvIFplcm8tQ29weSBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsICp2aXJ0aW9fbmV0KiBub3cgc3VwcG9ydGluZyBBRl9YRFAgemVyby1jb3B5IGlzIGdyZWF0IG5ld3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgcHJlY2lzZWx5IHRoZXkndmUgaW1wbGVtZW50ZWQgaXQuIEFyZSB0aGV5IGxlYW5pbmcgdG93YXJkcyB1c2luZyB0aGUgKnhza190eF9tZXRhZGF0YV9yZXF1ZXN0KiBvciB0aGUgKnhza19idWZmX2dldF9tZXRhZGF0YSogZnVuY3Rpb24/IFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzLiBVbmRlcnN0YW5kaW5nIHRoZSBjaG9pY2UgaGVyZSBnaXZlcyBtZSBhIGRlZXBlciBzZW5zZSBvZiB0aGUgYXBwcm9hY2gsIHRoZSB0cmFkZS1vZmZzIHRoZXkgbWFkZSwgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlLiBJcyB0aGlzIGEgbW9yZSBlZmZpY2llbnQgcHVsbC1iYXNlZCBhcHByb2FjaCwgb3IgZGlkIHRoZXkgZ28gd2l0aCBzb21ldGhpbmcgZWxzZT8gV2UgY2FuIGxlYXJuIGEgbG90IGZyb20gdGhpcyBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTI1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MTEuODA0ODA0MTk1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg1NjI2OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX3JlcXVlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOToxMS44NDg2Njg5NzRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MzQ1MTQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBEYXRhIFJldHJpZXZhbCBQb2ludHMgaW4gdmlydGlvX25ldC5jKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gdHJhY2Ugd2hlcmUgd2UncmUgZ2V0dGluZyBvdXIgZGF0YSBmcm9tIGluIHRoZSBgdmlydGlvX25ldC5jYCBtb2R1bGUuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBsb29rIGF0IGhvdyB0aGUgY29udGV4dCBvciBtZXRhZGF0YSBmb3IgdGhlIFhTSyAoZVhwcmVzcyBEYXRhIFBhdGggU29ja2V0IEtlcm5lbCkgYnVmZmVycyBhcmUgaGFuZGxlZC4gV2UncmUgb2J2aW91c2x5IGNvbmNlcm5lZCBhYm91dCBkYXRhIHJldHJpZXZhbCwgYW5kIHNpbmNlIHdlJ3JlIHVzaW5nIFhTSywgdGhlIGZ1bmN0aW9ucyB0byBleGFtaW5lIGFyZSBsaWtlbHkgYHhwX3Jhd19nZXRfY3R4YCBvciBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHJlbGV2YW50IGRhdGEgaXMgYmVpbmcgYWNjZXNzZWQgYW5kIHByZXBhcmVkIGZvciBwcm9jZXNzaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbnRleHQgaXMgYmVpbmcgcmV0cmlldmVkIG9yIGhvdyB0aGUgYnVmZmVyIG1ldGFkYXRhIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE4NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjE1LjUxMjEyMjYzNVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3NzAzMzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWZmX2dldF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjE1LjU1ODkwMDY4M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ4MjE5MDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHZpcnRpb19uZXQuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgcHJvYmxlbSBsaWtlbHkgbGllcyBpbiB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgWGVuIHBsYXRmb3JtLiBUaGUgZnVuY3Rpb24gYHhwX3Jhd19nZXRfY3R4YCBpcyB0aGUgc3BlY2lmaWMgcGllY2UgSSBuZWVkIHRvIGxvb2sgYXQgaW4gYHZpcnRpb19uZXQuY2AuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgY29udGV4dCBkYXRhIGlzIGJlaW5nIHJldHJpZXZlZCBvciBoYW5kbGVkLCBhbmQgdGhhdCdzIHdoZXJlIHRoZSBmYWlsdXJlIGlzIG9jY3VycmluZy4gTGV0J3Mgc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgdmlydGlvX25ldCBjb250ZXh0LiBJIGV4cGVjdCB0aGlzIHRvIGJlIGEgY3J1Y2lhbCBkYXRhIHJldHJpZXZhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQ2NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjE4LjUwNzEyMjUyN1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNjE0MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhwX3Jhd19nZXRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MTguNTUyNDkwNDU1WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjc1NzM0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgQUZfWERQIFRYIE1ldGFkYXRhIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBgdmlydGlvX25ldGAgZHJpdmVyIGlzIGFwcGFyZW50bHkgbm90IHBsYXlpbmcgYmFsbCB3aXRoIEFGX1hEUCBUWCBtZXRhZGF0YS4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZSBpbiBteSBjdXJyZW50IHByb2plY3QsIGFzIEkgd2FzIGhvcGluZyB0byBsZXZlcmFnZSB0aGF0IGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gcGl2b3QuIE9rYXksIHdoYXQgYWJvdXQgdGhlIGBuZXRkZXZzaW1gIGRyaXZlcj8gSXQncyBvZnRlbiBhIHVzZWZ1bCB0ZXN0aW5nIGdyb3VuZC4gRG9lcyAqaXQqIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IGZvciBBRl9YRFA/IFNwZWNpZmljYWxseSwgZG9lcyBpdCBoYW5kbGUgdGhhdCBjcnVjaWFsIG1ldGFkYXRhIGR1cmluZyB0cmFuc21pc3Npb24/IEkgbmVlZCB0byBjaGVjayB0aGUgZG9jcywgbWF5YmUgcnVuIGEgcXVpY2sgdGVzdC4gVGhpcyBjb3VsZCBvcGVuIHVwIGEgdmlhYmxlIHBhdGggZm9yd2FyZCwgb3IgYXQgbGVhc3QgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgbGltaXRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjgwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MjEuOTgwMDY2NTc0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgzMzYyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOToyMi4wMjM5MDg3ODNaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExNjEwMTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRoaW5raW5nIG9uIEFGX1hEUCBUWCBNZXRhZGF0YSBTdXBwb3J0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIG5ldHdvcmsgZHJpdmVycyBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YS4gSSAqZGlkKiBjaGVjayBgdmV0aGAgYWxyZWFkeSDigJMgbm90aGluZyB0aGVyZSwgbm8gYHhza19idWZmX3Bvb2xgLiBTbywgbGV0J3Mgc2VlLCBteSBub3RlcyBzYXkgdGhlIGZvbGxvd2luZyBkcml2ZXJzIGhhdmUgc3VwcG9ydDogYGlnY2AgKHRoZSBJbnRlbCBJMjI1L0kyMjYpLCBgbWx4NWAgKE1lbGxhbm94IENvbm5lY3RYLTQrKSwgYHN0bW1hY2AgKHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDKSwgYW5kIGBpZHBmYCAodGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikuXG5cbldhaXQgYSBtaW51dGUsIHdhc27igJl0IGBzdG1tYWNgIHVzZWQgaW4gKnNvbWUqIFFFTVUgZW11bGF0aW9ucz8gTm8sIHRoYXQncyBub3QgcmlnaHQuIGBzdG1tYWNgIGlzIHR5cGljYWxseSBmb3IgQVJNIFNvQ3MsIGxpa2UgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMuIFFFTVUgZG9lc24ndCBlbXVsYXRlIGl0IGJ5IGRlZmF1bHQgb24geDg2LCBidXQgaXQgKmNhbiogYmUgdXNlZCB0byBlbXVsYXRlIHNvbWUgQVJNIGJvYXJkcy5cblxuSG9sZCBvbuKApiBJJ20gZ2V0dGluZyBtaXhlZCB1cC4gSSBhbHNvIHRob3VnaHQgYGlnY2Agd2FzIGVtdWxhdGVkIGluIFFFTVUsIGJ1dCB0aGF0J3Mgbm90IHJpZ2h0LCBpcyBpdD8gUUVNVSBoYXMgdGhlIGBlMTAwMGAgYW5kIGBlMTAwMGVgIGVtdWxhdGlvbnMuIEJ1dCBgZTEwMDBlYCBpcyBub3QgdGhlIHNhbWUgYXMgYGlnYmAsIHJpZ2h0PyBObywgYGUxMDAwZWAgaXMgdGhlIGBlMTAwMGVgIGRyaXZlciBhbmQgYGlnYmAgaXMgZm9yIHRoZSA4MjU3NS84MjU3Ni4gQWgsIHRoYXQncyByaWdodCwgUUVNVSBoYXMgYGlnYmAgZW11bGF0aW9uIVxuXG5Ob3cgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBpbXBvcnRhbnQuIERvZXMgYGlnYmAgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGE/IEkgbmVlZCB0byBsb29rIHRoYXQgdXAgYW5kIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5MjQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MjguMTQwMDEyMDQzWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA2NjMyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX3JlcXVlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MjguMTg1MDg0NDAyWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDI2NDE4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyBlQlBGIFhTSyBUWCBTdXBwb3J0KipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWNzIG9mIGVCUEYgYW5kIFhTSyBUWCwgYW5kIGl0IGxvb2tzIGxpa2UgYGlnYmAgZHJpdmVyIGlzbid0IHBsYXlpbmcgbmljZWx5IHdpdGggYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YC4gVGhhdCdzIGEgYml0IG9mIGEgYnVtbWVyOyBJJ2xsIGhhdmUgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgbGV0J3MgcGl2b3QuIFNpbmNlIGBpZ2JgIGlzIG91dCBvZiB0aGUgcGljdHVyZSBmb3IgdGhhdCBzcGVjaWZpYyB1c2UgY2FzZSwgbXkgbmV4dCB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IGBlMTAwMGVgPyBJIHdvbmRlciBpZiB0aGF0IGRyaXZlciBvZmZlcnMgYmV0dGVyIHN1cHBvcnQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBvciByZWxldmFudCBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiBpdCBwcm92aWRlcyB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uYWxpdHkuIFRoaXMgY291bGQgYmUgYSBnb29kIGFsdGVybmF0aXZlLCBvciBhdCBsZWFzdCBhIHN0ZXBwaW5nIHN0b25lIHRvIGEgc29sdXRpb24uIFBlcmhhcHMgdGhlIGBlMTAwMGVgIGNvZGUgb2ZmZXJzIGEgc2ltaWxhciBhcmNoaXRlY3R1cmUgdGhhdCBpcyBtb3JlIHJlYWRpbHkgYWRhcHRlZC4gVGltZSB0byBkZWx2ZSBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NjM2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MzEuODg3NzI4NjczWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg4NDMwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX3JlcXVlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MzEuOTMyNjIxMjcxWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTU1MDI1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBYRFAgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IFhEUCBzdXBwb3J0IGFuZCBpdCBzZWVtcyBvbmx5IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgIGFyZSB0aGUgZHJpdmVycyBpbiBwbGF5LiBIbW0sIGxldCBtZSB0aGluayB0aHJvdWdoIGBpZHBmYCBhIGJpdCBjbG9zZXIuIEl0IGxvb2tzIGxpa2UgYGlkcGZgIGxldmVyYWdlcyBgbGliZXRoX3hza194bWl0X2RvX2J1bGtgLCB3aGljaCB0aGVuIGNhbGxzIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLCB3aGljaCwgZmluYWxseSwgY2FsbHMgYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlc2UgZHJpdmVycyBhcmUgZW11bGF0ZWQgYnkgUUVNVS4gTm9wZSwgYGlkcGZgIGlzbid0IGVtdWxhdGVkIGluIFFFTVUuIE5laXRoZXIgaXMgYG1seDVgLCBvciBgaWdjYC4gTm93LCBgc3RtbWFjYC4uLiBRRU1VIGhhcyB0aG9zZSBkZXZpY2UgZGVmaW5pdGlvbnM6IGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYGh3L25ldC9mdGdtYWMxMDAuY2AsIGBody9uZXQvbnBjbTd4eF9lbWMuY2AuXG5cbkFoYSwgYHN0bW1hY2AgaXMgYSBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIChEV01BQykhIEFuZCBRRU1VIGRvZXMgZW11bGF0ZSBgZGVzaWdud2FyZWAgTUFDISBUaGF0J3MgZ29vZCBuZXdzLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IFFFTVUgaGFzIGBkZXNpZ253YXJlYC4gWWVwLCB0aGVyZSBpdCBpczogYGh3L25ldC9kZXNpZ253YXJlLmNgLiBUaGUgcmVtYWluaW5nIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGFjY2Vzc2libGUgaW4gdGhlIHN0YW5kYXJkIHN5emthbGxlciB4ODZfNjQgVk1zPyBTeXprYWxsZXIgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBkZXNpZ253YXJlYCBNQUMgaXMgZXhwb3NlZCBpbiB0aGVzZSBlbnZpcm9ubWVudHMsIHR5cGljYWxseSwgaXMgaXQgYSBwbGF0Zm9ybSBkZXZpY2Ugb24gQVJNIG9yIGEgUENJIGRldmljZT8gT2theSwgSSBzaG91bGQgY2hlY2sgaWYgYHN0bW1hY2AgY2FuIGJlIGEgUENJIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MzguNDg4MTI3MzU5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM4ODg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NDU9c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODY9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODA2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXFx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMi1cXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQxPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NDg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ5LVxcdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODUyPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NzA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVxcdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk4LVxcdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTAxPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MTk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIwLVxcdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTQ0PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTUzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY3LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk3MD1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5ODA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4MS1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTg0PXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk5NDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQzLVxcdC5zZXR1cCA9IGFkbG5fc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTA5PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBxdWFya19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0Ni1cXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjY6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Ny1cXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDMtXFx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xNjU9c3RhdGljIGludCBsb29uZ3Nvbl9nbmV0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE3NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbmV0X3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVxcdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAxLVxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXFx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XFx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFxcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOTozOC41Mzc1MjIyMDdaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI0ODA5NTM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGX1hEUCBUWCBNZXRhZGF0YSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJZZXMsIGBzdG1tYWNgICpjYW4qIGJlIGEgUENJIGRldmljZSwgbGlrZSB3aXRoIGBkd21hYy1pbnRlbC5jYCBhbmQgYHN0bW1hY19wY2kuY2AuXCIgQnV0IHRoZW4gSSByZW1lbWJlciBgc3RtbWFjYCBpcyBhbHNvIHVzZWQgZm9yIEludGVsIFF1YXJrIGFuZCBvdGhlciBJbnRlbCBTb0NzLCBzbyBpcyB0aGlzIHNvbWV0aGluZyBJIGNhbiBldmVuIHJlYWNoIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YCwgd2hpY2ggY2FuIGluamVjdCBQQ0kgZGV2aWNlcyAqaWYqIFFFTVUgc3VwcG9ydHMgdGhlbS4gQW5kLCB1bmZvcnR1bmF0ZWx5LCBJIGtub3cgUUVNVSBkb2Vzbid0IGVtdWxhdGUgYHN0bW1hY2AgUENJIGRldmljZXMuXG5cbk9rYXksIGJhY2sgdG8gdGhlIGRyYXdpbmcgYm9hcmQuIExldCdzIHRoaW5rIGFib3V0IGB2ZXRoYC4gSG1tLCBJIGNoZWNrZWQgYHZldGhgIGVhcmxpZXIsIGFuZCBpdCBkb2Vzbid0IHN1cHBvcnQgQUZfWERQIFRYIG1ldGFkYXRhLlxuXG5XYWl0IGEgc2Vjb25kISBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAuIFNwZWNpZmljYWxseSwgdGhpcyBjaGFuZ2U6XG5gYGBjXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbitfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbitcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4tXHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuKVxuK1x0aWYgKCFwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkpXG4gXHRcdHJldHVybiBOVUxMO1xuYGBgXG5UaGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwsIGFzIGl0J3MgY2FsbGVkIGJ5IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBOb3csIGB4cF9yYXdfZ2V0X2N0eGAgbGVhZHMgdG8gYHhza19idWZmX3Jhd19nZXRfY3R4YCwgd2hpY2ggbGVhZHMgdG8gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gQW5kIHRoYXQsIGluIHR1cm4sIGlzIHVzZWQgaW4gYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAsIHdoaWNoIGlzIHVzZWQgaW4gYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYC4gRmluYWxseSwgYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYCBpcyB1c2VkIGluIGBpZHBmX3hza194bWl0YC5cblxuV2FpdCEgSSBzZWUgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbHNvIGNhbGxlZCBkaXJlY3RseSBpbiBgaWdjX3hkcF94bWl0X3pjYCwgYG1seDVlX3hza190eGAsIGFuZCBgc3RtbWFjX3hkcF94bWl0X3pjYC4gVGhlc2UgYWxsIGxvb2sgcHJvbWlzaW5nLiBOb3csIGNhbiBhbnkgb2YgdGhvc2UgYmUgcmVhY2hlZCB3aXRoIFN5emthbGxlcj9cblxuU3l6a2FsbGVyICpjYW4qIGZ1enogQUZfWERQIHNvY2tldHMuIEJ1dCBpZiB0aGUgdW5kZXJseWluZyBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IEFGX1hEUCB6ZXJvIGNvcHkgKm9yKiBUWCBtZXRhZGF0YSwgdGhhdCBjb2RlIGluIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgbWlnaHQgbm90IGV2ZW4gZ2V0IGhpdC4gSG1tbSwgZG9lcyBgdmV0aGAgc3VwcG9ydCBBRl9YRFAgemVybyBjb3B5PyBJJ2xsIG5lZWQgdG8gY2hlY2sgYHZldGhfeGRwX3htaXRgIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzQzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjQ3Ljc4NTYyMDE1NFoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1Mjg0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmV0aF94ZHBfeG1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jPTQ5Nj1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKnZldGhfcGVlcl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01MDMtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjUwNDpzdGF0aWMgaW50IHZldGhfeGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG4sXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUwNS1cXHRcXHRcXHQgc3RydWN0IHhkcF9mcmFtZSAqKmZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz01NjE9c3RhdGljIGludCB2ZXRoX25kb194ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NjUtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2NjpcXHRlcnIgPSB2ZXRoX3hkcF94bWl0KGRldiwgbiwgZnJhbWVzLCBmbGFncywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ny1cXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTU3Nj1zdGF0aWMgdm9pZCB2ZXRoX3hkcF9mbHVzaF9icShzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc5LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1ODA6XFx0c2VudCA9IHZldGhfeGRwX3htaXQocnEtXFx1MDAzZWRldiwgYnEtXFx1MDAzZWNvdW50LCBicS1cXHUwMDNlcSwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy01ODEtXFx0aWYgKHNlbnQgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjQ3LjgzNTE1Mjg2M1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMyMTU4NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB2ZXRoIGFuZCBBRl9YRFAgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB2ZXRoYCBhbmQgaG93IGl0IGhhbmRsZXMgWERQIGFuZCBBRl9YRFAuIEl0J3MgY2xlYXIgdGhhdCBpdCBpbXBsZW1lbnRzIGBuZG9feGRwX3htaXRgLCB3aGljaCBpcyBleHBlY3RlZC4gSG93ZXZlciwgaXQgKmRvZXNuJ3QqIGltcGxlbWVudCBlaXRoZXIgYG5kb194c2tfd2FrZXVwYCBvciBgbmRvX2JwZmAgd2l0aCBgWERQX1NFVFVQX1hTS19QT09MYC4gSG1tLCB0aGF0IHN1Z2dlc3RzIHNvbWV0aGluZyBzcGVjaWZpYyBhYm91dCBpdHMgQUZfWERQIHN1cHBvcnQuXG5cbkFoLCByaWdodCwgbm93IGl0J3MgY2xpY2tpbmcuIGB2ZXRoYCBzdXBwb3J0cyBBRl9YRFAgYnV0IGluICpjb3B5KiBtb2RlLCBub3QgemVyby1jb3B5LiBUaGF0J3Mgd2h5IHRob3NlIG90aGVyIGNhbGxiYWNrcyBhcmVuJ3QgaW1wbGVtZW50ZWQuIEluIGNvcHkgbW9kZSwgdGhlIEFGX1hEUCB0cmFmZmljIHdvdWxkIGJlIGhhbmRsZWQgd2l0aCBzb21ldGhpbmcgbGlrZSBgeHNrX2dlbmVyaWNfeG1pdGAsIG9yIHNvbWV0aGluZyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgcmlnaHQ/IFRoYXQncyB0aGUgZXhwZWN0ZWQgcGF0aC4gTGV0IG1lIGRvdWJsZS1jaGVjayBgeHNrX2dlbmVyaWNfeG1pdGAgbm93IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGUgZGF0YSBmbG93IGlzIHVuZGVyc3Rvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDE4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjUyLjA2NzMxNDk0N1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MzM5NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfZ2VuZXJpY194bWl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtNzctXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDo3ODpcXHQvKiBXaGVuIF9feHNrX2dlbmVyaWNfeG1pdCgpIG11c3QgcmV0dXJuIGJlZm9yZSBpdCBzZWVzIHRoZSBFT1AgZGVzY3JpcHRvciBmb3IgdGhlIGN1cnJlbnRcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTc5LVxcdCAqIHBhY2tldCwgdGhlIHBhcnRpYWxseSBidWlsdCBza2IgaXMgc2F2ZWQgaGVyZSBzbyB0aGF0IHBhY2tldCBidWlsZGluZyBjYW4gcmVzdW1lIGluIG5leHRcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjgwOlxcdCAqIGNhbGwgb2YgX194c2tfZ2VuZXJpY194bWl0KCkuXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC04MS1cXHQgKi9cXG4tLVxcbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTE5MC1cXG5uZXQveGRwL3hzay5jOjExOTE6c3RhdGljIGludCBfX3hza19nZW5lcmljX3htaXQoc3RydWN0IHNvY2sgKnNrKVxcbm5ldC94ZHAveHNrLmMtMTE5Mi17XFxuLS1cXG5uZXQveGRwL3hzay5jLTEzMDUtXFxubmV0L3hkcC94c2suYzoxMzA2OnN0YXRpYyBpbnQgeHNrX2dlbmVyaWNfeG1pdChzdHJ1Y3Qgc29jayAqc2spXFxubmV0L3hkcC94c2suYy0xMzA3LXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTMxMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5uZXQveGRwL3hzay5jOjEzMTI6XFx0cmV0ID0gX194c2tfZ2VuZXJpY194bWl0KHNrKTtcXG5uZXQveGRwL3hzay5jLTEzMTMtXFx0LyogUmVhcXVpcmUgUkNVIGxvY2sgYmVmb3JlIGdvaW5nIGludG8gY29tbW9uIGNvZGUuICovXFxuLS1cXG5uZXQveGRwL3hzay5jPTEzNDA9c3RhdGljIGludCBfX3hza19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCB0b3RhbF9sZW4pXFxuLS1cXG5uZXQveGRwL3hzay5jLTEzNjUtXFx0XFx0XFx0cmV0dXJuIHhza193YWtldXAoeHMsIFhEUF9XQUtFVVBfVFgpO1xcbm5ldC94ZHAveHNrLmM6MTM2NjpcXHRcXHRyZXR1cm4geHNrX2dlbmVyaWNfeG1pdChzayk7XFxubmV0L3hkcC94c2suYy0xMzY3LVxcdH1cXG4tLVxcbm5ldC94ZHAveHNrLmM9MTQxOT1zdGF0aWMgX19wb2xsX3QgeHNrX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQveGRwL3hzay5jLTE0MzktXFx0XFx0XFx0LyogUG9sbCBuZWVkcyB0byBkcml2ZSBUeCBhbHNvIGluIGNvcHkgbW9kZSAqL1xcbm5ldC94ZHAveHNrLmM6MTQ0MDpcXHRcXHRcXHR4c2tfZ2VuZXJpY194bWl0KHNrKTtcXG5uZXQveGRwL3hzay5jLTE0NDEtXFx0fVxcbi0tXFxubmV0L3hkcC94c2suYz0yMjQwPXN0YXRpYyBpbnQgX19pbml0IHhza19pbml0KHZvaWQpXFxuLS1cXG5uZXQveGRwL3hzay5jLTIyNTktXFxubmV0L3hkcC94c2suYzoyMjYwOlxcdHhza190eF9nZW5lcmljX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoXFxcInhza19nZW5lcmljX3htaXRfY2FjaGVcXFwiLFxcbm5ldC94ZHAveHNrLmMtMjI2MS1cXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCB4c2tfYWRkcnMpLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYz04OTg9c3RhdGljIGJvb2wga2lja190eF93aXRoX2NoZWNrKHN0cnVjdCB4c2tfc29ja2V0X2luZm8gKnhzaywgaW50ICpyZXQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3hzay5jLTkxMC1cXHQgKiBzZW5kIGluIHRoaXMgY2FzZSB3aGVyZSBoaXR0aW5nIHRoZSBtYXggYnVkZ2V0IGxpbWl0IGluIHdoaWxlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYzo5MTE6XFx0ICogbG9vcCBpcyB0cmlnZ2VyZWQgaW4gX194c2tfZ2VuZXJpY194bWl0KCkuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfeHNrLmMtOTEyLVxcdCAqIHRoZSBudW1iZXIgb2YgZGVzY3MgdG8gYmUgc2VudCBpcyBsYXJnZXIgdGhhbiBAbWF4X2J1ZGdldCwgb3JcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6NTMuODUwNzMwMTE0WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzQxOTU0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERhdGEgUmV0cmlldmFsIFBhdGggaW4gYF9feHNrX2dlbmVyaWNfeG1pdGAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBpbnRlcm5hbHMgb2YgdGhlIFhEUCB0cmFuc21pdCBwYXRoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBfX3hza19nZW5lcmljX3htaXRgLiBUaGUga2V5IHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXM6IGhvdyBpcyB0aGUgbWV0YWRhdGEgYWN0dWFsbHkgcmV0cmlldmVkIGZvciBlYWNoIGJ1ZmZlciB0aGF0IGlzIGJlaW5nIHNlbnQ/IElzIGl0IHVzaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGlzIGl0IHVzaW5nIGB4cF9yYXdfZ2V0X2N0eGAgPyBUaGUgZGlzdGluY3Rpb24gbWF0dGVycyBiZWNhdXNlIGVhY2ggZnVuY3Rpb24gbWF5IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIGRpZmZlcmVudCBjb25jdXJyZW5jeSBpbXBsaWNhdGlvbnMsIG9yIGV2ZW4gZGlmZmVyZW50IHZlcnNpb25zIGF2YWlsYWJsZS4gVW5kZXJzdGFuZGluZyB0aGlzIGV4YWN0IHN0ZXAgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pc2luZyBwZXJmb3JtYW5jZSwgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgZm9yIGFueSBsb3cgbGV2ZWwgZGVidWdnaW5nIEknbSBnb2luZyB0byBiZSBkb2luZy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gYXMgaXQgaXMgdGhlIGhlYXJ0IG9mIGFueSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBJIGFtIGF0dGVtcHRpbmcuIFRoaXMgaW1wYWN0cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkYXRhIGFjY2VzcyBwYXR0ZXJucyBhbmQgbWVtb3J5IGJhcnJpZXJzLiBUaGUgYW5zd2VyIHdpbGwgZGlyZWN0bHkgaW5mbHVlbmNlIGhvdyBJIHRoaW5rIGFib3V0IHBvdGVudGlhbCBsb2NrIGNvbnRlbnRpb24gb3IgZGF0YSBkZXBlbmRlbmN5IGlzc3Vlcy4gTm93LCBJIGhhdmUgdG8gZGV0ZXJtaW5lIHdoaWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBpdCBpcyBhY3R1YWxseSB1c2luZy4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6NTkuMzI0OTI4ODEyWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM1NDcyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjU5LjM3MjI5MDA1MVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg2MzcyNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgWERQL1hTSyBEZXB0aHMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGFuIFhTSyBjb250ZXh0LCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0J3MgYmVpbmcgcmV0cmlldmVkIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRpbWUgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAgd2l0aGluIGBuZXQveGRwL3hzay5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGp1c3QgKnNjcmVhbXMqIFwidGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyxcIiByaWdodD8gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIG1lY2hhbmlzbSBmb3IgYWNjZXNzaW5nIHRoZSBYU0sgY29udGV4dDsgaXTigJlzIGxpa2VseSB0aGUgY29yZSBvcGVyYXRpb24gd2UncmUgaW50ZXJlc3RlZCBpbi4gS25vd2luZyB0aGlzIGZ1bmN0aW9uJ3MgbG9naWMgd2lsbCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgaG93IHRoaXMgcmF3IFhTSyBhY2Nlc3MgaXMgZnVuY3Rpb25pbmcsIGl0cyBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcG90ZW50aWFsIHBvaW50cyBvZiBjb250ZW50aW9uIG9yIG9wdGltaXphdGlvbi4gSSBleHBlY3QgaXQgdG8gaGF2ZSB0aGUgY3J1Y2lhbCBwaWVjZXMgdG8gZ2V0IHRoZSBtZXRhZGF0YSB0aGF04oCZcyBuZWVkZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjAzLjE1ODY2NDQ3OVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MTY0MTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhwX3Jhd19nZXRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjAzLjIwNjA5MTQ5OFoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI2MjQ5MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggWERQL0FGX1hEUCBUcmFuc21pdCBNZXRhZGF0YSoqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGUgdHJhbnNtaXNzaW9uIHNpZGUgb2YgWERQL0FGX1hEUCBhZ2Fpbi4gSSdtIGZvY3VzaW5nIG9uIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gSSd2ZSBiZWVuIGNvbnNpZGVyaW5nIGRpZmZlcmVudCB3YXlzIHRvIGhhbmRsZSB0aGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gZWFjaCBwYWNrZXQsIHNwZWNpZmljYWxseSBmb3IgdHJhbnNtaXQgb3BlcmF0aW9ucy4gVGhlIGNvcmUgcXVlc3Rpb24gdGhhdCdzIGJ1YmJsaW5nIHRvIHRoZSBzdXJmYWNlIGlzIGFib3V0IHRoZSBtZWNoYW5pc20gZm9yIHJlcXVlc3RpbmcgYW5kIHByb3ZpZGluZyB0aGF0IHRyYW5zbWl0IG1ldGFkYXRhLiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50IGZvciBzdGVlcmluZyBwYWNrZXRzLCBhcHBseWluZyBRb1MsIGFuZCBnZW5lcmFsbHkgZ2V0dGluZyB0aGUgbW9zdCBvdXQgb2YgaGFyZHdhcmUgb2ZmbG9hZCBjYXBhYmlsaXRpZXMuXG5cblNvLCAqYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YCouLi4gV2hhdCBhcmUgdGhlIHNwZWNpZmljcz8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBkZWRpY2F0ZWQgc3RydWN0dXJlIHBhc3NlZCBpbiB0aGUgcmluZywgb3Igc29tZSBvdGhlciBtZWNoYW5pc20/IERvZXMgaXQgbWFrZSBzZW5zZSB0byBoYXZlIGEgc2VwYXJhdGUgcmluZyBmb3IgbWV0YWRhdGEgcmVxdWVzdHMsIG9yIHNob3VsZCBpdCBiZSBlbWJlZGRlZCB3aXRoaW4gdGhlIGV4aXN0aW5nIFRYIHJpbmcgZW50cnk/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgaW4gdGVybXMgb2YgZGF0YSBzdHJ1Y3R1cmVzPyBJcyB0aGUgKmB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAqIHNwZWNpZmljIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrIGluIHVzZT8gV2hhdCBhYm91dCBOSUMtc3BlY2lmaWMgbWV0YWRhdGEgY29uc2lkZXJhdGlvbnM/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgYmFsYW5jZSBiZXR3ZWVuIGZsZXhpYmlsaXR5IGFuZCBvdmVyaGVhZCBoZXJlLiBBIHJpY2ggbWV0YWRhdGEgc3RydWN0dXJlIGNvdWxkIG9mZmVyIGFtYXppbmcgY29udHJvbCwgYnV0IHdvdWxkIGxpa2VseSBpbXBvc2UgYSBzaWduaWZpY2FudCBjb3N0IGluIHRlcm1zIG9mIENQVSBjeWNsZXMgYW5kIG1lbW9yeSBiYW5kd2lkdGguIEl0IGFsc28gbmVlZHMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGEgYnJvYWQgcmFuZ2Ugb2YgaGFyZHdhcmUuIEEgc2ltcGxpZmllZCBpbnRlcmZhY2UgbWlnaHQgYmUgZmFzdGVyIGJ1dCB3b3VsZCBwb3RlbnRpYWxseSBsaW1pdCB0aGUgZmVhdHVyZXMgd2UgY291bGQgZXhwb3NlIHRvIHRoZSB1c2Vyc3BhY2UgYXBwbGljYXRpb24uIEkgbmVlZCB0byB3ZWlnaCB0aGUgdHJhZGUtb2ZmczogSG93IGNhbiB3ZSBnaXZlIHVzZXJzcGFjZSB0aGUgY29udHJvbCBpdCBuZWVkcywgd2l0aG91dCB0YW5raW5nIHBlcmZvcm1hbmNlPyBJJ20gaG9waW5nIHRvIGNyYWZ0IGEgZGVzaWduIHRoYXQgaXMgcGVyZm9ybWFudCwgZXh0ZW5zaWJsZSwgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHRvbyBtdWNoIGNvbXBsZXhpdHkuIEl0J3MgdGhhdCBiYWxhbmNlIEkgbmVlZCB0byBzdHJpa2UgdG8gZW5zdXJlIHRoZSBhcmNoaXRlY3R1cmUgc2NhbGVzIHdlbGwuIEkgd2FudCB0byBidWlsZCBhIHRydWx5IGVmZmljaWVudCwgZmxleGlibGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODM0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjA3LjgzMjM0MzY2MVoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NzAzNTAxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL3hzay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjo0MDowOC4xMDcwNTQ2MzNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NzE2NzMwNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFGX1hEUCBUWCBNZXRhZGF0YSBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBhY3R1YWxseSBpbXBhY3RzIGFueXRoaW5nIGluIGEgdHlwaWNhbCB0ZXN0aW5nIHNldHVwLiBUaGUgY29kZSBpbiBxdWVzdGlvbiwgYHhza19nZW5lcmljX3htaXRgLCBkb2Vzbid0IHVzZSBUWCBtZXRhZGF0YS4gVGhhdCdzIGEga2V5IHBvaW50LiBUWCBtZXRhZGF0YSBpcyAqb25seSogc3VwcG9ydGVkIGluIHplcm8tY29weSBBRl9YRFAgbW9kZS4gUmlnaHQsIGFuZCB6ZXJvLWNvcHkgQUZfWERQIGlzIGxpbWl0ZWQgdG8gYSBoYW5kZnVsIG9mIGRyaXZlcnM6IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLlxuXG5CdXQgd2FpdCwgYHN0bW1hY2AuLi4gaXNuJ3QgdGhhdCBlbXVsYXRlZCBieSBRRU1VPyBJIHNob3VsZCBjaGVjayBpZiB0aGF0J3MgZXZlbiBhIHZpYWJsZSBwYXRoIGluIHN5emthbGxlci4gU3l6a2FsbGVyIHVzZXMgYHFlbXUtc3lzdGVtLXg4Nl82NGAsIHNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBkb2VzIFFFTVUgZW11bGF0ZSBhbiBgc3RtbWFjYCBkZXZpY2UgKmZvciB4ODZfNjQqPyBObywgdHlwaWNhbGx5IGBzdG1tYWNgIGlzIGFuIEFSTS9NSVBTL1JJU0MtVi9Mb29uZ3NvbiBwbGF0Zm9ybSBkZXZpY2UuXG5cbkhvbGQgb24sIGxldCBtZSByZWZpbmUgdGhhdC4gYGR3bWFjLWludGVsLmNgIGlzIGFjdHVhbGx5IGZvciBJbnRlbCBRdWFyayBhbmQgc29tZSBvdGhlciBJbnRlbCBTb0NzIGxpa2UgRWxraGFydCBMYWtlLCBUaWdlciBMYWtlLCBhbmQgQWxkZXIgTGFrZSwgd2hpY2ggYXJlIFBDSSBkZXZpY2VzLiBSaWdodCwgYnV0IGRvZXMgUUVNVSBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIE1BQyBkZXZpY2VzPyBOb3BlLiBBbmQgd2hhdCBhYm91dCB0aGUgb3RoZXJzPyBgaWdjYCAoSW50ZWwgSTIyNS9JMjI2KT8gTm8sIG5vdCBlbXVsYXRlZCBieSBRRU1VLiBgbWx4NWA/IE5vcGUuIGBpZHBmYD8gTm90IGVtdWxhdGVkIGVpdGhlci5cblxuT2theSwgc28gbm9uZSBvZiB0aG9zZSBkaXJlY3RseSBhcmUgZW11bGF0ZWQsIHNvIGxldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gTGV0IG1lIHNlYXJjaCBmb3IgYW55IG90aGVyIGRyaXZlciB0aGF0IG1pZ2h0IHVzZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciBgeHBfcmF3X2dldF9jdHhgLiBMZXQncyBzZWUuLi4gYSBxdWljayBgZ3JlcGAgcmV2ZWFscyB0aGVzZSB1c2VzOlxuXG4qICAgYHhza19idWZmX2dldF9tZXRhZGF0YWA6IGBpZ2NfbWFpbi5jYCwgYG1seDUvdHguY2AsIGBzdG1tYWNfbWFpbi5jYCwgYHhkcF9zb2NrX2Rydi5oYCwgYW5kIGB4c2tfYnVmZl9wb29sLmNgLlxuKiAgIGB4cF9yYXdfZ2V0X2N0eGA6IGB4ZHBfc29ja19kcnYuaGAsIGB4c2tfYnVmZl9wb29sLmhgLCBhbmQgYHhza19idWZmX3Bvb2wuY2AuXG4qICAgYHhza19idWZmX3Jhd19nZXRfY3R4YDogdXNlZCBpbiBgaWRwZmAgdmlhIGB4c2suaGAuXG5cblNvLCB0aGUgbW9kaWZpZWQgY29kZSBpcyAqb25seSogcmVhY2hhYmxlIGlmICpvbmUqIG9mIHRob3NlIGZvdXIgZHJpdmVycyAoYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGBpZHBmYCkgaXMgcHJlc2VudCBhbmQgY29uZmlndXJlZCBmb3IgemVyby1jb3B5IEFGX1hEUC4gR2l2ZW4gdGhlIGZhY3QgdGhhdCBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciAoZS5nLiBgZTEwMDBgLCBgZTEwMDBlYCwgYHZpcnRpby1uZXRgLCBldGMpIGRvbid0IGVtdWxhdGUgdGhvc2UgZHJpdmVycywgdGhpcyBwYXRoIGlzIGhpZ2hseSB1bmxpa2VseS4gQW55IGNoYW5nZXMgaGVyZSBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIHRoZSB0eXBpY2FsIFFFTVUgY29uZmlndXJhdGlvbnMuXG5cbkxldCdzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGFuZCBydWxlIG91dCBhbnkgb3RoZXIgcG9zc2liaWxpdGllcy4gV2hhdCBhYm91dCBgdmV0aGA/IE5vLCBubyB1c2Ugb2YgdGhvc2UgZnVuY3Rpb25zLiBgbWFjdmxhbmA/IE5vcGUuIGB0dW5gL2B0YXBgPyBOZWdhdGl2ZS4gV2hhdCBhYm91dCBgdmlydGlvX25ldGA/IFRoYXQgKmRvZXMqIHN1cHBvcnQgemVyby1jb3B5IEFGX1hEUCwgYnV0IG5vdCBUWCBtZXRhZGF0YS4gSXQncyBub3QgdXNpbmcgdGhvc2UgZnVuY3Rpb25zLiBMZXQgbWUgZG91YmxlLWNoZWNrIGB2aXJ0aW9fbmV0LmNgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiBub3RoaW5nIGhlcmUuXG5cbkNvbmNsdXNpb246IHRoaXMgcGF0Y2ggaXMgYWxtb3N0IGNlcnRhaW5seSBkZWFkIGNvZGUgaW4gYW55IHN0YW5kYXJkIHRlc3RpbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjE4Ljk3ODczMTA5MloiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIwOTM5NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza190eF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjE5LjAzMDgzNDQ5WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjcyMzIwNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBmb3IgYHhza190eF9tZXRhZGF0YWAgaW4gYG5ldGRldnNpbWAqKlxuXG5SaWdodCwgc28gSSByYW4gYSBxdWljayBzZWFyY2gsIGFuZC4uLiBub3RoaW5nLiBObyBpbW1lZGlhdGUgaGl0cy4gVGhhdCdzIGEgbGl0dGxlIHN1cnByaXNpbmcsIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIHBvdGVudGlhbCB1c2FnZS4gT2theSwgbGV0J3MgZ28gYmFjayBhbmQgZG91YmxlLWNoZWNrIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgY29kZWJhc2UgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgYHhza190eF9tZXRhZGF0YWAuIEkga25vdyB0aGlzIGlzIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHNvIGEgdGFyZ2V0ZWQgc2VhcmNoIHNob3VsZCBiZSBmYWlybHkgZWZmaWNpZW50LiBHb3R0YSBiZSB0aG9yb3VnaC4gRXZlbiBhIGNvbW1lbnQgbWVudGlvbmluZyBpdCBpcyB3b3J0aCBub3RpbmcuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA0NjAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjo0MDoyMi4yNTgwNjk3NzVaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjE2OTU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfdHhfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6NDA6MjIuMzAyMjk2Mjg0WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2ODk4NzM2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUmVhY2hpbmcgdGhlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHdhbGwgaGVyZS4gVGhlcmUncyBubyBzdHJhaWdodGZvcndhcmQgbWF0Y2ggZm9yIHRoZSB0YXJnZXQuIExldCBtZSByZXRoaW5rIHRoaXMgZnJvbSB0aGUgZ3JvdW5kIHVwLiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHRyaWdnZXIgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCwgd2hpY2gsIGJlaW5nIGFuIGlubGluZSBmdW5jdGlvbiwgcHJlc2VudHMgdW5pcXVlIGNoYWxsZW5nZXMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gY29uc2lkZXIgYHN0bW1hY2AuIENhbiBJIGV2ZW4gcHJvYmUgdGhpcyBpbiBRRU1VPyBRRU1VICpkb2VzKiBoYXZlIGBody9uZXQvZGVzaWdud2FyZS5jYCwgYnV0IGl0J3MgaW5zdGFudGlhdGVkIGFzIGEgc3lzYnVzIGRldmljZSwgbm90IGEgUENJIGRldmljZS4gSG9sZCBvbiB0aG91Z2gsIHRoZXJlJ3MgYHN0bW1hY19wY2kuY2AsIGEgUENJIHdyYXBwZXIgZm9yIGBzdG1tYWNgLiBDb3VsZCBJIGluamVjdCBhIFBDSSBkZXZpY2UgdXNpbmcgc3l6a2FsbGVyLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgdmVuZG9yIElEIGBQQ0lfVkVORE9SX0lEX1NUTUlDUk9gICgweDEwNGEpIGFuZCBkZXZpY2UgSUQgYFBDSV9ERVZJQ0VfSURfU1RNSUNST19NQUNgICgweDM3OTgpP1xuXG5Ob3csIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X3BjaV9zZXR1cGAsIGlmIHRoZSBrZXJuZWwgc3VwcG9ydHMgUENJIGhvdHBsdWcgYW5kIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiBCdXQsIHdhaXQsIHRoYXQncyBub3QgcXVpdGUgcmlnaHQuIFN5emthbGxlciBkb2Vzbid0IGFjdHVhbGx5ICplbXVsYXRlKiBhcmJpdHJhcnkgUENJIGRldmljZXMuIEl0IGxldmVyYWdlcyBlaXRoZXIgYHZoY2lgIG9yIFFFTVUncyBidWlsdC1pbiBkZXZpY2VzLCBjb3JyZWN0PyBMb29raW5nIGNsb3NlciwgdGhlcmUncyBubyBkZWRpY2F0ZWQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsIGFzIEknZCBoYXZlIGV4cGVjdGVkLCBsaWtlIHdoYXQgZXhpc3RzIGZvciBVU0IgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLCBvciB3aWZpIHdpdGggYHN5el84MDIxMV9pbmplY3RgLiBGb3IgUENJLCBzeXprYWxsZXIgcmVsaWVzIG9uIGRldmljZXMgcHJlc2VudCBpbiB0aGUgVk0uXG5cblNvIHRoZSBjb3JlIHByb2JsZW0gYmVjb21lcyB0aGlzOiBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBmb3IgUENJIGRldmljZXMsIHVubGlrZSB0aGUgVVNCIHN1YnN5c3RlbS4gYHZmaW9gIGlzIHRoZSBvbmx5IGFsdGVybmF0aXZlLCBidXQgdGhhdCdzIGZvciBwYXNzaW5nIHRocm91Z2ggKnJlYWwqIGhhcmR3YXJlLiBTbyBpZiBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUsIEknbSBzdHVjay5cblxuSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgc3RtbWFjYCBpcyBlbmFibGVkIGluIHN5emthbGxlcidzIGRlZmF1bHQgY29uZmlndXJhdGlvbi4gSXQgdXN1YWxseSBpbmNsdWRlcyBhIHdpZGUgcmFuZ2Ugb2YgZHJpdmVycywgYnV0IGV2ZW4gaWYgaXQncyBwcmVzZW50LCB0aGUgYHByb2JlYCBmdW5jdGlvbiB3aWxsIGZhaWwgd2l0aG91dCB0aGUgY29ycmVjdCBoYXJkd2FyZSAob3IgaXRzIGVtdWxhdGlvbiBpbiBRRU1VKSwgYW5kIHRodXMsIHRoZSBuZXRkZXYgd29uJ3QgYmUgY3JlYXRlZC4gV2l0aG91dCB0aGUgbmV0ZGV2LCB0aGVyZSBpcyBubyB3YXkgdG8gYmluZCBhbiBBRl9YRFAgc29ja2V0LiBObyBzb2NrZXQgYmluZGluZyBtZWFucyBubyBhY2Nlc3MgdG8gdGhlIFRYIHBhdGggYW5kIHRodXMsIG5vIGFjY2VzcyB0byBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGRpcmVjdGx5LlxuXG5Pa2F5LCBsZXQncyBiYWNrIHVwLiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZSB0byB0aGlzIGZ1bmN0aW9uPyBJdCdzIGlubGluZSwgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYW5kIGl0J3MgY2FsbGVkIGJ5IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBMZXQncyBleHBsb3JlIHRoZSBjYWxsZXJzIHRvIHRob3NlIGZ1bmN0aW9ucyB0byBmaW5kIGFsdGVybmF0ZSB3YXlzIHRvIHJlYWNoIHRoZSBpbmxpbmUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2OTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6NDA6MzEuOTkyMTczNTA5WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU2MjA5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMyMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMyMjpfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjMtXFx0XFx0XFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMzI9eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMzLXtcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMzQ6XFx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzUtXFx0XFx0XFx0XFx0ICAgICAgIG9wdGlvbnMpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTM1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTM2Ol9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzNy1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc3NT1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4Mi1cXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3ODM6XFx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODQtXFx0XFx0XFx0XFx0XFx0ICAgb3B0aW9ucyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjMzLjU0ODM5MTAyM1oiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDk0NTk0NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IFVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhpcyBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBjb2RlIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSwgc3BlY2lmaWNhbGx5IHRoZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVudHMuIEkndmUgdHJhY2VkIHRoZXNlIGZ1bmN0aW9ucyBhbmQgZm91bmQgdGhleSBhcmUgZXhjbHVzaXZlbHkgdXNlZCBieSBhIGhhbmRmdWwgb2YgaGFyZHdhcmUgZHJpdmVyczogYGlnY2AgKEludGVsIEkyMjUvSTIyNiksIGBtbHg1YCAoTWVsbGFub3ggQ29ubmVjdFgtNCspLCBgc3RtbWFjYCAoU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyksIGFuZCBgaWRwZmAgKEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikuXG5cbkNydWNpYWxseSwgbm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsaXplZCBvciBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBvcGVyYXRlcyBpbi4gSSBkb3VibGUtY2hlY2tlZCBgaWdjYCwgYG1seDVgLCBhbmQgYGlkcGZgIHRvIGNvbmZpcm0gdGhleSBhcmUgbm90IGVtdWxhdGVkLCBhbmQgd2hpbGUgYHN0bW1hY2AgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGJlIGluc3RhbnRpYXRlZCB2aWEgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBsZXZlcmFnZSB0aGF0LiBNeSByZXZpZXcgb2YgdGhlIFFFTVUgc291cmNlIGNvbmZpcm1zIHRoYXQgYGlnY2AgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIGFuZCBzeXprYWxsZXIgdXNlcyB0aGUgYGUxMDAwYCBvciBgdmlydGlvLW5ldGAgZHJpdmVycyBieSBkZWZhdWx0LlxuXG5Ob3csIHdoaWxlIHRoZSBwYXRjaCAqZG9lcyogdG91Y2ggc29tZSBpbmNsdWRlIGZpbGVzIChgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBgaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oYCwgYGluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaGApIGFuZCBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgLCB0aGUgYWN0dWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aXRoaW4gdGhlc2UgZmlsZXMgYXJlIGxpbWl0ZWQgdG8gaW5saW5lIGZ1bmN0aW9ucyBhbmQgYHhwX3Jhd19nZXRfY3R4YC4gVGhlc2UgY2hhbmdlcyBhcmUgb25seSByZWFjaGFibGUgdmlhIHRoZSBzYW1lIGhhcmR3YXJlIGRyaXZlcnMgbWVudGlvbmVkIHByZXZpb3VzbHkuIFRoZSBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBjaGFuZ2UgYWRkcyBhIGBfX3UzMiByZXNlcnZlZDtgIGZpZWxkIHdoaWNoIGlzIGEgVUFQSSBjaGFuZ2UgYnV0IGRvZXNuJ3QsIGluIGFuZCBvZiBpdHNlbGYsIGFsdGVyIGFueSByZWFjaGFibGUga2VybmVsIGV4ZWN1dGlvbiBmbG93LlxuXG5JbiBzaG9ydCwgdGhlIHBhdGNoIG1vZGlmaWVzIGNvZGUgdGhhdCdzIGZ1bmRhbWVudGFsbHkgaW5hY2Nlc3NpYmxlIGluIG91ciB0YXJnZXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY29yZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgY2hhbmdlcyBpbiB0aGUgc2hhcmVkIGhlYWRlciBmaWxlcyBhbmQgdGhlIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2AgZmlsZSBhcmUgYWxsIHRyYW5zaXRpdmVseSBvbmx5IHJlYWNoYWJsZSBmcm9tIHRob3NlIHNhbWUgaGFyZHdhcmUgZHJpdmVycy4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgZG9jdW1lbnRlZCBjcml0ZXJpYSwgdGhpcyBwYXRjaCBwZXJmZWN0bHkgZml0cyB0aGUgZGVmaW5pdGlvbiBvZiBcInVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLFwiIGFuZCBpdCBpcyBzYWZlIHRvIGFzc2lnbiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0MTMsIk91dHB1dFRva2VucyI6MjAwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjo0MDo0OC40OTQzMzc5NDNaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfWERQIFRYIG1ldGFkYXRhIGltcGxlbWVudGF0aW9uIHRvIGNoZWNrIGZvciB0aGUgWERQX1RYX01FVEFEQVRBIGZsYWcgaW4gdGhlIGRlc2NyaXB0b3Igb3B0aW9ucyBiZWZvcmUgcmV0dXJuaW5nIHRoZSBtZXRhZGF0YSBwb2ludGVyLiBJdCB1cGRhdGVzIHRoZSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEgYW5kIHhwX3Jhd19nZXRfY3R4IGhlbHBlcnMgYW5kIHRoZWlyIGNhbGxlcnMuIEhvd2V2ZXIsIEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgemVyby1jb3B5IGFyZSBvbmx5IHN1cHBvcnRlZCBieSBhIGZldyBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzOiBpZ2MsIG1seDUsIHN0bW1hYywgYW5kIGlkcGYuIE5vbmUgb2YgdGhlc2UgZHJpdmVycyBhcmUgdmlydHVhbCwgbm9yIGFyZSB0aGV5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGUgdmV0aCBhbmQgdmlydGlvX25ldCBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZG8gbm90IHN1cHBvcnQgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCBkbyBub3QgY2FsbCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgVFggbWV0YWRhdGEgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgZm9yIHRoZSBYRFBfVFhfTUVUQURBVEEgZmxhZyBpbiB0aGUgZGVzY3JpcHRvciBvcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIEl0IHVwZGF0ZXMgdGhlIHhza19idWZmX2dldF9tZXRhZGF0YSBhbmQgeHBfcmF3X2dldF9jdHggaGVscGVycyBhbmQgdGhlaXIgY2FsbGVycy4gSG93ZXZlciwgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCB6ZXJvLWNvcHkgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IGEgZmV3IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnM6IGlnYywgbWx4NSwgc3RtbWFjLCBhbmQgaWRwZi4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsLCBub3IgYXJlIHRoZXkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSB2ZXRoIGFuZCB2aXJ0aW9fbmV0IGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBkbyBub3Qgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIGRvIG5vdCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6NDA6NDguNDk0MzY1MTQzWiIsIlNlcSI6NjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvwxm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 22:21:14 +0000 UTC FinishedAt: 2026-08-10 22:40:50 +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+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWIyOWMxMDYwN2U0NzNjYWJhYmQ5MTZhZjAwZjczYzVmYjlhOThlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIyOjM3OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbmluZGV4IDhiOWNlN2NiZmZmOWIuLjFmYjVmM2NiZTkzYzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbkBAIC0zMDcxLDcgJiM0MzszMDcxLDggQEAgc3RhdGljIHZvaWQgaWdjX3hkcF94bWl0X3pjKHN0cnVjdCBpZ2NfcmluZyAqcmluZylcbiBcdFx0b2xpbmZvX3N0YXR1cyA9IHhkcF9kZXNjLmxlbiBcdTAwM2NcdTAwM2MgSUdDX0FEVlRYRF9QQVlMRU5fU0hJRlQ7XG4gXG4gXHRcdGRtYSA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuLVx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuJiM0MztcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuJiM0MztcdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbiBcdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hLCB4ZHBfZGVzYy5sZW4pO1xuIFx0XHRiaSA9IFx1MDAyNnJpbmctXHUwMDNldHhfYnVmZmVyX2luZm9bbnR1XTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcbmluZGV4IDNkMTlkYWQ4Zjg2ODguLmQxOTRlZWRkZDdiNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuQEAgLTk5LDcgJiM0Mzs5OSw3IEBAIGJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXG4gXHRcdHhkcHR4ZC5kbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIGRlc2MuYWRkcik7XG4gXHRcdHhkcHR4ZC5kYXRhID0geHNrX2J1ZmZfcmF3X2dldF9kYXRhKHBvb2wsIGRlc2MuYWRkcik7XG4gXHRcdHhkcHR4ZC5sZW4gPSBkZXNjLmxlbjtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuJiM0MztcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XG4gXG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGIyYjdkMDI0MmRkM2MuLjZlOWQ0Y2IzMzZlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjcxNCwxNiAmIzQzOzI3MTQsMTAgQEAgc3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuIFx0XHRpZiAoIXhza190eF9wZWVrX2Rlc2MocG9vbCwgXHUwMDI2eGRwX2Rlc2MpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcbiBcdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbiYjNDM7XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcbiYjNDM7XHRcdFx0XHRcdCAgICAgeGRwX2Rlc2Mub3B0aW9ucyk7XG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIGRtYV9hZGRyLCB4ZHBfZGVzYy5sZW4pO1xuIFxuIFx0XHQvKiBUbyByZXR1cm4gWERQIGJ1ZmZlciB0byBYU0sgcG9vbCwgd2Ugc2ltcGxlIGNhbGxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmggYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbmluZGV4IDVkY2MwZDdmNjViNzYuLmE0NTJiNzgyOGNlNGUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxuQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbiBcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggY3R4O1xuIFxuLVx0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkcik7XG4mIzQzO1x0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkciwgeGRlc2MtXHUwMDNlb3B0aW9ucyk7XG4gXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XG4gXHRcdC5hZGRyXHQ9IGN0eC5kbWEsXG4gXHRcdF9fbGliZXRoX3hkcF90eF9sZW4oeGRlc2MtXHUwMDNlbGVuKSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG5pbmRleCBiMzQ0Nzg5ZjVkZjgzLi5kOTRhZWI1MDYzNzljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG5AQCAtMjQwLDYgJiM0MzsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4mIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbiAgKiBkZXRhaWxzLlxuQEAgLTI0OCw5ICYjNDM7MjQ5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXG4gICovXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4XG4teHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbi1cdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyKTtcbiYjNDM7XHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG4gfVxuIFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuQEAgLTMxOCwxOCAmIzQzOzMxOSwyMCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4mIzQzO1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbi1cdGlmICghcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4pXG4mIzQzO1x0aWYgKCFwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGRhdGEgLSBwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbjtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4tXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcbiYjNDM7XHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuJiM0MztcdFx0XHRcdCAgICAgICBvcHRpb25zKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoc3RydWN0IHhkcF9idWZmICp4ZHApXG5AQCAtNTEwLDcgJiM0Mzs1MTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxuLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiYjNDM7eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xuIH1cbkBAIC01MzAsMTMgJiM0Mzs1MzMsMTQgQEAgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG4tX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG4mIzQzO19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuJiM0MztcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oIGIvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oXG5pbmRleCAyYmIxZDEyMmIxYmM2Li5hN2RmNTczNzg0ZmQ2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbkBAIC0xNTQsNyAmIzQzOzE1NCw4IEBAIHN0cnVjdCB4ZHBfZGVzY19jdHgge1xuIFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbiB9O1xuIFxuLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKTtcbiYjNDM7c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpO1xuIFxuIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCB4cF9nZXRfZG1hKHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IpXG4ge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5AQCAtMTQ5LDYgJiM0MzsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbiYjNDM7XHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbkBAIC03NjMsNiAmIzQzOzc2Myw3IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xuICAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0IFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxuJiM0MzsgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSlcbiAgKlxuICAqIEhlbHBlciBmb3IgZ2V0dGluZyBkZXNjJiMzOTtzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxuICAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5AQCAtNzcxLDE0ICYjNDM7NzcyLDE2IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xuICAqIFJldHVybjogbmV3IFx1MDAyNnhkcF9kZXNjX2N0eCBzdHJ1Y3QgY29udGFpbmluZyBkZXNjJiMzOTtzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YVxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXG4gICovXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuJiM0MztcdFx0XHRcdCAgIHUzMiBvcHRpb25zKVxuIHtcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggcmV0O1xuIFxuIFx0YWRkciA9IF9feHBfcmF3X2dldF9hZGRyKHBvb2wsIGFkZHIpO1xuIFxuIFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XG4tXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcbiYjNDM7XHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuJiM0MztcdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuQEAgLTE0OSw2ICYjNDM7MTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG4gXHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiBcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gXHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4mIzQzO1x0XHRcdF9fdTMyIHJlc2VydmVkO1xuIFxuIFx0XHRcdC8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovXG4gXHRcdFx0LyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWIyOWMxMDYwN2U0NzNjYWJhYmQ5MTZhZjAwZjczYzVmYjlhOThlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDIyOjM3OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwppbmRleCA4YjljZTdjYmZmZjliLi4xZmI1ZjNjYmU5M2M1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwpAQCAtMzA3MSw3ICYjNDM7MzA3MSw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpCiAJCW9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gJmx0OyZsdDsgSUdDX0FEVlRYRF9QQVlMRU5fU0hJRlQ7CiAKIAkJZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7Ci0JCW1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7CiYjNDM7CQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsCiYjNDM7CQkJCQkgICAgIHhkcF9kZXNjLm9wdGlvbnMpOwogCQl4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7CiAJCWJpID0gJmFtcDtyaW5nLSZndDt0eF9idWZmZXJfaW5mb1tudHVdOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMKaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYwpAQCAtOTksNyAmIzQzOzk5LDcgQEAgYm9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldCkKIAkJeGRwdHhkLmRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgZGVzYy5hZGRyKTsKIAkJeGRwdHhkLmRhdGEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RhdGEocG9vbCwgZGVzYy5hZGRyKTsKIAkJeGRwdHhkLmxlbiA9IGRlc2MubGVuOwotCQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkcik7CiYjNDM7CQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTsKIAogCQl4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCB4ZHB0eGQuZG1hX2FkZHIsIHhkcHR4ZC5sZW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBiMmI3ZDAyNDJkZDNjLi42ZTlkNGNiMzM2ZWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTI3MTQsMTYgJiM0MzsyNzE0LDEwIEBAIHN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldCkKIAkJaWYgKCF4c2tfdHhfcGVla19kZXNjKHBvb2wsICZhbXA7eGRwX2Rlc2MpKQogCQkJYnJlYWs7CiAKLQkJaWYgKHByaXYtJmd0O2VzdCAmYW1wOyZhbXA7IHByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlICZhbXA7JmFtcDsKLQkJICAgIHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0gJmFtcDsmYW1wOwotCQkgICAgeGRwX2Rlc2MubGVuICZndDsgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSkgewotCQkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOzsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJdHhfZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBlbnRyeSk7CiAJCWRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7Ci0JCW1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7CiYjNDM7CQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsCiYjNDM7CQkJCQkgICAgIHhkcF9kZXNjLm9wdGlvbnMpOwogCQl4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTsKIAogCQkvKiBUbyByZXR1cm4gWERQIGJ1ZmZlciB0byBYU0sgcG9vbCwgd2Ugc2ltcGxlIGNhbGwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaAppbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oCkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsCiAJc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjOwogCXN0cnVjdCB4ZHBfZGVzY19jdHggY3R4OwogCi0JY3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtJmd0O3Bvb2wsIHhkZXNjLSZndDthZGRyKTsKJiM0MzsJY3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtJmd0O3Bvb2wsIHhkZXNjLSZndDthZGRyLCB4ZGVzYy0mZ3Q7b3B0aW9ucyk7CiAJZGVzYyA9ICh0eXBlb2YoZGVzYykpewogCQkuYWRkcgk9IGN0eC5kbWEsCiAJCV9fbGliZXRoX3hkcF90eF9sZW4oeGRlc2MtJmd0O2xlbiksCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oCmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oCkBAIC0yNDAsNiAmIzQzOzI0MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0ICZhbXA7eGRwX2Rlc2MgY29udGV4dAogICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG8KICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKQomIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKQogICoKICAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yCiAgKiBkZXRhaWxzLgpAQCAtMjQ4LDkgJiM0MzsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLgogICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHgKLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKQogewotCXJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyKTsKJiM0MzsJcmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIsIG9wdGlvbnMpOwogfQogCiAjZGVmaW5lIFhEUF9UWE1EX0ZMQUdTX1ZBTElEICggXApAQCAtMzE4LDE4ICYjNDM7MzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLAogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgotX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpCiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsCiYjNDM7CQkJdW5zaWduZWQgaW50IG9wdGlvbnMpCiB7Ci0JaWYgKCFwb29sLSZndDt0eF9tZXRhZGF0YV9sZW4pCiYjNDM7CWlmICghcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEEpKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBkYXRhIC0gcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgoteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0Mzt4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucykKIHsKLQlyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTsKJiM0MzsJcmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSwKJiM0MzsJCQkJICAgICAgIG9wdGlvbnMpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCkKQEAgLTUxMCw3ICYjNDM7NTEzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHgKLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKQogewogCXJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07CiB9CkBAIC01MzAsMTMgJiM0Mzs1MzMsMTQgQEAgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsCiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqCi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSkKJiM0MztfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSwKJiM0MzsJCQl1bnNpZ25lZCBpbnQgb3B0aW9ucykKIHsKIAlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpCiB7CiAJcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgKaW5kZXggMmJiMWQxMjJiMWJjNi4uYTdkZjU3Mzc4NGZkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaApAQCAtMTU0LDcgJiM0MzsxNTQsOCBAQCBzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHsKIAlzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhOwogfTsKIAotc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpOwomIzQzO3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLAomIzQzOwkJCQkgICB1MzIgb3B0aW9ucyk7CiAKIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCB4cF9nZXRfZG1hKHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaApAQCAtMTQ5LDYgJiM0MzsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHsKIAkJCV9fdTE2IGNzdW1fc3RhcnQ7CiAJCQkvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovCiAJCQlfX3UxNiBjc3VtX29mZnNldDsKJiM0MzsJCQlfX3UzMiByZXNlcnZlZDsKIAogCQkJLyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi8KIAkJCS8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovCmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19idWZmX3Bvb2wuYyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jCmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0Ci0tLSBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jCkBAIC03NjMsNiAmIzQzOzc2Myw3IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpOwogICogeHBfcmF3X2dldF9jdHggLSBnZXQgJmFtcDt4ZHBfZGVzYyBjb250ZXh0CiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0bwogICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpCiYjNDM7ICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpCiAgKgogICogSGVscGVyIGZvciBnZXR0aW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhIHBvaW50ZXIsIGlmIHByZXNlbnQuCiAgKiBTYXZlcyBvbmUgY2FsbCBvbiBob3RwYXRoIGFuZCBkb3VibGUgY2FsY3VsYXRpb24gb2YgdGhlIGFjdHVhbCBhZGRyZXNzLgpAQCAtNzcxLDE0ICYjNDM7NzcyLDE2IEBAIEVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpOwogICogUmV0dXJuOiBuZXcgJmFtcDt4ZHBfZGVzY19jdHggc3RydWN0IGNvbnRhaW5pbmcgZGVzYyYjMzk7cyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGEKICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuCiAgKi8KLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQomIzQzO3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLAomIzQzOwkJCQkgICB1MzIgb3B0aW9ucykKIHsKIAlzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHJldDsKIAogCWFkZHIgPSBfX3hwX3Jhd19nZXRfYWRkcihwb29sLCBhZGRyKTsKIAogCXJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpOwotCXJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpOwomIzQzOwlyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLAomIzQzOwkJCQkJICAgb3B0aW9ucyk7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKQEAgLTE0OSw2ICYjNDM7MTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7CiAJCQlfX3UxNiBjc3VtX3N0YXJ0OwogCQkJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwogCQkJX191MTYgY3N1bV9vZmZzZXQ7CiYjNDM7CQkJX191MzIgcmVzZXJ2ZWQ7CiAKIAkJCS8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovCiAJCQkvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU2CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgYW5kIFJlYWNoYWJpbGl0eSBvZiB0aGlzIFhEUC9BRl9YRFAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIFhEUCBhbmQgQUZfWERQICh4c2spIGNvZGUuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHBfcmF3X2dldF9jdHhgIHRvIGFjY2VwdCBhbiBgb3B0aW9uc2AgcGFyYW1ldGVyLiBUaGlzIHBhcmFtZXRlciBpcyBnZXR0aW5nIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGB4ZHBfZGVzYy5vcHRpb25zYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIHRoZW4gY2hlY2tzIGBvcHRpb25zICZhbXA7IFhEUF9UWF9NRVRBREFUQWAgYmVmb3JlIGFjdHVhbGx5IHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gU21hcnQuCgpUaGV5JiMzOTtyZSBhbHNvIGFkZGluZyBhIGBfX3UzMiByZXNlcnZlZDtgIGZpZWxkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiBgaWZfeGRwLmhgLiBBbmQgdGhlcmUmIzM5O3Mgc29tZSBjbGVhbnVwIGluIGBzdG1tYWNfeGRwX3htaXRfemNgLCByZW1vdmluZyBzb21lIGNvZGUgcmVsYXRlZCB0byBgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gZm9yIG1lIGlzOiB3aGF0JiMzOTtzIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlc2UgY2hhbmdlcz8gV2hlcmUgY2FuIHRoZXkgYmUgdHJpZ2dlcmVkLCBhbmQgd2hhdCYjMzk7cyB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlPyBJIHNlZSB0aGUgY2hhbmdlcyBhcmUgdG91Y2hpbmcgc2V2ZXJhbCBkcml2ZXJzOiBJbnRlbCYjMzk7cyBgaWdjYCwgTWVsbGFub3gmIzM5O3MgYG1seDVgLCBhbmQgU1RNaWNybyYjMzk7cyBgc3RtbWFjYC4gUGx1cywgaXQmIzM5O3MgYWx0ZXJpbmcgc29tZSBjb3JlIG5ldHdvcmtpbmcgaGVhZGVycyBhbmQgZmlsZXMsIGluY2x1ZGluZyBgeHNrLmhgLCBgeGRwX3NvY2tfZHJ2LmhgLCBhbmQgYHhza19idWZmX3Bvb2wuY2AuCgpUaGUgY29yZSBjaGFuZ2UsIGFzIEkgc2VlIGl0LCBpcyBpbiBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgOiBJdCBub3cgaGFzIGFuIGBvcHRpb25zYCBwYXJhbWV0ZXIgYW5kIHRoZSBjcnVjaWFsIGNoZWNrIGAhKG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKWAuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3IgdGhhdCB0aGUgY2hhbmdlcyBhcmUgdGllZCB0byB0aGUgYFhEUF9UWF9NRVRBREFUQWAgZmxhZy4gVGhhdCYjMzk7cyBnb29kLgoKU28sIEFGX1hEUCBzb2NrZXRzIGFyZSBkZWZpbml0ZWx5IGludm9sdmVkIGhlcmUsIGFzIGBYRFBfVFhfTUVUQURBVEFgIGlzIGEgZmxhZyByZWxhdGVkIHRvIEFGX1hEUC4gQUZfWERQIGlzIGEgY2VudHJhbCBuZXR3b3JraW5nIGNvbXBvbmVudC4gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBsaWtlbHkgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyLCB1c2luZyB2ZXRoIG9yIG90aGVyIHZpcnR1YWwgaW50ZXJmYWNlcy4gQnV0IHdhaXQgYSBtaW51dGUuIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGFsc28gKnVzZWQqIGluIGRyaXZlciBjb2RlISBUaGlzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdmlydHVhbCBkcml2ZXJzLCBsaWtlIHZldGggb3IgbWFjdmxhbi4gSWYgc28sIHRoYXQgb3BlbnMgdXAgYSBtdWNoIG1vcmUgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlIHRvIHNlZSBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGdldHRpbmcgY2FsbGVkIGJ5IGFueSBvZiB0aG9zZSB2aXJ0dWFsIGRyaXZlcnMuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwNzMtXHRcdGRtYSA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA3NDpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3NS1cdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTAxLVx0XHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM6MTAyOlx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjgxPXN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3MTgtXHRcdGRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3MTk6XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcyMC1cdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMyMjpfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMy1cdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMzE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzMjp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMzMy17XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMzQ6XHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzM1LVx0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUzNT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTM2Ol9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM3LVx0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTU0Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQzOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTQ0LXtcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NzU9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzgyLVx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3ODM6XHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg0LVx0XHRcdFx0XHQgICBvcHRpb25zKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODM4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gaXQgYXBwZWFycyB0aGF0IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIHJlYWxseSBvbmx5IGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgIGRyaXZlcnMuIFRoYXQmIzM5O3MgYSBwcmV0dHkgbGltaXRlZCBzY29wZSwgYWxsIHRoaW5ncyBjb25zaWRlcmVkLiBJdCYjMzk7cyBnb29kIHRvIGtub3cgd2hlcmUgaXQgaXMgKmFuZCBpc24mIzM5O3QqIHVzZWQuIE5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0ICp0cnVseSogdGhlIGNvbXBsZXRlIHBpY3R1cmU/IERpZG4mIzM5O3Qgd2UgaGF2ZSBzb21ldGhpbmcgZWxzZSB0aGF0IHRvdWNoZWQgWERQIGNvbnRleHQ/IFdoYXQgYWJvdXQgYHhwX3Jhd19nZXRfY3R4YD8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyBvciBvdmVybGFwcGluZyB1c2VzIHRoYXQgSSBhbSBmb3JnZXR0aW5nLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4cF9yYXdfZ2V0X2N0eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yMzQ9c3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0NC0gKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjQ1OiAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNDYtICogZGV0YWlscy5cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yNTI9eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1My17XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTQ6XHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTUtfVxuLS1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaD0xNTI9c3RydWN0IHhkcF9kZXNjX2N0eCB7XG4tLVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTE1Ni1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaDoxNTc6c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTU4LVx0XHRcdFx0ICAgdTMyIG9wdGlvbnMpO1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc2MD1FWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTtcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjItLyoqXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NjM6ICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzY0LSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc0LSAqL1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzc1OnN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc2LVx0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg3LX1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc4ODpFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRGlnZ2luZyBpbnRvIHRoZSBYRFAgQ29udGV4dCBSZXRyaWV2YWwqKgoKUmlnaHQsIHNvIGB4cF9yYXdfZ2V0X2N0eGAgaXMgd3JhcHBlZCBieSBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBUaGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIGxheWVyaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgaXRzZWxmLiBLbm93aW5nIHdoZXJlICp0aGF0KiBpcyB1c2VkIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaG93IHRoZSBYRFAgY29udGV4dCBpcyBiZWluZyBhY2Nlc3NlZCB3aXRoaW4gdGhpcyBYU0sgYnVmZmVyIHN5c3RlbS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgdGhlIGxhcmdlciBwaWN0dXJlIG9mIGhvdyB3ZSBnZXQgdGhlIGNvbnRleHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBzaXRlcyByZXZlYWwuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9yYXdfZ2V0X2N0eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTk6XHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yMzktLyoqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQxLSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjUyOnhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUxNT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTE3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDMyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBGbG93IGluIHRoZSBlQlBGL1hEUCBOZXR3b3JrIFN0YWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyB0cmFjZSB0aGlzIGRvd24uIEkgc2VlIHRoYXQgYHhza19idWZmX3Jhd19nZXRfY3R4YCBpcyBjYWxsZWQgd2l0aGluIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEkga25vdyBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGlzIGltcG9ydGFudCBmb3IgcmV0cmlldmluZyBidWZmZXIgY29udGV4dCBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIFhEUC9YU0sgZnJhbWV3b3JrLCBzbyBhbnkgcGxhY2UgdGhhdCBmdW5jdGlvbiBpcyBpbnZvbHZlZCBpcyBhIGtleSBhcmVhIG9mIGludGVyZXN0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCBpdHNlbGYuIFRoaXMgd2lsbCBwcm92aWRlIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBoYW5kbGVkIGFuZCB3aGVyZSB0aGlzIHNwZWNpZmljIGNvbnRleHQgcmV0cmlldmFsIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwYWNrZXQgdHJhbnNtaXNzaW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBsaWJldGggWFNLIGltcGxlbWVudGF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBoaWdobGlnaHQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgb3IgZGVidWdnaW5nIHN0ZXBzIEkgbWlnaHQgdGFrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzgtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc5OiAqIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgWFNrIHhtaXQgdy9tZXRhXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTgwLSAqIEB4ZGVzYzogXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTE6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nz1saWJldGhfeHNrX3htaXRfZmlsbF9idWYoc3RydWN0IGxpYmV0aF94ZHBfdHhfZnJhbWUgZnJtLCB1MzIgaSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjUyLVx0aWYgKHByaXYpXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjUzOlx0XHRkZXNjID0gX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoXHUwMDI2ZnJtLmRlc2MsIHNxLCBwcml2KTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTQtXHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTM4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipXaGVyZSBEb2VzIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgIEZpdCBJbj8qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYC4gSXQmIzM5O3MgcHJldHR5IGZ1bmRhbWVudGFsLCByaWdodD8gVGhhdCBmdW5jdGlvbiBpcyBjcnVjaWFsIHRvIHRoZSBlQlBGIGRhdGFwYXRoLiBOb3csIEkgbmVlZCB0byBqb2cgbXkgbWVtb3J5IHRvIHJlbWVtYmVyICpleGFjdGx5KiB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLiBJdCYjMzk7cyBvYnZpb3VzbHkgdGllZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBhdGgsIGZpbGxpbmcgdGhlIGJ1ZmZlciB0byBnZXQgcGFja2V0cyBvdXQuCgpJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIHR5cGljYWwgWERQL2VCUEYgZGF0YSBmbG93LiBJIGJlbGlldmUgSSYjMzk7bSB1c2luZyBgbGliZXRoYCwgd2hpY2ggaGFuZGxlcyB0aGUgRXRoZXJuZXQgaGVhZGVyIGdlbmVyYXRpb24gYW5kIG1hbmlwdWxhdGlvbi4gVGhlIGB4c2tfeG1pdGAgcGF0aCBmcm9tIHRoZSBYRFAgcHJvZ3JhbS4gU28sIGl0IHNob3VsZCBiZSBpbiB0aGUgY29udGV4dCBvZiBYRFAgc29ja2V0cyAoWFNLKSBvbiB0aGUgdHJhbnNtaXQgc2lkZSwgd2hpY2ggZmVlZHMgZGF0YSB0byB0aGUgZHJpdmVyIHJpbmcuIEJhc2ljYWxseSwgaXTigJlzIHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgYXBwbGljYXRpb24mIzM5O3MgZGF0YSBhbmQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIEkmIzM5O2QgaW1hZ2luZSBpdCB3b3VsZCBiZSBpbnZvbHZlZCBpbiBhc3NlbWJsaW5nIHRoZSBmcmFtZSBhbmQgaGFuZGluZyBpdCBvdmVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJvdW5kIHRoYXQgZnVuY3Rpb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgbGlicmFyeSBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuIElzIGl0IGRpcmVjdGx5IGNhbGxlZCBieSB0aGUgWERQIHByb2dyYW0sIG9yIGlzIHRoZXJlIGFub3RoZXIgZnVuY3Rpb24gaW4gYmV0d2Vlbj8gSSBzaG91bGQgcHJvYmFibHkgcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgY2FsbCBncmFwaHMgdG8gYmUgY2VydGFpbiwgdG8gZW5zdXJlIG15IGFzc3VtcHRpb25zIGFyZSBzb3VuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza194bWl0X2ZpbGxfYnVmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTc4LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE3OTogKiBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZCAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIFhTayB4bWl0IHcvbWV0YVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4MC0gKiBAeGRlc2M6IFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODMtICpcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxODQ6ICogU2FtZSBhcyBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZigpLCBidXQgcmVxdWVzdHMgbWV0YWRhdGEgcG9pbnRlciBhbmRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODUtICogZmlsbHMgYWRkaXRpb25hbCBmaWVsZHMgaW4gXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIHRvIGFzayBmb3IgbWV0YWRhdGEgb2ZmbG9hZC5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Mi1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE1LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjIxNjogKiBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIFhTayB4bWl0IHcvbyBtZXRhXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE3LSAqIEB4ZGVzYzogXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTIyMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMjQ6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMjUtXHRcdFx0ICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EpXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMzQ6ICogbGliZXRoX3hza194bWl0X2ZpbGxfYnVmIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgYW4gWFNrIHhtaXRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMzUtICogQGZybTogXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nj1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNDc6bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjQ4LVx0XHRcdCBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSwgdTY0IHByaXYpXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Mi1cdGlmIChwcml2KVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI1MzpcdFx0ZGVzYyA9IF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKFx1MDAyNmZybS5kZXNjLCBzcSwgcHJpdik7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU0LVx0ZWxzZVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI1NTpcdFx0ZGVzYyA9IF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmKFx1MDAyNmZybS5kZXNjLCBzcSk7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU2LVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yODU9bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0zMDQtXHRcdFx0XHRsaWJldGhfeGRwX3B0cl90b19wcml2KHRtbyksIHByZXAsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MzA1Olx0XHRcdFx0bGliZXRoX3hza194bWl0X2ZpbGxfYnVmLCB4bWl0KTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0zMDYtXHRmaW5hbGl6ZSh4ZHBzcSwgbiwgdHJ1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTQwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyBsaWJldGhfeHNrX3htaXRfZG9fYnVsayoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCB3aGVyZSBleGFjdGx5IGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXRpbGl6ZWQgaW4gbXkgbmV0d29yayBzdGFjayBvciBhcHBsaWNhdGlvbj8gSXQmIzM5O3MgdGhhdCBkaXJlY3QsIHByYWN0aWNhbCBhcHBsaWNhdGlvbiB0aGF0IG1hdHRlcnMuIEFtIEkgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgWERQIGltcGxlbWVudGF0aW9uLCBtYXliZSBzb21ldGhpbmcgY3VzdG9tLWJ1aWx0IGFyb3VuZCBBRl9YRFAgc29ja2V0cz8gT3IgaXMgaXQgcGFydCBvZiBhIGJyb2FkZXIgbmV0d29ya2luZyBsaWJyYXJ5LCB1c2VkIGFzIGEgbG93LWxldmVsIHByaW1pdGl2ZSBmb3IgcGFja2V0IHRyYW5zbWlzc2lvbj8KCkkmIzM5O20gbWVudGFsbHkgbWFwcGluZyB0aGUgY29kZSBmbG93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9ucy4gV2hhdCBkb2VzIHRoZSBidWxrIHRyYW5zbWlzc2lvbiBpbXBseT8gSXMgaXQgYSB3YXkgdG8gb3B0aW1pemUgdGhyb3VnaHB1dCBieSBiYXRjaGluZyBwYWNrZXRzLCBzaW1pbGFyIHRvIGhvdyBvdGhlciBpbnRlcmZhY2VzIHdvcmssIGJ1dCBzcGVjaWZpYyBmb3IgWERQPyBJcyBpdCBtYW5hZ2luZyB0aGUgY29tcGxleGl0aWVzIG9mIHJpbmcgYnVmZmVyIGludGVyYWN0aW9uIGFuZCBoYXJkd2FyZSBvZmZsb2FkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIHBhcmFtZXRlcnMgcGFzc2VkLCBhbmQgaG93IHRoZSBwYWNrZXRzIGFyZSBwcmVwYXJlZCBmb3IgdHJhbnNtaXNzaW9uLiBXaGF0IGFyZSB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBJcyBpdCBlZmZpY2llbnQsIG9yIGFyZSB0aGVyZSBib3R0bGVuZWNrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CgpMZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gZmluZCB0aGUgZnVuY3Rpb24gdXNlZCBpbiBvdXIgc3lzdGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza194bWl0X2RvX2J1bGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz0zMTY9Ym9vbCBpZHBmX3hza194bWl0KHN0cnVjdCBpZHBmX3R4X3F1ZXVlICp4c2tzcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MzI2Olx0cmV0dXJuIGxpYmV0aF94c2tfeG1pdF9kb19idWxrKHhza3NxLVx1MDAzZXBvb2wsIHhza3NxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0zMjctXHRcdFx0XHQgICAgICAgbWluKGZyZWUgLSAxLCB4c2tzcS1cdTAwM2V0aHJlc2gpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDc9bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI2NC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNjU6ICogbGliZXRoX3hza194bWl0X2RvX2J1bGsgLSBzZW5kIFhTayB4bWl0IGZyYW1lc1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI2Ni0gKiBAcG9vbDogWFNrIGJ1ZmZlciBwb29sIGNvbnRhaW5pbmcgdGhlIGZyYW1lcyB0byBzZW5kXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyODU6bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI4Ni1cdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI1OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIFhTSyBUcmFuc21pc3Npb24gUGF0aHMgaW4gVmlydHVhbCBEcml2ZXJzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gaG93IGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgZmFjdG9ycyBpbnRvIHRoZSBwaWN0dXJlLiBJIHNlZSB0aGF0IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYGlkcGZfeHNrX3htaXRgLCB3aGljaCBJIGtub3cgaXMgcGFydCBvZiB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIGRyaXZlciwgc28gYSBoYXJkd2FyZS1sZXZlbCBjb21wb25lbnQuIE5vdywgbXkgcXVlc3Rpb24gaXMsIGFyZSBhbnkgb2YgdGhlICp2aXJ0dWFsKiBkcml2ZXJzIG91dCB0aGVyZSwgeW91IGtub3csIHRoZSBvbmVzIHRoYXQgb2Z0ZW4gYWJzdHJhY3QgYXdheSB0aGUgaGFyZHdhcmUsIHV0aWxpemluZyBlaXRoZXIgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbnM/IEkmIzM5O20gc3BlY2lmaWNhbGx5IHdvbmRlcmluZyBpZiB0aGV5JiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBYRFAgU29ja2V0IGxheWVyIGF0IGFsbCwgb3IgcGVyaGFwcyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbiB0aGUgd3JvbmcgbWFubmVyLiBNeSBmaXJzdCBodW5jaD8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGB2ZXRoYC4gSXQmIzM5O3MgYSBjb21tb24gYW5kIHdlbGwtdW5kZXJzdG9vZCB2aXJ0dWFsIEV0aGVybmV0IHBhaXIsIGFuZCBhIHNlbnNpYmxlIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIFBlcmhhcHMgdGhlIGFuc3dlciBsaWVzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjE0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGB4cF9yYXdfZ2V0X2N0eGAgd2l0aGluIHRoZSBgdmV0aGAgQ29udGV4dCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB6ZXJvIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2ZXRoYCBjb250ZXh0LiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcsIGRlYnVnZ2luZywgb3IgcGVyaGFwcyBvcHRpbWl6aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIGhvdyByYXcgcGFja2V0cyBhcmUgaGFuZGxlZCB3aGVuIGB2ZXRoYCBpbnRlcmZhY2VzIGFyZSBpbnZvbHZlZC4gSSYjMzk7bSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoYXQgZnVuY3Rpb24uIElzIGl0IHdvcmtpbmcgYXMgZXhwZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHRoZXJlPyBXaGF0IGRhdGEgc3RydWN0dXJlcyBkb2VzIGl0IGludGVyYWN0IHdpdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBjb250ZXh0IGlzIHJldHJpZXZlZCwgd2hhdCB0aGF0IGNvbnRleHQgcmVwcmVzZW50cywgYW5kIGhvdyBpdCBpcyBzdWJzZXF1ZW50bHkgdXNlZC4gTXkgY29uY2VybiBpcyBwZXJoYXBzIGluIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGFuZCB0aGUgb3RoZXIgZmVhdHVyZXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHBfcmF3X2dldF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg2NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBSZWxhdGVkIFhEUCBNZXRhZGF0YSBSZXF1ZXN0cyoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzIGEgbGl0dGxlIHZhZ3VlLiBXZSYjMzk7dmUgZ290IGEgcHJvYmxlbSwgYW5kIHRoZSBkaXJlY3Rpb24gaXNuJiMzOTt0IGVudGlyZWx5IGNsZWFyLiBUbyBnZXQgbXkgYmVhcmluZ3MsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMsIHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb246IGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgdGhpcyBjb3VsZCBob2xkIHRoZSBrZXkuIE1ldGFkYXRhLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIFhEUCwgb2Z0ZW4gcHJvdmlkZXMgY3J1Y2lhbCBjb250ZXh0IG9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBwYWNrZXQgb3IgcmVxdWVzdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgZGV0YWlscyBvZiB0aGF0IGNhbGwg4oCTIGl0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgcm9vdCBvZiB0aGUgaXNzdWUgaXMgZXhwb3NlZC4gVGhpcyBmdW5jdGlvbiYjMzk7cyBwcm9iYWJseSBrZXksIHNvIGxldCYjMzk7cyBjaGVjayBpdCBvdXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza190eF9tZXRhZGF0YV9yZXF1ZXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTMwMzQ9c3RhdGljIHZvaWQgaWdjX3hkcF94bWl0X3pjKHN0cnVjdCBpZ2NfcmluZyAqcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDgyLVx0XHRtZXRhX3JlcS51c2VkX2Rlc2MgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4MzpcdFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QocG9vbCwgXHUwMDI2bWV0YSwgXHUwMDI2aWdjX3hza190eF9tZXRhZGF0YV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg0LVx0XHRcdFx0XHRcdTAwMjZtZXRhX3JlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4NjpcdFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgaGF2ZSB1cGRhdGVkIG5leHRfdG9fdXNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg3LVx0XHRudHUgPSByaW5nLVx1MDAzZW5leHRfdG9fdXNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwODk6XHRcdC8qIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KCkgbWF5IGhhdmUgdXBkYXRlZCBUeCBidWZmZXIgaW5mbyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA5MC1cdFx0YmkgPSBtZXRhX3JlcS50eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA5MjpcdFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgdXNlIGEgZmV3IGRlc2NyaXB0b3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDkzLVx0XHRidWRnZXQgLT0gbWV0YV9yZXEudXNlZF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTg9bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy01MDctXHRcdGlmIChtZXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjUwODpcdFx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cdTAwM2V4c2tfcG9vbCwgbWV0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy01MDktXHRcdFx0XHRcdFx0XHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNjU1LVx0aWYgKG1ldGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NjU2Olx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cdTAwM2V4c2tfcG9vbCwgbWV0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTctXHRcdFx0XHRcdFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIGVzZWcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY4MT1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzQ4LVx0XHRtZXRhX3JlcS5lZGVzYyA9IFx1MDAyNnR4X3EtXHUwMDNlZG1hX2VudHhbZW50cnldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNzQ5Olx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcdTAwMjZtZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzUwLVx0XHRcdFx0XHRcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcywgXHUwMDI2bWV0YV9yZXEpO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjA3LVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjIwODpcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHNxLVx1MDAzZXBvb2wsIFx1MDAyNmN0eC5tZXRhLCB0bW8sIFx1MDAyNmRlc2MpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIwOS1cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE0MT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDktXHQvKiB3ZSBjYW4gb25seSBhcnJpdmUgaGVyZSBpZiB0aGUgY29tcGxldGlvbiB0aW1lc3RhbXAgaGFzIGJlZW5cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTUwOlx0ICogcmVxdWVzdGVkIHZpYSBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVAsIHNlZSB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNTEtXHQgKi9cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yNjQ9eHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjc1LS8qKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjc2OiAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzctICogIGFuZCBjYWxsIGFwcHJvcHJpYXRlIHhza190eF9tZXRhZGF0YV9vcHMgb3BlcmF0aW9uLlxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI4Nj1zdGF0aWMgaW5saW5lIHZvaWRcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4Nzp4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI4OC1cdFx0XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTI4PXN0YXRpYyBpbmxpbmUgdm9pZFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTI5Onhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTMwLVx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NjA9RVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzY5LSAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzA6ICogTWV0YWRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGJ5IHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KCkuXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzEtICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NjMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBBRl9YRFAgWmVyby1Db3B5IFN1cHBvcnQgaW4gYHZldGhgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgQUZfWERQIHplcm8tY29weSBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YCBpcyBzaG93aW5nIHVwIGluIGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgdGhlIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGNvZGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBzaG93aW5nIGEgZmV3IGRpZmZlcmVudCBkcml2ZXJzIHRoYXQgYXJlIHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhpcyBtZXRhZGF0YSByZXF1ZXN0LiBIb3dldmVyLCBJJiMzOTt2ZSBnb3QgYSBuYWdnaW5nIHN1c3BpY2lvbiBhYm91dCBgdmV0aGAuCgpOb3csIEkgcmVtZW1iZXIgc2VlaW5nIHRoYXQgYHZldGhgIHVzZXMgYHZldGhfeGRwX3htaXRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGB2ZXRoX3hkcF94bWl0X29uZWAuIEFuZCBmcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSBzZWVtIGxpa2UgYHZldGhfeGRwX3htaXRfb25lYCBpcyBsZXZlcmFnaW5nIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIFRoaXMgcmFpc2VzIGEgcmVkIGZsYWcuIERvZXMgYHZldGhgIGhhdmUgc3VwcG9ydCBmb3IgQUZfWERQIHplcm8tY29weSwgb3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gSXQgc2VlbXMgdW5saWtlbHkuCgpJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgdmV0aGAgYWN0dWFsbHkgaGFzIGB4c2tfdHhfbWV0YWRhdGFfb3BzYCBkZWZpbmVkLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBjaGVjay4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfb3BzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmg9MjI9Ym9vbCBpZHBmX3hkcF90eF9mbHVzaF9idWxrKHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCB1MzIgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmgtMjgtICogQHNxOiBYRFAgcXVldWUgdG8gcHJvZHVjZSB0aGUgSFcgVHggZGVzY3JpcHRvciBvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94ZHAuaDoyOTogKiBAcHJpdjogXHUwMDI2eHNrX3R4X21ldGFkYXRhX29wcyBvbiBYU2sgeG1pdCBvciAlTlVMTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94ZHAuaC0zMC0gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg9Mzc1PWludCBpZ2NfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcXVldWVfaWQsIHUzMiBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTM3Ny0vKiBBRl9YRFAgVFggbWV0YWRhdGEgb3BlcmF0aW9ucyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oOjM3ODpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgaWdjX3hza190eF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTI5OTA9c3RhdGljIHZvaWQgaWdjX3hza19yZXF1ZXN0X2xhdW5jaF90aW1lKHU2NCBsYXVuY2hfdGltZSwgdm9pZCAqX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwMjg6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgaWdjX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDI5LVx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFx0XHQ9IGlnY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODItXHRcdG1ldGFfcmVxLnVzZWRfZGVzYyA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDgzOlx0XHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcdTAwMjZtZXRhLCBcdTAwMjZpZ2NfeHNrX3R4X21ldGFkYXRhX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODQtXHRcdFx0XHRcdFx1MDAyNm1ldGFfcmVxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz03MTIwPXN0YXRpYyBpbnQgaWdjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTcxOTMtXHRuZXRkZXYtXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFx1MDAyNmlnY194ZHBfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NzE5NDpcdG5ldGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gXHUwMDI2aWdjX3hza190eF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MTk1LVx0aWdjX2V0aHRvb2xfc2V0X29wcyhuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM9NzQ5PXN0YXRpYyB2b2lkIGlnY19wdHBfdHhfcmVnX3RvX3N0YW1wKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4Ny1cdFx0XHR4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoXHUwMDI2dHN0YW1wLVx1MDAzZXhza19tZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYzo3ODg6XHRcdFx0XHRcdFx0IFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODktXHRcdFx0XHRcdFx0IFx1MDAyNnNoaHd0c3RhbXBzLmh3dHN0YW1wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oPTE1PXN0cnVjdCB4ZHBfZnJhbWVfYnVsaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2LmgtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oOjE3OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBsaWJldGhfeHNrdG1vX3Nsb3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oLTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYz0zOTA9dm9pZCBfX2xpYmV0aF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTM5Mi1cdFx0XHQgICAgICAgdTMyIHpjX3NlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM6MzkzOlx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTM5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTQwNi1cdGRldi1cdTAwM2V4ZHBfemNfbWF4X3NlZ3MgPSB6Y19zZWdzID8gOiAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjQwNzpcdGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gemNfc2VncyA/IHRtbyA6IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtNDA4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9MTQ9dm9pZCBfX2NvbGQgbGliZXRoX3hza190eF9yZXR1cm5fYnVsayhjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSAqYnEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjIzOmNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIGxpYmV0aF94c2t0bW9fc2xvdyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yNC1cdC50bW9fcmVxdWVzdF9jaGVja3N1bVx0XHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTMwND1zdGF0aWMgdm9pZCBtbHg1ZV94c2tfcmVxdWVzdF9jaGVja3N1bSh1MTYgY3N1bV9zdGFydCwgdTE2IGNzdW1fb2Zmc2V0LCB2b2lkICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6MzEyOmNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIG1seDVlX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzEzLVx0LnRtb19maWxsX3RpbWVzdGFtcFx0XHQ9IG1seDVlX3hza19maWxsX3RpbWVzdGFtcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NDU4PW1seDVlX3htaXRfeGRwX2ZyYW1lX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNTA4LVx0XHRcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHNxLVx1MDAzZXhza19wb29sLCBtZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjUwOTpcdFx0XHRcdFx0XHRcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTUxMC1cdFx0XHRcdFx0XHRcdTAwMjZzZXNzaW9uLVx1MDAzZXdxZS1cdTAwM2VldGgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz01NDA9bWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTYtXHRcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHNxLVx1MDAzZXhza19wb29sLCBtZXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjY1NzpcdFx0XHRcdFx0XHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcywgZXNlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNjU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz02NjU9c3RhdGljIHZvaWQgbWx4NWVfZnJlZV94ZHBzcV9kZXNjKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTc0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo3NDM6XHRcdFx0XHR4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoY29tcGwsIFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIFx1MDAyNnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTc0NC1cdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oPTExMT1leHRlcm4gY29uc3Qgc3RydWN0IHhkcF9tZXRhZGF0YV9vcHMgbWx4NWVfeGRwX21ldGFkYXRhX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaDoxMTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIG1seDVlX3hza190eF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTgyOT1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9uaWNfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODQwLVx0bmV0ZGV2LVx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZtbHg1ZV94ZHBfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODQxOlx0bmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODQyLVx0bmV0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY2NT1zdGF0aWMgdm9pZCBzdG1tYWNfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2NzU6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjc2LVx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFx0XHQ9IHN0bW1hY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjgxPXN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NDktXHRcdHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KHBvb2wsIFx1MDAyNm1ldGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3NTA6XHRcdFx0XHRcdFx1MDAyNnN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzLCBcdTAwMjZtZXRhX3JlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NTEtXHRcdGlmIChzZXRfaWMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4MTE9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODc3LVx0XHRcdFx0eHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKFx1MDAyNnR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ueHNrX21ldGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI4Nzg6XHRcdFx0XHRcdFx0XHQgXHUwMDI2c3RtbWFjX3hza190eF9tZXRhZGF0YV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4NzktXHRcdFx0XHRcdFx0XHQgXHUwMDI2dHhfY29tcGwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc4ND1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03OTAxLVx0bmRldi1cdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXHUwMDI2c3RtbWFjX3hkcF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5MDI6XHRuZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkwMy1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MTI9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE4OTEtICpcdEB4ZHBfbWV0YWRhdGFfb3BzOlx0SW5jbHVkZXMgcG9pbnRlcnMgdG8gWERQIG1ldGFkYXRhIGNhbGxiYWNrcy5cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTg5MjogKlx0QHhza190eF9tZXRhZGF0YV9vcHM6XHRJbmNsdWRlcyBwb2ludGVycyB0byBBRl9YRFAgVFggbWV0YWRhdGEgY2FsbGJhY2tzLlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xODkzLSAqXHRAZXRodG9vbF9vcHM6XHRNYW5hZ2VtZW50IG9wZXJhdGlvbnNcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNTI9c3RydWN0IG5ldF9kZXZpY2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjI2Mi1cdGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzICp4ZHBfbWV0YWRhdGFfb3BzO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMjYzOlx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnhza190eF9tZXRhZGF0YV9vcHM7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNjQtXHR1bnNpZ25lZCBzaG9ydFx0XHRnZmxhZ3M7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTE4MjE9dm9pZCBfX2xpYmV0aF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjMtXHRcdFx0ICAgICAgIHUzMiB6Y19zZWdzLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4MjQ6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8pO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjUtdm9pZCBsaWJldGhfeGRwX3NldF9yZWRpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSk7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE2Nz1zdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hza3Rtb19yZXFfY3N1bSh1MTYgY3N1bV9zdGFydCwgdTE2IGNzdW1fb2Zmc2V0LFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzMtLyogT25seSB0byBpbmxpbmUgdGhlIGNhbGxiYWNrcyBiZWxvdywgdXNlIEBsaWJldGhfeHNrdG1vIGluIGRyaXZlcnMgaW5zdGVhZCAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE3NDpzdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3NS1cdC50bW9fcmVxdWVzdF9jaGVja3N1bVx0PSBsaWJldGhfeHNrdG1vX3JlcV9jc3VtLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTk0LXtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTU6XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vID0gbGliZXRoX3hkcF9wcml2X3RvX3B0cihwcml2KTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTYtXHRzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjIGRlc2M7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg2Olx0XHRcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8sXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjg3LVx0XHRcdHUzMiAoKnByZXApKHZvaWQgKnhkcHNxLCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSksXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD00OD1zdHJ1Y3QgeGRwX3NvY2sge1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE2LSAqL1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMTc6c3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMge1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMTgtXHR2b2lkXHQoKnRtb19yZXF1ZXN0X3RpbWVzdGFtcCkodm9pZCAqcHJpdik7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xNDE9c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV90b19jb21wbChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTU3LSAqICB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUgLSBFdmFsdWF0ZSBBRl9YRFAgVFggbWV0YWRhdGEgYXQgY29tcGxldGlvblxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNTg6ICogIGFuZCBjYWxsIGFwcHJvcHJpYXRlIHhza190eF9tZXRhZGF0YV9vcHMgb3BlcmF0aW9uLlxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNTktICogIEBjb21wbDogcG9pbnRlciB0byBjb21wbGV0aW9uIG1ldGFkYXRhIHByb2R1Y2VkIGZyb20geHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE2MDogKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNjEtICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFkXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xNjY9c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTY3Olx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcyxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY4LVx0XHRcdFx0XHQgICAgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTIwNT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsLFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDY6XHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0yMDctXHRcdFx0XHRcdCAgICB2b2lkICpwcml2KVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI2ND14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzYtICogIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0IC0gRXZhbHVhdGUgQUZfWERQIFRYIG1ldGFkYXRhIGF0IHN1Ym1pc3Npb25cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3NzogKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzgtICogIEBwb29sOiBwb2ludGVyIHRvIEFGX1hEUCBidWZmZXIgcG9vbCwgdXNlZCB0byB2YWxpZGF0ZSB0aGUgbWV0YWRhdGFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3OS0gKiAgQHBtZXRhOiBwb2ludGVyIHRvIHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4MDogKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9Mjg3PXhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjg4LVx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4OTpcdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLCB2b2lkICpwcml2KVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjkwLXtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01Mjk9eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzAtXHRcdFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqKnBtZXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTMxOlx0XHRcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsIHZvaWQgKnByaXYpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzIte1xuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9NTE9WERQX01FVEFEQVRBX0tGVU5DX3h4eFxuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtNTMtXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU0Olx0aWYgKG5ldGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzKSB7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU1Olx0XHRpZiAobmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXHUwMDNldG1vX2ZpbGxfdGltZXN0YW1wKVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy01Ni1cdFx0XHR4c2tfZmVhdHVyZXMgfD0gTkVUREVWX1hTS19GTEFHU19UWF9USU1FU1RBTVA7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU3Olx0XHRpZiAobmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXHUwMDNldG1vX3JlcXVlc3RfY2hlY2tzdW0pXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTU4LVx0XHRcdHhza19mZWF0dXJlcyB8PSBORVRERVZfWFNLX0ZMQUdTX1RYX0NIRUNLU1VNO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzo1OTpcdFx0aWYgKG5ldGRldi1cdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzLVx1MDAzZXRtb19yZXF1ZXN0X2xhdW5jaF90aW1lKVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy02MC1cdFx0XHR4c2tfZmVhdHVyZXMgfD0gTkVUREVWX1hTS19GTEFHU19UWF9MQVVOQ0hfVElNRV9GSUZPO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIEFGX1hEUCBUWCBNZXRhZGF0YSBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGB4c2tfdHhfbWV0YWRhdGFfb3BzYCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBvbmx5IGltcGxlbWVudGVkIGluIGEgZmV3IGRyaXZlcnM6IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLiBUaGF0IHNlZW1zIGEgbGl0dGxlIGxpbWl0ZWQuIE5vdywgd2FpdCBhIG1pbnV0ZS4uLiBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGl0IGluIGB2ZXRoYC4gSG1tLCBgdmV0aGAgaXMgYSB2aXJ0dWFsIGludGVyZmFjZSwgc28gaG93IGRvZXMgaXQgaGFuZGxlIG1ldGFkYXRhIGluIHRoZSBUWCBwYXRoPyBEb2VzIGl0IHJlbHkgb24gYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgcGVyaGFwcyBgeHBfcmF3X2dldF9jdHhgIGluc3RlYWQ/CgpMZXQgbWUgZG91YmxlLWNoZWNrIGB2ZXRoYCBqdXN0IHRvIGJlIHN1cmUuIEkgKnRob3VnaHQqIEkgZ3JlcHBlZCBmb3IgYm90aCBmdW5jdGlvbnMsIGB4cF9yYXdfZ2V0X2N0eGAgYW5kIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIGJ1dCBubyBkaWNlLiBJJiMzOTtsbCBleHRlbmQgdGhlIHNlYXJjaCwganVzdCBpbiBjYXNlLCBhbmQgZXhwYW5kIGl0IHRvIHRoZSBgbmV0L3hkcC9gIGFuZCBgbmV0L2NvcmUvYCBkaXJlY3RvcmllcywgbG9va2luZyBmb3IgYHhwX3Jhd19nZXRfY3R4YC4gSXMgdGhlcmUgc29tZSBjbGV2ZXIgdmlydHVhbCBkcml2ZXIsIHBlcmhhcHMgb25lIHN1cHBvcnRpbmcgQUZfWERQIHplcm8gY29weSwgdGhhdCBtaWdodCBiZSB1c2luZyB0aGVzZSBmdW5jdGlvbnMgaW4gYSBub24tb2J2aW91cyB3YXk/CgpPa2F5LCBzaW5jZSBpdCYjMzk7cyBhIHZpcnR1YWwgaW50ZXJmYWNlLCBwZXJoYXBzIEkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIGB4c2tfYnVmZl9wb29sYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIHRvIHNlZSBob3cgaXQmIzM5O3MgbWFuYWdpbmcgYnVmZmVyIHBvb2xzLiBUaGlzIGxpbmUgb2YgaW5xdWlyeSBzaG91bGQgdGVsbCB0aGUgdGFsZSBvZiBob3cgaXQgZG9lcyB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfcG9vbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzY5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBBRl9YRFAgYW5kIFplcm8tQ29weSBTdXBwb3J0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYHZldGhgIGludGVyZmFjZSB1dGlsaXplZCB0aGUgYHhza19idWZmX3Bvb2xgIGZvciBBRl9YRFAgemVyby1jb3B5IG9wZXJhdGlvbnMsIGJ1dCBub3cgSSYjMzk7bSBkb3VidGluZyB0aGF0IGFzc3VtcHRpb24uIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBBRl9YRFAmIzM5O3MgemVyby1jb3B5IGZ1bmN0aW9uYWxpdHkgaXNuJiMzOTt0IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhY3Jvc3MgYWxsIG5ldHdvcmsgZHJpdmVyczsgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gY2VydGFpbiBoYXJkd2FyZSBhbmQsIHRoZXJlZm9yZSwgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsIGRyaXZlcnMuIFNvLCBJIG5lZWQgdG8gcGlucG9pbnQgd2hpY2ggZHJpdmVycyBhY3R1YWxseSAqZG8qIHN1cHBvcnQgQUZfWERQJiMzOTtzIHplcm8tY29weS4gTGV0JiMzOTtzIGdldCBhIGxpc3QgYW5kIHZlcmlmeSB0aGUgY29tcGF0aWJpbGl0eSBtYXRyaXguIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGltcGxlbWVudCBhbnl0aGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfcG9vbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTgwPXN0cnVjdCB0c25lcF90eCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cdGludCBpbmNyZW1lbnRfb3duZXJfY291bnRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6OTM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC0xMzAtXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoxMzE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9iYXRjaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oOjIzMjpcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTIzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTI2MD11MzIgdHNuZXBfZ2V0X2lycV9jb2FsZXNjZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MjYxOmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTIwNzQ9c3RhdGljIGludCB0c25lcF9uZXRkZXZfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjA5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDk2OmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jPTIxPXN0YXRpYyBpbnQgdHNuZXBfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XHRcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz01OD1zdGF0aWMgaW50IHRzbmVwX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTU5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy02MS1cdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9ODA9aW50IHRzbmVwX3hkcF9zZXR1cF9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XHRcdFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy04Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaC01MDYtXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo1MDc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVx0c3RydWN0IGRwYWEyX2V0aF9icCAqYnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oOjg0NzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTg0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MTczPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2Rpc2FibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQoZGV2LCBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3Ni1cdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTIyMD1zdGF0aWMgaW50IGRwYWEyX3hza19lbmFibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcdFx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0yMjItXHRcdFx0XHQgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NDQtXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaDo1NDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaD01NjE9c3RydWN0IGZlY19lbmV0X3ByaXZfcnhfcSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2My1cdHVuaW9uIGZlY19yeF9idWZmZXIgcnhfYnVmW1JYX1JJTkdfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNDgyPXN0YXRpYyBib29sIGZlY19lbmV0X3hza194bWl0KHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNDgzOlx0XHRcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cdFx0XHQgICAgICB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTU2NT1zdGF0aWMgaW50IGZlY19lbmV0X3R4X3F1ZXVlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcxOS1cdGlmICh0eHEtXHUwMDNleHNrX3Bvb2wpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE3MjA6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NDIwPWZlY19hbGxvY19uZXdfcnhxX3hzayhzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLCBpbnQgcXVldWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NDIxOlx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ0MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ1MjI9c3RhdGljIGludCBmZWNfeHNrX3Jlc3RhcnRfbmFwaShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDUyMzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDUyNC1cdFx0XHRcdHUxNiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTYxPXN0YXRpYyBpbnQgZmVjX2VuYWJsZV94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU2MjpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVx0XHRcdCAgICAgICB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU5Mj1zdGF0aWMgaW50IGZlY19kaXNhYmxlX3hza19wb29sKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5NS1cdHN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3EgKnR4cSA9IGZlcC1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTk2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKm9sZF9wb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5Ny1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDYxOD1zdGF0aWMgaW50IGZlY19zZXR1cF94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDYxOTpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXHRcdFx0ICAgICAgdTE2IHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MjQyPXN0cnVjdCBndmVfcnhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDMtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQ1LVx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oPTQ3Mz1zdHJ1Y3QgZ3ZlX3R4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtNjU5LVx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC02NjEtXHR1NjQgeGRwX3hza19zZW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xMjI3PXN0YXRpYyBpbnQgZ3ZlX3JlZ194c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcdFx0XHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTIyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI4NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcnhfY2ZnLm51bV9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTI4NjpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTYzMDpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTYzMS1cdFx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTY3OT1zdGF0aWMgaW50IGd2ZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGlfdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTY4NTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODYtXHRpbnQgdHhfcWlkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jPTEwODQ9c3RhdGljIGJvb2wgZ3ZlX3hza190eF9kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3R4X3JpbmcgKnR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmM6MTA4NzpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHgtXHUwMDNleHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYy0xMDg4LVx0c3RydWN0IHhkcF9kZXNjIGRlc2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0zNDAyPXN0YXRpYyB2b2lkIGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MzQyNDpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmk0MGVfeHNrX3Bvb2woc3RydWN0IGk0MGVfcmluZyAqcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMzQyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaD0zMjc9c3RydWN0IGk0MGVfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oOjQwMjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgtNDAzLX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo4MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVx0XHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDItXHRib29sIGlmX3J1bm5pbmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE4Mi0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6MTgzOmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9NjMwPWJvb2wgaTQwZV9jbGVhbl94ZHBfdHhfaXJxKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NjMyOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKmJwID0gdHhfcmluZy1cdTAwM2V4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy02MzMtXHR1MzIgaSwgY29tcGxldGVkX2ZyYW1lcywgeHNrX2ZyYW1lcyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jPTc0Nj12b2lkIGk0MGVfeHNrX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVx0dTE2IG50YyA9IHR4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiwgbnR1ID0gdHhfcmluZy1cdTAwM2VuZXh0X3RvX3VzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo3NDk6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTc1MC1cdHN0cnVjdCBpNDBlX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTE5PXN0cnVjdCBuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjIwOnN0cnVjdCB4c2tfYnVmZl9wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0yMz1pbnQgaTQwZV9xdWV1ZV9wYWlyX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgaW50IHF1ZXVlX3BhaXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaC0yNS1cdFx0XHR1MTYgcWlkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkzLSAqIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkIGFzIHplcm8tY29weSwgTlVMTCBvdGhlcndpc2UuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk2LVx0XHRcdFx0XHRcdFx0dTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5ODpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHZzaS1cdTAwM2VuZXRkZXYsIHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyODAtXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTI4MTpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sID0gUkVBRF9PTkNFKHR4X3JpbmctXHUwMDNleHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cdFx0Ym9vbCB3ZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMzEwLVx0aWNlX2Zvcl9lYWNoX3J4X3JpbmcocnhfcmluZywgcV92ZWN0b3ItXHUwMDNlcngpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMTE6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVx1MDAzZXhza19wb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMTItXHRcdGludCBjbGVhbmVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMwNC1cdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg9MzQ5PXN0cnVjdCBpY2VfdHhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzY1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTI2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVx1MDAzZW5ldGRldiwgcWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTQ0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTQ1OmljZV94c2tfcG9vbF9lbmFibGUoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0xNzQ9aWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTk3OmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI2MS1cdFx0XHQgICAgIHVuaW9uIGljZV8zMmJfcnhfZmxleF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI5MzpcdFx0XHRcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MzQyPWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XHRcdFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjM2MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTQzMj1zdGF0aWMgaW50IGljZV94bWl0X3hkcF90eF96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVx0XHRcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQzNDpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy00NzMtXHRcdHR4X2Rlc2MtXHUwMDNlY21kX3R5cGVfb2Zmc2V0X2JzeiA9IGljZV9idWlsZF9jdG9iKDAsIDAsIHNpemUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0NzQ6XHRcdC8qIGFjY291bnQgZm9yIGVhY2ggeGRwX2J1ZmYgZnJvbSB4c2tfYnVmZl9wb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQ3NS1cdFx0eGRwX3JpbmctXHUwMDNleGRwX3R4X2FjdGl2ZSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01MTU9aWNlX3J1bl94ZHBfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVx0ICAgICAgIHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2csIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjUxNzpcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTUxOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo1Njg6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01NjktXHRcdFx0aW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTcwOT1zdGF0aWMgdm9pZCBpY2VfeG1pdF9wa3Qoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzEwOlx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVx0XHRcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzM0PXN0YXRpYyB2b2lkIGljZV94bWl0X3BrdF9iYXRjaChzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XHRcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzM2LVx0XHRcdCAgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzcwOlx0XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXHRcdFx0XHRzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLCB1MzIgbmJfcGt0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzkxOmJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03OTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTA9c3RydWN0IGljZV92c2k7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjEzOmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTE0LVx0XHQgICAgICAgdTE2IHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE1PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xNy1cdFx0XHRpbnQgYnVkZ2V0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyMDpcdFx0XHQgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMjEtYm9vbCBpY2VfeHNrX2FueV9yeF9yaW5nX2VuYShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTIzPXZvaWQgaWNlX3hza19jbGVhbl94ZHBfcmluZyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjQ6Ym9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0zND1zdGF0aWMgaW5saW5lIGJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0zNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjQyOlx0XHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTQzLVx0XHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTQ5PWljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XHRcdCAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cdFx0ICAgIGludCBfX2Fsd2F5c191bnVzZWQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NTc9aWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTg6XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgX19hbHdheXNfdW51c2VkICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtNTktXHRcdCAgICAgdTE2IF9fYWx3YXlzX3VudXNlZCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjMtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeHNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2NS1cdFx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTY0Mz1zdHJ1Y3QgaWRwZl90eF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC02NTktXHRcdHN0cnVjdCBkZXZpY2UgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NjYwOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjYxLVx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTcyMD1saWJldGhfY2FjaGVsaW5lX3NldF9hc3NlcnQoc3RydWN0IGlkcGZfdHhfcXVldWUsIDY0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcdTAwMjZ4ZHBfYnVmZiBmb3IgWFNrIFJ4IGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NzM0OiAqIEBwb29sOiBcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzM1LSAqIEBoZHJfYnVmOiBcdTAwMjZsaWJldGhfZnFlIGZvciBoZWFkZXIgYnVmZmVyc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NzU1PXN0cnVjdCBpZHBmX2J1Zl9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjc2NTpcdFx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzY2LVx0XHR9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz0yNj1zdGF0aWMgdm9pZCBpZHBmX3hza19zZXR1cF9idWZxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVx0Y29uc3Qgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyA9IFx1MDAyNnZwb3J0LVx1MDAzZWRmbHRfcXZfcnNyYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MzA6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXHR1MzIgcWlkID0gVTMyX01BWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU4LVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTc5PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX2NvbXBscShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjgyOlx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTgzLVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU1ND1pbnQgaWRwZl94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gYnBmLVx1MDAzZXhzay5wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXHR1MzIgcWlkID0gYnBmLVx1MDAzZXhzay5xdWV1ZV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9MzE5PXN0cnVjdCBpZ2JfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDozNjU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtMzY2LX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU5PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODYyOnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2My1cdFx0XHRcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODY0PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2NTpcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2Ni1cdFx0ICAgICAgIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTg2Nz1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4Njg6XHRcdFx0ICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY5LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04NzA9aW50IGlnYl9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODcxOlx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODcyOmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg3My1pbnQgaWdiX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHFpZCwgdTMyIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODItXHRcdFx0XHRcdFx0ICAgICBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04Mjg0LVx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9ODMyNz1zdGF0aWMgYm9vbCBpZ2JfY2xlYW5fdHhfaXJxKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBpbnQgbmFwaV9idWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNS1cdHN0cnVjdCBpZ2JfdHhfYnVmZmVyICp0eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNy1cdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz01Nz1zdGF0aWMgdm9pZCBpZ2JfdHhyeF9yaW5nX2VuYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODM6c3RydWN0IHhza19idWZmX3Bvb2wgKmlnYl94c2tfcG9vbChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVx0XHRcdFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXHRpbnQgcWlkID0gcmluZy1cdTAwM2VxdWV1ZV9pbmRleDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz05Nz1zdGF0aWMgaW50IGlnYl94c2tfcG9vbF9lbmFibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo5ODpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVx0XHRcdCAgICAgICB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTM5PXN0YXRpYyBpbnQgaWdiX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVx0c3RydWN0IGlnYl9yaW5nICpyeF9yaW5nO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNjk6XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTcwLVx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc3LVx0XHRcdCAgICAgdW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsIHUxNiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MjAxOlx0XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTIwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0yOTQ9c3RhdGljIGludCBpZ2JfcnVuX3hkcF96YyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6Mjk1Olx0XHRcdCAgc3RydWN0IHhkcF9idWZmICp4ZHAsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVx0XHRcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTM0MT1pbnQgaWdiX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWdiX3FfdmVjdG9yICpxX3ZlY3RvcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6NDY1OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTE0OD1zdHJ1Y3QgaWdjX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDQtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6MjA1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTIwNi19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE2LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDM2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSByaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzNy1cdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5xID0gdHhyaW5nX3R4cShyaW5nKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jPTc0OT1zdGF0aWMgdm9pZCBpZ2NfcHRwX3R4X3JlZ190b19zdGFtcChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXHRpZiAodHN0YW1wLVx1MDAzZWJ1ZmZlcl90eXBlID09IElHQ19UWF9CVUZGRVJfVFlQRV9YU0spIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jPTU2PXN0YXRpYyBpbnQgaWdjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy01OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTEyMC1cdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjEyMTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjE1OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTE2MC1cdFx0ICAgICAgIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTgtXHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmg6OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTEwLVx0XHQgICAgICAgdTE2IHF1ZXVlX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3NTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBYU0sgQnVmZmVyIFBvb2wgVXNhZ2UgaW4gVmlydHVhbCBEcml2ZXJzKioKCkFscmlnaHQsIHNvIGB4c2tfYnVmZl9wb29sYCBpcyBhIHByZXR0eSB1YmlxdWl0b3VzIHRoaW5nLCBpc24mIzM5O3QgaXQ/IFNob3dzIHVwIGFsbCBvdmVyIHRoZSBwbGFjZSBpbiBkcml2ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvZiB0aGVzZSBkcml2ZXJzIHRoYXQgdXNlIGl0IGFyZSBhY3R1YWxseSB2aXJ0dWFsIG9uZXMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7dmUgZ290IGB0c25lcGAsIHdoaWNoIGlzIHRoYXQgVGltZSBTZW5zaXRpdmUgTmV0d29ya2luZyBFbmRwb2ludCBGUEdBIHRoaW5nLi4uIG5vcGUuIGBkcGFhMmAsIEZyZWVzY2FsZSYjMzk7cyBEYXRhIFBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSAtIG5haCwgbm90IHZpcnR1YWwuIE9rYXksIGBmZWNgLCB0aGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIGZyb20gRnJlZXNjYWxlIC0gc3RpbGwgbm8gZGljZS4gQWgsIGhvbGQgb24uLi4gdGhlcmUmIzM5O3MgYGd2ZWAsIEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0LiBZZXMhICpUaGF0JiMzOTtzKiBhIHZpcnR1YWwgZHJpdmVyLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQuIExldCYjMzk7cyBmaW5kIG91dCBpZiBgZ3ZlYCBpcyBsZXZlcmFnaW5nIGVpdGhlciBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciB0aGUgb2xkIGB4cF9yYXdfZ2V0X2N0eGAuIFRoYXQmIzM5O2xsIHRlbGwgdXMgc29tZXRoaW5nIGFib3V0IGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE0MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgeHBfcmF3X2dldF9jdHhgIHdpdGhpbiBgZ3ZlYCoqCgpPa2F5LCBzbyB0aGUgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGB4cF9yYXdfZ2V0X2N0eGAg4oCTIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBiZWhhdmlvciB3aXRoaW4gdGhlIGBndmVgIGNvbnRleHQuIFRoaXMgbGlrZWx5IG1lYW5zIEkmIzM5O20gbG9va2luZyBmb3IgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQsIG9yIHBvdGVudGlhbGx5IHNvbWUgY29yZSByZW5kZXJpbmcgb3IgY29udGV4dCBtYW5hZ2VtZW50IHBpZWNlLiBNeSBmaXJzdCBzdGVwIGlzIHByb2JhYmx5IHRvIHB1bGwgdXAgdGhlIGNvZGUgZm9yIHRoYXQgZnVuY3Rpb24gYW5kIHF1aWNrbHkgcmV2aWV3IGl0cyBwdXJwb3NlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGF0IGRhdGEgaXQgcmVjZWl2ZXMgYW5kIHJldHVybnMuIFdoYXQgYXJlIHRoZSBrZXkgb3BlcmF0aW9ucyBpdCBwZXJmb3Jtcz8gSXMgaXQgaW52b2x2ZWQgaW4gY3JlYXRpbmcsIHJldHJpZXZpbmcsIG9yIG1hbmFnaW5nIGFueSBjcml0aWNhbCBoYW5kbGVzIG9yIG9iamVjdHMgcmVsYXRlZCB0byBncmFwaGljcyByZXNvdXJjZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBvZiBjb25jZXJuIGxpa2UgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcz8gSSB3aWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgZnVuY3Rpb24gcG90ZW50aWFsbHkgaW5mbHVlbmNlcyB0aGUgcGVyZm9ybWFuY2UsIHN0YWJpbGl0eSBhbmQgZ2VuZXJhbCBiZWhhdmlvdXIgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwX3Jhd19nZXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQxNgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgZnJvbSB0aGUgaW5pdGlhbCBwcm9tcHQ6CgoqKkFuYWx5emluZyBgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgIGluIGBndmVgKioKCkFscmlnaHQsIG15IGJyYWluIGp1c3Qga2lja2VkIGludG8gZ2Vhci4gVGhlIGluaXRpYWwgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogaXQmIzM5O3MgZGlyZWN0aW5nIG1lIHRvIGV4YW1pbmUgdGhlIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAgY29tcG9uZW50IHdpdGhpbiB0aGUgYGd2ZWAgY29udGV4dC4gVGhpcyBsaWtlbHkgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhc3BlY3RzIG9mIHRoZSBHZW5lcmljIFZpcnR1YWwgRXRoZXJuZXQgKEdWRSkgZHJpdmVyIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGhvdyBpdCBoYW5kbGVzIHRoZSB0cmFuc21pc3Npb24gKFRYKSBzaWRlIG9mIHRoaW5ncyBpbiB0aGUgWERQIChlWHByZXNzIERhdGEgUGF0aCkgd29ybGQsIHdpdGggbWV0YWRhdGEgcmVxdWVzdHMuIE15IGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIHJlcXVlc3QgcGVydGFpbnMgdG8gc3BlY2lmaWMgZGV0YWlscyBvciBzdXBwbGVtZW50YXJ5IGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIHBhY2tldHMgYmVpbmcgc2VudCB0aHJvdWdoIHRoZSBYRFAgc29ja2V0LiBQZXJoYXBzIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBWTEFOIHRhZ2dpbmcsIHF1ZXVlIGFzc2lnbm1lbnQsIGNoZWNrc3VtIG9mZmxvYWQgZGlyZWN0aXZlcywgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzPyBNeSBmaXJzdCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSB0aGVzZSBzdXNwaWNpb25zIGJ5IGNoZWNraW5nIHRoZSBjb2RlYmFzZSBhbmQgZmluZGluZyBvdXQgZXhhY3RseSB3aGF0IHR5cGUgb2YgJiMzNDttZXRhZGF0YSYjMzQ7IHRoZSByZXF1ZXN0IGVuY29tcGFzc2VzLiBJIHdpbGwgcGF5IHBhcnRpY3VsYXIgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb25zdW1lIHRoZSByZXF1ZXN0LCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBUWCBwYXRoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgdGVsbHMgdXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NzQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqTmV0d29yayBEcml2ZXIgRGVlcCBEaXZlOiBFeGFtaW5pbmcgYHZpcnRpb19uZXRgIGFuZCBYRFAqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGB2aXJ0aW9fbmV0YCByaWdodCBub3cuIEEga2V5IHF1ZXN0aW9uIGlzIGltbWVkaWF0ZWx5IGNvbWluZyB0byBtaW5kOiBkb2VzIHRoaXMgcGFydGljdWxhciBkcml2ZXIgb2ZmZXIgc3VwcG9ydCBmb3IgQUZfWERQIGFuZCBpdHMgemVyby1jb3B5IGNhcGFiaWxpdGllcz8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGRldGFpbCBmb3IgcGVyZm9ybWFuY2UgaW4gaGlnaC10aHJvdWdocHV0IG5ldHdvcmsgZW52aXJvbm1lbnRzLCBzbyBpdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7ZCB3YW50IHRvIHZlcmlmeS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgaXQgZGlkISBJZiBub3QsIHdoYXQgd291bGQgaXQgdGFrZSB0byBpbXBsZW1lbnQ/IExldCBtZSBkaWcgYSBsaXR0bGUgZnVydGhlci4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9wb29sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yOTU9c3RydWN0IHNlbmRfcXVldWUge1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zMTMtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MzE0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MzIwPXN0cnVjdCByZWNlaXZlX3F1ZXVlIHtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzY3LVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM2ODpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNjktXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTEzMjI9c3RhdGljIGludCB2aXJ0bmV0X2FkZF9yZWN2YnVmX3hzayhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjEzMjM6XHRcdFx0XHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTEzMjQte1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xMzg0PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9vbmUoc3RydWN0IHNlbmRfcXVldWUgKnNxLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjEzODU6XHRcdFx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xMzg2LVx0XHRcdFx0c3RydWN0IHhkcF9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xNDA1PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9iYXRjaChzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MTQwNjpcdFx0XHRcdCAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQwNy1cdFx0XHRcdCAgdW5zaWduZWQgaW50IGJ1ZGdldCxcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQzNi1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoxNDM3OnN0YXRpYyBib29sIHZpcnRuZXRfeHNrX3htaXQoc3RydWN0IHNlbmRfcXVldWUgKnNxLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xNDM4LVx0XHRcdCAgICAgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTgyMD1zdGF0aWMgaW50IHZpcnRuZXRfcnFfYmluZF94c2tfcG9vbChzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjU4MjE6XHRcdFx0XHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTgyMi17XG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4NjE9c3RhdGljIGludCB2aXJ0bmV0X3NxX2JpbmRfeHNrX3Bvb2woc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTg2Mi1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTg2MzpcdFx0XHRcdCAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01ODY0LXtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTg4NT1zdGF0aWMgaW50IHZpcnRuZXRfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTg4NjpcdFx0XHRcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4ODctXHRcdFx0XHQgICB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01OTY5PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUxNiBxaWQpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU5NzEtXHRzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTk3MjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU5NzMtXHRzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTI1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlZpcnRpby1uZXQgJmFtcDsgWERQOiBEZWx2aW5nIGludG8gWmVyby1Db3B5IEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsICp2aXJ0aW9fbmV0KiBub3cgc3VwcG9ydGluZyBBRl9YRFAgemVyby1jb3B5IGlzIGdyZWF0IG5ld3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgcHJlY2lzZWx5IHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIGl0LiBBcmUgdGhleSBsZWFuaW5nIHRvd2FyZHMgdXNpbmcgdGhlICp4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCogb3IgdGhlICp4c2tfYnVmZl9nZXRfbWV0YWRhdGEqIGZ1bmN0aW9uPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNob2ljZSBoZXJlIGdpdmVzIG1lIGEgZGVlcGVyIHNlbnNlIG9mIHRoZSBhcHByb2FjaCwgdGhlIHRyYWRlLW9mZnMgdGhleSBtYWRlLCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2UuIElzIHRoaXMgYSBtb3JlIGVmZmljaWVudCBwdWxsLWJhc2VkIGFwcHJvYWNoLCBvciBkaWQgdGhleSBnbyB3aXRoIHNvbWV0aGluZyBlbHNlPyBXZSBjYW4gbGVhcm4gYSBsb3QgZnJvbSB0aGlzIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIERhdGEgUmV0cmlldmFsIFBvaW50cyBpbiB2aXJ0aW9fbmV0LmMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIHRyYWNlIHdoZXJlIHdlJiMzOTtyZSBnZXR0aW5nIG91ciBkYXRhIGZyb20gaW4gdGhlIGB2aXJ0aW9fbmV0LmNgIG1vZHVsZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgaG93IHRoZSBjb250ZXh0IG9yIG1ldGFkYXRhIGZvciB0aGUgWFNLIChlWHByZXNzIERhdGEgUGF0aCBTb2NrZXQgS2VybmVsKSBidWZmZXJzIGFyZSBoYW5kbGVkLiBXZSYjMzk7cmUgb2J2aW91c2x5IGNvbmNlcm5lZCBhYm91dCBkYXRhIHJldHJpZXZhbCwgYW5kIHNpbmNlIHdlJiMzOTtyZSB1c2luZyBYU0ssIHRoZSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmUgbGlrZWx5IGB4cF9yYXdfZ2V0X2N0eGAgb3IgYHhza19idWZmX2dldF9tZXRhZGF0YWAgd2l0aGluIHRoYXQgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgcmVsZXZhbnQgZGF0YSBpcyBiZWluZyBhY2Nlc3NlZCBhbmQgcHJlcGFyZWQgZm9yIHByb2Nlc3NpbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbnRleHQgaXMgYmVpbmcgcmV0cmlldmVkIG9yIGhvdyB0aGUgYnVmZmVyIG1ldGFkYXRhIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDY2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB2aXJ0aW9fbmV0LmMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBwcm9ibGVtIGxpa2VseSBsaWVzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBYZW4gcGxhdGZvcm0uIFRoZSBmdW5jdGlvbiBgeHBfcmF3X2dldF9jdHhgIGlzIHRoZSBzcGVjaWZpYyBwaWVjZSBJIG5lZWQgdG8gbG9vayBhdCBpbiBgdmlydGlvX25ldC5jYC4gSSBoYXZlIGEgaHVuY2ggdGhhdCB0aGlzIGlzIHdoZXJlIHRoZSBjb250ZXh0IGRhdGEgaXMgYmVpbmcgcmV0cmlldmVkIG9yIGhhbmRsZWQsIGFuZCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBmYWlsdXJlIGlzIG9jY3VycmluZy4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSB2aXJ0aW9fbmV0IGNvbnRleHQuIEkgZXhwZWN0IHRoaXMgdG8gYmUgYSBjcnVjaWFsIGRhdGEgcmV0cmlldmFsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHBfcmF3X2dldF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY4MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQUZfWERQIFRYIE1ldGFkYXRhIFN1cHBvcnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIGB2aXJ0aW9fbmV0YCBkcml2ZXIgaXMgYXBwYXJlbnRseSBub3QgcGxheWluZyBiYWxsIHdpdGggQUZfWERQIFRYIG1ldGFkYXRhLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgd3JpbmtsZSBpbiBteSBjdXJyZW50IHByb2plY3QsIGFzIEkgd2FzIGhvcGluZyB0byBsZXZlcmFnZSB0aGF0IGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gcGl2b3QuIE9rYXksIHdoYXQgYWJvdXQgdGhlIGBuZXRkZXZzaW1gIGRyaXZlcj8gSXQmIzM5O3Mgb2Z0ZW4gYSB1c2VmdWwgdGVzdGluZyBncm91bmQuIERvZXMgKml0KiBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCBmb3IgQUZfWERQPyBTcGVjaWZpY2FsbHksIGRvZXMgaXQgaGFuZGxlIHRoYXQgY3J1Y2lhbCBtZXRhZGF0YSBkdXJpbmcgdHJhbnNtaXNzaW9uPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRvY3MsIG1heWJlIHJ1biBhIHF1aWNrIHRlc3QuIFRoaXMgY291bGQgb3BlbiB1cCBhIHZpYWJsZSBwYXRoIGZvcndhcmQsIG9yIGF0IGxlYXN0IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGxpbWl0YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX3Bvb2wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5MjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBvbiBBRl9YRFAgVFggTWV0YWRhdGEgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIG5ldHdvcmsgZHJpdmVycyBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YS4gSSAqZGlkKiBjaGVjayBgdmV0aGAgYWxyZWFkeSDigJMgbm90aGluZyB0aGVyZSwgbm8gYHhza19idWZmX3Bvb2xgLiBTbywgbGV0JiMzOTtzIHNlZSwgbXkgbm90ZXMgc2F5IHRoZSBmb2xsb3dpbmcgZHJpdmVycyBoYXZlIHN1cHBvcnQ6IGBpZ2NgICh0aGUgSW50ZWwgSTIyNS9JMjI2KSwgYG1seDVgIChNZWxsYW5veCBDb25uZWN0WC00JiM0MzspLCBgc3RtbWFjYCAodGhlIFNUTWljcm9lbGVjdHJvbmljcyBNQUMpLCBhbmQgYGlkcGZgICh0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uKS4KCldhaXQgYSBtaW51dGUsIHdhc27igJl0IGBzdG1tYWNgIHVzZWQgaW4gKnNvbWUqIFFFTVUgZW11bGF0aW9ucz8gTm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBgc3RtbWFjYCBpcyB0eXBpY2FsbHkgZm9yIEFSTSBTb0NzLCBsaWtlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgaXQgYnkgZGVmYXVsdCBvbiB4ODYsIGJ1dCBpdCAqY2FuKiBiZSB1c2VkIHRvIGVtdWxhdGUgc29tZSBBUk0gYm9hcmRzLgoKSG9sZCBvbuKApiBJJiMzOTttIGdldHRpbmcgbWl4ZWQgdXAuIEkgYWxzbyB0aG91Z2h0IGBpZ2NgIHdhcyBlbXVsYXRlZCBpbiBRRU1VLCBidXQgdGhhdCYjMzk7cyBub3QgcmlnaHQsIGlzIGl0PyBRRU1VIGhhcyB0aGUgYGUxMDAwYCBhbmQgYGUxMDAwZWAgZW11bGF0aW9ucy4gQnV0IGBlMTAwMGVgIGlzIG5vdCB0aGUgc2FtZSBhcyBgaWdiYCwgcmlnaHQ/IE5vLCBgZTEwMDBlYCBpcyB0aGUgYGUxMDAwZWAgZHJpdmVyIGFuZCBgaWdiYCBpcyBmb3IgdGhlIDgyNTc1LzgyNTc2LiBBaCwgdGhhdCYjMzk7cyByaWdodCwgUUVNVSBoYXMgYGlnYmAgZW11bGF0aW9uIQoKTm93IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgaW1wb3J0YW50LiBEb2VzIGBpZ2JgIHN1cHBvcnQgQUZfWERQIFRYIG1ldGFkYXRhPyBJIG5lZWQgdG8gbG9vayB0aGF0IHVwIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk2MzYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgZUJQRiBYU0sgVFggU3VwcG9ydCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWNzIG9mIGVCUEYgYW5kIFhTSyBUWCwgYW5kIGl0IGxvb2tzIGxpa2UgYGlnYmAgZHJpdmVyIGlzbiYjMzk7dCBwbGF5aW5nIG5pY2VseSB3aXRoIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIFRoYXQmIzM5O3MgYSBiaXQgb2YgYSBidW1tZXI7IEkmIzM5O2xsIGhhdmUgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgbGV0JiMzOTtzIHBpdm90LiBTaW5jZSBgaWdiYCBpcyBvdXQgb2YgdGhlIHBpY3R1cmUgZm9yIHRoYXQgc3BlY2lmaWMgdXNlIGNhc2UsIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCBgZTEwMDBlYD8gSSB3b25kZXIgaWYgdGhhdCBkcml2ZXIgb2ZmZXJzIGJldHRlciBzdXBwb3J0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIG9yIHJlbGV2YW50IGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIGl0IHByb3ZpZGVzIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb25hbGl0eS4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgYWx0ZXJuYXRpdmUsIG9yIGF0IGxlYXN0IGEgc3RlcHBpbmcgc3RvbmUgdG8gYSBzb2x1dGlvbi4gUGVyaGFwcyB0aGUgYGUxMDAwZWAgY29kZSBvZmZlcnMgYSBzaW1pbGFyIGFyY2hpdGVjdHVyZSB0aGF0IGlzIG1vcmUgcmVhZGlseSBhZGFwdGVkLiBUaW1lIHRvIGRlbHZlIGEgYml0IGRlZXBlciBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTk0MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFhEUCBTdXBwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBYRFAgc3VwcG9ydCBhbmQgaXQgc2VlbXMgb25seSBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYCBhcmUgdGhlIGRyaXZlcnMgaW4gcGxheS4gSG1tLCBsZXQgbWUgdGhpbmsgdGhyb3VnaCBgaWRwZmAgYSBiaXQgY2xvc2VyLiBJdCBsb29rcyBsaWtlIGBpZHBmYCBsZXZlcmFnZXMgYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYCwgd2hpY2ggdGhlbiBjYWxscyBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCwgd2hpY2gsIGZpbmFsbHksIGNhbGxzIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGVzZSBkcml2ZXJzIGFyZSBlbXVsYXRlZCBieSBRRU1VLiBOb3BlLCBgaWRwZmAgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUuIE5laXRoZXIgaXMgYG1seDVgLCBvciBgaWdjYC4gTm93LCBgc3RtbWFjYC4uLiBRRU1VIGhhcyB0aG9zZSBkZXZpY2UgZGVmaW5pdGlvbnM6IGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYGh3L25ldC9mdGdtYWMxMDAuY2AsIGBody9uZXQvbnBjbTd4eF9lbWMuY2AuCgpBaGEsIGBzdG1tYWNgIGlzIGEgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpISBBbmQgUUVNVSBkb2VzIGVtdWxhdGUgYGRlc2lnbndhcmVgIE1BQyEgVGhhdCYjMzk7cyBnb29kIG5ld3MuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgUUVNVSBoYXMgYGRlc2lnbndhcmVgLiBZZXAsIHRoZXJlIGl0IGlzOiBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIFRoZSByZW1haW5pbmcgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYWNjZXNzaWJsZSBpbiB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIHg4Nl82NCBWTXM/IFN5emthbGxlciB1c2VzIGBxZW11LXN5c3RlbS14ODZfNjRgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGRlc2lnbndhcmVgIE1BQyBpcyBleHBvc2VkIGluIHRoZXNlIGVudmlyb25tZW50cywgdHlwaWNhbGx5LCBpcyBpdCBhIHBsYXRmb3JtIGRldmljZSBvbiBBUk0gb3IgYSBQQ0kgZGV2aWNlPyBPa2F5LCBJIHNob3VsZCBjaGVjayBpZiBgc3RtbWFjYCBjYW4gYmUgYSBQQ0kgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz00NT1zdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9Nzg2PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgwNjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXHQuc2V0dXAgPSBlaGxfc2dtaWlfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIyLVx0LnNldHVwID0gZWhsX3JnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDE9c3RhdGljIGludCBlaGxfcHNlMF9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg0ODpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0OS1cdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1Mj1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODcwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVx0LnNldHVwID0gZWhsX3BzZTBfc2dtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTgtXHQuc2V0dXAgPSBlaGxfcHNlMV9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MDE9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkxOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMC1cdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk0ND1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk1MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cdC5zZXR1cCA9IHRnbF9zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjctXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTcwPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk4MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05ODEtXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk4ND1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVx0LnNldHVwID0gYWRsc19zZ21paV9waHkxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDMtXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExMDk9c3RhdGljIGludCBxdWFya19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDYtXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY2Olx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjctXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NzY9c3RydWN0IGxvb25nc29uX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjgyOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cdC5zZXR1cCA9IGxvb25nc29uX2dtYWNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3OC1cdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAzLVx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3NDMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBRl9YRFAgVFggTWV0YWRhdGEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXMsIGBzdG1tYWNgICpjYW4qIGJlIGEgUENJIGRldmljZSwgbGlrZSB3aXRoIGBkd21hYy1pbnRlbC5jYCBhbmQgYHN0bW1hY19wY2kuY2AuJiMzNDsgQnV0IHRoZW4gSSByZW1lbWJlciBgc3RtbWFjYCBpcyBhbHNvIHVzZWQgZm9yIEludGVsIFF1YXJrIGFuZCBvdGhlciBJbnRlbCBTb0NzLCBzbyBpcyB0aGlzIHNvbWV0aGluZyBJIGNhbiBldmVuIHJlYWNoIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YCwgd2hpY2ggY2FuIGluamVjdCBQQ0kgZGV2aWNlcyAqaWYqIFFFTVUgc3VwcG9ydHMgdGhlbS4gQW5kLCB1bmZvcnR1bmF0ZWx5LCBJIGtub3cgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBzdG1tYWNgIFBDSSBkZXZpY2VzLgoKT2theSwgYmFjayB0byB0aGUgZHJhd2luZyBib2FyZC4gTGV0JiMzOTtzIHRoaW5rIGFib3V0IGB2ZXRoYC4gSG1tLCBJIGNoZWNrZWQgYHZldGhgIGVhcmxpZXIsIGFuZCBpdCBkb2VzbiYjMzk7dCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YS4KCldhaXQgYSBzZWNvbmQhIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYC4gU3BlY2lmaWNhbGx5LCB0aGlzIGNoYW5nZToKYGBgYwogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKQomIzQzO19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLAomIzQzOwkJCXVuc2lnbmVkIGludCBvcHRpb25zKQogewotCWlmICghcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuKQomIzQzOwlpZiAoIXBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKSkKIAkJcmV0dXJuIE5VTEw7CmBgYApUaGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwsIGFzIGl0JiMzOTtzIGNhbGxlZCBieSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhwX3Jhd19nZXRfY3R4YC4gTm93LCBgeHBfcmF3X2dldF9jdHhgIGxlYWRzIHRvIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAsIHdoaWNoIGxlYWRzIHRvIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEFuZCB0aGF0LCBpbiB0dXJuLCBpcyB1c2VkIGluIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgLCB3aGljaCBpcyB1c2VkIGluIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AuIEZpbmFsbHksIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgaXMgdXNlZCBpbiBgaWRwZl94c2tfeG1pdGAuCgpXYWl0ISBJIHNlZSB0aGF0IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGFsc28gY2FsbGVkIGRpcmVjdGx5IGluIGBpZ2NfeGRwX3htaXRfemNgLCBgbWx4NWVfeHNrX3R4YCwgYW5kIGBzdG1tYWNfeGRwX3htaXRfemNgLiBUaGVzZSBhbGwgbG9vayBwcm9taXNpbmcuIE5vdywgY2FuIGFueSBvZiB0aG9zZSBiZSByZWFjaGVkIHdpdGggU3l6a2FsbGVyPwoKU3l6a2FsbGVyICpjYW4qIGZ1enogQUZfWERQIHNvY2tldHMuIEJ1dCBpZiB0aGUgdW5kZXJseWluZyBkcml2ZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCBBRl9YRFAgemVybyBjb3B5ICpvciogVFggbWV0YWRhdGEsIHRoYXQgY29kZSBpbiBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG1pZ2h0IG5vdCBldmVuIGdldCBoaXQuIEhtbW0sIGRvZXMgYHZldGhgIHN1cHBvcnQgQUZfWERQIHplcm8gY29weT8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgdmV0aF94ZHBfeG1pdGAgYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmV0aF94ZHBfeG1pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmM9NDk2PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqdmV0aF9wZWVyX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01MDMtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTA0OnN0YXRpYyBpbnQgdmV0aF94ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbixcbmRyaXZlcnMvbmV0L3ZldGguYy01MDUtXHRcdFx0IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTU2MT1zdGF0aWMgaW50IHZldGhfbmRvX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuLFxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01NjUtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTY2Olx0ZXJyID0gdmV0aF94ZHBfeG1pdChkZXYsIG4sIGZyYW1lcywgZmxhZ3MsIHRydWUpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ny1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NTc2PXN0YXRpYyB2b2lkIHZldGhfeGRwX2ZsdXNoX2JxKHN0cnVjdCB2ZXRoX3JxICpycSwgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSlcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc5LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU4MDpcdHNlbnQgPSB2ZXRoX3hkcF94bWl0KHJxLVx1MDAzZWRldiwgYnEtXHUwMDNlY291bnQsIGJxLVx1MDAzZXEsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01ODEtXHRpZiAoc2VudCBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQxOAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdmV0aCBhbmQgQUZfWERQIFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGB2ZXRoYCBhbmQgaG93IGl0IGhhbmRsZXMgWERQIGFuZCBBRl9YRFAuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgaW1wbGVtZW50cyBgbmRvX3hkcF94bWl0YCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIGl0ICpkb2VzbiYjMzk7dCogaW1wbGVtZW50IGVpdGhlciBgbmRvX3hza193YWtldXBgIG9yIGBuZG9fYnBmYCB3aXRoIGBYRFBfU0VUVVBfWFNLX1BPT0xgLiBIbW0sIHRoYXQgc3VnZ2VzdHMgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IGl0cyBBRl9YRFAgc3VwcG9ydC4KCkFoLCByaWdodCwgbm93IGl0JiMzOTtzIGNsaWNraW5nLiBgdmV0aGAgc3VwcG9ydHMgQUZfWERQIGJ1dCBpbiAqY29weSogbW9kZSwgbm90IHplcm8tY29weS4gVGhhdCYjMzk7cyB3aHkgdGhvc2Ugb3RoZXIgY2FsbGJhY2tzIGFyZW4mIzM5O3QgaW1wbGVtZW50ZWQuIEluIGNvcHkgbW9kZSwgdGhlIEFGX1hEUCB0cmFmZmljIHdvdWxkIGJlIGhhbmRsZWQgd2l0aCBzb21ldGhpbmcgbGlrZSBgeHNrX2dlbmVyaWNfeG1pdGAsIG9yIHNvbWV0aGluZyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgcmlnaHQ/IFRoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIHBhdGguIExldCBtZSBkb3VibGUtY2hlY2sgYHhza19nZW5lcmljX3htaXRgIG5vdyB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgdGhlIGRhdGEgZmxvdyBpcyB1bmRlcnN0b29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfZ2VuZXJpY194bWl0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTc3LVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDo3ODpcdC8qIFdoZW4gX194c2tfZ2VuZXJpY194bWl0KCkgbXVzdCByZXR1cm4gYmVmb3JlIGl0IHNlZXMgdGhlIEVPUCBkZXNjcmlwdG9yIGZvciB0aGUgY3VycmVudFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC03OS1cdCAqIHBhY2tldCwgdGhlIHBhcnRpYWxseSBidWlsdCBza2IgaXMgc2F2ZWQgaGVyZSBzbyB0aGF0IHBhY2tldCBidWlsZGluZyBjYW4gcmVzdW1lIGluIG5leHRcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6ODA6XHQgKiBjYWxsIG9mIF9feHNrX2dlbmVyaWNfeG1pdCgpLlxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC04MS1cdCAqL1xuLS1cbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTExOTAtXG5uZXQveGRwL3hzay5jOjExOTE6c3RhdGljIGludCBfX3hza19nZW5lcmljX3htaXQoc3RydWN0IHNvY2sgKnNrKVxubmV0L3hkcC94c2suYy0xMTkyLXtcbi0tXG5uZXQveGRwL3hzay5jLTEzMDUtXG5uZXQveGRwL3hzay5jOjEzMDY6c3RhdGljIGludCB4c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcbm5ldC94ZHAveHNrLmMtMTMwNy17XG4tLVxubmV0L3hkcC94c2suYy0xMzExLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG5uZXQveGRwL3hzay5jOjEzMTI6XHRyZXQgPSBfX3hza19nZW5lcmljX3htaXQoc2spO1xubmV0L3hkcC94c2suYy0xMzEzLVx0LyogUmVhcXVpcmUgUkNVIGxvY2sgYmVmb3JlIGdvaW5nIGludG8gY29tbW9uIGNvZGUuICovXG4tLVxubmV0L3hkcC94c2suYz0xMzQwPXN0YXRpYyBpbnQgX194c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxuLS1cbm5ldC94ZHAveHNrLmMtMTM2NS1cdFx0XHRyZXR1cm4geHNrX3dha2V1cCh4cywgWERQX1dBS0VVUF9UWCk7XG5uZXQveGRwL3hzay5jOjEzNjY6XHRcdHJldHVybiB4c2tfZ2VuZXJpY194bWl0KHNrKTtcbm5ldC94ZHAveHNrLmMtMTM2Ny1cdH1cbi0tXG5uZXQveGRwL3hzay5jPTE0MTk9c3RhdGljIF9fcG9sbF90IHhza19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC94ZHAveHNrLmMtMTQzOS1cdFx0XHQvKiBQb2xsIG5lZWRzIHRvIGRyaXZlIFR4IGFsc28gaW4gY29weSBtb2RlICovXG5uZXQveGRwL3hzay5jOjE0NDA6XHRcdFx0eHNrX2dlbmVyaWNfeG1pdChzayk7XG5uZXQveGRwL3hzay5jLTE0NDEtXHR9XG4tLVxubmV0L3hkcC94c2suYz0yMjQwPXN0YXRpYyBpbnQgX19pbml0IHhza19pbml0KHZvaWQpXG4tLVxubmV0L3hkcC94c2suYy0yMjU5LVxubmV0L3hkcC94c2suYzoyMjYwOlx0eHNrX3R4X2dlbmVyaWNfY2FjaGUgPSBrbWVtX2NhY2hlX2NyZWF0ZShcJiMzNDt4c2tfZ2VuZXJpY194bWl0X2NhY2hlXCYjMzQ7LFxubmV0L3hkcC94c2suYy0yMjYxLVx0XHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHhza19hZGRycyksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYz04OTg9c3RhdGljIGJvb2wga2lja190eF93aXRoX2NoZWNrKHN0cnVjdCB4c2tfc29ja2V0X2luZm8gKnhzaywgaW50ICpyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYy05MTAtXHQgKiBzZW5kIGluIHRoaXMgY2FzZSB3aGVyZSBoaXR0aW5nIHRoZSBtYXggYnVkZ2V0IGxpbWl0IGluIHdoaWxlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3hzay5jOjkxMTpcdCAqIGxvb3AgaXMgdHJpZ2dlcmVkIGluIF9feHNrX2dlbmVyaWNfeG1pdCgpLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfeHNrLmMtOTEyLVx0ICogdGhlIG51bWJlciBvZiBkZXNjcyB0byBiZSBzZW50IGlzIGxhcmdlciB0aGFuIEBtYXhfYnVkZ2V0LCBvclxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzczNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIFJldHJpZXZhbCBQYXRoIGluIGBfX3hza19nZW5lcmljX3htaXRgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBpbnRlcm5hbHMgb2YgdGhlIFhEUCB0cmFuc21pdCBwYXRoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBfX3hza19nZW5lcmljX3htaXRgLiBUaGUga2V5IHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXM6IGhvdyBpcyB0aGUgbWV0YWRhdGEgYWN0dWFsbHkgcmV0cmlldmVkIGZvciBlYWNoIGJ1ZmZlciB0aGF0IGlzIGJlaW5nIHNlbnQ/IElzIGl0IHVzaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGlzIGl0IHVzaW5nIGB4cF9yYXdfZ2V0X2N0eGAgPyBUaGUgZGlzdGluY3Rpb24gbWF0dGVycyBiZWNhdXNlIGVhY2ggZnVuY3Rpb24gbWF5IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIGRpZmZlcmVudCBjb25jdXJyZW5jeSBpbXBsaWNhdGlvbnMsIG9yIGV2ZW4gZGlmZmVyZW50IHZlcnNpb25zIGF2YWlsYWJsZS4gVW5kZXJzdGFuZGluZyB0aGlzIGV4YWN0IHN0ZXAgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pc2luZyBwZXJmb3JtYW5jZSwgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgZm9yIGFueSBsb3cgbGV2ZWwgZGVidWdnaW5nIEkmIzM5O20gZ29pbmcgdG8gYmUgZG9pbmcuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGFzIGl0IGlzIHRoZSBoZWFydCBvZiBhbnkgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgSSBhbSBhdHRlbXB0aW5nLiBUaGlzIGltcGFjdHMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSBhY2Nlc3MgcGF0dGVybnMgYW5kIG1lbW9yeSBiYXJyaWVycy4gVGhlIGFuc3dlciB3aWxsIGRpcmVjdGx5IGluZmx1ZW5jZSBob3cgSSB0aGluayBhYm91dCBwb3RlbnRpYWwgbG9jayBjb250ZW50aW9uIG9yIGRhdGEgZGVwZW5kZW5jeSBpc3N1ZXMuIE5vdywgSSBoYXZlIHRvIGRldGVybWluZSB3aGljaCBvZiB0aGVzZSBmdW5jdGlvbnMgaXQgaXMgYWN0dWFsbHkgdXNpbmcuIFRpbWUgdG8gZ2V0IHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA2NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBYRFAvWFNLIERlcHRocyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhbiBYU0sgY29udGV4dCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCYjMzk7cyBiZWluZyByZXRyaWV2ZWQgYXQgdGhlIGtlcm5lbCBsZXZlbC4gVGltZSB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAgd2l0aGluIGBuZXQveGRwL3hzay5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGp1c3QgKnNjcmVhbXMqICYjMzQ7dGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywmIzM0OyByaWdodD8gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIG1lY2hhbmlzbSBmb3IgYWNjZXNzaW5nIHRoZSBYU0sgY29udGV4dDsgaXTigJlzIGxpa2VseSB0aGUgY29yZSBvcGVyYXRpb24gd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIEtub3dpbmcgdGhpcyBmdW5jdGlvbiYjMzk7cyBsb2dpYyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhpcyByYXcgWFNLIGFjY2VzcyBpcyBmdW5jdGlvbmluZywgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWwgcG9pbnRzIG9mIGNvbnRlbnRpb24gb3Igb3B0aW1pemF0aW9uLiBJIGV4cGVjdCBpdCB0byBoYXZlIHRoZSBjcnVjaWFsIHBpZWNlcyB0byBnZXQgdGhlIG1ldGFkYXRhIHRoYXTigJlzIG5lZWRlZC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwX3Jhd19nZXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MzQ4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipUaGlua2luZyBUaHJvdWdoIFhEUC9BRl9YRFAgVHJhbnNtaXQgTWV0YWRhdGEqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgdHJhbnNtaXNzaW9uIHNpZGUgb2YgWERQL0FGX1hEUCBhZ2Fpbi4gSSYjMzk7bSBmb2N1c2luZyBvbiBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcgZGlmZmVyZW50IHdheXMgdG8gaGFuZGxlIHRoZSBtZXRhZGF0YSBhdHRhY2hlZCB0byBlYWNoIHBhY2tldCwgc3BlY2lmaWNhbGx5IGZvciB0cmFuc21pdCBvcGVyYXRpb25zLiBUaGUgY29yZSBxdWVzdGlvbiB0aGF0JiMzOTtzIGJ1YmJsaW5nIHRvIHRoZSBzdXJmYWNlIGlzIGFib3V0IHRoZSBtZWNoYW5pc20gZm9yIHJlcXVlc3RpbmcgYW5kIHByb3ZpZGluZyB0aGF0IHRyYW5zbWl0IG1ldGFkYXRhLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3Igc3RlZXJpbmcgcGFja2V0cywgYXBwbHlpbmcgUW9TLCBhbmQgZ2VuZXJhbGx5IGdldHRpbmcgdGhlIG1vc3Qgb3V0IG9mIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLgoKU28sICpgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgKi4uLiBXaGF0IGFyZSB0aGUgc3BlY2lmaWNzPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIGRlZGljYXRlZCBzdHJ1Y3R1cmUgcGFzc2VkIGluIHRoZSByaW5nLCBvciBzb21lIG90aGVyIG1lY2hhbmlzbT8gRG9lcyBpdCBtYWtlIHNlbnNlIHRvIGhhdmUgYSBzZXBhcmF0ZSByaW5nIGZvciBtZXRhZGF0YSByZXF1ZXN0cywgb3Igc2hvdWxkIGl0IGJlIGVtYmVkZGVkIHdpdGhpbiB0aGUgZXhpc3RpbmcgVFggcmluZyBlbnRyeT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBpbiB0ZXJtcyBvZiBkYXRhIHN0cnVjdHVyZXM/IElzIHRoZSAqYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YCogc3BlY2lmaWMgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2sgaW4gdXNlPyBXaGF0IGFib3V0IE5JQy1zcGVjaWZpYyBtZXRhZGF0YSBjb25zaWRlcmF0aW9ucz8KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJhbGFuY2UgYmV0d2VlbiBmbGV4aWJpbGl0eSBhbmQgb3ZlcmhlYWQgaGVyZS4gQSByaWNoIG1ldGFkYXRhIHN0cnVjdHVyZSBjb3VsZCBvZmZlciBhbWF6aW5nIGNvbnRyb2wsIGJ1dCB3b3VsZCBsaWtlbHkgaW1wb3NlIGEgc2lnbmlmaWNhbnQgY29zdCBpbiB0ZXJtcyBvZiBDUFUgY3ljbGVzIGFuZCBtZW1vcnkgYmFuZHdpZHRoLiBJdCBhbHNvIG5lZWRzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBhIGJyb2FkIHJhbmdlIG9mIGhhcmR3YXJlLiBBIHNpbXBsaWZpZWQgaW50ZXJmYWNlIG1pZ2h0IGJlIGZhc3RlciBidXQgd291bGQgcG90ZW50aWFsbHkgbGltaXQgdGhlIGZlYXR1cmVzIHdlIGNvdWxkIGV4cG9zZSB0byB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uLiBJIG5lZWQgdG8gd2VpZ2ggdGhlIHRyYWRlLW9mZnM6IEhvdyBjYW4gd2UgZ2l2ZSB1c2Vyc3BhY2UgdGhlIGNvbnRyb2wgaXQgbmVlZHMsIHdpdGhvdXQgdGFua2luZyBwZXJmb3JtYW5jZT8gSSYjMzk7bSBob3BpbmcgdG8gY3JhZnQgYSBkZXNpZ24gdGhhdCBpcyBwZXJmb3JtYW50LCBleHRlbnNpYmxlLCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHRvbyBtdWNoIGNvbXBsZXhpdHkuIEl0JiMzOTtzIHRoYXQgYmFsYW5jZSBJIG5lZWQgdG8gc3RyaWtlIHRvIGVuc3VyZSB0aGUgYXJjaGl0ZWN0dXJlIHNjYWxlcyB3ZWxsLiBJIHdhbnQgdG8gYnVpbGQgYSB0cnVseSBlZmZpY2llbnQsIGZsZXhpYmxlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODgwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQUZfWERQIFRYIE1ldGFkYXRhIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggYWN0dWFsbHkgaW1wYWN0cyBhbnl0aGluZyBpbiBhIHR5cGljYWwgdGVzdGluZyBzZXR1cC4gVGhlIGNvZGUgaW4gcXVlc3Rpb24sIGB4c2tfZ2VuZXJpY194bWl0YCwgZG9lc24mIzM5O3QgdXNlIFRYIG1ldGFkYXRhLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LiBUWCBtZXRhZGF0YSBpcyAqb25seSogc3VwcG9ydGVkIGluIHplcm8tY29weSBBRl9YRFAgbW9kZS4gUmlnaHQsIGFuZCB6ZXJvLWNvcHkgQUZfWERQIGlzIGxpbWl0ZWQgdG8gYSBoYW5kZnVsIG9mIGRyaXZlcnM6IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLgoKQnV0IHdhaXQsIGBzdG1tYWNgLi4uIGlzbiYjMzk7dCB0aGF0IGVtdWxhdGVkIGJ5IFFFTVU/IEkgc2hvdWxkIGNoZWNrIGlmIHRoYXQmIzM5O3MgZXZlbiBhIHZpYWJsZSBwYXRoIGluIHN5emthbGxlci4gU3l6a2FsbGVyIHVzZXMgYHFlbXUtc3lzdGVtLXg4Nl82NGAsIHNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBkb2VzIFFFTVUgZW11bGF0ZSBhbiBgc3RtbWFjYCBkZXZpY2UgKmZvciB4ODZfNjQqPyBObywgdHlwaWNhbGx5IGBzdG1tYWNgIGlzIGFuIEFSTS9NSVBTL1JJU0MtVi9Mb29uZ3NvbiBwbGF0Zm9ybSBkZXZpY2UuCgpIb2xkIG9uLCBsZXQgbWUgcmVmaW5lIHRoYXQuIGBkd21hYy1pbnRlbC5jYCBpcyBhY3R1YWxseSBmb3IgSW50ZWwgUXVhcmsgYW5kIHNvbWUgb3RoZXIgSW50ZWwgU29DcyBsaWtlIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgYW5kIEFsZGVyIExha2UsIHdoaWNoIGFyZSBQQ0kgZGV2aWNlcy4gUmlnaHQsIGJ1dCBkb2VzIFFFTVUgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBNQUMgZGV2aWNlcz8gTm9wZS4gQW5kIHdoYXQgYWJvdXQgdGhlIG90aGVycz8gYGlnY2AgKEludGVsIEkyMjUvSTIyNik/IE5vLCBub3QgZW11bGF0ZWQgYnkgUUVNVS4gYG1seDVgPyBOb3BlLiBgaWRwZmA/IE5vdCBlbXVsYXRlZCBlaXRoZXIuCgpPa2F5LCBzbyBub25lIG9mIHRob3NlIGRpcmVjdGx5IGFyZSBlbXVsYXRlZCwgc28gbGV0JiMzOTtzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gTGV0IG1lIHNlYXJjaCBmb3IgYW55IG90aGVyIGRyaXZlciB0aGF0IG1pZ2h0IHVzZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciBgeHBfcmF3X2dldF9jdHhgLiBMZXQmIzM5O3Mgc2VlLi4uIGEgcXVpY2sgYGdyZXBgIHJldmVhbHMgdGhlc2UgdXNlczoKCiogICBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYDogYGlnY19tYWluLmNgLCBgbWx4NS90eC5jYCwgYHN0bW1hY19tYWluLmNgLCBgeGRwX3NvY2tfZHJ2LmhgLCBhbmQgYHhza19idWZmX3Bvb2wuY2AuCiogICBgeHBfcmF3X2dldF9jdHhgOiBgeGRwX3NvY2tfZHJ2LmhgLCBgeHNrX2J1ZmZfcG9vbC5oYCwgYW5kIGB4c2tfYnVmZl9wb29sLmNgLgoqICAgYHhza19idWZmX3Jhd19nZXRfY3R4YDogdXNlZCBpbiBgaWRwZmAgdmlhIGB4c2suaGAuCgpTbywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiAqb25lKiBvZiB0aG9zZSBmb3VyIGRyaXZlcnMgKGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBgaWRwZmApIGlzIHByZXNlbnQgYW5kIGNvbmZpZ3VyZWQgZm9yIHplcm8tY29weSBBRl9YRFAuIEdpdmVuIHRoZSBmYWN0IHRoYXQgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIgKGUuZy4gYGUxMDAwYCwgYGUxMDAwZWAsIGB2aXJ0aW8tbmV0YCwgZXRjKSBkb24mIzM5O3QgZW11bGF0ZSB0aG9zZSBkcml2ZXJzLCB0aGlzIHBhdGggaXMgaGlnaGx5IHVubGlrZWx5LiBBbnkgY2hhbmdlcyBoZXJlIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgdGhlIHR5cGljYWwgUUVNVSBjb25maWd1cmF0aW9ucy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBhbmQgcnVsZSBvdXQgYW55IG90aGVyIHBvc3NpYmlsaXRpZXMuIFdoYXQgYWJvdXQgYHZldGhgPyBObywgbm8gdXNlIG9mIHRob3NlIGZ1bmN0aW9ucy4gYG1hY3ZsYW5gPyBOb3BlLiBgdHVuYC9gdGFwYD8gTmVnYXRpdmUuIFdoYXQgYWJvdXQgYHZpcnRpb19uZXRgPyBUaGF0ICpkb2VzKiBzdXBwb3J0IHplcm8tY29weSBBRl9YRFAsIGJ1dCBub3QgVFggbWV0YWRhdGEuIEl0JiMzOTtzIG5vdCB1c2luZyB0aG9zZSBmdW5jdGlvbnMuIExldCBtZSBkb3VibGUtY2hlY2sgYHZpcnRpb19uZXQuY2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uIG5vdGhpbmcgaGVyZS4KCkNvbmNsdXNpb246IHRoaXMgcGF0Y2ggaXMgYWxtb3N0IGNlcnRhaW5seSBkZWFkIGNvZGUgaW4gYW55IHN0YW5kYXJkIHRlc3RpbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA0NjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqQ2hlY2tpbmcgZm9yIGB4c2tfdHhfbWV0YWRhdGFgIGluIGBuZXRkZXZzaW1gKioKClJpZ2h0LCBzbyBJIHJhbiBhIHF1aWNrIHNlYXJjaCwgYW5kLi4uIG5vdGhpbmcuIE5vIGltbWVkaWF0ZSBoaXRzLiBUaGF0JiMzOTtzIGEgbGl0dGxlIHN1cnByaXNpbmcsIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBwb3RlbnRpYWwgdXNhZ2UuIE9rYXksIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgd2l0aGluIHRoZSBgbmV0ZGV2c2ltYCBjb2RlYmFzZSBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgYHhza190eF9tZXRhZGF0YWAuIEkga25vdyB0aGlzIGlzIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHNvIGEgdGFyZ2V0ZWQgc2VhcmNoIHNob3VsZCBiZSBmYWlybHkgZWZmaWNpZW50LiBHb3R0YSBiZSB0aG9yb3VnaC4gRXZlbiBhIGNvbW1lbnQgbWVudGlvbmluZyBpdCBpcyB3b3J0aCBub3RpbmcuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3R4X21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFJlYWNoaW5nIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHdhbGwgaGVyZS4gVGhlcmUmIzM5O3Mgbm8gc3RyYWlnaHRmb3J3YXJkIG1hdGNoIGZvciB0aGUgdGFyZ2V0LiBMZXQgbWUgcmV0aGluayB0aGlzIGZyb20gdGhlIGdyb3VuZCB1cC4gVGhlIHByaW1hcnkgZ29hbCBpcyB0byB0cmlnZ2VyIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAsIHdoaWNoLCBiZWluZyBhbiBpbmxpbmUgZnVuY3Rpb24sIHByZXNlbnRzIHVuaXF1ZSBjaGFsbGVuZ2VzLgoKRmlyc3QsIEkgbmVlZCB0byBjb25zaWRlciBgc3RtbWFjYC4gQ2FuIEkgZXZlbiBwcm9iZSB0aGlzIGluIFFFTVU/IFFFTVUgKmRvZXMqIGhhdmUgYGh3L25ldC9kZXNpZ253YXJlLmNgLCBidXQgaXQmIzM5O3MgaW5zdGFudGlhdGVkIGFzIGEgc3lzYnVzIGRldmljZSwgbm90IGEgUENJIGRldmljZS4gSG9sZCBvbiB0aG91Z2gsIHRoZXJlJiMzOTtzIGBzdG1tYWNfcGNpLmNgLCBhIFBDSSB3cmFwcGVyIGZvciBgc3RtbWFjYC4gQ291bGQgSSBpbmplY3QgYSBQQ0kgZGV2aWNlIHVzaW5nIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIHZlbmRvciBJRCBgUENJX1ZFTkRPUl9JRF9TVE1JQ1JPYCAoMHgxMDRhKSBhbmQgZGV2aWNlIElEIGBQQ0lfREVWSUNFX0lEX1NUTUlDUk9fTUFDYCAoMHgzNzk4KT8KCk5vdywgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX3NldHVwYCwgaWYgdGhlIGtlcm5lbCBzdXBwb3J0cyBQQ0kgaG90cGx1ZyBhbmQgdGhlIGRyaXZlciBpcyBsb2FkZWQuIEJ1dCwgd2FpdCwgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFN5emthbGxlciBkb2VzbiYjMzk7dCBhY3R1YWxseSAqZW11bGF0ZSogYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLiBJdCBsZXZlcmFnZXMgZWl0aGVyIGB2aGNpYCBvciBRRU1VJiMzOTtzIGJ1aWx0LWluIGRldmljZXMsIGNvcnJlY3Q/IExvb2tpbmcgY2xvc2VyLCB0aGVyZSYjMzk7cyBubyBkZWRpY2F0ZWQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsIGFzIEkmIzM5O2QgaGF2ZSBleHBlY3RlZCwgbGlrZSB3aGF0IGV4aXN0cyBmb3IgVVNCIHZpYSBgc3l6X3VzYl9jb25uZWN0YCwgb3Igd2lmaSB3aXRoIGBzeXpfODAyMTFfaW5qZWN0YC4gRm9yIFBDSSwgc3l6a2FsbGVyIHJlbGllcyBvbiBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIFZNLgoKU28gdGhlIGNvcmUgcHJvYmxlbSBiZWNvbWVzIHRoaXM6IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBmb3IgUENJIGRldmljZXMsIHVubGlrZSB0aGUgVVNCIHN1YnN5c3RlbS4gYHZmaW9gIGlzIHRoZSBvbmx5IGFsdGVybmF0aXZlLCBidXQgdGhhdCYjMzk7cyBmb3IgcGFzc2luZyB0aHJvdWdoICpyZWFsKiBoYXJkd2FyZS4gU28gaWYgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBoYXJkd2FyZSwgSSYjMzk7bSBzdHVjay4KCkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHN0bW1hY2AgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3MgZGVmYXVsdCBjb25maWd1cmF0aW9uLiBJdCB1c3VhbGx5IGluY2x1ZGVzIGEgd2lkZSByYW5nZSBvZiBkcml2ZXJzLCBidXQgZXZlbiBpZiBpdCYjMzk7cyBwcmVzZW50LCB0aGUgYHByb2JlYCBmdW5jdGlvbiB3aWxsIGZhaWwgd2l0aG91dCB0aGUgY29ycmVjdCBoYXJkd2FyZSAob3IgaXRzIGVtdWxhdGlvbiBpbiBRRU1VKSwgYW5kIHRodXMsIHRoZSBuZXRkZXYgd29uJiMzOTt0IGJlIGNyZWF0ZWQuIFdpdGhvdXQgdGhlIG5ldGRldiwgdGhlcmUgaXMgbm8gd2F5IHRvIGJpbmQgYW4gQUZfWERQIHNvY2tldC4gTm8gc29ja2V0IGJpbmRpbmcgbWVhbnMgbm8gYWNjZXNzIHRvIHRoZSBUWCBwYXRoIGFuZCB0aHVzLCBubyBhY2Nlc3MgdG8gYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBkaXJlY3RseS4KCk9rYXksIGxldCYjMzk7cyBiYWNrIHVwLiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZSB0byB0aGlzIGZ1bmN0aW9uPyBJdCYjMzk7cyBpbmxpbmUsIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgYHhza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIExldCYjMzk7cyBleHBsb3JlIHRoZSBjYWxsZXJzIHRvIHRob3NlIGZ1bmN0aW9ucyB0byBmaW5kIGFsdGVybmF0ZSB3YXlzIHRvIHJlYWNoIHRoZSBpbmxpbmUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMjI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjMtXHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzMyPXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMzLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzUtXHRcdFx0XHQgICAgICAgb3B0aW9ucyk7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTM1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzctXHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9Nzc1PXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4Mi1cdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzgzOlx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4NC1cdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNDEzCgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDExNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlOiBVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhpcyBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBjb2RlIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSwgc3BlY2lmaWNhbGx5IHRoZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVudHMuIEkmIzM5O3ZlIHRyYWNlZCB0aGVzZSBmdW5jdGlvbnMgYW5kIGZvdW5kIHRoZXkgYXJlIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYSBoYW5kZnVsIG9mIGhhcmR3YXJlIGRyaXZlcnM6IGBpZ2NgIChJbnRlbCBJMjI1L0kyMjYpLCBgbWx4NWAgKE1lbGxhbm94IENvbm5lY3RYLTQmIzQzOyksIGBzdG1tYWNgIChTVE1pY3JvZWxlY3Ryb25pY3MgTUFDKSwgYW5kIGBpZHBmYCAoSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uKS4KCkNydWNpYWxseSwgbm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsaXplZCBvciBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBvcGVyYXRlcyBpbi4gSSBkb3VibGUtY2hlY2tlZCBgaWdjYCwgYG1seDVgLCBhbmQgYGlkcGZgIHRvIGNvbmZpcm0gdGhleSBhcmUgbm90IGVtdWxhdGVkLCBhbmQgd2hpbGUgYHN0bW1hY2AgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGJlIGluc3RhbnRpYXRlZCB2aWEgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgbGV2ZXJhZ2UgdGhhdC4gTXkgcmV2aWV3IG9mIHRoZSBRRU1VIHNvdXJjZSBjb25maXJtcyB0aGF0IGBpZ2NgIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBzZXR1cCBhbmQgc3l6a2FsbGVyIHVzZXMgdGhlIGBlMTAwMGAgb3IgYHZpcnRpby1uZXRgIGRyaXZlcnMgYnkgZGVmYXVsdC4KCk5vdywgd2hpbGUgdGhlIHBhdGNoICpkb2VzKiB0b3VjaCBzb21lIGluY2x1ZGUgZmlsZXMgKGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGBpbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhgLCBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCkgYW5kIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2AsIHRoZSBhY3R1YWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiB0aGVzZSBmaWxlcyBhcmUgbGltaXRlZCB0byBpbmxpbmUgZnVuY3Rpb25zIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBUaGVzZSBjaGFuZ2VzIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIHNhbWUgaGFyZHdhcmUgZHJpdmVycyBtZW50aW9uZWQgcHJldmlvdXNseS4gVGhlIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgIGNoYW5nZSBhZGRzIGEgYF9fdTMyIHJlc2VydmVkO2AgZmllbGQgd2hpY2ggaXMgYSBVQVBJIGNoYW5nZSBidXQgZG9lc24mIzM5O3QsIGluIGFuZCBvZiBpdHNlbGYsIGFsdGVyIGFueSByZWFjaGFibGUga2VybmVsIGV4ZWN1dGlvbiBmbG93LgoKSW4gc2hvcnQsIHRoZSBwYXRjaCBtb2RpZmllcyBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gb3VyIHRhcmdldCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBjb3JlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBjaGFuZ2VzIGluIHRoZSBzaGFyZWQgaGVhZGVyIGZpbGVzIGFuZCB0aGUgYG5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jYCBmaWxlIGFyZSBhbGwgdHJhbnNpdGl2ZWx5IG9ubHkgcmVhY2hhYmxlIGZyb20gdGhvc2Ugc2FtZSBoYXJkd2FyZSBkcml2ZXJzLiBUaGVyZWZvcmUsIGJhc2VkIG9uIHRoZSBkb2N1bWVudGVkIGNyaXRlcmlhLCB0aGlzIHBhdGNoIHBlcmZlY3RseSBmaXRzIHRoZSBkZWZpbml0aW9uIG9mICYjMzQ7dW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsJiMzNDsgYW5kIGl0IGlzIHNhZmUgdG8gYXNzaWduIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgVFggbWV0YWRhdGEgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgZm9yIHRoZSBYRFBfVFhfTUVUQURBVEEgZmxhZyBpbiB0aGUgZGVzY3JpcHRvciBvcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIEl0IHVwZGF0ZXMgdGhlIHhza19idWZmX2dldF9tZXRhZGF0YSBhbmQgeHBfcmF3X2dldF9jdHggaGVscGVycyBhbmQgdGhlaXIgY2FsbGVycy4gSG93ZXZlciwgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCB6ZXJvLWNvcHkgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IGEgZmV3IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnM6IGlnYywgbWx4NSwgc3RtbWFjLCBhbmQgaWRwZi4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsLCBub3IgYXJlIHRoZXkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSB2ZXRoIGFuZCB2aXJ0aW9fbmV0IGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBkbyBub3Qgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIGRvIG5vdCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMjo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzc6NDkuMzU5MDc5MTkyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MTM1Mjk1OTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCBUWCBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBmb3IgdGhlIFhEUF9UWF9NRVRBREFUQSBmbGFnIGluIHRoZSBkZXNjcmlwdG9yIG9wdGlvbnMgYmVmb3JlIHJldHVybmluZyB0aGUgbWV0YWRhdGEgcG9pbnRlci4gSXQgdXBkYXRlcyB0aGUgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhIGFuZCB4cF9yYXdfZ2V0X2N0eCBoZWxwZXJzIGFuZCB0aGVpciBjYWxsZXJzLiBIb3dldmVyLCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSBhcmUgb25seSBzdXBwb3J0ZWQgYnkgYSBmZXcgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyczogaWdjLCBtbHg1LCBzdG1tYWMsIGFuZCBpZHBmLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgYXJlIHZpcnR1YWwsIG5vciBhcmUgdGhleSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlci4gVGhlIHZldGggYW5kIHZpcnRpb19uZXQgZHJpdmVycywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGRvIG5vdCBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgZG8gbm90IGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo0OS4zNTkwODQ4NjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Nzk0NzA4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGViMjljMTA2MDdlNDczY2FiYWJkOTE2YWYwMGY3M2M1ZmI5YTk4ZTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMjI6Mzc6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbmluZGV4IDhiOWNlN2NiZmZmOWIuLjFmYjVmM2NiZTkzYzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbkBAIC0zMDcxLDcgKzMwNzEsOCBAQCBzdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbiBcXHRcXHRvbGluZm9fc3RhdHVzID0geGRwX2Rlc2MubGVuIFxcdTAwM2NcXHUwMDNjIElHQ19BRFZUWERfUEFZTEVOX1NISUZUO1xcbiBcXG4gXFx0XFx0ZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuLVxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuK1xcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcXG4gXFx0XFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hLCB4ZHBfZGVzYy5sZW4pO1xcbiBcXHRcXHRiaSA9IFxcdTAwMjZyaW5nLVxcdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXFxuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcXG5AQCAtOTksNyArOTksNyBAQCBib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHR4ZHB0eGQuZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCBkZXNjLmFkZHIpO1xcbiBcXHRcXHR4ZHB0eGQuZGF0YSA9IHhza19idWZmX3Jhd19nZXRfZGF0YShwb29sLCBkZXNjLmFkZHIpO1xcbiBcXHRcXHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XFxuLVxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyKTtcXG4rXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XFxuIFxcbiBcXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCB4ZHB0eGQuZG1hX2FkZHIsIHhkcHR4ZC5sZW4pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi42ZTlkNGNiMzM2ZWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTI3MTQsMTYgKzI3MTQsMTAgQEAgc3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbiBcXHRcXHRpZiAoIXhza190eF9wZWVrX2Rlc2MocG9vbCwgXFx1MDAyNnhkcF9kZXNjKSlcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbi1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZXN0IFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICB4ZHBfZGVzYy5sZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdKSB7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXG4gXFx0XFx0dHhfZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBlbnRyeSk7XFxuIFxcdFxcdGRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuLVxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuK1xcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcXG4gXFx0XFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7XFxuIFxcbiBcXHRcXHQvKiBUbyByZXR1cm4gWERQIGJ1ZmZlciB0byBYU0sgcG9vbCwgd2Ugc2ltcGxlIGNhbGxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXFxuaW5kZXggNWRjYzBkN2Y2NWI3Ni4uYTQ1MmI3ODI4Y2U0ZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcXG5AQCAtMTk2LDcgKzE5Niw3IEBAIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXFxuIFxcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcXG4gXFx0c3RydWN0IHhkcF9kZXNjX2N0eCBjdHg7XFxuIFxcbi1cXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cXHUwMDNlcG9vbCwgeGRlc2MtXFx1MDAzZWFkZHIpO1xcbitcXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cXHUwMDNlcG9vbCwgeGRlc2MtXFx1MDAzZWFkZHIsIHhkZXNjLVxcdTAwM2VvcHRpb25zKTtcXG4gXFx0ZGVzYyA9ICh0eXBlb2YoZGVzYykpe1xcbiBcXHRcXHQuYWRkclxcdD0gY3R4LmRtYSxcXG4gXFx0XFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cXHUwMDNlbGVuKSxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmggYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcXG4rKysgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxcbkBAIC0yNDAsNiArMjQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbiAgKiB4c2tfYnVmZl9yYXdfZ2V0X2N0eCAtIGdldCBcXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xcbiAgKiBAYWRkcjogZGVzYyBhZGRyZXNzIChmcm9tIHVzZXJzcGFjZSlcXG4rICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXFxuICAqXFxuICAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yXFxuICAqIGRldGFpbHMuXFxuQEAgLTI0OCw5ICsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXFxuICAqL1xcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcXG4teHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbit4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbiB7XFxuLVxcdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyKTtcXG4rXFx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIsIG9wdGlvbnMpO1xcbiB9XFxuIFxcbiAjZGVmaW5lIFhEUF9UWE1EX0ZMQUdTX1ZBTElEICggXFxcXFxcbkBAIC0zMTgsMTggKzMxOSwyMCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4tX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbitcXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4ge1xcbi1cXHRpZiAoIXBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbilcXG4rXFx0aWYgKCFwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW4gfHwgIShvcHRpb25zIFxcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRyZXR1cm4gZGF0YSAtIHBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbjtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4teHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4tXFx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XFxuK1xcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXFxuK1xcdFxcdFxcdFxcdCAgICAgICBvcHRpb25zKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIHhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoc3RydWN0IHhkcF9idWZmICp4ZHApXFxuQEAgLTUxMCw3ICs1MTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuK3hza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4gXFx0cmV0dXJuIChzdHJ1Y3QgeGRwX2Rlc2NfY3R4KXsgfTtcXG4gfVxcbkBAIC01MzAsMTMgKzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4tX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbitcXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4ge1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG4teHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oIGIvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oXFxuaW5kZXggMmJiMWQxMjJiMWJjNi4uYTdkZjU3Mzc4NGZkNiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcXG4rKysgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcXG5AQCAtMTU0LDcgKzE1NCw4IEBAIHN0cnVjdCB4ZHBfZGVzY19jdHgge1xcbiBcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xcbiB9O1xcbiBcXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpO1xcbitzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcXG4rXFx0XFx0XFx0XFx0ICAgdTMyIG9wdGlvbnMpO1xcbiBcXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcXG4ge1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbkBAIC0xNDksNiArMTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XFxuIFxcdFxcdFxcdF9fdTE2IGNzdW1fc3RhcnQ7XFxuIFxcdFxcdFxcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cXG4gXFx0XFx0XFx0X191MTYgY3N1bV9vZmZzZXQ7XFxuK1xcdFxcdFxcdF9fdTMyIHJlc2VydmVkO1xcbiBcXG4gXFx0XFx0XFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cXG4gXFx0XFx0XFx0LyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcXG4rKysgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xcbkBAIC03NjMsNiArNzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuICAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0IFxcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXFxuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxcbisgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSlcXG4gICpcXG4gICogSGVscGVyIGZvciBnZXR0aW5nIGRlc2MncyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGEgcG9pbnRlciwgaWYgcHJlc2VudC5cXG4gICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy5cXG5AQCAtNzcxLDE0ICs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuICAqIFJldHVybjogbmV3IFxcdTAwMjZ4ZHBfZGVzY19jdHggc3RydWN0IGNvbnRhaW5pbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YVxcbiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLlxcbiAgKi9cXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbitcXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucylcXG4ge1xcbiBcXHRzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHJldDtcXG4gXFxuIFxcdGFkZHIgPSBfX3hwX3Jhd19nZXRfYWRkcihwb29sLCBhZGRyKTtcXG4gXFxuIFxcdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xcbi1cXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG4rXFx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgb3B0aW9ucyk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuKysrIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcXG4gXFx0XFx0XFx0X191MTYgY3N1bV9zdGFydDtcXG4gXFx0XFx0XFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xcbiBcXHRcXHRcXHRfX3UxNiBjc3VtX29mZnNldDtcXG4rXFx0XFx0XFx0X191MzIgcmVzZXJ2ZWQ7XFxuIFxcbiBcXHRcXHRcXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xcbiBcXHRcXHRcXHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo0OS44Mzc2NzAyMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzg2NTY2OTI3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgVFggbWV0YWRhdGEgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgZm9yIHRoZSBYRFBfVFhfTUVUQURBVEEgZmxhZyBpbiB0aGUgZGVzY3JpcHRvciBvcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIEl0IHVwZGF0ZXMgdGhlIHhza19idWZmX2dldF9tZXRhZGF0YSBhbmQgeHBfcmF3X2dldF9jdHggaGVscGVycyBhbmQgdGhlaXIgY2FsbGVycy4gSG93ZXZlciwgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCB6ZXJvLWNvcHkgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IGEgZmV3IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnM6IGlnYywgbWx4NSwgc3RtbWFjLCBhbmQgaWRwZi4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsLCBub3IgYXJlIHRoZXkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSB2ZXRoIGFuZCB2aXJ0aW9fbmV0IGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBkbyBub3Qgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIGRvIG5vdCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWIyOWMxMDYwN2U0NzNjYWJhYmQ5MTZhZjAwZjczYzVmYjlhOThlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIyOjM3OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuaW5kZXggOGI5Y2U3Y2JmZmY5Yi4uMWZiNWYzY2JlOTNjNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuQEAgLTMwNzEsNyArMzA3MSw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4gXHRcdG9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gXHUwMDNjXHUwMDNjIElHQ19BRFZUWERfUEFZTEVOX1NISUZUO1xuIFxuIFx0XHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4gXHRcdGJpID0gXHUwMDI2cmluZy1cdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXG5AQCAtOTksNyArOTksNyBAQCBib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxuIFx0XHR4ZHB0eGQuZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQuZGF0YSA9IHhza19idWZmX3Jhd19nZXRfZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XG4tXHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XG4gXG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGIyYjdkMDI0MmRkM2MuLjZlOWQ0Y2IzMzZlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjcxNCwxNiArMjcxNCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcbiBcdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTtcbiBcbiBcdFx0LyogVG8gcmV0dXJuIFhEUCBidWZmZXIgdG8gWFNLIHBvb2wsIHdlIHNpbXBsZSBjYWxsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG5pbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbkBAIC0xOTYsNyArMTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbiBcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggY3R4O1xuIFxuLVx0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkcik7XG4rXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbiBcdGRlc2MgPSAodHlwZW9mKGRlc2MpKXtcbiBcdFx0LmFkZHJcdD0gY3R4LmRtYSxcbiBcdFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cdTAwM2VsZW4pLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbkBAIC0yNDAsNiArMjQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0IFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxuKyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbiAgKiBkZXRhaWxzLlxuQEAgLTI0OCw5ICsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4tXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkcik7XG4rXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG4gfVxuIFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuQEAgLTMxOCwxOCArMzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuK1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbi1cdGlmICghcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4pXG4rXHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZGF0YSAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4ge1xuLVx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG4rXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuK1x0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbkBAIC01MTAsNyArNTEzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xuIH1cbkBAIC01MzAsMTMgKzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbitfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbitcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbisrKyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxuQEAgLTE1NCw3ICsxNTQsOCBAQCBzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHtcbiBcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XG4gfTtcbiBcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcik7XG4rc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4rXHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4gXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbkBAIC0xNDksNiArMTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG4gXHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiBcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gXHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4rXHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuKysrIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbkBAIC03NjMsNiArNzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4rICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXG4gICpcbiAgKiBIZWxwZXIgZm9yIGdldHRpbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxuICAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5AQCAtNzcxLDE0ICs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogUmV0dXJuOiBuZXcgXHUwMDI2eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MncyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGFcbiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLlxuICAqL1xuLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuK1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4ge1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7XG4gXG4gXHRhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7XG4gXG4gXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbi1cdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuK1x0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcbitcdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbitcdFx0XHRfX3UzMiByZXNlcnZlZDtcbiBcbiBcdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuIFx0XHRcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo0OS44Mzc2NzI5NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ2Mjk1MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgYW5kIFJlYWNoYWJpbGl0eSBvZiB0aGlzIFhEUC9BRl9YRFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBYRFAgYW5kIEFGX1hEUCAoeHNrKSBjb2RlLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHBfcmF3X2dldF9jdHhgIHRvIGFjY2VwdCBhbiBgb3B0aW9uc2AgcGFyYW1ldGVyLiBUaGlzIHBhcmFtZXRlciBpcyBnZXR0aW5nIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGB4ZHBfZGVzYy5vcHRpb25zYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIHRoZW4gY2hlY2tzIGBvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEFgIGJlZm9yZSBhY3R1YWxseSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIFNtYXJ0LlxuXG5UaGV5J3JlIGFsc28gYWRkaW5nIGEgYF9fdTMyIHJlc2VydmVkO2AgZmllbGQgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGluIGBpZl94ZHAuaGAuIEFuZCB0aGVyZSdzIHNvbWUgY2xlYW51cCBpbiBgc3RtbWFjX3hkcF94bWl0X3pjYCwgcmVtb3Zpbmcgc29tZSBjb2RlIHJlbGF0ZWQgdG8gYHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBtZSBpczogd2hhdCdzIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlc2UgY2hhbmdlcz8gV2hlcmUgY2FuIHRoZXkgYmUgdHJpZ2dlcmVkLCBhbmQgd2hhdCdzIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2U/IEkgc2VlIHRoZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBzZXZlcmFsIGRyaXZlcnM6IEludGVsJ3MgYGlnY2AsIE1lbGxhbm94J3MgYG1seDVgLCBhbmQgU1RNaWNybydzIGBzdG1tYWNgLiBQbHVzLCBpdCdzIGFsdGVyaW5nIHNvbWUgY29yZSBuZXR3b3JraW5nIGhlYWRlcnMgYW5kIGZpbGVzLCBpbmNsdWRpbmcgYHhzay5oYCwgYHhkcF9zb2NrX2Rydi5oYCwgYW5kIGB4c2tfYnVmZl9wb29sLmNgLlxuXG5UaGUgY29yZSBjaGFuZ2UsIGFzIEkgc2VlIGl0LCBpcyBpbiBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgOiBJdCBub3cgaGFzIGFuIGBvcHRpb25zYCBwYXJhbWV0ZXIgYW5kIHRoZSBjcnVjaWFsIGNoZWNrIGAhKG9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSlgLiBUaGlzIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgdGhlIGNoYW5nZXMgYXJlIHRpZWQgdG8gdGhlIGBYRFBfVFhfTUVUQURBVEFgIGZsYWcuIFRoYXQncyBnb29kLlxuXG5TbywgQUZfWERQIHNvY2tldHMgYXJlIGRlZmluaXRlbHkgaW52b2x2ZWQgaGVyZSwgYXMgYFhEUF9UWF9NRVRBREFUQWAgaXMgYSBmbGFnIHJlbGF0ZWQgdG8gQUZfWERQLiBBRl9YRFAgaXMgYSBjZW50cmFsIG5ldHdvcmtpbmcgY29tcG9uZW50LiBJJ20gdGhpbmtpbmcgSSBjYW4gbGlrZWx5IGZ1enogdGhpcyB3aXRoIHN5emthbGxlciwgdXNpbmcgdmV0aCBvciBvdGhlciB2aXJ0dWFsIGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLiBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbHNvICp1c2VkKiBpbiBkcml2ZXIgY29kZSEgVGhpcyB3YXJyYW50cyBhIGRlZXBlciBsb29rLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdmlydHVhbCBkcml2ZXJzLCBsaWtlIHZldGggb3IgbWFjdmxhbi4gSWYgc28sIHRoYXQgb3BlbnMgdXAgYSBtdWNoIG1vcmUgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UgdG8gc2VlIGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZ2V0dGluZyBjYWxsZWQgYnkgYW55IG9mIHRob3NlIHZpcnR1YWwgZHJpdmVycy4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo1Ny45ODM5NzA1MTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMTAxNjYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzND1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3My1cXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc0OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc1LVxcdFxcdFxcdFxcdFxcdCAgICAgeGRwX2Rlc2Mub3B0aW9ucyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXFx0XFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY4MT1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3MTgtXFx0XFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3MTk6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcyMC1cXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMy1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMzMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzMjp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzMte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMzNS1cXHRcXHRcXHRcXHQgICAgICAgb3B0aW9ucyk7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01MzU9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM3LVxcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQzOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTU0NC17XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NzU9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODItXFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzgzOlxcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgIG9wdGlvbnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozNzo1OS42OTQ5OTMxNDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDczMzA3OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgYHhza19idWZmX2dldF9tZXRhZGF0YWAgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gaXQgYXBwZWFycyB0aGF0IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIHJlYWxseSBvbmx5IGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgIGRyaXZlcnMuIFRoYXQncyBhIHByZXR0eSBsaW1pdGVkIHNjb3BlLCBhbGwgdGhpbmdzIGNvbnNpZGVyZWQuIEl0J3MgZ29vZCB0byBrbm93IHdoZXJlIGl0IGlzICphbmQgaXNuJ3QqIHVzZWQuIE5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0ICp0cnVseSogdGhlIGNvbXBsZXRlIHBpY3R1cmU/IERpZG4ndCB3ZSBoYXZlIHNvbWV0aGluZyBlbHNlIHRoYXQgdG91Y2hlZCBYRFAgY29udGV4dD8gV2hhdCBhYm91dCBgeHBfcmF3X2dldF9jdHhgPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIG9yIG92ZXJsYXBwaW5nIHVzZXMgdGhhdCBJIGFtIGZvcmdldHRpbmcuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODM4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MDIuNzY4MzAzNDA1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzkwMDAwNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBfcmF3X2dldF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0NC0gKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI0NTogKiBXcmFwcGVyIGZvciB4cF9yYXdfZ2V0X2N0eCgpIHRvIGJlIHVzZWQgaW4gZHJpdmVycywgc2VlIGl0cyBrZG9jIGZvclxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0Ni0gKiBkZXRhaWxzLlxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUyPXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjUzLXtcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTQ6XFx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIsIG9wdGlvbnMpO1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1NS19XFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg9MTUyPXN0cnVjdCB4ZHBfZGVzY19jdHgge1xcbi0tXFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTE1Ni1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg6MTU3OnN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTgtXFx0XFx0XFx0XFx0ICAgdTMyIG9wdGlvbnMpO1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzYwPUVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzYyLS8qKlxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc2MzogKiB4cF9yYXdfZ2V0X2N0eCAtIGdldCBcXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc2NC0gKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc0LSAqL1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc3NTpzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzYtXFx0XFx0XFx0XFx0ICAgdTMyIG9wdGlvbnMpXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODctfVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc4ODpFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfY3R4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MDQuNzA3MzA4MTA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcwMjcxMTIwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBYRFAgQ29udGV4dCBSZXRyaWV2YWwqKlxuXG5SaWdodCwgc28gYHhwX3Jhd19nZXRfY3R4YCBpcyB3cmFwcGVkIGJ5IGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBsYXllcmluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGl0c2VsZi4gS25vd2luZyB3aGVyZSAqdGhhdCogaXMgdXNlZCBpcyBnb2luZyB0byBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGhvdyB0aGUgWERQIGNvbnRleHQgaXMgYmVpbmcgYWNjZXNzZWQgd2l0aGluIHRoaXMgWFNLIGJ1ZmZlciBzeXN0ZW0uIEl0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgdGhlIGxhcmdlciBwaWN0dXJlIG9mIGhvdyB3ZSBnZXQgdGhlIGNvbnRleHQuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIHNpdGVzIHJldmVhbC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MDcuNDEwMDIxNjM3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDA1ODE4NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcmF3X2dldF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MT1fX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk5OlxcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkciwgeGRlc2MtXFx1MDAzZW9wdGlvbnMpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXFx0ZGVzYyA9ICh0eXBlb2YoZGVzYykpe1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTIzOS0vKipcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNDEtICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTI6eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTE1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjA4Ljk1MDYwODQ1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTc2MzAyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERhdGEgRmxvdyBpbiB0aGUgZUJQRi9YRFAgTmV0d29yayBTdGFjayoqXG5cbkFscmlnaHQsIGxldCdzIHRyYWNlIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGlzIGNhbGxlZCB3aXRoaW4gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gSSBrbm93IGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgaXMgaW1wb3J0YW50IGZvciByZXRyaWV2aW5nIGJ1ZmZlciBjb250ZXh0IGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgWERQL1hTSyBmcmFtZXdvcmssIHNvIGFueSBwbGFjZSB0aGF0IGZ1bmN0aW9uIGlzIGludm9sdmVkIGlzIGEga2V5IGFyZWEgb2YgaW50ZXJlc3QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGl0c2VsZi4gVGhpcyB3aWxsIHByb3ZpZGUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoZSBkYXRhIGlzIGJlaW5nIGhhbmRsZWQgYW5kIHdoZXJlIHRoaXMgc3BlY2lmaWMgY29udGV4dCByZXRyaWV2YWwgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHBhY2tldCB0cmFuc21pc3Npb24gcHJvY2VzcyB3aXRoaW4gdGhlIGxpYmV0aCBYU0sgaW1wbGVtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGhpZ2hsaWdodCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMgSSBtaWdodCB0YWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MTIuNDY4MjQxNzk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM1MzQ3MzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzgtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE3OTogKiBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZCAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIFhTayB4bWl0IHcvbWV0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODAtICogQHhkZXNjOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTE6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTkyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nz1saWJldGhfeHNrX3htaXRfZmlsbF9idWYoc3RydWN0IGxpYmV0aF94ZHBfdHhfZnJhbWUgZnJtLCB1MzIgaSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTItXFx0aWYgKHByaXYpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI1MzpcXHRcXHRkZXNjID0gX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoXFx1MDAyNmZybS5kZXNjLCBzcSwgcHJpdik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1NC1cXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjE0LjAwMzU5NjI1M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgwNjQ5MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKldoZXJlIERvZXMgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAgRml0IEluPyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYC4gSXQncyBwcmV0dHkgZnVuZGFtZW50YWwsIHJpZ2h0PyBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwgdG8gdGhlIGVCUEYgZGF0YXBhdGguIE5vdywgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnkgdG8gcmVtZW1iZXIgKmV4YWN0bHkqIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gSXQncyBvYnZpb3VzbHkgdGllZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBhdGgsIGZpbGxpbmcgdGhlIGJ1ZmZlciB0byBnZXQgcGFja2V0cyBvdXQuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBYRFAvZUJQRiBkYXRhIGZsb3cuIEkgYmVsaWV2ZSBJJ20gdXNpbmcgYGxpYmV0aGAsIHdoaWNoIGhhbmRsZXMgdGhlIEV0aGVybmV0IGhlYWRlciBnZW5lcmF0aW9uIGFuZCBtYW5pcHVsYXRpb24uIFRoZSBgeHNrX3htaXRgIHBhdGggZnJvbSB0aGUgWERQIHByb2dyYW0uIFNvLCBpdCBzaG91bGQgYmUgaW4gdGhlIGNvbnRleHQgb2YgWERQIHNvY2tldHMgKFhTSykgb24gdGhlIHRyYW5zbWl0IHNpZGUsIHdoaWNoIGZlZWRzIGRhdGEgdG8gdGhlIGRyaXZlciByaW5nLiBCYXNpY2FsbHksIGl04oCZcyB0aGUgYnJpZGdlIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uJ3MgZGF0YSBhbmQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIEknZCBpbWFnaW5lIGl0IHdvdWxkIGJlIGludm9sdmVkIGluIGFzc2VtYmxpbmcgdGhlIGZyYW1lIGFuZCBoYW5kaW5nIGl0IG92ZXIuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcm91bmQgdGhhdCBmdW5jdGlvbiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBsaWJyYXJ5IGZvciBtZW1vcnkgbWFuYWdlbWVudC4gSXMgaXQgZGlyZWN0bHkgY2FsbGVkIGJ5IHRoZSBYRFAgcHJvZ3JhbSwgb3IgaXMgdGhlcmUgYW5vdGhlciBmdW5jdGlvbiBpbiBiZXR3ZWVuPyBJIHNob3VsZCBwcm9iYWJseSByZXZpZXcgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBjYWxsIGdyYXBocyB0byBiZSBjZXJ0YWluLCB0byBlbnN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEzOCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjE4LjE4NDI0NzU5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NDk5NzgzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaWJldGhfeHNrX3htaXRfZmlsbF9idWZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc5OiAqIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgWFNrIHhtaXQgdy9tZXRhXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4MC0gKiBAeGRlc2M6IFxcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODMtICpcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTg0OiAqIFNhbWUgYXMgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoKSwgYnV0IHJlcXVlc3RzIG1ldGFkYXRhIHBvaW50ZXIgYW5kXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4NS0gKiBmaWxscyBhZGRpdGlvbmFsIGZpZWxkcyBpbiBcXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIHRvIGFzayBmb3IgbWV0YWRhdGEgb2ZmbG9hZC5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE1LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMTY6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L28gbWV0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMTctICogQHhkZXNjOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjIzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMjQ6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjI1LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzMy0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjM0OiAqIGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIGFuIFhTayB4bWl0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzNS0gKiBAZnJtOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNDc6bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI0OC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsIHU2NCBwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Mi1cXHRpZiAocHJpdilcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjUzOlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcXHUwMDI2ZnJtLmRlc2MsIHNxLCBwcml2KTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU0LVxcdGVsc2VcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjU1OlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihcXHUwMDI2ZnJtLmRlc2MsIHNxKTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU2LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA0LVxcdFxcdFxcdFxcdGxpYmV0aF94ZHBfcHRyX3RvX3ByaXYodG1vKSwgcHJlcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MzA1OlxcdFxcdFxcdFxcdGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiwgeG1pdCk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTMwNi1cXHRmaW5hbGl6ZSh4ZHBzcSwgbiwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjE5Ljc3OTI1MTQ3MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIyMjU4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIGxpYmV0aF94c2tfeG1pdF9kb19idWxrKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCB3aGVyZSBleGFjdGx5IGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXRpbGl6ZWQgaW4gbXkgbmV0d29yayBzdGFjayBvciBhcHBsaWNhdGlvbj8gSXQncyB0aGF0IGRpcmVjdCwgcHJhY3RpY2FsIGFwcGxpY2F0aW9uIHRoYXQgbWF0dGVycy4gQW0gSSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBYRFAgaW1wbGVtZW50YXRpb24sIG1heWJlIHNvbWV0aGluZyBjdXN0b20tYnVpbHQgYXJvdW5kIEFGX1hEUCBzb2NrZXRzPyBPciBpcyBpdCBwYXJ0IG9mIGEgYnJvYWRlciBuZXR3b3JraW5nIGxpYnJhcnksIHVzZWQgYXMgYSBsb3ctbGV2ZWwgcHJpbWl0aXZlIGZvciBwYWNrZXQgdHJhbnNtaXNzaW9uP1xuXG5JJ20gbWVudGFsbHkgbWFwcGluZyB0aGUgY29kZSBmbG93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9ucy4gV2hhdCBkb2VzIHRoZSBidWxrIHRyYW5zbWlzc2lvbiBpbXBseT8gSXMgaXQgYSB3YXkgdG8gb3B0aW1pemUgdGhyb3VnaHB1dCBieSBiYXRjaGluZyBwYWNrZXRzLCBzaW1pbGFyIHRvIGhvdyBvdGhlciBpbnRlcmZhY2VzIHdvcmssIGJ1dCBzcGVjaWZpYyBmb3IgWERQPyBJcyBpdCBtYW5hZ2luZyB0aGUgY29tcGxleGl0aWVzIG9mIHJpbmcgYnVmZmVyIGludGVyYWN0aW9uIGFuZCBoYXJkd2FyZSBvZmZsb2FkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIHBhcmFtZXRlcnMgcGFzc2VkLCBhbmQgaG93IHRoZSBwYWNrZXRzIGFyZSBwcmVwYXJlZCBmb3IgdHJhbnNtaXNzaW9uLiBXaGF0IGFyZSB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBJcyBpdCBlZmZpY2llbnQsIG9yIGFyZSB0aGVyZSBib3R0bGVuZWNrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/XG5cbkxldCdzIGRyaWxsIGRvd24gaW50byB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIEkgbmVlZCB0byBrbm93IHdoZXJlIEkgY2FuIGZpbmQgdGhlIGZ1bmN0aW9uIHVzZWQgaW4gb3VyIHN5c3RlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjMuMjAxNTEzNzExWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU5MDMwNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aF94c2tfeG1pdF9kb19idWxrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MzE2PWJvb2wgaWRwZl94c2tfeG1pdChzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqeHNrc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMyNjpcXHRyZXR1cm4gbGliZXRoX3hza194bWl0X2RvX2J1bGsoeHNrc3EtXFx1MDAzZXBvb2wsIHhza3NxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzI3LVxcdFxcdFxcdFxcdCAgICAgICBtaW4oZnJlZSAtIDEsIHhza3NxLVxcdTAwM2V0aHJlc2gpLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI0Nz1saWJldGhfeHNrX3htaXRfZmlsbF9idWYoc3RydWN0IGxpYmV0aF94ZHBfdHhfZnJhbWUgZnJtLCB1MzIgaSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjQtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI2NTogKiBsaWJldGhfeHNrX3htaXRfZG9fYnVsayAtIHNlbmQgWFNrIHhtaXQgZnJhbWVzXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI2Ni0gKiBAcG9vbDogWFNrIGJ1ZmZlciBwb29sIGNvbnRhaW5pbmcgdGhlIGZyYW1lcyB0byBzZW5kXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9Mjg0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyODU6bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yODYtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjQuNzYwNTQ4NTk1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMjc0ODU4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBYU0sgVHJhbnNtaXNzaW9uIFBhdGhzIGluIFZpcnR1YWwgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiBob3cgYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYCBmYWN0b3JzIGludG8gdGhlIHBpY3R1cmUuIEkgc2VlIHRoYXQgaXQncyBiZWluZyBjYWxsZWQgd2l0aGluIGBpZHBmX3hza194bWl0YCwgd2hpY2ggSSBrbm93IGlzIHBhcnQgb2YgdGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiBkcml2ZXIsIHNvIGEgaGFyZHdhcmUtbGV2ZWwgY29tcG9uZW50LiBOb3csIG15IHF1ZXN0aW9uIGlzLCBhcmUgYW55IG9mIHRoZSAqdmlydHVhbCogZHJpdmVycyBvdXQgdGhlcmUsIHlvdSBrbm93LCB0aGUgb25lcyB0aGF0IG9mdGVuIGFic3RyYWN0IGF3YXkgdGhlIGhhcmR3YXJlLCB1dGlsaXppbmcgZWl0aGVyIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGB4cF9yYXdfZ2V0X2N0eGAgaW4gdGhlaXIgaW1wbGVtZW50YXRpb25zPyBJJ20gc3BlY2lmaWNhbGx5IHdvbmRlcmluZyBpZiB0aGV5J3JlIGludGVyYWN0aW5nIHdpdGggdGhlIFhEUCBTb2NrZXQgbGF5ZXIgYXQgYWxsLCBvciBwZXJoYXBzIEknbSBsb29raW5nIGF0IHRoaXMgaW4gdGhlIHdyb25nIG1hbm5lci4gTXkgZmlyc3QgaHVuY2g/IExldCdzIHRha2UgYSBsb29rIGF0IGB2ZXRoYC4gSXQncyBhIGNvbW1vbiBhbmQgd2VsbC11bmRlcnN0b29kIHZpcnR1YWwgRXRoZXJuZXQgcGFpciwgYW5kIGEgc2Vuc2libGUgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gUGVyaGFwcyB0aGUgYW5zd2VyIGxpZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjkuNzg4MDM3MTI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIyMTQwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MjkuODM2MjY3MTU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzEyMzYxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byBgeHBfcmF3X2dldF9jdHhgIHdpdGhpbiB0aGUgYHZldGhgIENvbnRleHQqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB6ZXJvIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB2ZXRoYCBjb250ZXh0LiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgSSdtIHRyb3VibGVzaG9vdGluZywgZGVidWdnaW5nLCBvciBwZXJoYXBzIG9wdGltaXppbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaG93IHJhdyBwYWNrZXRzIGFyZSBoYW5kbGVkIHdoZW4gYHZldGhgIGludGVyZmFjZXMgYXJlIGludm9sdmVkLiBJJ20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGF0IGZ1bmN0aW9uLiBJcyBpdCB3b3JraW5nIGFzIGV4cGVjdGVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyB0aGVyZT8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgZG9lcyBpdCBpbnRlcmFjdCB3aXRoPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgY29udGV4dCBpcyByZXRyaWV2ZWQsIHdoYXQgdGhhdCBjb250ZXh0IHJlcHJlc2VudHMsIGFuZCBob3cgaXQgaXMgc3Vic2VxdWVudGx5IHVzZWQuIE15IGNvbmNlcm4gaXMgcGVyaGFwcyBpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIG90aGVyIGZlYXR1cmVzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYxNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjMyLjk2NzUwNjcxMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MjY2MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhwX3Jhd19nZXRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6MzMuMDEzMDQzMzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2MTMzMDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgUmVsYXRlZCBYRFAgTWV0YWRhdGEgUmVxdWVzdHMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzIGEgbGl0dGxlIHZhZ3VlLiBXZSd2ZSBnb3QgYSBwcm9ibGVtLCBhbmQgdGhlIGRpcmVjdGlvbiBpc24ndCBlbnRpcmVseSBjbGVhci4gVG8gZ2V0IG15IGJlYXJpbmdzLCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMsIHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb246IGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyB0aGlzIGNvdWxkIGhvbGQgdGhlIGtleS4gTWV0YWRhdGEsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgWERQLCBvZnRlbiBwcm92aWRlcyBjcnVjaWFsIGNvbnRleHQgb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIHBhY2tldCBvciByZXF1ZXN0LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBjYWxsIOKAkyBpdCdzIGxpa2VseSB3aGVyZSB0aGUgcm9vdCBvZiB0aGUgaXNzdWUgaXMgZXhwb3NlZC4gVGhpcyBmdW5jdGlvbidzIHByb2JhYmx5IGtleSwgc28gbGV0J3MgY2hlY2sgaXQgb3V0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjg2NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjM2LjM3NDM3NTcwMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NjUwMTY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM0PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDgyLVxcdFxcdG1ldGFfcmVxLnVzZWRfZGVzYyA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4MzpcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcXHUwMDI2bWV0YSwgXFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODQtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1ldGFfcmVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwODY6XFx0XFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgaGF2ZSB1cGRhdGVkIG5leHRfdG9fdXNlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA4Ny1cXHRcXHRudHUgPSByaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwODk6XFx0XFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgaGF2ZSB1cGRhdGVkIFR4IGJ1ZmZlciBpbmZvICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA5MC1cXHRcXHRiaSA9IG1ldGFfcmVxLnR4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwOTI6XFx0XFx0LyogeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoKSBtYXkgdXNlIGEgZmV3IGRlc2NyaXB0b3JzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA5My1cXHRcXHRidWRnZXQgLT0gbWV0YV9yZXEudXNlZF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTQ1OD1tbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNTA3LVxcdFxcdGlmIChtZXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo1MDg6XFx0XFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3Qoc3EtXFx1MDAzZXhza19wb29sLCBtZXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy01MDktXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTUtXFx0aWYgKG1ldGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjY1NjpcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cXHUwMDNleHNrX3Bvb2wsIG1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTY1Ny1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcywgZXNlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2ODE9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzQ4LVxcdFxcdG1ldGFfcmVxLmVkZXNjID0gXFx1MDAyNnR4X3EtXFx1MDAzZWRtYV9lbnR4W2VudHJ5XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3NDk6XFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QocG9vbCwgXFx1MDAyNm1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzUwLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcywgXFx1MDAyNm1ldGFfcmVxKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDctXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjIwODpcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cXHUwMDNlcG9vbCwgXFx1MDAyNmN0eC5tZXRhLCB0bW8sIFxcdTAwMjZkZXNjKTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjA5LVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xNDE9c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV90b19jb21wbChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDktXFx0Lyogd2UgY2FuIG9ubHkgYXJyaXZlIGhlcmUgaWYgdGhlIGNvbXBsZXRpb24gdGltZXN0YW1wIGhhcyBiZWVuXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNTA6XFx0ICogcmVxdWVzdGVkIHZpYSBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVAsIHNlZSB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTUxLVxcdCAqL1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjY0PXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjc1LS8qKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3NjogKiAgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3QgLSBFdmFsdWF0ZSBBRl9YRFAgVFggbWV0YWRhdGEgYXQgc3VibWlzc2lvblxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3Ny0gKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yODY9c3RhdGljIGlubGluZSB2b2lkXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjg3Onhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI4OC1cXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01Mjg9c3RhdGljIGlubGluZSB2b2lkXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTI5Onhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzMC1cXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NjA9RVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjktICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy5cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzA6ICogTWV0YWRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGJ5IHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KCkuXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzcxLSAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjM3Ljk1MDg4MzY0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDczNjkxNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQUZfWERQIFplcm8tQ29weSBTdXBwb3J0IGluIGB2ZXRoYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBBRl9YRFAgemVyby1jb3B5IGlzIGhhbmRsZWQgaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgIGlzIHNob3dpbmcgdXAgaW4gYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGFuZCB0aGUgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAgY29kZS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgc2hvd2luZyBhIGZldyBkaWZmZXJlbnQgZHJpdmVycyB0aGF0IGFyZSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoaXMgbWV0YWRhdGEgcmVxdWVzdC4gSG93ZXZlciwgSSd2ZSBnb3QgYSBuYWdnaW5nIHN1c3BpY2lvbiBhYm91dCBgdmV0aGAuXG5cbk5vdywgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBgdmV0aGAgdXNlcyBgdmV0aF94ZHBfeG1pdGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHZldGhfeGRwX3htaXRfb25lYC4gQW5kIGZyb20gYSBxdWljayBnbGFuY2UsIGl0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgc2VlbSBsaWtlIGB2ZXRoX3hkcF94bWl0X29uZWAgaXMgbGV2ZXJhZ2luZyBgeHNrX3R4X21ldGFkYXRhX3JlcXVlc3RgLiBUaGlzIHJhaXNlcyBhIHJlZCBmbGFnLiBEb2VzIGB2ZXRoYCBoYXZlIHN1cHBvcnQgZm9yIEFGX1hEUCB6ZXJvLWNvcHksIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IEl0IHNlZW1zIHVubGlrZWx5LlxuXG5JJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGB2ZXRoYCBhY3R1YWxseSBoYXMgYHhza190eF9tZXRhZGF0YV9vcHNgIGRlZmluZWQuIExldCdzIGRpZyBpbiBhbmQgY2hlY2suIFRoYXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg2MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozODo0Mi40MjQ1NzgxNTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzIyNDcxMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hkcC5oPTIyPWJvb2wgaWRwZl94ZHBfdHhfZmx1c2hfYnVsayhzdHJ1Y3QgbGliZXRoX3hkcF90eF9idWxrICpicSwgdTMyIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmgtMjgtICogQHNxOiBYRFAgcXVldWUgdG8gcHJvZHVjZSB0aGUgSFcgVHggZGVzY3JpcHRvciBvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveGRwLmg6Mjk6ICogQHByaXY6IFxcdTAwMjZ4c2tfdHhfbWV0YWRhdGFfb3BzIG9uIFhTayB4bWl0IG9yICVOVUxMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94ZHAuaC0zMC0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0zNzU9aW50IGlnY194c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxdWV1ZV9pZCwgdTMyIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0zNzctLyogQUZfWERQIFRYIG1ldGFkYXRhIG9wZXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6Mzc4OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtMzc5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9Mjk5MD1zdGF0aWMgdm9pZCBpZ2NfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAyODpjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDI5LVxcdC50bW9fcmVxdWVzdF90aW1lc3RhbXBcXHRcXHQ9IGlnY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM0PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDgyLVxcdFxcdG1ldGFfcmVxLnVzZWRfZGVzYyA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA4MzpcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChwb29sLCBcXHUwMDI2bWV0YSwgXFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwODQtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1ldGFfcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTcxMjA9c3RhdGljIGludCBpZ2NfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MTkzLVxcdG5ldGRldi1cXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFxcdTAwMjZpZ2NfeGRwX21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo3MTk0OlxcdG5ldGRldi1cXHUwMDNleHNrX3R4X21ldGFkYXRhX29wcyA9IFxcdTAwMjZpZ2NfeHNrX3R4X21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MTk1LVxcdGlnY19ldGh0b29sX3NldF9vcHMobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM9NzQ5PXN0YXRpYyB2b2lkIGlnY19wdHBfdHhfcmVnX3RvX3N0YW1wKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmMtNzg3LVxcdFxcdFxcdHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShcXHUwMDI2dHN0YW1wLVxcdTAwM2V4c2tfbWV0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jOjc4ODpcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmlnY194c2tfdHhfbWV0YWRhdGFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmMtNzg5LVxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2hod3RzdGFtcHMuaHd0c3RhbXApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaD0xNT1zdHJ1Y3QgeGRwX2ZyYW1lX2J1bGs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaC0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oOjE3OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBsaWJldGhfeHNrdG1vX3Nsb3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaC0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYz0zOTA9dm9pZCBfX2xpYmV0aF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtMzkyLVxcdFxcdFxcdCAgICAgICB1MzIgemNfc2VncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM6MzkzOlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYy0zOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTQwNi1cXHRkZXYtXFx1MDAzZXhkcF96Y19tYXhfc2VncyA9IHpjX3NlZ3MgPyA6IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjQwNzpcXHRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSB6Y19zZWdzID8gdG1vIDogTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtNDA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz0xND12b2lkIF9fY29sZCBsaWJldGhfeHNrX3R4X3JldHVybl9idWxrKGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lICpicSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6MjM6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yNC1cXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cXHRcXHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9MzA0PXN0YXRpYyB2b2lkIG1seDVlX3hza19yZXF1ZXN0X2NoZWNrc3VtKHUxNiBjc3VtX3N0YXJ0LCB1MTYgY3N1bV9vZmZzZXQsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzozMTI6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzEzLVxcdC50bW9fZmlsbF90aW1lc3RhbXBcXHRcXHQ9IG1seDVlX3hza19maWxsX3RpbWVzdGFtcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTg9bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTUwOC1cXHRcXHRcXHR4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChzcS1cXHUwMDNleHNrX3Bvb2wsIG1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjUwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNTEwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzZXNzaW9uLVxcdTAwM2V3cWUtXFx1MDAzZWV0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTYtXFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3Qoc3EtXFx1MDAzZXhza19wb29sLCBtZXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo2NTc6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIGVzZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy02NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NjY1PXN0YXRpYyB2b2lkIG1seDVlX2ZyZWVfeGRwc3FfZGVzYyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTc0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NzQzOlxcdFxcdFxcdFxcdHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShjb21wbCwgXFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHMsIFxcdTAwMjZwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNzQ0LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD0xMTE9ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzIG1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjExMjpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01ODI5PXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX25pY19uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTg0MC1cXHRuZXRkZXYtXFx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcXHUwMDI2bWx4NWVfeGRwX21ldGFkYXRhX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU4NDE6XFx0bmV0ZGV2LVxcdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gXFx1MDAyNm1seDVlX3hza190eF9tZXRhZGF0YV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODQyLVxcdG5ldGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2NjU9c3RhdGljIHZvaWQgc3RtbWFjX3hza19yZXF1ZXN0X2xhdW5jaF90aW1lKHU2NCBsYXVuY2hfdGltZSwgdm9pZCAqX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNjc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzYtXFx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFxcdFxcdD0gc3RtbWFjX3hza19yZXF1ZXN0X3RpbWVzdGFtcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY4MT1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NDktXFx0XFx0eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QocG9vbCwgXFx1MDAyNm1ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNzUwOlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzdG1tYWNfeHNrX3R4X21ldGFkYXRhX29wcywgXFx1MDAyNm1ldGFfcmVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3NTEtXFx0XFx0aWYgKHNldF9pYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yODExPXN0YXRpYyBpbnQgc3RtbWFjX3R4X2NsZWFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IGJ1ZGdldCwgdTMyIHF1ZXVlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODc3LVxcdFxcdFxcdFxcdHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShcXHUwMDI2dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtlbnRyeV0ueHNrX21ldGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyODc4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c3RtbWFjX3hza190eF9tZXRhZGF0YV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODc5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2dHhfY29tcGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg0PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkwMS1cXHRuZGV2LVxcdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXFx1MDAyNnN0bW1hY194ZHBfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzkwMjpcXHRuZGV2LVxcdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzID0gXFx1MDAyNnN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkwMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTgxMj1lbnVtIG5ldGRldl9yZWdfc3RhdGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xODkxLSAqXFx0QHhkcF9tZXRhZGF0YV9vcHM6XFx0SW5jbHVkZXMgcG9pbnRlcnMgdG8gWERQIG1ldGFkYXRhIGNhbGxiYWNrcy5cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE4OTI6ICpcXHRAeHNrX3R4X21ldGFkYXRhX29wczpcXHRJbmNsdWRlcyBwb2ludGVycyB0byBBRl9YRFAgVFggbWV0YWRhdGEgY2FsbGJhY2tzLlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTg5My0gKlxcdEBldGh0b29sX29wczpcXHRNYW5hZ2VtZW50IG9wZXJhdGlvbnNcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjE1Mj1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNjItXFx0Y29uc3Qgc3RydWN0IHhkcF9tZXRhZGF0YV9vcHMgKnhkcF9tZXRhZGF0YV9vcHM7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMjYzOlxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp4c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjI2NC1cXHR1bnNpZ25lZCBzaG9ydFxcdFxcdGdmbGFncztcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaD0xODIxPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjMtXFx0XFx0XFx0ICAgICAgIHUzMiB6Y19zZWdzLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODI0OlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgyNS12b2lkIGxpYmV0aF94ZHBfc2V0X3JlZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNjc9c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94c2t0bW9fcmVxX2NzdW0odTE2IGNzdW1fc3RhcnQsIHUxNiBjc3VtX29mZnNldCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzMtLyogT25seSB0byBpbmxpbmUgdGhlIGNhbGxiYWNrcyBiZWxvdywgdXNlIEBsaWJldGhfeHNrdG1vIGluIGRyaXZlcnMgaW5zdGVhZCAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTc1LVxcdC50bW9fcmVxdWVzdF9jaGVja3N1bVxcdD0gbGliZXRoX3hza3Rtb19yZXFfY3N1bSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTE9X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTQte1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTU6XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyA9IGxpYmV0aF94ZHBfcHJpdl90b19wdHIocHJpdik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Ni1cXHRzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjIGRlc2M7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9Mjg1PWxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg2OlxcdFxcdFxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8sXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI4Ny1cXHRcXHRcXHR1MzIgKCpwcmVwKSh2b2lkICp4ZHBzcSwgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EpLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD00OD1zdHJ1Y3QgeGRwX3NvY2sge1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMTYtICovXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMTc6c3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMge1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE4LVxcdHZvaWRcXHQoKnRtb19yZXF1ZXN0X3RpbWVzdGFtcCkodm9pZCAqcHJpdik7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE0MT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE1Ny0gKiAgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlIC0gRXZhbHVhdGUgQUZfWERQIFRYIG1ldGFkYXRhIGF0IGNvbXBsZXRpb25cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE1ODogKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNTktICogIEBjb21wbDogcG9pbnRlciB0byBjb21wbGV0aW9uIG1ldGFkYXRhIHByb2R1Y2VkIGZyb20geHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjA6ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE2MS0gKiAgQHByaXY6IHBvaW50ZXIgdG8gZHJpdmVyLXByaXZhdGUgYXJlYWRcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTY2PXN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjc6XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNjgtXFx0XFx0XFx0XFx0XFx0ICAgIHZvaWQgKnByaXYpXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTIwNT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MjA2OlxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMjA3LVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjY0PXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjc2LSAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjc3OiAqICBhbmQgY2FsbCBhcHByb3ByaWF0ZSB4c2tfdHhfbWV0YWRhdGFfb3BzIG9wZXJhdGlvbi5cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzgtICogIEBwb29sOiBwb2ludGVyIHRvIEFGX1hEUCBidWZmZXIgcG9vbCwgdXNlZCB0byB2YWxpZGF0ZSB0aGUgbWV0YWRhdGFcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzktICogIEBwbWV0YTogcG9pbnRlciB0byBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjgwOiAqICBAb3BzOiBwb2ludGVyIHRvIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yODc9eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjg4LVxcdFxcdFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODk6XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcywgdm9pZCAqcHJpdilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTAte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTI5PXhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzMC1cXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTMxOlxcdFxcdFxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsIHZvaWQgKnByaXYpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTMyLXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9NTE9WERQX01FVEFEQVRBX0tGVU5DX3h4eFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy01My1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU0OlxcdGlmIChuZXRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMpIHtcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU1OlxcdFxcdGlmIChuZXRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXFx1MDAzZXRtb19maWxsX3RpbWVzdGFtcClcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTU2LVxcdFxcdFxcdHhza19mZWF0dXJlcyB8PSBORVRERVZfWFNLX0ZMQUdTX1RYX1RJTUVTVEFNUDtcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjU3OlxcdFxcdGlmIChuZXRkZXYtXFx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMtXFx1MDAzZXRtb19yZXF1ZXN0X2NoZWNrc3VtKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtNTgtXFx0XFx0XFx0eHNrX2ZlYXR1cmVzIHw9IE5FVERFVl9YU0tfRkxBR1NfVFhfQ0hFQ0tTVU07XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzo1OTpcXHRcXHRpZiAobmV0ZGV2LVxcdTAwM2V4c2tfdHhfbWV0YWRhdGFfb3BzLVxcdTAwM2V0bW9fcmVxdWVzdF9sYXVuY2hfdGltZSlcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTYwLVxcdFxcdFxcdHhza19mZWF0dXJlcyB8PSBORVRERVZfWFNLX0ZMQUdTX1RYX0xBVU5DSF9USU1FX0ZJRk87XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjQzLjk1NjgzMTg5N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzU0MTg4MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQUZfWERQIFRYIE1ldGFkYXRhIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGB4c2tfdHhfbWV0YWRhdGFfb3BzYCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIG9ubHkgaW1wbGVtZW50ZWQgaW4gYSBmZXcgZHJpdmVyczogYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGFuZCBgaWRwZmAuIFRoYXQgc2VlbXMgYSBsaXR0bGUgbGltaXRlZC4gTm93LCB3YWl0IGEgbWludXRlLi4uIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBpdCBpbiBgdmV0aGAuIEhtbSwgYHZldGhgIGlzIGEgdmlydHVhbCBpbnRlcmZhY2UsIHNvIGhvdyBkb2VzIGl0IGhhbmRsZSBtZXRhZGF0YSBpbiB0aGUgVFggcGF0aD8gRG9lcyBpdCByZWx5IG9uIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIHBlcmhhcHMgYHhwX3Jhd19nZXRfY3R4YCBpbnN0ZWFkP1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGB2ZXRoYCBqdXN0IHRvIGJlIHN1cmUuIEkgKnRob3VnaHQqIEkgZ3JlcHBlZCBmb3IgYm90aCBmdW5jdGlvbnMsIGB4cF9yYXdfZ2V0X2N0eGAgYW5kIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIGJ1dCBubyBkaWNlLiBJJ2xsIGV4dGVuZCB0aGUgc2VhcmNoLCBqdXN0IGluIGNhc2UsIGFuZCBleHBhbmQgaXQgdG8gdGhlIGBuZXQveGRwL2AgYW5kIGBuZXQvY29yZS9gIGRpcmVjdG9yaWVzLCBsb29raW5nIGZvciBgeHBfcmF3X2dldF9jdHhgLiBJcyB0aGVyZSBzb21lIGNsZXZlciB2aXJ0dWFsIGRyaXZlciwgcGVyaGFwcyBvbmUgc3VwcG9ydGluZyBBRl9YRFAgemVybyBjb3B5LCB0aGF0IG1pZ2h0IGJlIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucyBpbiBhIG5vbi1vYnZpb3VzIHdheT9cblxuT2theSwgc2luY2UgaXQncyBhIHZpcnR1YWwgaW50ZXJmYWNlLCBwZXJoYXBzIEkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIGB4c2tfYnVmZl9wb29sYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3ZldGguY2AsIHRvIHNlZSBob3cgaXQncyBtYW5hZ2luZyBidWZmZXIgcG9vbHMuIFRoaXMgbGluZSBvZiBpbnF1aXJ5IHNob3VsZCB0ZWxsIHRoZSB0YWxlIG9mIGhvdyBpdCBkb2VzIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6NDkuMzExMDIzMTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjM5ODc2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjQ5LjQ3MzQzMjkyNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA2MzI2NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQUZfWERQIGFuZCBaZXJvLUNvcHkgU3VwcG9ydCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYHZldGhgIGludGVyZmFjZSB1dGlsaXplZCB0aGUgYHhza19idWZmX3Bvb2xgIGZvciBBRl9YRFAgemVyby1jb3B5IG9wZXJhdGlvbnMsIGJ1dCBub3cgSSdtIGRvdWJ0aW5nIHRoYXQgYXNzdW1wdGlvbi4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IEFGX1hEUCdzIHplcm8tY29weSBmdW5jdGlvbmFsaXR5IGlzbid0IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhY3Jvc3MgYWxsIG5ldHdvcmsgZHJpdmVyczsgaXQncyBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlIGFuZCwgdGhlcmVmb3JlLCB0aGUgY29ycmVzcG9uZGluZyBrZXJuZWwgZHJpdmVycy4gU28sIEkgbmVlZCB0byBwaW5wb2ludCB3aGljaCBkcml2ZXJzIGFjdHVhbGx5ICpkbyogc3VwcG9ydCBBRl9YRFAncyB6ZXJvLWNvcHkuIExldCdzIGdldCBhIGxpc3QgYW5kIHZlcmlmeSB0aGUgY29tcGF0aWJpbGl0eSBtYXRyaXguIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIGltcGxlbWVudCBhbnl0aGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNjksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozODo1My4wNzk3NjI0MTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjIwNDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9wb29sXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkxOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD04MD1zdHJ1Y3QgdHNuZXBfdHgge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cXHRpbnQgaW5jcmVtZW50X293bmVyX2NvdW50ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDo5MzpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMC1cXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MTMxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cXHRzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHBfYmF0Y2g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyMzI6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD0yNjA9dTMyIHRzbmVwX2dldF9pcnFfY29hbGVzY2Uoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyNjE6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjA3ND1zdGF0aWMgaW50IHRzbmVwX25ldGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwOTY6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9MjE9c3RhdGljIGludCB0c25lcF94ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XFx0XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9NTg9c3RhdGljIGludCB0c25lcF94ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtNTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTYxLVxcdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz04MD1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTUwNi1cXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmg6NTA3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVxcdHN0cnVjdCBkcGFhMl9ldGhfYnAgKmJwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo4NDc6aW50IGRwYWEyX3hza19zZXR1cF9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtODQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTE3Mz1zdGF0aWMgaW50IGRwYWEyX3hza19kaXNhYmxlX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKGRldiwgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc2LVxcdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MjIwPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2VuYWJsZV9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcXHRcXHRcXHRcXHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTIyMi1cXHRcXHRcXHRcXHQgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0zMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU0NC1cXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTQ1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oPTU2MT1zdHJ1Y3QgZmVjX2VuZXRfcHJpdl9yeF9xIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NjMtXFx0dW5pb24gZmVjX3J4X2J1ZmZlciByeF9idWZbUlhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTQ4Mj1zdGF0aWMgYm9vbCBmZWNfZW5ldF94c2tfeG1pdChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE0ODM6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cXHRcXHRcXHQgICAgICB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNTY1PXN0YXRpYyBpbnQgZmVjX2VuZXRfdHhfcXVldWUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTE3MTktXFx0aWYgKHR4cS1cXHUwMDNleHNrX3Bvb2wpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNzIwOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0xNzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDQyMD1mZWNfYWxsb2NfbmV3X3J4cV94c2soc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCwgaW50IHF1ZXVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQ0MjE6XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDQyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTIyPXN0YXRpYyBpbnQgZmVjX3hza19yZXN0YXJ0X25hcGkoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTIzOlxcdFxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1MjQtXFx0XFx0XFx0XFx0dTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU2MT1zdGF0aWMgaW50IGZlY19lbmFibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTYyOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVxcdFxcdFxcdCAgICAgICB1MTYgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTkyPXN0YXRpYyBpbnQgZmVjX2Rpc2FibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTUtXFx0c3RydWN0IGZlY19lbmV0X3ByaXZfdHhfcSAqdHhxID0gZmVwLVxcdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU5NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqb2xkX3Bvb2wgPSB0eHEtXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTctXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ2MTg9c3RhdGljIGludCBmZWNfc2V0dXBfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NjE5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXFx0XFx0XFx0ICAgICAgdTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaD0yNDI9c3RydWN0IGd2ZV9yeF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQzLVxcdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDUtXFx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9NDczPXN0cnVjdCBndmVfdHhfcmluZyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY1OS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3RhdHNzOyAvKiBzeW5jIHN0YXRzIGZvciAzMmJpdCBhcmNocyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY2MS1cXHR1NjQgeGRwX3hza19zZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyMjc9c3RhdGljIGludCBndmVfcmVnX3hza19wb29sKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VyeF9jZmcubnVtX3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjEyODY6XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE2MzA6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjMxLVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Nzk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpX3R4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxNjg1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjg2LVxcdGludCB0eF9xaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYz0xMDg0PXN0YXRpYyBib29sIGd2ZV94c2tfdHhfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV90eF9yaW5nICp0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jOjEwODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB0eC1cXHUwMDNleHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmMtMTA4OC1cXHRzdHJ1Y3QgeGRwX2Rlc2MgZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MzQwMj1zdGF0aWMgdm9pZCBpNDBlX2NvbmZpZ194cHNfdHhfcmluZyhzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjM0MjQ6c3RhdGljIHN0cnVjdCB4c2tfYnVmZl9wb29sICppNDBlX3hza19wb29sKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg9MzI3PXN0cnVjdCBpNDBlX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg6NDAyOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oLTQwMy19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6ODM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVxcdFxcdFxcdFxcdHUxNiBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE0MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjE0MTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtMTQyLVxcdGJvb2wgaWZfcnVubmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxODM6aW50IGk0MGVfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXFx0XFx0XFx0dTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz02MzA9Ym9vbCBpNDBlX2NsZWFuX3hkcF90eF9pcnEoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjYzMjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNjMzLVxcdHUzMiBpLCBjb21wbGV0ZWRfZnJhbWVzLCB4c2tfZnJhbWVzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz03NDY9dm9pZCBpNDBlX3hza19jbGVhbl90eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVxcdHUxNiBudGMgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuLCBudHUgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NzQ5OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpicCA9IHR4X3JpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy03NTAtXFx0c3RydWN0IGk0MGVfdHhfYnVmZmVyICp0eF9iaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0xOT1zdHJ1Y3QgbmV0X2RldmljZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmg6MjA6c3RydWN0IHhza19idWZmX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTIzPWludCBpNDBlX3F1ZXVlX3BhaXJfZW5hYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgcXVldWVfcGFpcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmgtMjUtXFx0XFx0XFx0dTE2IHFpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5My0gKiBhdHRhY2hlZCBhbmQgY29uZmlndXJlZCBhcyB6ZXJvLWNvcHksIE5VTEwgb3RoZXJ3aXNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHR1MTYgcWlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaDo3OTg6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4MC1cXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNldHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMjgxOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRSh0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cXHRcXHRib29sIHdkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMC1cXHRpY2VfZm9yX2VhY2hfcnhfcmluZyhyeF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMzExOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMi1cXHRcXHRpbnQgY2xlYW5lZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzA0LVxcdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzA1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaD0zNDk9c3RydWN0IGljZV90eF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozNjU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTEyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxMjY6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xMjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE0ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxNDU6aWNlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE3ND1pY2VfcmVhbGxvY19yeF94ZHBfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIGJvb2wgcG9vbF9wcmVzZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xOTYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxOTc6aW50IGljZV94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI1OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNjEtXFx0XFx0XFx0ICAgICB1bmlvbiBpY2VfMzJiX3J4X2ZsZXhfZGVzYyAqcnhfZGVzYywgdTE2IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoyOTM6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0zNDI9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNjM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NDMyPXN0YXRpYyBpbnQgaWNlX3htaXRfeGRwX3R4X3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0MzQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDczLVxcdFxcdHR4X2Rlc2MtXFx1MDAzZWNtZF90eXBlX29mZnNldF9ic3ogPSBpY2VfYnVpbGRfY3RvYigwLCAwLCBzaXplLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQ3NDpcXHRcXHQvKiBhY2NvdW50IGZvciBlYWNoIHhkcF9idWZmIGZyb20geHNrX2J1ZmZfcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDc1LVxcdFxcdHhkcF9yaW5nLVxcdTAwM2V4ZHBfdHhfYWN0aXZlKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTUxNT1pY2VfcnVuX3hkcF96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVxcdCAgICAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTE3OlxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTY4OlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTU2OS1cXHRcXHRcXHRpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MDk9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0KHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MTA6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgc3RydWN0IHhkcF9kZXNjICpkZXNjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MzQ9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0X2JhdGNoKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTczNi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc3MDpcXHRcXHRcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXFx0XFx0XFx0XFx0c3RydWN0IHhkcF9kZXNjICpkZXNjcywgdTMyIG5iX3BrdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc5MTpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTEwPXN0cnVjdCBpY2VfdnNpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoxMzppbnQgaWNlX3hza19wb29sX3NldHVwKHN0cnVjdCBpY2VfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTQtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTU9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTctXFx0XFx0XFx0aW50IGJ1ZGdldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjA6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yMS1ib29sIGljZV94c2tfYW55X3J4X3JpbmdfZW5hKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0yMz12b2lkIGljZV94c2tfY2xlYW5feGRwX3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyNDpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTM0PXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgX19hbHdheXNfdW51c2VkICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo0MjpcXHRcXHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC00My1cXHRcXHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NDk9aWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgX19hbHdheXNfdW51c2VkICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XFx0XFx0ICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cXHRcXHQgICAgaW50IF9fYWx3YXlzX3VudXNlZCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTU3PWljZV9hbGxvY19yeF9idWZzX3pjKHN0cnVjdCBpY2VfcnhfcmluZyBfX2Fsd2F5c191bnVzZWQgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo1ODpcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01OS1cXHRcXHQgICAgIHUxNiBfX2Fsd2F5c191bnVzZWQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2My1cXHRcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4c2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjUtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NjQzPXN0cnVjdCBpZHBmX3R4X3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjU5LVxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjY2MDpcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTY2MS1cXHR9O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaD03MjA9bGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHN0cnVjdCBpZHBmX3R4X3F1ZXVlLCA2NCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcXHUwMDI2eGRwX2J1ZmYgZm9yIFhTayBSeCBidWZmZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3MzQ6ICogQHBvb2w6IFxcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTczNS0gKiBAaGRyX2J1ZjogXFx1MDAyNmxpYmV0aF9mcWUgZm9yIGhlYWRlciBidWZmZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTc1NT1zdHJ1Y3QgaWRwZl9idWZfcXVldWUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXFx0XFx0XFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3NjU6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjYtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MjY9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfYnVmcShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVxcdGNvbnN0IHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMgPSBcXHUwMDI2dnBvcnQtXFx1MDAzZWRmbHRfcXZfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXFx0dTMyIHFpZCA9IFUzMl9NQVg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTgtXFx0dTMyIHFpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9Nzk9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfY29tcGxxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6ODI6XFx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04My1cXHR1MzIgcWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz01NTQ9aW50IGlkcGZfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IGJwZi1cXHUwMDNleHNrLnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXFx0dTMyIHFpZCA9IGJwZi1cXHUwMDNleHNrLnF1ZXVlX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTMxOT1zdHJ1Y3QgaWdiX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjM2NTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2Ni19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU5PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODYyOnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODY0PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NjU6XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjYtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04Njc9Ym9vbCBpZ2JfYWxsb2NfcnhfYnVmZmVyc196YyhzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2ODpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY5LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODcwPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NzE6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCBjb25zdCBpbnQgYnVkZ2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODcyOmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NzMtaW50IGlnYl94c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxaWQsIHUzMiBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODI4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODQtXFx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04MzI3PXN0YXRpYyBib29sIGlnYl9jbGVhbl90eF9pcnEoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIGludCBuYXBpX2J1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgzMzUtXFx0c3RydWN0IGlnYl90eF9idWZmZXIgKnR4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04MzM3LVxcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTU3PXN0YXRpYyB2b2lkIGlnYl90eHJ4X3JpbmdfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo4MzpzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqaWdiX3hza19wb29sKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXFx0aW50IHFpZCA9IHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9OTc9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjk4OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0xMzk9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTQxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVxcdHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTY5OlxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3MC1cXHRcXHQgICAgICAgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3Ny1cXHRcXHRcXHQgICAgIHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjIwMTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9Mjk0PXN0YXRpYyBpbnQgaWdiX3J1bl94ZHBfemMoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoyOTU6XFx0XFx0XFx0ICBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVxcdFxcdFxcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MzQxPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjQ2NTpib29sIGlnYl94bWl0X3pjKHN0cnVjdCBpZ2JfcmluZyAqdHhfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0xNDg9c3RydWN0IGlnY19yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDQtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoyMDU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDYtfSBfX19fY2FjaGVsaW5lX2ludGVybm9kZWFsaWduZWRfaW5fc21wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNi1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM0PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAzNjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IHJpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwMzctXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbnEgPSB0eHJpbmdfdHhxKHJpbmcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYz03NDk9c3RhdGljIHZvaWQgaWdjX3B0cF90eF9yZWdfdG9fc3RhbXAoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXFx0aWYgKHRzdGFtcC1cXHUwMDNlYnVmZmVyX3R5cGUgPT0gSUdDX1RYX0JVRkZFUl9UWVBFX1hTSykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmM9NTY9c3RhdGljIGludCBpZ2NfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTIwLVxcdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxMjE6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxNTk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTYwLVxcdFxcdCAgICAgICB1MTYgcXVldWVfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuaC04LVxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oOjk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmgtMTAtXFx0XFx0ICAgICAgIHUxNiBxdWV1ZV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjUzLjIzNTk3MjA2NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc2NjYwNDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgWFNLIEJ1ZmZlciBQb29sIFVzYWdlIGluIFZpcnR1YWwgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIGB4c2tfYnVmZl9wb29sYCBpcyBhIHByZXR0eSB1YmlxdWl0b3VzIHRoaW5nLCBpc24ndCBpdD8gU2hvd3MgdXAgYWxsIG92ZXIgdGhlIHBsYWNlIGluIGRyaXZlcnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRoZXNlIGRyaXZlcnMgdGhhdCB1c2UgaXQgYXJlIGFjdHVhbGx5IHZpcnR1YWwgb25lcy4gTGV0J3Mgc2VlLi4uIEkndmUgZ290IGB0c25lcGAsIHdoaWNoIGlzIHRoYXQgVGltZSBTZW5zaXRpdmUgTmV0d29ya2luZyBFbmRwb2ludCBGUEdBIHRoaW5nLi4uIG5vcGUuIGBkcGFhMmAsIEZyZWVzY2FsZSdzIERhdGEgUGF0aCBBY2NlbGVyYXRpb24gQXJjaGl0ZWN0dXJlIC0gbmFoLCBub3QgdmlydHVhbC4gT2theSwgYGZlY2AsIHRoZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgZnJvbSBGcmVlc2NhbGUgLSBzdGlsbCBubyBkaWNlLiBBaCwgaG9sZCBvbi4uLiB0aGVyZSdzIGBndmVgLCBHb29nbGUgVmlydHVhbCBFdGhlcm5ldC4gWWVzISAqVGhhdCdzKiBhIHZpcnR1YWwgZHJpdmVyLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQuIExldCdzIGZpbmQgb3V0IGlmIGBndmVgIGlzIGxldmVyYWdpbmcgZWl0aGVyIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIHRoZSBvbGQgYHhwX3Jhd19nZXRfY3R4YC4gVGhhdCdsbCB0ZWxsIHVzIHNvbWV0aGluZyBhYm91dCBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzU2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM4OjU3LjgxMjYzNjM2OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5MzcyMjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWZmX2dldF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzg6NTcuODU2NTc5NTM3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzk4NzkyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgeHBfcmF3X2dldF9jdHhgIHdpdGhpbiBgZ3ZlYCoqXG5cbk9rYXksIHNvIHRoZSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYHhwX3Jhd19nZXRfY3R4YCDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgYGd2ZWAgY29udGV4dC4gVGhpcyBsaWtlbHkgbWVhbnMgSSdtIGxvb2tpbmcgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIGdyYXBoaWNzIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LCBvciBwb3RlbnRpYWxseSBzb21lIGNvcmUgcmVuZGVyaW5nIG9yIGNvbnRleHQgbWFuYWdlbWVudCBwaWVjZS4gTXkgZmlyc3Qgc3RlcCBpcyBwcm9iYWJseSB0byBwdWxsIHVwIHRoZSBjb2RlIGZvciB0aGF0IGZ1bmN0aW9uIGFuZCBxdWlja2x5IHJldmlldyBpdHMgcHVycG9zZS4gSSdsbCBiZSBsb29raW5nIGZvciB3aGF0IGRhdGEgaXQgcmVjZWl2ZXMgYW5kIHJldHVybnMuIFdoYXQgYXJlIHRoZSBrZXkgb3BlcmF0aW9ucyBpdCBwZXJmb3Jtcz8gSXMgaXQgaW52b2x2ZWQgaW4gY3JlYXRpbmcsIHJldHJpZXZpbmcsIG9yIG1hbmFnaW5nIGFueSBjcml0aWNhbCBoYW5kbGVzIG9yIG9iamVjdHMgcmVsYXRlZCB0byBncmFwaGljcyByZXNvdXJjZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBvZiBjb25jZXJuIGxpa2UgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcz8gSSB3aWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoaXMgZnVuY3Rpb24gcG90ZW50aWFsbHkgaW5mbHVlbmNlcyB0aGUgcGVyZm9ybWFuY2UsIHN0YWJpbGl0eSBhbmQgZ2VuZXJhbCBiZWhhdmlvdXIgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MTQyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MDEuMTM2NDYxNDYxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk3MDk1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHBfcmF3X2dldF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjAxLjE4MTQ0MDE0OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTUzNTQyMzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgZnJvbSB0aGUgaW5pdGlhbCBwcm9tcHQ6XG5cbioqQW5hbHl6aW5nIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAgaW4gYGd2ZWAqKlxuXG5BbHJpZ2h0LCBteSBicmFpbiBqdXN0IGtpY2tlZCBpbnRvIGdlYXIuIFRoZSBpbml0aWFsIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgZGlyZWN0aW5nIG1lIHRvIGV4YW1pbmUgdGhlIGB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAgY29tcG9uZW50IHdpdGhpbiB0aGUgYGd2ZWAgY29udGV4dC4gVGhpcyBsaWtlbHkgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGFzcGVjdHMgb2YgdGhlIEdlbmVyaWMgVmlydHVhbCBFdGhlcm5ldCAoR1ZFKSBkcml2ZXIgYW5kLCBtb3JlIHNwZWNpZmljYWxseSwgaG93IGl0IGhhbmRsZXMgdGhlIHRyYW5zbWlzc2lvbiAoVFgpIHNpZGUgb2YgdGhpbmdzIGluIHRoZSBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSB3b3JsZCwgd2l0aCBtZXRhZGF0YSByZXF1ZXN0cy4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgcmVxdWVzdCBwZXJ0YWlucyB0byBzcGVjaWZpYyBkZXRhaWxzIG9yIHN1cHBsZW1lbnRhcnkgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgcGFja2V0cyBiZWluZyBzZW50IHRocm91Z2ggdGhlIFhEUCBzb2NrZXQuIFBlcmhhcHMgaXQncyBkZWFsaW5nIHdpdGggVkxBTiB0YWdnaW5nLCBxdWV1ZSBhc3NpZ25tZW50LCBjaGVja3N1bSBvZmZsb2FkIGRpcmVjdGl2ZXMsIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcz8gTXkgZmlyc3Qgc3RlcCB3aWxsIGJlIHRvIGNvbmZpcm0gdGhlc2Ugc3VzcGljaW9ucyBieSBjaGVja2luZyB0aGUgY29kZWJhc2UgYW5kIGZpbmRpbmcgb3V0IGV4YWN0bHkgd2hhdCB0eXBlIG9mIFwibWV0YWRhdGFcIiB0aGUgcmVxdWVzdCBlbmNvbXBhc3Nlcy4gSSB3aWxsIHBheSBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCB0aGUgZnVuY3Rpb25zIHRoYXQgY29uc3VtZSB0aGUgcmVxdWVzdCwgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgVFggcGF0aC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgdGVsbHMgdXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDE2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MDUuMTM0OTg0NDIyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTEzNjQxNjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza190eF9tZXRhZGF0YV9yZXF1ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOTowNS4zODYzNTU2NDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MDQ3MDEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqTmV0d29yayBEcml2ZXIgRGVlcCBEaXZlOiBFeGFtaW5pbmcgYHZpcnRpb19uZXRgIGFuZCBYRFAqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGB2aXJ0aW9fbmV0YCByaWdodCBub3cuIEEga2V5IHF1ZXN0aW9uIGlzIGltbWVkaWF0ZWx5IGNvbWluZyB0byBtaW5kOiBkb2VzIHRoaXMgcGFydGljdWxhciBkcml2ZXIgb2ZmZXIgc3VwcG9ydCBmb3IgQUZfWERQIGFuZCBpdHMgemVyby1jb3B5IGNhcGFiaWxpdGllcz8gVGhhdCdzIGEgY3JpdGljYWwgZGV0YWlsIGZvciBwZXJmb3JtYW5jZSBpbiBoaWdoLXRocm91Z2hwdXQgbmV0d29yayBlbnZpcm9ubWVudHMsIHNvIGl0J3MgdGhlIGZpcnN0IHRoaW5nIEknZCB3YW50IHRvIHZlcmlmeS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgaXQgZGlkISBJZiBub3QsIHdoYXQgd291bGQgaXQgdGFrZSB0byBpbXBsZW1lbnQ/IExldCBtZSBkaWcgYSBsaXR0bGUgZnVydGhlci4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjA4LjM3NjgyNzQ4NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyMzg5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI5NT1zdHJ1Y3Qgc2VuZF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzEzLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozMTQ6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MzIwPXN0cnVjdCByZWNlaXZlX3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNjctXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM2ODpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xMzIyPXN0YXRpYyBpbnQgdmlydG5ldF9hZGRfcmVjdmJ1Zl94c2soc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MTMyMzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xMzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xMzg0PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9vbmUoc3RydWN0IHNlbmRfcXVldWUgKnNxLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoxMzg1OlxcdFxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0xMzg2LVxcdFxcdFxcdFxcdHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0xNDA1PXN0YXRpYyBpbnQgdmlydG5ldF94c2tfeG1pdF9iYXRjaChzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EsXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjE0MDY6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQwNy1cXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBidWRnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMTQzNi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MTQzNzpzdGF0aWMgYm9vbCB2aXJ0bmV0X3hza194bWl0KHN0cnVjdCBzZW5kX3F1ZXVlICpzcSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTE0MzgtXFx0XFx0XFx0ICAgICBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4MjA9c3RhdGljIGludCB2aXJ0bmV0X3JxX2JpbmRfeHNrX3Bvb2woc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTgyMTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4NjE9c3RhdGljIGludCB2aXJ0bmV0X3NxX2JpbmRfeHNrX3Bvb2woc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4NjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzZW5kX3F1ZXVlICpzcSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTg2MzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU4NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU4ODU9c3RhdGljIGludCB2aXJ0bmV0X3hza19wb29sX2VuYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo1ODg2OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01ODg3LVxcdFxcdFxcdFxcdCAgIHUxNiBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTk2OT1zdGF0aWMgaW50IHZpcnRuZXRfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU5NzEtXFx0c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo1OTcyOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01OTczLVxcdHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MDguNDI0MDc0OTA1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODA3MTU2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlZpcnRpby1uZXQgXHUwMDI2IFhEUDogRGVsdmluZyBpbnRvIFplcm8tQ29weSBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsICp2aXJ0aW9fbmV0KiBub3cgc3VwcG9ydGluZyBBRl9YRFAgemVyby1jb3B5IGlzIGdyZWF0IG5ld3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgcHJlY2lzZWx5IHRoZXkndmUgaW1wbGVtZW50ZWQgaXQuIEFyZSB0aGV5IGxlYW5pbmcgdG93YXJkcyB1c2luZyB0aGUgKnhza190eF9tZXRhZGF0YV9yZXF1ZXN0KiBvciB0aGUgKnhza19idWZmX2dldF9tZXRhZGF0YSogZnVuY3Rpb24/IFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzLiBVbmRlcnN0YW5kaW5nIHRoZSBjaG9pY2UgaGVyZSBnaXZlcyBtZSBhIGRlZXBlciBzZW5zZSBvZiB0aGUgYXBwcm9hY2gsIHRoZSB0cmFkZS1vZmZzIHRoZXkgbWFkZSwgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlLiBJcyB0aGlzIGEgbW9yZSBlZmZpY2llbnQgcHVsbC1iYXNlZCBhcHByb2FjaCwgb3IgZGlkIHRoZXkgZ28gd2l0aCBzb21ldGhpbmcgZWxzZT8gV2UgY2FuIGxlYXJuIGEgbG90IGZyb20gdGhpcyBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3OTI1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MTEuODA0ODA0MTk1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzg1NjI2OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX3JlcXVlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOToxMS44NDg2Njg5NzRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MzQ1MTQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBEYXRhIFJldHJpZXZhbCBQb2ludHMgaW4gdmlydGlvX25ldC5jKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gdHJhY2Ugd2hlcmUgd2UncmUgZ2V0dGluZyBvdXIgZGF0YSBmcm9tIGluIHRoZSBgdmlydGlvX25ldC5jYCBtb2R1bGUuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBsb29rIGF0IGhvdyB0aGUgY29udGV4dCBvciBtZXRhZGF0YSBmb3IgdGhlIFhTSyAoZVhwcmVzcyBEYXRhIFBhdGggU29ja2V0IEtlcm5lbCkgYnVmZmVycyBhcmUgaGFuZGxlZC4gV2UncmUgb2J2aW91c2x5IGNvbmNlcm5lZCBhYm91dCBkYXRhIHJldHJpZXZhbCwgYW5kIHNpbmNlIHdlJ3JlIHVzaW5nIFhTSywgdGhlIGZ1bmN0aW9ucyB0byBleGFtaW5lIGFyZSBsaWtlbHkgYHhwX3Jhd19nZXRfY3R4YCBvciBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHJlbGV2YW50IGRhdGEgaXMgYmVpbmcgYWNjZXNzZWQgYW5kIHByZXBhcmVkIGZvciBwcm9jZXNzaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbnRleHQgaXMgYmVpbmcgcmV0cmlldmVkIG9yIGhvdyB0aGUgYnVmZmVyIG1ldGFkYXRhIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE4NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjE1LjUxMjEyMjYzNVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3NzAzMzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWZmX2dldF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjE1LjU1ODkwMDY4M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ4MjE5MDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHZpcnRpb19uZXQuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgcHJvYmxlbSBsaWtlbHkgbGllcyBpbiB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgWGVuIHBsYXRmb3JtLiBUaGUgZnVuY3Rpb24gYHhwX3Jhd19nZXRfY3R4YCBpcyB0aGUgc3BlY2lmaWMgcGllY2UgSSBuZWVkIHRvIGxvb2sgYXQgaW4gYHZpcnRpb19uZXQuY2AuIEkgaGF2ZSBhIGh1bmNoIHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgY29udGV4dCBkYXRhIGlzIGJlaW5nIHJldHJpZXZlZCBvciBoYW5kbGVkLCBhbmQgdGhhdCdzIHdoZXJlIHRoZSBmYWlsdXJlIGlzIG9jY3VycmluZy4gTGV0J3Mgc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgdmlydGlvX25ldCBjb250ZXh0LiBJIGV4cGVjdCB0aGlzIHRvIGJlIGEgY3J1Y2lhbCBkYXRhIHJldHJpZXZhbCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQ2NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjE4LjUwNzEyMjUyN1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNjE0MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhwX3Jhd19nZXRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MTguNTUyNDkwNDU1WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjc1NzM0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgQUZfWERQIFRYIE1ldGFkYXRhIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBgdmlydGlvX25ldGAgZHJpdmVyIGlzIGFwcGFyZW50bHkgbm90IHBsYXlpbmcgYmFsbCB3aXRoIEFGX1hEUCBUWCBtZXRhZGF0YS4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZSBpbiBteSBjdXJyZW50IHByb2plY3QsIGFzIEkgd2FzIGhvcGluZyB0byBsZXZlcmFnZSB0aGF0IGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gcGl2b3QuIE9rYXksIHdoYXQgYWJvdXQgdGhlIGBuZXRkZXZzaW1gIGRyaXZlcj8gSXQncyBvZnRlbiBhIHVzZWZ1bCB0ZXN0aW5nIGdyb3VuZC4gRG9lcyAqaXQqIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IGZvciBBRl9YRFA/IFNwZWNpZmljYWxseSwgZG9lcyBpdCBoYW5kbGUgdGhhdCBjcnVjaWFsIG1ldGFkYXRhIGR1cmluZyB0cmFuc21pc3Npb24/IEkgbmVlZCB0byBjaGVjayB0aGUgZG9jcywgbWF5YmUgcnVuIGEgcXVpY2sgdGVzdC4gVGhpcyBjb3VsZCBvcGVuIHVwIGEgdmlhYmxlIHBhdGggZm9yd2FyZCwgb3IgYXQgbGVhc3QgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgbGltaXRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjgwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MjEuOTgwMDY2NTc0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgzMzYyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcG9vbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOToyMi4wMjM5MDg3ODNaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExNjEwMTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRoaW5raW5nIG9uIEFGX1hEUCBUWCBNZXRhZGF0YSBTdXBwb3J0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIG5ldHdvcmsgZHJpdmVycyBzdXBwb3J0IEFGX1hEUCBUWCBtZXRhZGF0YS4gSSAqZGlkKiBjaGVjayBgdmV0aGAgYWxyZWFkeSDigJMgbm90aGluZyB0aGVyZSwgbm8gYHhza19idWZmX3Bvb2xgLiBTbywgbGV0J3Mgc2VlLCBteSBub3RlcyBzYXkgdGhlIGZvbGxvd2luZyBkcml2ZXJzIGhhdmUgc3VwcG9ydDogYGlnY2AgKHRoZSBJbnRlbCBJMjI1L0kyMjYpLCBgbWx4NWAgKE1lbGxhbm94IENvbm5lY3RYLTQrKSwgYHN0bW1hY2AgKHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDKSwgYW5kIGBpZHBmYCAodGhlIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikuXG5cbldhaXQgYSBtaW51dGUsIHdhc27igJl0IGBzdG1tYWNgIHVzZWQgaW4gKnNvbWUqIFFFTVUgZW11bGF0aW9ucz8gTm8sIHRoYXQncyBub3QgcmlnaHQuIGBzdG1tYWNgIGlzIHR5cGljYWxseSBmb3IgQVJNIFNvQ3MsIGxpa2UgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMuIFFFTVUgZG9lc24ndCBlbXVsYXRlIGl0IGJ5IGRlZmF1bHQgb24geDg2LCBidXQgaXQgKmNhbiogYmUgdXNlZCB0byBlbXVsYXRlIHNvbWUgQVJNIGJvYXJkcy5cblxuSG9sZCBvbuKApiBJJ20gZ2V0dGluZyBtaXhlZCB1cC4gSSBhbHNvIHRob3VnaHQgYGlnY2Agd2FzIGVtdWxhdGVkIGluIFFFTVUsIGJ1dCB0aGF0J3Mgbm90IHJpZ2h0LCBpcyBpdD8gUUVNVSBoYXMgdGhlIGBlMTAwMGAgYW5kIGBlMTAwMGVgIGVtdWxhdGlvbnMuIEJ1dCBgZTEwMDBlYCBpcyBub3QgdGhlIHNhbWUgYXMgYGlnYmAsIHJpZ2h0PyBObywgYGUxMDAwZWAgaXMgdGhlIGBlMTAwMGVgIGRyaXZlciBhbmQgYGlnYmAgaXMgZm9yIHRoZSA4MjU3NS84MjU3Ni4gQWgsIHRoYXQncyByaWdodCwgUUVNVSBoYXMgYGlnYmAgZW11bGF0aW9uIVxuXG5Ob3cgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBpbXBvcnRhbnQuIERvZXMgYGlnYmAgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGE/IEkgbmVlZCB0byBsb29rIHRoYXQgdXAgYW5kIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5MjQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MjguMTQwMDEyMDQzWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA2NjMyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX3JlcXVlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MjguMTg1MDg0NDAyWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDI2NDE4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyBlQlBGIFhTSyBUWCBTdXBwb3J0KipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWNzIG9mIGVCUEYgYW5kIFhTSyBUWCwgYW5kIGl0IGxvb2tzIGxpa2UgYGlnYmAgZHJpdmVyIGlzbid0IHBsYXlpbmcgbmljZWx5IHdpdGggYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YC4gVGhhdCdzIGEgYml0IG9mIGEgYnVtbWVyOyBJJ2xsIGhhdmUgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgbGV0J3MgcGl2b3QuIFNpbmNlIGBpZ2JgIGlzIG91dCBvZiB0aGUgcGljdHVyZSBmb3IgdGhhdCBzcGVjaWZpYyB1c2UgY2FzZSwgbXkgbmV4dCB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IGBlMTAwMGVgPyBJIHdvbmRlciBpZiB0aGF0IGRyaXZlciBvZmZlcnMgYmV0dGVyIHN1cHBvcnQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBvciByZWxldmFudCBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiBpdCBwcm92aWRlcyB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uYWxpdHkuIFRoaXMgY291bGQgYmUgYSBnb29kIGFsdGVybmF0aXZlLCBvciBhdCBsZWFzdCBhIHN0ZXBwaW5nIHN0b25lIHRvIGEgc29sdXRpb24uIFBlcmhhcHMgdGhlIGBlMTAwMGVgIGNvZGUgb2ZmZXJzIGEgc2ltaWxhciBhcmNoaXRlY3R1cmUgdGhhdCBpcyBtb3JlIHJlYWRpbHkgYWRhcHRlZC4gVGltZSB0byBkZWx2ZSBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NjM2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MzEuODg3NzI4NjczWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg4NDMwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3R4X21ldGFkYXRhX3JlcXVlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MzEuOTMyNjIxMjcxWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTU1MDI1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBYRFAgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IFhEUCBzdXBwb3J0IGFuZCBpdCBzZWVtcyBvbmx5IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgIGFyZSB0aGUgZHJpdmVycyBpbiBwbGF5LiBIbW0sIGxldCBtZSB0aGluayB0aHJvdWdoIGBpZHBmYCBhIGJpdCBjbG9zZXIuIEl0IGxvb2tzIGxpa2UgYGlkcGZgIGxldmVyYWdlcyBgbGliZXRoX3hza194bWl0X2RvX2J1bGtgLCB3aGljaCB0aGVuIGNhbGxzIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLCB3aGljaCwgZmluYWxseSwgY2FsbHMgYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlc2UgZHJpdmVycyBhcmUgZW11bGF0ZWQgYnkgUUVNVS4gTm9wZSwgYGlkcGZgIGlzbid0IGVtdWxhdGVkIGluIFFFTVUuIE5laXRoZXIgaXMgYG1seDVgLCBvciBgaWdjYC4gTm93LCBgc3RtbWFjYC4uLiBRRU1VIGhhcyB0aG9zZSBkZXZpY2UgZGVmaW5pdGlvbnM6IGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYGh3L25ldC9mdGdtYWMxMDAuY2AsIGBody9uZXQvbnBjbTd4eF9lbWMuY2AuXG5cbkFoYSwgYHN0bW1hY2AgaXMgYSBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIChEV01BQykhIEFuZCBRRU1VIGRvZXMgZW11bGF0ZSBgZGVzaWdud2FyZWAgTUFDISBUaGF0J3MgZ29vZCBuZXdzLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IFFFTVUgaGFzIGBkZXNpZ253YXJlYC4gWWVwLCB0aGVyZSBpdCBpczogYGh3L25ldC9kZXNpZ253YXJlLmNgLiBUaGUgcmVtYWluaW5nIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGFjY2Vzc2libGUgaW4gdGhlIHN0YW5kYXJkIHN5emthbGxlciB4ODZfNjQgVk1zPyBTeXprYWxsZXIgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBkZXNpZ253YXJlYCBNQUMgaXMgZXhwb3NlZCBpbiB0aGVzZSBlbnZpcm9ubWVudHMsIHR5cGljYWxseSwgaXMgaXQgYSBwbGF0Zm9ybSBkZXZpY2Ugb24gQVJNIG9yIGEgUENJIGRldmljZT8gT2theSwgSSBzaG91bGQgY2hlY2sgaWYgYHN0bW1hY2AgY2FuIGJlIGEgUENJIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6MzguNDg4MTI3MzU5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM4ODg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NDU9c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODY9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODA2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXFx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMi1cXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQxPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NDg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ5LVxcdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODUyPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NzA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVxcdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk4LVxcdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTAxPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MTk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIwLVxcdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTQ0PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTUzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY3LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk3MD1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5ODA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4MS1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTg0PXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk5NDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQzLVxcdC5zZXR1cCA9IGFkbG5fc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTA5PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBxdWFya19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0Ni1cXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjY6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Ny1cXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDMtXFx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xNjU9c3RhdGljIGludCBsb29uZ3Nvbl9nbmV0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE3NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbmV0X3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVxcdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAxLVxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXFx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XFx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFxcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjozOTozOC41Mzc1MjIyMDdaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI0ODA5NTM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGX1hEUCBUWCBNZXRhZGF0YSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJZZXMsIGBzdG1tYWNgICpjYW4qIGJlIGEgUENJIGRldmljZSwgbGlrZSB3aXRoIGBkd21hYy1pbnRlbC5jYCBhbmQgYHN0bW1hY19wY2kuY2AuXCIgQnV0IHRoZW4gSSByZW1lbWJlciBgc3RtbWFjYCBpcyBhbHNvIHVzZWQgZm9yIEludGVsIFF1YXJrIGFuZCBvdGhlciBJbnRlbCBTb0NzLCBzbyBpcyB0aGlzIHNvbWV0aGluZyBJIGNhbiBldmVuIHJlYWNoIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YCwgd2hpY2ggY2FuIGluamVjdCBQQ0kgZGV2aWNlcyAqaWYqIFFFTVUgc3VwcG9ydHMgdGhlbS4gQW5kLCB1bmZvcnR1bmF0ZWx5LCBJIGtub3cgUUVNVSBkb2Vzbid0IGVtdWxhdGUgYHN0bW1hY2AgUENJIGRldmljZXMuXG5cbk9rYXksIGJhY2sgdG8gdGhlIGRyYXdpbmcgYm9hcmQuIExldCdzIHRoaW5rIGFib3V0IGB2ZXRoYC4gSG1tLCBJIGNoZWNrZWQgYHZldGhgIGVhcmxpZXIsIGFuZCBpdCBkb2Vzbid0IHN1cHBvcnQgQUZfWERQIFRYIG1ldGFkYXRhLlxuXG5XYWl0IGEgc2Vjb25kISBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAuIFNwZWNpZmljYWxseSwgdGhpcyBjaGFuZ2U6XG5gYGBjXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbitfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbitcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4tXHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuKVxuK1x0aWYgKCFwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkpXG4gXHRcdHJldHVybiBOVUxMO1xuYGBgXG5UaGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwsIGFzIGl0J3MgY2FsbGVkIGJ5IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBOb3csIGB4cF9yYXdfZ2V0X2N0eGAgbGVhZHMgdG8gYHhza19idWZmX3Jhd19nZXRfY3R4YCwgd2hpY2ggbGVhZHMgdG8gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gQW5kIHRoYXQsIGluIHR1cm4sIGlzIHVzZWQgaW4gYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAsIHdoaWNoIGlzIHVzZWQgaW4gYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYC4gRmluYWxseSwgYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYCBpcyB1c2VkIGluIGBpZHBmX3hza194bWl0YC5cblxuV2FpdCEgSSBzZWUgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbHNvIGNhbGxlZCBkaXJlY3RseSBpbiBgaWdjX3hkcF94bWl0X3pjYCwgYG1seDVlX3hza190eGAsIGFuZCBgc3RtbWFjX3hkcF94bWl0X3pjYC4gVGhlc2UgYWxsIGxvb2sgcHJvbWlzaW5nLiBOb3csIGNhbiBhbnkgb2YgdGhvc2UgYmUgcmVhY2hlZCB3aXRoIFN5emthbGxlcj9cblxuU3l6a2FsbGVyICpjYW4qIGZ1enogQUZfWERQIHNvY2tldHMuIEJ1dCBpZiB0aGUgdW5kZXJseWluZyBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IEFGX1hEUCB6ZXJvIGNvcHkgKm9yKiBUWCBtZXRhZGF0YSwgdGhhdCBjb2RlIGluIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgbWlnaHQgbm90IGV2ZW4gZ2V0IGhpdC4gSG1tbSwgZG9lcyBgdmV0aGAgc3VwcG9ydCBBRl9YRFAgemVybyBjb3B5PyBJJ2xsIG5lZWQgdG8gY2hlY2sgYHZldGhfeGRwX3htaXRgIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzQzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjQ3Ljc4NTYyMDE1NFoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1Mjg0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmV0aF94ZHBfeG1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jPTQ5Nj1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKnZldGhfcGVlcl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01MDMtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjUwNDpzdGF0aWMgaW50IHZldGhfeGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG4sXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUwNS1cXHRcXHRcXHQgc3RydWN0IHhkcF9mcmFtZSAqKmZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz01NjE9c3RhdGljIGludCB2ZXRoX25kb194ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NjUtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2NjpcXHRlcnIgPSB2ZXRoX3hkcF94bWl0KGRldiwgbiwgZnJhbWVzLCBmbGFncywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ny1cXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTU3Nj1zdGF0aWMgdm9pZCB2ZXRoX3hkcF9mbHVzaF9icShzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc5LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1ODA6XFx0c2VudCA9IHZldGhfeGRwX3htaXQocnEtXFx1MDAzZWRldiwgYnEtXFx1MDAzZWNvdW50LCBicS1cXHUwMDNlcSwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy01ODEtXFx0aWYgKHNlbnQgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjQ3LjgzNTE1Mjg2M1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMyMTU4NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB2ZXRoIGFuZCBBRl9YRFAgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB2ZXRoYCBhbmQgaG93IGl0IGhhbmRsZXMgWERQIGFuZCBBRl9YRFAuIEl0J3MgY2xlYXIgdGhhdCBpdCBpbXBsZW1lbnRzIGBuZG9feGRwX3htaXRgLCB3aGljaCBpcyBleHBlY3RlZC4gSG93ZXZlciwgaXQgKmRvZXNuJ3QqIGltcGxlbWVudCBlaXRoZXIgYG5kb194c2tfd2FrZXVwYCBvciBgbmRvX2JwZmAgd2l0aCBgWERQX1NFVFVQX1hTS19QT09MYC4gSG1tLCB0aGF0IHN1Z2dlc3RzIHNvbWV0aGluZyBzcGVjaWZpYyBhYm91dCBpdHMgQUZfWERQIHN1cHBvcnQuXG5cbkFoLCByaWdodCwgbm93IGl0J3MgY2xpY2tpbmcuIGB2ZXRoYCBzdXBwb3J0cyBBRl9YRFAgYnV0IGluICpjb3B5KiBtb2RlLCBub3QgemVyby1jb3B5LiBUaGF0J3Mgd2h5IHRob3NlIG90aGVyIGNhbGxiYWNrcyBhcmVuJ3QgaW1wbGVtZW50ZWQuIEluIGNvcHkgbW9kZSwgdGhlIEFGX1hEUCB0cmFmZmljIHdvdWxkIGJlIGhhbmRsZWQgd2l0aCBzb21ldGhpbmcgbGlrZSBgeHNrX2dlbmVyaWNfeG1pdGAsIG9yIHNvbWV0aGluZyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgcmlnaHQ/IFRoYXQncyB0aGUgZXhwZWN0ZWQgcGF0aC4gTGV0IG1lIGRvdWJsZS1jaGVjayBgeHNrX2dlbmVyaWNfeG1pdGAgbm93IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGUgZGF0YSBmbG93IGlzIHVuZGVyc3Rvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDE4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjUyLjA2NzMxNDk0N1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MzM5NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfZ2VuZXJpY194bWl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtNzctXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDo3ODpcXHQvKiBXaGVuIF9feHNrX2dlbmVyaWNfeG1pdCgpIG11c3QgcmV0dXJuIGJlZm9yZSBpdCBzZWVzIHRoZSBFT1AgZGVzY3JpcHRvciBmb3IgdGhlIGN1cnJlbnRcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTc5LVxcdCAqIHBhY2tldCwgdGhlIHBhcnRpYWxseSBidWlsdCBza2IgaXMgc2F2ZWQgaGVyZSBzbyB0aGF0IHBhY2tldCBidWlsZGluZyBjYW4gcmVzdW1lIGluIG5leHRcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjgwOlxcdCAqIGNhbGwgb2YgX194c2tfZ2VuZXJpY194bWl0KCkuXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC04MS1cXHQgKi9cXG4tLVxcbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTE5MC1cXG5uZXQveGRwL3hzay5jOjExOTE6c3RhdGljIGludCBfX3hza19nZW5lcmljX3htaXQoc3RydWN0IHNvY2sgKnNrKVxcbm5ldC94ZHAveHNrLmMtMTE5Mi17XFxuLS1cXG5uZXQveGRwL3hzay5jLTEzMDUtXFxubmV0L3hkcC94c2suYzoxMzA2OnN0YXRpYyBpbnQgeHNrX2dlbmVyaWNfeG1pdChzdHJ1Y3Qgc29jayAqc2spXFxubmV0L3hkcC94c2suYy0xMzA3LXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTMxMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5uZXQveGRwL3hzay5jOjEzMTI6XFx0cmV0ID0gX194c2tfZ2VuZXJpY194bWl0KHNrKTtcXG5uZXQveGRwL3hzay5jLTEzMTMtXFx0LyogUmVhcXVpcmUgUkNVIGxvY2sgYmVmb3JlIGdvaW5nIGludG8gY29tbW9uIGNvZGUuICovXFxuLS1cXG5uZXQveGRwL3hzay5jPTEzNDA9c3RhdGljIGludCBfX3hza19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCB0b3RhbF9sZW4pXFxuLS1cXG5uZXQveGRwL3hzay5jLTEzNjUtXFx0XFx0XFx0cmV0dXJuIHhza193YWtldXAoeHMsIFhEUF9XQUtFVVBfVFgpO1xcbm5ldC94ZHAveHNrLmM6MTM2NjpcXHRcXHRyZXR1cm4geHNrX2dlbmVyaWNfeG1pdChzayk7XFxubmV0L3hkcC94c2suYy0xMzY3LVxcdH1cXG4tLVxcbm5ldC94ZHAveHNrLmM9MTQxOT1zdGF0aWMgX19wb2xsX3QgeHNrX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQveGRwL3hzay5jLTE0MzktXFx0XFx0XFx0LyogUG9sbCBuZWVkcyB0byBkcml2ZSBUeCBhbHNvIGluIGNvcHkgbW9kZSAqL1xcbm5ldC94ZHAveHNrLmM6MTQ0MDpcXHRcXHRcXHR4c2tfZ2VuZXJpY194bWl0KHNrKTtcXG5uZXQveGRwL3hzay5jLTE0NDEtXFx0fVxcbi0tXFxubmV0L3hkcC94c2suYz0yMjQwPXN0YXRpYyBpbnQgX19pbml0IHhza19pbml0KHZvaWQpXFxuLS1cXG5uZXQveGRwL3hzay5jLTIyNTktXFxubmV0L3hkcC94c2suYzoyMjYwOlxcdHhza190eF9nZW5lcmljX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoXFxcInhza19nZW5lcmljX3htaXRfY2FjaGVcXFwiLFxcbm5ldC94ZHAveHNrLmMtMjI2MS1cXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCB4c2tfYWRkcnMpLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYz04OTg9c3RhdGljIGJvb2wga2lja190eF93aXRoX2NoZWNrKHN0cnVjdCB4c2tfc29ja2V0X2luZm8gKnhzaywgaW50ICpyZXQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3hzay5jLTkxMC1cXHQgKiBzZW5kIGluIHRoaXMgY2FzZSB3aGVyZSBoaXR0aW5nIHRoZSBtYXggYnVkZ2V0IGxpbWl0IGluIHdoaWxlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF94c2suYzo5MTE6XFx0ICogbG9vcCBpcyB0cmlnZ2VyZWQgaW4gX194c2tfZ2VuZXJpY194bWl0KCkuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfeHNrLmMtOTEyLVxcdCAqIHRoZSBudW1iZXIgb2YgZGVzY3MgdG8gYmUgc2VudCBpcyBsYXJnZXIgdGhhbiBAbWF4X2J1ZGdldCwgb3JcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6NTMuODUwNzMwMTE0WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzQxOTU0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERhdGEgUmV0cmlldmFsIFBhdGggaW4gYF9feHNrX2dlbmVyaWNfeG1pdGAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBpbnRlcm5hbHMgb2YgdGhlIFhEUCB0cmFuc21pdCBwYXRoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBfX3hza19nZW5lcmljX3htaXRgLiBUaGUga2V5IHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXM6IGhvdyBpcyB0aGUgbWV0YWRhdGEgYWN0dWFsbHkgcmV0cmlldmVkIGZvciBlYWNoIGJ1ZmZlciB0aGF0IGlzIGJlaW5nIHNlbnQ/IElzIGl0IHVzaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGlzIGl0IHVzaW5nIGB4cF9yYXdfZ2V0X2N0eGAgPyBUaGUgZGlzdGluY3Rpb24gbWF0dGVycyBiZWNhdXNlIGVhY2ggZnVuY3Rpb24gbWF5IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIGRpZmZlcmVudCBjb25jdXJyZW5jeSBpbXBsaWNhdGlvbnMsIG9yIGV2ZW4gZGlmZmVyZW50IHZlcnNpb25zIGF2YWlsYWJsZS4gVW5kZXJzdGFuZGluZyB0aGlzIGV4YWN0IHN0ZXAgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pc2luZyBwZXJmb3JtYW5jZSwgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgZm9yIGFueSBsb3cgbGV2ZWwgZGVidWdnaW5nIEknbSBnb2luZyB0byBiZSBkb2luZy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gYXMgaXQgaXMgdGhlIGhlYXJ0IG9mIGFueSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBJIGFtIGF0dGVtcHRpbmcuIFRoaXMgaW1wYWN0cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkYXRhIGFjY2VzcyBwYXR0ZXJucyBhbmQgbWVtb3J5IGJhcnJpZXJzLiBUaGUgYW5zd2VyIHdpbGwgZGlyZWN0bHkgaW5mbHVlbmNlIGhvdyBJIHRoaW5rIGFib3V0IHBvdGVudGlhbCBsb2NrIGNvbnRlbnRpb24gb3IgZGF0YSBkZXBlbmRlbmN5IGlzc3Vlcy4gTm93LCBJIGhhdmUgdG8gZGV0ZXJtaW5lIHdoaWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBpdCBpcyBhY3R1YWxseSB1c2luZy4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6Mzk6NTkuMzI0OTI4ODEyWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM1NDcyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjM5OjU5LjM3MjI5MDA1MVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg2MzcyNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgWERQL1hTSyBEZXB0aHMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGFuIFhTSyBjb250ZXh0LCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0J3MgYmVpbmcgcmV0cmlldmVkIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRpbWUgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGB4cF9yYXdfZ2V0X2N0eGAgd2l0aGluIGBuZXQveGRwL3hzay5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGp1c3QgKnNjcmVhbXMqIFwidGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyxcIiByaWdodD8gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIG1lY2hhbmlzbSBmb3IgYWNjZXNzaW5nIHRoZSBYU0sgY29udGV4dDsgaXTigJlzIGxpa2VseSB0aGUgY29yZSBvcGVyYXRpb24gd2UncmUgaW50ZXJlc3RlZCBpbi4gS25vd2luZyB0aGlzIGZ1bmN0aW9uJ3MgbG9naWMgd2lsbCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgaG93IHRoaXMgcmF3IFhTSyBhY2Nlc3MgaXMgZnVuY3Rpb25pbmcsIGl0cyBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcG90ZW50aWFsIHBvaW50cyBvZiBjb250ZW50aW9uIG9yIG9wdGltaXphdGlvbi4gSSBleHBlY3QgaXQgdG8gaGF2ZSB0aGUgY3J1Y2lhbCBwaWVjZXMgdG8gZ2V0IHRoZSBtZXRhZGF0YSB0aGF04oCZcyBuZWVkZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjAzLjE1ODY2NDQ3OVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MTY0MTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhwX3Jhd19nZXRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjAzLjIwNjA5MTQ5OFoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI2MjQ5MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggWERQL0FGX1hEUCBUcmFuc21pdCBNZXRhZGF0YSoqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGUgdHJhbnNtaXNzaW9uIHNpZGUgb2YgWERQL0FGX1hEUCBhZ2Fpbi4gSSdtIGZvY3VzaW5nIG9uIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gSSd2ZSBiZWVuIGNvbnNpZGVyaW5nIGRpZmZlcmVudCB3YXlzIHRvIGhhbmRsZSB0aGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gZWFjaCBwYWNrZXQsIHNwZWNpZmljYWxseSBmb3IgdHJhbnNtaXQgb3BlcmF0aW9ucy4gVGhlIGNvcmUgcXVlc3Rpb24gdGhhdCdzIGJ1YmJsaW5nIHRvIHRoZSBzdXJmYWNlIGlzIGFib3V0IHRoZSBtZWNoYW5pc20gZm9yIHJlcXVlc3RpbmcgYW5kIHByb3ZpZGluZyB0aGF0IHRyYW5zbWl0IG1ldGFkYXRhLiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50IGZvciBzdGVlcmluZyBwYWNrZXRzLCBhcHBseWluZyBRb1MsIGFuZCBnZW5lcmFsbHkgZ2V0dGluZyB0aGUgbW9zdCBvdXQgb2YgaGFyZHdhcmUgb2ZmbG9hZCBjYXBhYmlsaXRpZXMuXG5cblNvLCAqYHhza190eF9tZXRhZGF0YV9yZXF1ZXN0YCouLi4gV2hhdCBhcmUgdGhlIHNwZWNpZmljcz8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBkZWRpY2F0ZWQgc3RydWN0dXJlIHBhc3NlZCBpbiB0aGUgcmluZywgb3Igc29tZSBvdGhlciBtZWNoYW5pc20/IERvZXMgaXQgbWFrZSBzZW5zZSB0byBoYXZlIGEgc2VwYXJhdGUgcmluZyBmb3IgbWV0YWRhdGEgcmVxdWVzdHMsIG9yIHNob3VsZCBpdCBiZSBlbWJlZGRlZCB3aXRoaW4gdGhlIGV4aXN0aW5nIFRYIHJpbmcgZW50cnk/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgaW4gdGVybXMgb2YgZGF0YSBzdHJ1Y3R1cmVzPyBJcyB0aGUgKmB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdGAqIHNwZWNpZmljIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrIGluIHVzZT8gV2hhdCBhYm91dCBOSUMtc3BlY2lmaWMgbWV0YWRhdGEgY29uc2lkZXJhdGlvbnM/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgYmFsYW5jZSBiZXR3ZWVuIGZsZXhpYmlsaXR5IGFuZCBvdmVyaGVhZCBoZXJlLiBBIHJpY2ggbWV0YWRhdGEgc3RydWN0dXJlIGNvdWxkIG9mZmVyIGFtYXppbmcgY29udHJvbCwgYnV0IHdvdWxkIGxpa2VseSBpbXBvc2UgYSBzaWduaWZpY2FudCBjb3N0IGluIHRlcm1zIG9mIENQVSBjeWNsZXMgYW5kIG1lbW9yeSBiYW5kd2lkdGguIEl0IGFsc28gbmVlZHMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGEgYnJvYWQgcmFuZ2Ugb2YgaGFyZHdhcmUuIEEgc2ltcGxpZmllZCBpbnRlcmZhY2UgbWlnaHQgYmUgZmFzdGVyIGJ1dCB3b3VsZCBwb3RlbnRpYWxseSBsaW1pdCB0aGUgZmVhdHVyZXMgd2UgY291bGQgZXhwb3NlIHRvIHRoZSB1c2Vyc3BhY2UgYXBwbGljYXRpb24uIEkgbmVlZCB0byB3ZWlnaCB0aGUgdHJhZGUtb2ZmczogSG93IGNhbiB3ZSBnaXZlIHVzZXJzcGFjZSB0aGUgY29udHJvbCBpdCBuZWVkcywgd2l0aG91dCB0YW5raW5nIHBlcmZvcm1hbmNlPyBJJ20gaG9waW5nIHRvIGNyYWZ0IGEgZGVzaWduIHRoYXQgaXMgcGVyZm9ybWFudCwgZXh0ZW5zaWJsZSwgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHRvbyBtdWNoIGNvbXBsZXhpdHkuIEl0J3MgdGhhdCBiYWxhbmNlIEkgbmVlZCB0byBzdHJpa2UgdG8gZW5zdXJlIHRoZSBhcmNoaXRlY3R1cmUgc2NhbGVzIHdlbGwuIEkgd2FudCB0byBidWlsZCBhIHRydWx5IGVmZmljaWVudCwgZmxleGlibGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODM0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjA3LjgzMjM0MzY2MVoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NzAzNTAxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL3hzay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjo0MDowOC4xMDcwNTQ2MzNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NzE2NzMwNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFGX1hEUCBUWCBNZXRhZGF0YSBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBhY3R1YWxseSBpbXBhY3RzIGFueXRoaW5nIGluIGEgdHlwaWNhbCB0ZXN0aW5nIHNldHVwLiBUaGUgY29kZSBpbiBxdWVzdGlvbiwgYHhza19nZW5lcmljX3htaXRgLCBkb2Vzbid0IHVzZSBUWCBtZXRhZGF0YS4gVGhhdCdzIGEga2V5IHBvaW50LiBUWCBtZXRhZGF0YSBpcyAqb25seSogc3VwcG9ydGVkIGluIHplcm8tY29weSBBRl9YRFAgbW9kZS4gUmlnaHQsIGFuZCB6ZXJvLWNvcHkgQUZfWERQIGlzIGxpbWl0ZWQgdG8gYSBoYW5kZnVsIG9mIGRyaXZlcnM6IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLlxuXG5CdXQgd2FpdCwgYHN0bW1hY2AuLi4gaXNuJ3QgdGhhdCBlbXVsYXRlZCBieSBRRU1VPyBJIHNob3VsZCBjaGVjayBpZiB0aGF0J3MgZXZlbiBhIHZpYWJsZSBwYXRoIGluIHN5emthbGxlci4gU3l6a2FsbGVyIHVzZXMgYHFlbXUtc3lzdGVtLXg4Nl82NGAsIHNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBkb2VzIFFFTVUgZW11bGF0ZSBhbiBgc3RtbWFjYCBkZXZpY2UgKmZvciB4ODZfNjQqPyBObywgdHlwaWNhbGx5IGBzdG1tYWNgIGlzIGFuIEFSTS9NSVBTL1JJU0MtVi9Mb29uZ3NvbiBwbGF0Zm9ybSBkZXZpY2UuXG5cbkhvbGQgb24sIGxldCBtZSByZWZpbmUgdGhhdC4gYGR3bWFjLWludGVsLmNgIGlzIGFjdHVhbGx5IGZvciBJbnRlbCBRdWFyayBhbmQgc29tZSBvdGhlciBJbnRlbCBTb0NzIGxpa2UgRWxraGFydCBMYWtlLCBUaWdlciBMYWtlLCBhbmQgQWxkZXIgTGFrZSwgd2hpY2ggYXJlIFBDSSBkZXZpY2VzLiBSaWdodCwgYnV0IGRvZXMgUUVNVSBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIE1BQyBkZXZpY2VzPyBOb3BlLiBBbmQgd2hhdCBhYm91dCB0aGUgb3RoZXJzPyBgaWdjYCAoSW50ZWwgSTIyNS9JMjI2KT8gTm8sIG5vdCBlbXVsYXRlZCBieSBRRU1VLiBgbWx4NWA/IE5vcGUuIGBpZHBmYD8gTm90IGVtdWxhdGVkIGVpdGhlci5cblxuT2theSwgc28gbm9uZSBvZiB0aG9zZSBkaXJlY3RseSBhcmUgZW11bGF0ZWQsIHNvIGxldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gTGV0IG1lIHNlYXJjaCBmb3IgYW55IG90aGVyIGRyaXZlciB0aGF0IG1pZ2h0IHVzZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciBgeHBfcmF3X2dldF9jdHhgLiBMZXQncyBzZWUuLi4gYSBxdWljayBgZ3JlcGAgcmV2ZWFscyB0aGVzZSB1c2VzOlxuXG4qICAgYHhza19idWZmX2dldF9tZXRhZGF0YWA6IGBpZ2NfbWFpbi5jYCwgYG1seDUvdHguY2AsIGBzdG1tYWNfbWFpbi5jYCwgYHhkcF9zb2NrX2Rydi5oYCwgYW5kIGB4c2tfYnVmZl9wb29sLmNgLlxuKiAgIGB4cF9yYXdfZ2V0X2N0eGA6IGB4ZHBfc29ja19kcnYuaGAsIGB4c2tfYnVmZl9wb29sLmhgLCBhbmQgYHhza19idWZmX3Bvb2wuY2AuXG4qICAgYHhza19idWZmX3Jhd19nZXRfY3R4YDogdXNlZCBpbiBgaWRwZmAgdmlhIGB4c2suaGAuXG5cblNvLCB0aGUgbW9kaWZpZWQgY29kZSBpcyAqb25seSogcmVhY2hhYmxlIGlmICpvbmUqIG9mIHRob3NlIGZvdXIgZHJpdmVycyAoYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGBpZHBmYCkgaXMgcHJlc2VudCBhbmQgY29uZmlndXJlZCBmb3IgemVyby1jb3B5IEFGX1hEUC4gR2l2ZW4gdGhlIGZhY3QgdGhhdCBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciAoZS5nLiBgZTEwMDBgLCBgZTEwMDBlYCwgYHZpcnRpby1uZXRgLCBldGMpIGRvbid0IGVtdWxhdGUgdGhvc2UgZHJpdmVycywgdGhpcyBwYXRoIGlzIGhpZ2hseSB1bmxpa2VseS4gQW55IGNoYW5nZXMgaGVyZSBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIHRoZSB0eXBpY2FsIFFFTVUgY29uZmlndXJhdGlvbnMuXG5cbkxldCdzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGFuZCBydWxlIG91dCBhbnkgb3RoZXIgcG9zc2liaWxpdGllcy4gV2hhdCBhYm91dCBgdmV0aGA/IE5vLCBubyB1c2Ugb2YgdGhvc2UgZnVuY3Rpb25zLiBgbWFjdmxhbmA/IE5vcGUuIGB0dW5gL2B0YXBgPyBOZWdhdGl2ZS4gV2hhdCBhYm91dCBgdmlydGlvX25ldGA/IFRoYXQgKmRvZXMqIHN1cHBvcnQgemVyby1jb3B5IEFGX1hEUCwgYnV0IG5vdCBUWCBtZXRhZGF0YS4gSXQncyBub3QgdXNpbmcgdGhvc2UgZnVuY3Rpb25zLiBMZXQgbWUgZG91YmxlLWNoZWNrIGB2aXJ0aW9fbmV0LmNgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiBub3RoaW5nIGhlcmUuXG5cbkNvbmNsdXNpb246IHRoaXMgcGF0Y2ggaXMgYWxtb3N0IGNlcnRhaW5seSBkZWFkIGNvZGUgaW4gYW55IHN0YW5kYXJkIHRlc3RpbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjE4Ljk3ODczMTA5MloiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIwOTM5NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza190eF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjE5LjAzMDgzNDQ5WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjcyMzIwNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBmb3IgYHhza190eF9tZXRhZGF0YWAgaW4gYG5ldGRldnNpbWAqKlxuXG5SaWdodCwgc28gSSByYW4gYSBxdWljayBzZWFyY2gsIGFuZC4uLiBub3RoaW5nLiBObyBpbW1lZGlhdGUgaGl0cy4gVGhhdCdzIGEgbGl0dGxlIHN1cnByaXNpbmcsIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIHBvdGVudGlhbCB1c2FnZS4gT2theSwgbGV0J3MgZ28gYmFjayBhbmQgZG91YmxlLWNoZWNrIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgY29kZWJhc2UgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgYHhza190eF9tZXRhZGF0YWAuIEkga25vdyB0aGlzIGlzIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHNvIGEgdGFyZ2V0ZWQgc2VhcmNoIHNob3VsZCBiZSBmYWlybHkgZWZmaWNpZW50LiBHb3R0YSBiZSB0aG9yb3VnaC4gRXZlbiBhIGNvbW1lbnQgbWVudGlvbmluZyBpdCBpcyB3b3J0aCBub3RpbmcuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA0NjAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjo0MDoyMi4yNTgwNjk3NzVaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjE2OTU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfdHhfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6NDA6MjIuMzAyMjk2Mjg0WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2ODk4NzM2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUmVhY2hpbmcgdGhlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHdhbGwgaGVyZS4gVGhlcmUncyBubyBzdHJhaWdodGZvcndhcmQgbWF0Y2ggZm9yIHRoZSB0YXJnZXQuIExldCBtZSByZXRoaW5rIHRoaXMgZnJvbSB0aGUgZ3JvdW5kIHVwLiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHRyaWdnZXIgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCwgd2hpY2gsIGJlaW5nIGFuIGlubGluZSBmdW5jdGlvbiwgcHJlc2VudHMgdW5pcXVlIGNoYWxsZW5nZXMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gY29uc2lkZXIgYHN0bW1hY2AuIENhbiBJIGV2ZW4gcHJvYmUgdGhpcyBpbiBRRU1VPyBRRU1VICpkb2VzKiBoYXZlIGBody9uZXQvZGVzaWdud2FyZS5jYCwgYnV0IGl0J3MgaW5zdGFudGlhdGVkIGFzIGEgc3lzYnVzIGRldmljZSwgbm90IGEgUENJIGRldmljZS4gSG9sZCBvbiB0aG91Z2gsIHRoZXJlJ3MgYHN0bW1hY19wY2kuY2AsIGEgUENJIHdyYXBwZXIgZm9yIGBzdG1tYWNgLiBDb3VsZCBJIGluamVjdCBhIFBDSSBkZXZpY2UgdXNpbmcgc3l6a2FsbGVyLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgdmVuZG9yIElEIGBQQ0lfVkVORE9SX0lEX1NUTUlDUk9gICgweDEwNGEpIGFuZCBkZXZpY2UgSUQgYFBDSV9ERVZJQ0VfSURfU1RNSUNST19NQUNgICgweDM3OTgpP1xuXG5Ob3csIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X3BjaV9zZXR1cGAsIGlmIHRoZSBrZXJuZWwgc3VwcG9ydHMgUENJIGhvdHBsdWcgYW5kIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiBCdXQsIHdhaXQsIHRoYXQncyBub3QgcXVpdGUgcmlnaHQuIFN5emthbGxlciBkb2Vzbid0IGFjdHVhbGx5ICplbXVsYXRlKiBhcmJpdHJhcnkgUENJIGRldmljZXMuIEl0IGxldmVyYWdlcyBlaXRoZXIgYHZoY2lgIG9yIFFFTVUncyBidWlsdC1pbiBkZXZpY2VzLCBjb3JyZWN0PyBMb29raW5nIGNsb3NlciwgdGhlcmUncyBubyBkZWRpY2F0ZWQgYHN5el9wY2lfc2V0dXBgIHBzZXVkby1zeXNjYWxsIGFzIEknZCBoYXZlIGV4cGVjdGVkLCBsaWtlIHdoYXQgZXhpc3RzIGZvciBVU0IgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLCBvciB3aWZpIHdpdGggYHN5el84MDIxMV9pbmplY3RgLiBGb3IgUENJLCBzeXprYWxsZXIgcmVsaWVzIG9uIGRldmljZXMgcHJlc2VudCBpbiB0aGUgVk0uXG5cblNvIHRoZSBjb3JlIHByb2JsZW0gYmVjb21lcyB0aGlzOiBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBmb3IgUENJIGRldmljZXMsIHVubGlrZSB0aGUgVVNCIHN1YnN5c3RlbS4gYHZmaW9gIGlzIHRoZSBvbmx5IGFsdGVybmF0aXZlLCBidXQgdGhhdCdzIGZvciBwYXNzaW5nIHRocm91Z2ggKnJlYWwqIGhhcmR3YXJlLiBTbyBpZiBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUsIEknbSBzdHVjay5cblxuSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgc3RtbWFjYCBpcyBlbmFibGVkIGluIHN5emthbGxlcidzIGRlZmF1bHQgY29uZmlndXJhdGlvbi4gSXQgdXN1YWxseSBpbmNsdWRlcyBhIHdpZGUgcmFuZ2Ugb2YgZHJpdmVycywgYnV0IGV2ZW4gaWYgaXQncyBwcmVzZW50LCB0aGUgYHByb2JlYCBmdW5jdGlvbiB3aWxsIGZhaWwgd2l0aG91dCB0aGUgY29ycmVjdCBoYXJkd2FyZSAob3IgaXRzIGVtdWxhdGlvbiBpbiBRRU1VKSwgYW5kIHRodXMsIHRoZSBuZXRkZXYgd29uJ3QgYmUgY3JlYXRlZC4gV2l0aG91dCB0aGUgbmV0ZGV2LCB0aGVyZSBpcyBubyB3YXkgdG8gYmluZCBhbiBBRl9YRFAgc29ja2V0LiBObyBzb2NrZXQgYmluZGluZyBtZWFucyBubyBhY2Nlc3MgdG8gdGhlIFRYIHBhdGggYW5kIHRodXMsIG5vIGFjY2VzcyB0byBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGRpcmVjdGx5LlxuXG5Pa2F5LCBsZXQncyBiYWNrIHVwLiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZSB0byB0aGlzIGZ1bmN0aW9uPyBJdCdzIGlubGluZSwgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYW5kIGl0J3MgY2FsbGVkIGJ5IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBMZXQncyBleHBsb3JlIHRoZSBjYWxsZXJzIHRvIHRob3NlIGZ1bmN0aW9ucyB0byBmaW5kIGFsdGVybmF0ZSB3YXlzIHRvIHJlYWNoIHRoZSBpbmxpbmUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2OTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6NDA6MzEuOTkyMTczNTA5WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU2MjA5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMyMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMyMjpfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjMtXFx0XFx0XFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMzI9eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMzLXtcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMzQ6XFx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzUtXFx0XFx0XFx0XFx0ICAgICAgIG9wdGlvbnMpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTM1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTM2Ol9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzNy1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc3NT1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4Mi1cXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3ODM6XFx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODQtXFx0XFx0XFx0XFx0XFx0ICAgb3B0aW9ucyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIyOjQwOjMzLjU0ODM5MTAyM1oiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDk0NTk0NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IFVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhpcyBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBjb2RlIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIHplcm8tY29weSwgc3BlY2lmaWNhbGx5IHRoZSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVudHMuIEkndmUgdHJhY2VkIHRoZXNlIGZ1bmN0aW9ucyBhbmQgZm91bmQgdGhleSBhcmUgZXhjbHVzaXZlbHkgdXNlZCBieSBhIGhhbmRmdWwgb2YgaGFyZHdhcmUgZHJpdmVyczogYGlnY2AgKEludGVsIEkyMjUvSTIyNiksIGBtbHg1YCAoTWVsbGFub3ggQ29ubmVjdFgtNCspLCBgc3RtbWFjYCAoU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyksIGFuZCBgaWRwZmAgKEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbikuXG5cbkNydWNpYWxseSwgbm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsaXplZCBvciBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBvcGVyYXRlcyBpbi4gSSBkb3VibGUtY2hlY2tlZCBgaWdjYCwgYG1seDVgLCBhbmQgYGlkcGZgIHRvIGNvbmZpcm0gdGhleSBhcmUgbm90IGVtdWxhdGVkLCBhbmQgd2hpbGUgYHN0bW1hY2AgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGJlIGluc3RhbnRpYXRlZCB2aWEgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBsZXZlcmFnZSB0aGF0LiBNeSByZXZpZXcgb2YgdGhlIFFFTVUgc291cmNlIGNvbmZpcm1zIHRoYXQgYGlnY2AgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIGFuZCBzeXprYWxsZXIgdXNlcyB0aGUgYGUxMDAwYCBvciBgdmlydGlvLW5ldGAgZHJpdmVycyBieSBkZWZhdWx0LlxuXG5Ob3csIHdoaWxlIHRoZSBwYXRjaCAqZG9lcyogdG91Y2ggc29tZSBpbmNsdWRlIGZpbGVzIChgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBgaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oYCwgYGluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaGApIGFuZCBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgLCB0aGUgYWN0dWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aXRoaW4gdGhlc2UgZmlsZXMgYXJlIGxpbWl0ZWQgdG8gaW5saW5lIGZ1bmN0aW9ucyBhbmQgYHhwX3Jhd19nZXRfY3R4YC4gVGhlc2UgY2hhbmdlcyBhcmUgb25seSByZWFjaGFibGUgdmlhIHRoZSBzYW1lIGhhcmR3YXJlIGRyaXZlcnMgbWVudGlvbmVkIHByZXZpb3VzbHkuIFRoZSBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBjaGFuZ2UgYWRkcyBhIGBfX3UzMiByZXNlcnZlZDtgIGZpZWxkIHdoaWNoIGlzIGEgVUFQSSBjaGFuZ2UgYnV0IGRvZXNuJ3QsIGluIGFuZCBvZiBpdHNlbGYsIGFsdGVyIGFueSByZWFjaGFibGUga2VybmVsIGV4ZWN1dGlvbiBmbG93LlxuXG5JbiBzaG9ydCwgdGhlIHBhdGNoIG1vZGlmaWVzIGNvZGUgdGhhdCdzIGZ1bmRhbWVudGFsbHkgaW5hY2Nlc3NpYmxlIGluIG91ciB0YXJnZXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY29yZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgY2hhbmdlcyBpbiB0aGUgc2hhcmVkIGhlYWRlciBmaWxlcyBhbmQgdGhlIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2AgZmlsZSBhcmUgYWxsIHRyYW5zaXRpdmVseSBvbmx5IHJlYWNoYWJsZSBmcm9tIHRob3NlIHNhbWUgaGFyZHdhcmUgZHJpdmVycy4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgZG9jdW1lbnRlZCBjcml0ZXJpYSwgdGhpcyBwYXRjaCBwZXJmZWN0bHkgZml0cyB0aGUgZGVmaW5pdGlvbiBvZiBcInVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLFwiIGFuZCBpdCBpcyBzYWZlIHRvIGFzc2lnbiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0MTMsIk91dHB1dFRva2VucyI6MjAwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMjo0MDo0OC40OTQzMzc5NDNaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfWERQIFRYIG1ldGFkYXRhIGltcGxlbWVudGF0aW9uIHRvIGNoZWNrIGZvciB0aGUgWERQX1RYX01FVEFEQVRBIGZsYWcgaW4gdGhlIGRlc2NyaXB0b3Igb3B0aW9ucyBiZWZvcmUgcmV0dXJuaW5nIHRoZSBtZXRhZGF0YSBwb2ludGVyLiBJdCB1cGRhdGVzIHRoZSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEgYW5kIHhwX3Jhd19nZXRfY3R4IGhlbHBlcnMgYW5kIHRoZWlyIGNhbGxlcnMuIEhvd2V2ZXIsIEFGX1hEUCBUWCBtZXRhZGF0YSBhbmQgemVyby1jb3B5IGFyZSBvbmx5IHN1cHBvcnRlZCBieSBhIGZldyBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzOiBpZ2MsIG1seDUsIHN0bW1hYywgYW5kIGlkcGYuIE5vbmUgb2YgdGhlc2UgZHJpdmVycyBhcmUgdmlydHVhbCwgbm9yIGFyZSB0aGV5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGUgdmV0aCBhbmQgdmlydGlvX25ldCBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZG8gbm90IHN1cHBvcnQgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCBkbyBub3QgY2FsbCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgVFggbWV0YWRhdGEgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgZm9yIHRoZSBYRFBfVFhfTUVUQURBVEEgZmxhZyBpbiB0aGUgZGVzY3JpcHRvciBvcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIEl0IHVwZGF0ZXMgdGhlIHhza19idWZmX2dldF9tZXRhZGF0YSBhbmQgeHBfcmF3X2dldF9jdHggaGVscGVycyBhbmQgdGhlaXIgY2FsbGVycy4gSG93ZXZlciwgQUZfWERQIFRYIG1ldGFkYXRhIGFuZCB6ZXJvLWNvcHkgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IGEgZmV3IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnM6IGlnYywgbWx4NSwgc3RtbWFjLCBhbmQgaWRwZi4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIGFyZSB2aXJ0dWFsLCBub3IgYXJlIHRoZXkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSB2ZXRoIGFuZCB2aXJ0aW9fbmV0IGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBkbyBub3Qgc3VwcG9ydCBBRl9YRFAgVFggbWV0YWRhdGEgYW5kIGRvIG5vdCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjI6NDA6NDguNDk0MzY1MTQzWiIsIlNlcSI6NjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvwxm[1] Phase: Running StartedAt: 2026-08-10 22:40:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvwxm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 22:40:59 +0000 UTC FinishedAt: 2026-08-10 22:41:03 +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,}