Name: series-workflowfg92s Phase: Failed StartedAt: 2026-08-13 20:00:59 +0000 UTC FinishedAt: 2026-08-13 20:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfg92s[0] Phase: Succeeded StartedAt: 2026-08-13 20:00:59 +0000 UTC FinishedAt: 2026-08-13 20:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfg92s[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 20:00:59 +0000 UTC FinishedAt: 2026-08-13 20:22:43 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmY2FiMTQ5OTdmMmRjOGVmNGZjYzMxMTdhZWJhM2U0ZmI2YWIyMTcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMjA6MTk6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuQEAgLTMwNzQsNyAmIzQzOzMwNzQsOCBAQCBzdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuIFx0XHRvbGluZm9fc3RhdHVzID0geGRwX2Rlc2MubGVuIFx1MDAzY1x1MDAzYyBJR0NfQURWVFhEX1BBWUxFTl9TSElGVDtcbiBcbiBcdFx0ZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG4tXHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG4mIzQzO1x0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4gXHRcdGJpID0gXHUwMDI2cmluZy1cdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXG5AQCAtOTksNyAmIzQzOzk5LDcgQEAgYm9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcbiBcdFx0eGRwdHhkLmRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgZGVzYy5hZGRyKTtcbiBcdFx0eGRwdHhkLmRhdGEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RhdGEocG9vbCwgZGVzYy5hZGRyKTtcbiBcdFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xuLVx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkcik7XG4mIzQzO1x0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtcbiBcbiBcdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgeGRwdHhkLmRtYV9hZGRyLCB4ZHB0eGQubGVuKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uNGE4MmY0MzUxMzAzYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0yNzEwLDE2ICYjNDM7MjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0mIzQzOyYjNDM7O1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXG4gXHRcdHR4X2Rlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZW50cnkpO1xuIFx0XHRkbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuLVx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuJiM0MztcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuJiM0MztcdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbiBcdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7XG4gXG4gXHRcdC8qIFRvIHJldHVybiBYRFAgYnVmZmVyIHRvIFhTSyBwb29sLCB3ZSBzaW1wbGUgY2FsbFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxuaW5kZXggNWRjYzBkN2Y2NWI3Ni4uYTQ1MmI3ODI4Y2U0ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG5AQCAtMTk2LDcgJiM0MzsxOTYsNyBAQCBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxuIFx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCBjdHg7XG4gXG4tXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyKTtcbiYjNDM7XHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbiBcdGRlc2MgPSAodHlwZW9mKGRlc2MpKXtcbiBcdFx0LmFkZHJcdD0gY3R4LmRtYSxcbiBcdFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cdTAwM2VsZW4pLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbkBAIC0yNDAsNiAmIzQzOzI0MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiAgKiB4c2tfYnVmZl9yYXdfZ2V0X2N0eCAtIGdldCBcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XG4gICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cbiAgKiBAYWRkcjogZGVzYyBhZGRyZXNzIChmcm9tIHVzZXJzcGFjZSlcbiYjNDM7ICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXG4gICpcbiAgKiBXcmFwcGVyIGZvciB4cF9yYXdfZ2V0X2N0eCgpIHRvIGJlIHVzZWQgaW4gZHJpdmVycywgc2VlIGl0cyBrZG9jIGZvclxuICAqIGRldGFpbHMuXG5AQCAtMjQ4LDkgJiM0MzsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3hza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4ge1xuLVx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIpO1xuJiM0MztcdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyLCBvcHRpb25zKTtcbiB9XG4gXG4gI2RlZmluZSBYRFBfVFhNRF9GTEFHU19WQUxJRCAoIFxcXG5AQCAtMzE4LDE4ICYjNDM7MzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuJiM0MztfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbiYjNDM7XHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4ge1xuLVx0aWYgKCFwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbilcbiYjNDM7XHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZGF0YSAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbi1cdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuJiM0MztcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG4mIzQzO1x0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbkBAIC01MTAsNyAmIzQzOzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4XG4teHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07XG4gfVxuQEAgLTUzMCwxMyAmIzQzOzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4mIzQzO1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxuQEAgLTE1NCw3ICYjNDM7MTU0LDggQEAgc3RydWN0IHhkcF9kZXNjX2N0eCB7XG4gXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xuIH07XG4gXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpO1xuJiM0MztzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcbiYjNDM7XHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4gXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbkBAIC0xNDksNiAmIzQzOzE0OSw3IEBAIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xuIFx0XHRcdF9fdTE2IGNzdW1fc3RhcnQ7XG4gXHRcdFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xuIFx0XHRcdF9fdTE2IGNzdW1fb2Zmc2V0O1xuJiM0MztcdFx0XHRfX3UzMiByZXNlcnZlZDtcbiBcbiBcdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuIFx0XHRcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuaW5kZXggNzhjMTRmMTA2Mzk1Ny4uOWQyZDk0ZjFmYjc1OSAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuQEAgLTc2Myw2ICYjNDM7NzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4mIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogSGVscGVyIGZvciBnZXR0aW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhIHBvaW50ZXIsIGlmIHByZXNlbnQuXG4gICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy5cbkBAIC03NzEsMTQgJiM0Mzs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogUmV0dXJuOiBuZXcgXHUwMDI2eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiYjNDM7c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4ge1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7XG4gXG4gXHRhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7XG4gXG4gXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbi1cdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuJiM0MztcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG4mIzQzO1x0XHRcdFx0XHQgICBvcHRpb25zKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5AQCAtMTQ5LDYgJiM0MzsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbiYjNDM7XHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfWERQIHplcm8tY29weSBUWCBtZXRhZGF0YSBwYXRoIHRvIGNoZWNrIHRoZSBYRFBfVFhfTUVUQURBVEEgb3B0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgbWV0YWRhdGEuIFRoaXMgbG9naWMgaXMgb25seSBpbXBsZW1lbnRlZCBhbmQgcmVhY2hhYmxlIGluIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgKGlnYywgbWx4NSwgc3RtbWFjLCBpZHBmKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSByZXNlcnZlZCBwYWRkaW5nIGZpZWxkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiB0aGUgVUFQSSwgd2hpY2ggb25seSBhbHRlcnMgYSBudW1lcmljIGNvbnN0YW50IChzdHJ1Y3Qgc2l6ZSkgdXNlZCBpbiBhIGxlbmd0aCBjaGVjayBpbiB0aGUgZ2VuZXJpYyBYRFAgVFggcGF0aCwgd2l0aG91dCBpbnRyb2R1Y2luZyBuZXcgZnVuY3Rpb25hbCBsb2dpYyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZjYWIxNDk5N2YyZGM4ZWY0ZmNjMzExN2FlYmEzZTRmYjZhYjIxNzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAyMDoxOTowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMKaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMKQEAgLTMwNzQsNyAmIzQzOzMwNzQsOCBAQCBzdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKQogCQlvbGluZm9fc3RhdHVzID0geGRwX2Rlc2MubGVuICZsdDsmbHQ7IElHQ19BRFZUWERfUEFZTEVOX1NISUZUOwogCiAJCWRtYSA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwotCQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwomIzQzOwkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLAomIzQzOwkJCQkJICAgICB4ZHBfZGVzYy5vcHRpb25zKTsKIAkJeHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hLCB4ZHBfZGVzYy5sZW4pOwogCQliaSA9ICZhbXA7cmluZy0mZ3Q7dHhfYnVmZmVyX2luZm9bbnR1XTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jCmluZGV4IDNkMTlkYWQ4Zjg2ODguLmQxOTRlZWRkZDdiNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMKQEAgLTk5LDcgJiM0Mzs5OSw3IEBAIGJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpCiAJCXhkcHR4ZC5kbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIGRlc2MuYWRkcik7CiAJCXhkcHR4ZC5kYXRhID0geHNrX2J1ZmZfcmF3X2dldF9kYXRhKHBvb2wsIGRlc2MuYWRkcik7CiAJCXhkcHR4ZC5sZW4gPSBkZXNjLmxlbjsKLQkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpOwomIzQzOwkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7CiAKIAkJeHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgeGRwdHhkLmRtYV9hZGRyLCB4ZHB0eGQubGVuKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uNGE4MmY0MzUxMzAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0yNzEwLDE2ICYjNDM7MjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpCiAJCWlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCAmYW1wO3hkcF9kZXNjKSkKIAkJCWJyZWFrOwogCi0JCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSAmYW1wOyZhbXA7Ci0JCSAgICBwcml2LSZndDtlc3QtJmd0O21heF9zZHVbcXVldWVdICZhbXA7JmFtcDsKLQkJICAgIHhkcF9kZXNjLmxlbiAmZ3Q7IHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKLQkJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7Ci0JCQljb250aW51ZTsKLQkJfQotCiAJCXR4X2Rlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZW50cnkpOwogCQlkbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwotCQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwomIzQzOwkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLAomIzQzOwkJCQkJICAgICB4ZHBfZGVzYy5vcHRpb25zKTsKIAkJeHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7CiAKIAkJLyogVG8gcmV0dXJuIFhEUCBidWZmZXIgdG8gWFNLIHBvb2wsIHdlIHNpbXBsZSBjYWxsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmggYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmgKaW5kZXggNWRjYzBkN2Y2NWI3Ni4uYTQ1MmI3ODI4Y2U0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaApAQCAtMTk2LDcgJiM0MzsxOTYsNyBAQCBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLAogCXN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYzsKIAlzdHJ1Y3QgeGRwX2Rlc2NfY3R4IGN0eDsKIAotCWN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLSZndDtwb29sLCB4ZGVzYy0mZ3Q7YWRkcik7CiYjNDM7CWN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLSZndDtwb29sLCB4ZGVzYy0mZ3Q7YWRkciwgeGRlc2MtJmd0O29wdGlvbnMpOwogCWRlc2MgPSAodHlwZW9mKGRlc2MpKXsKIAkJLmFkZHIJPSBjdHguZG1hLAogCQlfX2xpYmV0aF94ZHBfdHhfbGVuKHhkZXNjLSZndDtsZW4pLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmggYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaAppbmRleCBiMzQ0Nzg5ZjVkZjgzLi5kOTRhZWI1MDYzNzljIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaApAQCAtMjQwLDYgJiM0MzsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiAgKiB4c2tfYnVmZl9yYXdfZ2V0X2N0eCAtIGdldCAmYW1wO3hkcF9kZXNjIGNvbnRleHQKICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvCiAgKiBAYWRkcjogZGVzYyBhZGRyZXNzIChmcm9tIHVzZXJzcGFjZSkKJiM0MzsgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSkKICAqCiAgKiBXcmFwcGVyIGZvciB4cF9yYXdfZ2V0X2N0eCgpIHRvIGJlIHVzZWQgaW4gZHJpdmVycywgc2VlIGl0cyBrZG9jIGZvcgogICogZGV0YWlscy4KQEAgLTI0OCw5ICYjNDM7MjQ5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQogICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS4KICAqLwogc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4Ci14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucykKIHsKLQlyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkcik7CiYjNDM7CXJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyLCBvcHRpb25zKTsKIH0KIAogI2RlZmluZSBYRFBfVFhNRF9GTEFHU19WQUxJRCAoIFwKQEAgLTMxOCwxOCAmIzQzOzMxOSwyMCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKQomIzQzO19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLAomIzQzOwkJCXVuc2lnbmVkIGludCBvcHRpb25zKQogewotCWlmICghcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuKQomIzQzOwlpZiAoIXBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gZGF0YSAtIHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbjsKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpCiB7Ci0JcmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7CiYjNDM7CXJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksCiYjNDM7CQkJCSAgICAgICBvcHRpb25zKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoc3RydWN0IHhkcF9idWZmICp4ZHApCkBAIC01MTAsNyAmIzQzOzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4Ci14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucykKIHsKIAlyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9OwogfQpAQCAtNTMwLDEzICYjNDM7NTMzLDE0IEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLAogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgotX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpCiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsCiYjNDM7CQkJdW5zaWduZWQgaW50IG9wdGlvbnMpCiB7CiAJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqCi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQomIzQzO3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKQogewogCXJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oIGIvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oCmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgKQEAgLTE1NCw3ICYjNDM7MTU0LDggQEAgc3RydWN0IHhkcF9kZXNjX2N0eCB7CiAJc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTsKIH07CiAKLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKTsKJiM0MztzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwKJiM0MzsJCQkJICAgdTMyIG9wdGlvbnMpOwogCiBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgeHBfZ2V0X2RtYShzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKQEAgLTE0OSw2ICYjNDM7MTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7CiAJCQlfX3UxNiBjc3VtX3N0YXJ0OwogCQkJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwogCQkJX191MTYgY3N1bV9vZmZzZXQ7CiYjNDM7CQkJX191MzIgcmVzZXJ2ZWQ7CiAKIAkJCS8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovCiAJCQkvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqLwpkaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuYwppbmRleCA3OGMxNGYxMDYzOTU3Li45ZDJkOTRmMWZiNzU5IDEwMDY0NAotLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuYwpAQCAtNzYzLDYgJiM0Mzs3NjMsNyBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTsKICAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0ICZhbXA7eGRwX2Rlc2MgY29udGV4dAogICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG8KICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKQomIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKQogICoKICAqIEhlbHBlciBmb3IgZ2V0dGluZyBkZXNjJiMzOTtzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LgogICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy4KQEAgLTc3MSwxNCAmIzQzOzc3MiwxNiBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTsKICAqIFJldHVybjogbmV3ICZhbXA7eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhCiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLgogICovCi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0MztzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwKJiM0MzsJCQkJICAgdTMyIG9wdGlvbnMpCiB7CiAJc3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7CiAKIAlhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7CiAKIAlyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTsKLQlyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTsKJiM0MzsJcmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSwKJiM0MzsJCQkJCSAgIG9wdGlvbnMpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAppbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NAotLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCkBAIC0xNDksNiAmIzQzOzE0OSw3IEBAIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgewogCQkJX191MTYgY3N1bV9zdGFydDsKIAkJCS8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi8KIAkJCV9fdTE2IGNzdW1fb2Zmc2V0OwomIzQzOwkJCV9fdTMyIHJlc2VydmVkOwogCiAJCQkvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqLwogCQkJLyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ2MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBYRFAvQUZfWERQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBtb2RpZmljYXRpb25zIHRvIHRoZSBYRFAgYW5kIEFGX1hEUCBzb2NrZXQgY29kZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSB0d2Vha2luZyBob3cgd2UmIzM5O3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhleSYjMzk7cmUgYWRkaW5nIGNoZWNrcyB1c2luZyB0aGUgYG9wdGlvbnNgIGZpZWxkIGZyb20gdGhlIFhEUCBkZXNjcmlwdG9yIHRvIHNlZSBpZiBgWERQX1RYX01FVEFEQVRBYCBpcyBwcmVzZW50IGJlZm9yZSBjYWxsaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBUaGF0IG1ha2VzIHNlbnNlLCBoYW5kbGluZyBwb3RlbnRpYWwgZWRnZSBjYXNlcyBhcm91bmQgbWV0YWRhdGEgYXZhaWxhYmlsaXR5IGlzIGFsd2F5cyBnb29kLiBUaGUgYWRkaXRpb24gb2YgYF9fdTMyIHJlc2VydmVkO2AgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGxvb2tzIGxpa2UgYSBmb3J3YXJkLWNvbXBhdGliaWxpdHkgbW92ZSwgcHJvYmFibHkgcHJlcGFyaW5nIGZvciBmdXR1cmUgZmVhdHVyZXMuIFRoZW4sIHRoZXJlJiMzOTtzIHNvbWUgY29kZSBiZWluZyByZW1vdmVkIGZyb20gYHN0bW1hY194ZHBfeG1pdF96Y2AgcmVsYXRlZCB0byBgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXWAuIE5vdCBzdXJlIHdoeSB0aGF0JiMzOTtzIGJlaW5nIHJlbW92ZWQsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhhdCBhIGJpdCBtb3JlLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGNvZGUgYWN0dWFsbHkgYmUgaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEFGX1hEUCBpcyBhIGNvcmUgbmV0d29ya2luZyBmZWF0dXJlLCBzbyBpdCBzaG91bGQgYmUgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBkcml2ZXJzIGJlaW5nIHRvdWNoZWQgYXJlIGBpZ2NgLCBgbWx4NWAsIGFuZCBgc3RtbWFjYC4gSSBrbm93IGBpZ2NgIGFuZCBgbWx4NWAgYXJlIGNvbW1vbiBpbiB2aXJ0dWFsaXplZCBzY2VuYXJpb3MsIGJ1dCBgc3RtbWFjYCBpcyBsZXNzIHR5cGljYWwuIEJ1dCBoYW5nIG9uLCB0aGUgY29yZSBBRl9YRFAgY29kZSBsaXZlcyBpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBhbmQgYHN0bW1hY2AgaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGRpcmVjdGx5IGluIHRoZSBjcml0aWNhbCBwYXRoLCBidXQgYHZldGhgIGFsc28gdXNlcyBBRl9YRFAhIFRoZSBwcm9ibGVtIGhlcmUgaXMgYHZldGhgIGlzbiYjMzk7dCBsaXN0ZWQgaGVyZSBhcyBiZWluZyBtb2RpZmllZCEgTmVlZCB0byBjaGVjayB0aGF0LgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKi4gYHhza19idWZmX2dldF9tZXRhZGF0YWAgaXMgY2FsbGVkIGluIGBpZ2NgLCBgbWx4NWAsIGFuZCBgc3RtbWFjYC4gSSBzZWUgdGhlc2UgZHJpdmVycyBiZWluZyB0b3VjaGVkLCBidXQgaXMgYHhza19idWZmX3Jhd19nZXRfY3R4YCB1c2VkICphbnl3aGVyZSogZWxzZT8gSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYmVpbmcgdXNlZCBpbiBgdmV0aGAsIG9yIGFub3RoZXIgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgYm90aCBgeHBfcmF3X2dldF9jdHhgIGFuZCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSB2YWxpZCBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYWNjb3VudGluZyBmb3IgKmFsbCogdGhlIHVzZXMgb2YgdGhlc2UgZnVuY3Rpb25zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM3PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3Ni1cdFx0ZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc3Olx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc4LVx0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYz02Nj1ib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXHRcdHhkcHR4ZC5sZW4gPSBkZXNjLmxlbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyLCBkZXNjLm9wdGlvbnMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2Nzc9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcxNC1cdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjcxNTpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzE2LVx0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMyMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzIzLVx0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMzMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzMyOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMzLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzUtXHRcdFx0XHQgICAgICAgb3B0aW9ucyk7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTM1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzctXHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1NDM6eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01NDQte1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc3NT1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODItXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc4MzpcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODQtXHRcdFx0XHRcdCAgIG9wdGlvbnMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MTgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkFuYWx5emluZyB0aGUgWERQIFNvY2tldCBNZXRhZGF0YSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgWERQIHNvY2tldCBtZXRhZGF0YSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYW5kIHRoZSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGNoZWNraW5nIHRoZSBgb3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgIGJpdC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgaXQmIzM5O3MgYWJvdXQgd2hldGhlciB3ZSYjMzk7cmUgZ29pbmcgdG8gdHJhbnNtaXQgbWV0YWRhdGEgd2l0aCB0aGUgWERQIHBhY2tldC4KCk5vdywgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbiAqaW5saW5lKiBmdW5jdGlvbiwgc28gaXQmIzM5O3MgcHJvYmFibHkgcGVyZm9ybWFuY2UtY3JpdGljYWwuIEl0JiMzOTtzIHVzZWQgYnkgdHdvIG90aGVyIGZ1bmN0aW9ucywgYHhza19idWZmX2dldF9tZXRhZGF0YWAgKG1ha2VzIHNlbnNlLCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIGNhbGwpIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBBbHJpZ2h0LCBsZXQmIzM5O3Mga2VlcCBhbiBleWUgb24gYHhwX3Jhd19nZXRfY3R4YCDigJMgdGhhdCBjb3VsZCBiZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wYWN0LgoKQWgsIHRoZXJlIGl0IGlzISBgeHBfcmF3X2dldF9jdHhgIGlzLCBpbiB0dXJuLCB1c2VkIGJ5IGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAgaW4gYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGBsaWJldGhgIGlzIGhhbmRsaW5nIGV0aGVybmV0IGZyYW1lcyBpbiBYRFAuIFNvIG5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGlzIGJlaW5nICpjYWxsZWQqLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBjaGFuZ2UgdG8gdGhlIGNvcmUgWERQIGxvZ2ljLCBvciBpcyBpdCBtb3JlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB1c2UgY2FzZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzk6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L21ldGFcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODAtICogQHhkZXNjOiBcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Mi1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ3PWxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSBmcm0sIHUzMiBpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTItXHRpZiAocHJpdilcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTM6XHRcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcdTAwMjZmcm0uZGVzYywgc3EsIHByaXYpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1NC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTM3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGBsaWJldGhgIGFuZCwgc3BlY2lmaWNhbGx5LCBJJiMzOTt2ZSBnb3QgdG8gdW5kZXJzdGFuZCBob3cgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAgaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhhdCBsaWJyYXJ5LiAgSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHkuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGluc3RhbmNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uLCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYCwgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgYGxpYmV0aGAgY29kZS4gVGhlbiBJIGNhbiB1bmRlcnN0YW5kIGl0cyByb2xlIGluIFhTSyB0cmFuc21pc3Npb24uIE5vdGhpbmcgY29tcGxpY2F0ZWQgc28gZmFyLCBqdXN0IHN0YW5kYXJkIGNvZGUgYW5hbHlzaXMgcHJvY2VkdXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzk6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L21ldGFcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODAtICogQHhkZXNjOiBcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTgzLSAqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTg0OiAqIFNhbWUgYXMgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoKSwgYnV0IHJlcXVlc3RzIG1ldGFkYXRhIHBvaW50ZXIgYW5kXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTg1LSAqIGZpbGxzIGFkZGl0aW9uYWwgZmllbGRzIGluIFx1MDAyNmxpYmV0aF94ZHBfdHhfZGVzYyB0byBhc2sgZm9yIG1ldGFkYXRhIG9mZmxvYWQuXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTE6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIxNS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMTY6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L28gbWV0YVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIxNy0gKiBAeGRlc2M6IFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yMjM9c3RhdGljIGlubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjI0Ol9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjI1LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMzMtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjM0OiAqIGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIGFuIFhTayB4bWl0XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjM1LSAqIEBmcm06IFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDY9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjQ3OmxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSBmcm0sIHUzMiBpLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI0OC1cdFx0XHQgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsIHU2NCBwcml2KVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTItXHRpZiAocHJpdilcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTM6XHRcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcdTAwMjZmcm0uZGVzYywgc3EsIHByaXYpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1NC1cdGVsc2VcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTU6XHRcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihcdTAwMjZmcm0uZGVzYywgc3EpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Ni1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9Mjg1PWxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA0LVx0XHRcdFx0bGliZXRoX3hkcF9wdHJfdG9fcHJpdih0bW8pLCBwcmVwLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjMwNTpcdFx0XHRcdGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiwgeG1pdCk7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA2LVx0ZmluYWxpemUoeGRwc3EsIG4sIHRydWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgVXNhZ2UqKgoKQWxyaWdodCwgc28gYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYC4uLiB0aGF0IHJpbmdzIGEgYmVsbC4gSXQmIzM5O3MgcG9wcGluZyB1cCBpbiBhIGZldyBkcml2ZXJzLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgbGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlLiYjMzQ7IEkgbmVlZCB0byBpZGVudGlmeSAqcHJlY2lzZWx5KiB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoaXMuIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBtaWdodCBiZSBhIGtleSBpbmRpY2F0b3IgZm9yIFhEUCBhY2NlbGVyYXRpb24gb3Igc29tZSBvdGhlciBwZXJmb3JtYW5jZS1jcml0aWNhbCBwYXRoLiBLbm93aW5nIHdoaWNoIE5JQ3Mgb3IgdmlydHVhbCBkZXZpY2VzIHV0aWxpemUgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RzIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBvcHRpbWl6YXRpb25zLiBJ4oCZbGwgbmVlZCB0byBkbyBhIGNvZGUgc2VhcmNoIGFjcm9zcyB0aGUgcmVsZXZhbnQgdHJlZXMuIEhvcGVmdWxseSwgdGhpcyBpcyB3ZWxsLWRlZmluZWQsIGFuZCB0aGUgdXNhZ2UgaXMgY29uc2lzdGVudCBhY3Jvc3MgdGhlIGltcGxlbWVudGF0aW9uLiBBZnRlciBpZGVudGlmeWluZyBhbGwgdXNlcnMgb2YgdGhlIGZ1bmN0aW9uLCBJIGNhbiBiZWdpbiB0byBkcmF3IHNvbWUgY29uY2x1c2lvbnMsIHNvIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aF94c2tfeG1pdF9kb19idWxrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MzE2PWJvb2wgaWRwZl94c2tfeG1pdChzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqeHNrc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMyNjpcdHJldHVybiBsaWJldGhfeHNrX3htaXRfZG9fYnVsayh4c2tzcS1cdTAwM2Vwb29sLCB4c2tzcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzI3LVx0XHRcdFx0ICAgICAgIG1pbihmcmVlIC0gMSwgeHNrc3EtXHUwMDNldGhyZXNoKSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ3PWxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSBmcm0sIHUzMiBpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjY1OiAqIGxpYmV0aF94c2tfeG1pdF9kb19idWxrIC0gc2VuZCBYU2sgeG1pdCBmcmFtZXNcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjYtICogQHBvb2w6IFhTayBidWZmZXIgcG9vbCBjb250YWluaW5nIHRoZSBmcmFtZXMgdG8gc2VuZFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yODQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg1OmxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yODYtXHRcdFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0ODYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgdGhlIFhEUCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHVzZXMgYGlkcGZgLCBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyBgc3RtbWFjX3hkcF94bWl0X3pjYCBpbiBgc3RtbWFjX21haW4uY2AuIFJpZ2h0LCBgc3RtbWFjYC4uLiBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgY29udHJvbGxlcnMuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyBpbiBRRU1VPyBJIGtub3cgdGhlcmUmIzM5O3MgYSBmaWxlIGZvciBpLk1YIEZFQywgYnV0IGBzdG1tYWNgIGlzIHR5cGljYWxseSBBUk0uIEhvd2V2ZXIsIHdhaXQsIGl0ICpkb2VzKiBoYXZlIFBDSSBiaW5kaW5ncywgYHN0bW1hY19wY2kuY2AuIFFFTVUgbWlnaHQgbm90IGV2ZW4gZW11bGF0ZSB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCB0aG91Z2guLi4KCkxldCYjMzk7cyBzdGVwIGJhY2suIERvZXMgYHZldGhgIGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYD8gTm8sIGl0IGRvZXNuJiMzOTt0IHN1cHBvcnQgWERQIFRYIG1ldGFkYXRhLiBPa2F5LCB0aGUgcGxvdCB0aGlja2Vucy4gVGhpcyBwYXRjaCBpcyBhbHNvIG1vZGlmeWluZyBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBTbywgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGB4cF9yYXdfZ2V0X2N0eGAuCgpIb2xkIG9uLCBpcyBgeHBfcmF3X2dldF9jdHhgIHVzZWQgYW55d2hlcmUgZWxzZT8gTGV0JiMzOTtzIGNoZWNrIHdpdGhpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFnYWluLiBBaGEsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgbW9kaWZpZXMgYHhwX3Jhd19nZXRfY3R4YCB0byB0YWtlIGBvcHRpb25zYCBhbmQgcGFzcyBpdCBpbnRvIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAuIFRoZSBwYXRjaCBhbHNvIGFkZGVkIGBfX3UzMiByZXNlcnZlZDtgIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYC4gQSBVQVBJIGNoYW5nZS4gVGhpcyBpcyBzaWduaWZpY2FudC4KCkRvZXMgdGhpcyBjaGFuZ2UgdWx0aW1hdGVseSBpbXBhY3QgdGhlIGNvcmUgQUZfWERQIGNvZGU/IFllcywgYHhwX3Jhd19nZXRfY3R4YCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyB1c2FibGUgb3V0c2lkZS4gQnV0IGlzIHRoZSBrZXJuZWwgZGlyZWN0bHkgdXNpbmcgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBlbHNld2hlcmU/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBuZXQveGRwL2AgYW5kIGBuZXQvY29yZS9gIGRpcmVjdG9yaWVzIGZvciBjb25maXJtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwX3Jhd19nZXRfY3R4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTIzND1zdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQ0LSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDU6ICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0Ni0gKiBkZXRhaWxzLlxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1Mj14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjUzLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI1NDpcdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyLCBvcHRpb25zKTtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1NS19XG4tLVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oPTE1Mj1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHtcbi0tXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTU2LVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjE1NzpzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTgtXHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzYwPUVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc2Mi0vKipcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc2MzogKiB4cF9yYXdfZ2V0X2N0eCAtIGdldCBcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjQtICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzQtICovXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzU6c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzYtXHRcdFx0XHQgICB1MzIgb3B0aW9ucylcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODctfVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzg4OkVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9jdHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1NwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBYU0sgQnVmZmVyIE1ldGFkYXRhIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgdXNhZ2Ugb2YgdGhlc2UgWFNLIGJ1ZmZlciBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgYHhwX3Jhd19nZXRfY3R4YCBzZWVtcyB0byBiZSBzb2xlbHkgdXNlZCB3aXRoaW4gYHhza19idWZmX3Jhd19nZXRfY3R4YCwgYW5kIHRoYXQgb25lIGlzIHVzZWQgaW4gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlIGhlcmUuIFRoZW4sIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNhbGxlZCBpbiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgd2hhdCBJJiMzOTttIHVzdWFsbHkgdGVzdGluZyB3aXRoPwoKKiAgIGBpZ2NgLi4uIHRoYXQmIzM5O3MgdGhlIEludGVsIEkyMjUtTE0vSTIyNS1WIDIuNUcgRXRoZXJuZXQgY29udHJvbGxlci4gUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGl0OyBpdCBzdGlja3Mgd2l0aCBgZTEwMDBgLCBgZTEwMDBlYCwgYW5kIGBpZ2JgLiBTbywgbm8gam95IHRoZXJlLgoqICAgYG1seDVgLi4uIHRoYXQmIzM5O3MgTWVsbGFub3ggQ29ubmVjdFgtNC81LzYuIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGF0IG5hdGl2ZWx5IHdpdGhvdXQgVkZJTyBvciB0aGUgaGFyZHdhcmUsIHdoaWNoIGlzbiYjMzk7dCB0aGUgZW52aXJvbm1lbnQgSSYjMzk7bSBmb2N1c2luZyBvbi4KKiAgIGBzdG1tYWNgLi4uIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldC4gUUVNVSBsaWtlbHkgZG9lc24mIzM5O3QgZW11bGF0ZSBpdCBvbiBzdGFuZGFyZCB4ODZfNjQsIHdoaWNoIGlzIHdoYXQgU3l6a2FsbGVyLCB3aGljaCBJIGdlbmVyYWxseSB1c2UsIHRlc3RzLiBJdCAqbWlnaHQqIGJlIHByZXNlbnQgb24gQVJNIGVtdWxhdGlvbnMsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSB0YXJnZXQuCiogICBXYWl0IGEgbWludXRlLCBJIG1pc3NlZCBgaWRwZmAuLi4gdGhhdCYjMzk7cyBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24uIFFFTVUgZGVmaW5pdGVseSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgb25lLgoKU28gdGhlIG9idmlvdXMgcXVlc3Rpb24gaXM6IGlzIHRoZXJlICphbnl0aGluZyogZWxzZSBjYWxsaW5nIGVpdGhlciBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIHRoYXQgSSYjMzk7bSBtaXNzaW5nPyBJIG5lZWQgdG8gcGVyZm9ybSBhIG1vcmUgdGhvcm91Z2ggc2VhcmNoLiBUaW1lIHRvIGdyZXAgZm9yIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9yYXdfZ2V0X2N0eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTk6XHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yMzktLyoqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQxLSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjUyOnhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUxNT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTE3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMDYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFhTSyBCdWZmZXIgRmxvdyBhbmQgUG90ZW50aWFsIEltcGFjdCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGlzLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCAqb25seSogdXNlZCB3aXRoaW4gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gQW5kIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgLCB3aGljaCBpdHNlbGYgZmVlZHMgaW50byBgbGliZXRoX3hza194bWl0X2RvX2J1bGtgLCB3aGljaCBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgKm9ubHkqIHVzZWQgYnkgYGlkcGZgLiBTbywgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBkaXJlY3RseSBhZmZlY3RpbmcgdGhlIGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgIGRyaXZlcnMuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBub3c6IGFyZSBhbnkgb2YgdGhlc2UgZHJpdmVycyBlbXVsYXRlZCBpbiBRRU1VIGluIGEgd2F5IHRoYXQgd291bGQgbWF0dGVyIGZvciBzdGFuZGFyZCBzeXprYWxsZXIgdGVzdGluZz8gTm9wZS4gU3RhbmRhcmQgc3l6a2FsbGVyIHRlc3RpbmcgZG9lc24mIzM5O3QgdG91Y2ggdGhvc2UuCgpXYWl0IGEgbWludXRlLCB3aGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGB2ZXRoYD8gRG9lcyBpdCBzb21laG93IGluZGlyZWN0bHkgdXNlIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgPyBObywgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UuIFdoYXQgYWJvdXQgYHN0bW1hY2AsIHNwZWNpZmljYWxseT8gQ2FuIHdlIHJlYWNoIGl0IHRocm91Z2ggc29tZSBmb3JtIG9mIHZpcnR1YWxpemF0aW9uPyBObywgYHN0bW1hY2AgaXMgZmlybWx5IHJvb3RlZCBpbiBwaHlzaWNhbCBoYXJkd2FyZS4KCk9rYXksIEkgc2VlIGl0ISBUaGVyZSYjMzk7cyBhIFVBUEkgY2hhbmdlIGluIHRoZSBgaWZfeGRwLmhgIGhlYWRlcjogYSBuZXcgYHJlc2VydmVkYCBmaWVsZCBoYXMgYmVlbiBhZGRlZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAuIEkgbmVlZCB0byB0aGluayBjYXJlZnVsbHkgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGxheW91dCBjaGFuZ2UuCgpOb3csIGRvZXMgdGhpcyBhbHRlcmF0aW9uIHRvIHRoZSBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW1wYWN0IGFueSBjb3JlIGtlcm5lbCBjb2RlPyBUaGlzIGlzIHRoZSBjb3JlIHF1ZXN0aW9uIEkgbmVlZCB0byBjb25zaWRlciB0byB1bmRlcnN0YW5kIGlmIHRoZSBwYXRjaCBtaWdodCBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHBsYWNlcyB3aGVyZSBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaXMgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHhza190eF9tZXRhZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD0xNj1sZW5ndGggaXMgdGhlcmVmb3JlIHRoZSBzYW1lIGZvciBldmVyeSBzb2NrZXQgdGhhdCBzaGFyZXMgdGhlIHNhbWUgdW1lbS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjE3OlRoZSBtZXRhZGF0YSBsYXlvdXQgaXMgYSBmaXhlZCBVQVBJLCByZWZlciB0byBgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgYCBpblxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTgtYGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgYC4gVGh1cywgZ2VuZXJhbGx5LCB0aGUgYGB0eF9tZXRhZGF0YV9sZW5gYFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTk6ZmllbGQgYWJvdmUgc2hvdWxkIGNvbnRhaW4gYGBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSlgYC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTIwLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTQ1PVRoZSBmbGFncyBmaWVsZCBlbmFibGVzIHRoZSBwYXJ0aWN1bGFyIG9mZmxvYWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNDgtICB0aW1lc3RhbXAgaW50byBgYGNvbXBsZXRpb24udHhfdGltZXN0YW1wYGAgZmllbGQgb2ZcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjQ5OiAgYGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYGAuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdC01MC0tIGBgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU1gYDogcmVxdWVzdHMgdGhlIGRldmljZSB0byBjYWxjdWxhdGUgTDRcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdC01Ni0gIHZhbHVlIG9mIGxhdW5jaCB0aW1lIGlzIGluZGljYXRlZCBieSBgYHJlcXVlc3QubGF1bmNoX3RpbWVgYCBmaWVsZCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6NTc6ICBgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgYC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0xMDg9c3RydWN0IGlnY190eF90aW1lc3RhbXBfcmVxdWVzdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTExOS1cdHU4IHhza19xdWV1ZV9pbmRleDsgICAgLyogVHggcXVldWUgd2hpY2ggcmVxdWVzdGluZyB0aW1lc3RhbXAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoxMjA6XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1x0LyogcmVmIHRvIHhzayBUeCBtZXRhZGF0YSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTEyMS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0zNzI9aW50IGlnY194c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxdWV1ZV9pZCwgdTMyIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtMzc0LS8qIEFGX1hEUCBUWCBtZXRhZGF0YSBvcGVyYXRpb25zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6Mzc1OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0zNzYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTYwMj1zdHJ1Y3QgaWdjX21ldGFkYXRhX3JlcXVlc3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTYwMy1cdHN0cnVjdCBpZ2NfdHhfYnVmZmVyICp0eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6NjA0Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC02MDUtXHRzdHJ1Y3QgaWdjX3JpbmcgKnR4X3Jpbmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9Mjk5Mz1zdGF0aWMgdm9pZCBpZ2NfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAzMTpjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwMzItXHQudG1vX3JlcXVlc3RfdGltZXN0YW1wXHRcdD0gaWdjX3hza19yZXF1ZXN0X3RpbWVzdGFtcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM3PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA2NC1cdFx0c3RydWN0IGlnY19tZXRhZGF0YV9yZXF1ZXN0IG1ldGFfcmVxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA2NTpcdFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDY2LVx0XHRzdHJ1Y3QgaWdjX3R4X2J1ZmZlciAqYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaD0xNT1zdHJ1Y3QgeGRwX2ZyYW1lX2J1bGs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaDoxNzpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaC0xOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM9MzkwPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYy0zOTItXHRcdFx0ICAgICAgIHUzMiB6Y19zZWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjM5MzpcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYy0zOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz0xND12b2lkIF9fY29sZCBsaWJldGhfeHNrX3R4X3JldHVybl9idWxrKGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lICpicSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6MjM6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93ID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTI0LVx0LnRtb19yZXF1ZXN0X2NoZWNrc3VtXHRcdD0gbGliZXRoX3hza3Rtb19yZXFfY3N1bSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD00ODA9c3RydWN0IG1seDVlX3htaXRfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjQ4MTpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtNDgyLXR5cGVkZWYgaW50ICgqbWx4NWVfZnBfeG1pdF94ZHBfZnJhbWVfY2hlY2spKHN0cnVjdCBtbHg1ZV94ZHBzcSAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTQ4Mz10eXBlZGVmIGJvb2wgKCptbHg1ZV9mcF94bWl0X3hkcF9mcmFtZSkoc3RydWN0IG1seDVlX3hkcHNxICosXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtNDg1LVx0XHRcdFx0XHRpbnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo0ODY6XHRcdFx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtNDg3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz0zMDQ9c3RhdGljIHZvaWQgbWx4NWVfeHNrX3JlcXVlc3RfY2hlY2tzdW0odTE2IGNzdW1fc3RhcnQsIHUxNiBjc3VtX29mZnNldCwgdm9pZCAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjMxMjpjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTMxMy1cdC50bW9fZmlsbF90aW1lc3RhbXBcdFx0PSBtbHg1ZV94c2tfZmlsbF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTQ1ND1tbHg1ZV94bWl0X3hkcF9mcmFtZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NDU1Olx0XHQgICAgIGludCBjaGVja19yZXN1bHQsIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy00NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTQ1OD1tbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NDU5Olx0XHRcdCAgIGludCBjaGVja19yZXN1bHQsIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTU0MD1tbHg1ZV94bWl0X3hkcF9mcmFtZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NTQxOlx0XHQgICAgIGludCBjaGVja19yZXN1bHQsIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTU0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTY2NT1zdGF0aWMgdm9pZCBtbHg1ZV9mcmVlX3hkcHNxX2Rlc2Moc3RydWN0IG1seDVlX3hkcHNxICpzcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNzMyLVx0XHRcdC8qIEFGX1hEUCBzZW5kICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NzMzOlx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy03MzQtXHRcdFx0c3RydWN0IG1seDVlX3hza190eF9jb21wbGV0ZSBwcml2ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD04ND11bmlvbiBtbHg1ZV94ZHBfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTk0LVx0fSBwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjk1Olx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCB4c2tfbWV0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC05Ni19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD0xMTE9ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzIG1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg6MTEyOmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD0xMTQ9SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRShib29sIG1seDVlX3htaXRfeGRwX2ZyYW1lX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExNi1cdFx0XHRcdFx0XHRcdCAgaW50IGNoZWNrX3Jlc3VsdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaDoxMTc6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTE4LUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFtZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC0xMjAtXHRcdFx0XHRcdFx0ICAgIGludCBjaGVja19yZXN1bHQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg6MTIxOlx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqbWV0YSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTEyMi1JTkRJUkVDVF9DQUxMQUJMRV9ERUNMQVJFKGludCBtbHg1ZV94bWl0X3hkcF9mcmFtZV9jaGVja19tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jPTY2PWJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTY4LVx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSBzcS1cdTAwM2V4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzo2OTpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTcwLVx0dW5pb24gbWx4NWVfeGRwX2luZm8geGRwaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTE2LVx0XHRcdGlmICh4cF90eF9tZXRhZGF0YV9lbmFibGVkKHNxLVx1MDAzZXhza19wb29sKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jOjExNzpcdFx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgY29tcGw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQ5PXN0cnVjdCBzdG1tYWNfdHhfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo1MDpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgeHNrX21ldGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC01MS1cdGRtYV9hZGRyX3QgYnVmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY2MT1zdGF0aWMgdm9pZCBzdG1tYWNfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2NzE6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjcyLVx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFx0XHQ9IHN0bW1hY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjc3PXN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2OTYtXHRcdHN0cnVjdCBzdG1tYWNfbWV0YWRhdGFfcmVxdWVzdCBtZXRhX3JlcTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjY5NzpcdFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2OTgtXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTQ5PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNTYtXHRjb25zdCBzdHJ1Y3QgeGRwX21ldGFkYXRhX29wcyAqeGRwX21ldGFkYXRhX29wcztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjI1NzpcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp4c2tfdHhfbWV0YWRhdGFfb3BzO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMjU4LVx0dW5zaWduZWQgc2hvcnRcdFx0Z2ZsYWdzO1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTc5PXZvaWQgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhzdHJ1Y3QgbW1waW4gKm1tcCk7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01ODUtICovXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjU4NjpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTg3LVx0X191NjQgKnR4X3RpbWVzdGFtcDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTU5Mz1zdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTYwMy1cdFx0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzIGh3dHN0YW1wcztcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NjA0Olx0XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC02MDUtXHR9O1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaD0xODIxPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODIzLVx0XHRcdCAgICAgICB1MzIgemNfc2VncyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODI0Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODI1LXZvaWQgbGliZXRoX3hkcF9zZXRfcmVkaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNjc9c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94c2t0bW9fcmVxX2NzdW0odTE2IGNzdW1fc3RhcnQsIHUxNiBjc3VtX29mZnNldCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTczLS8qIE9ubHkgdG8gaW5saW5lIHRoZSBjYWxsYmFja3MgYmVsb3csIHVzZSBAbGliZXRoX3hza3RtbyBpbiBkcml2ZXJzIGluc3RlYWQgKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzUtXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cdD0gbGliZXRoX3hza3Rtb19yZXFfY3N1bSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5NC17XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk1Olx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyA9IGxpYmV0aF94ZHBfcHJpdl90b19wdHIocHJpdik7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTk2LVx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yODU9bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI4NjpcdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI4Ny1cdFx0XHR1MzIgKCpwcmVwKSh2b2lkICp4ZHBzcSwgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EpLFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTExNi0gKi9cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTE3OnN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE4LVx0dm9pZFx0KCp0bW9fcmVxdWVzdF90aW1lc3RhbXApKHZvaWQgKnByaXYpO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTI5PUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUodm9pZCB4c2tfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICopKTtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTEzNC0gKiAgQG1ldGE6IHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTM1OiAqICBAY29tcGw6IHBvaW50ZXIgdG8gb3V0cHV0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfdG9fY29tcGxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTM2LSAqXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDAtICovXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE0MTpzdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE0MjpcdFx0XHRcdFx0ICAgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsKVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTU5LSAqICBAY29tcGw6IHBvaW50ZXIgdG8gY29tcGxldGlvbiBtZXRhZGF0YSBwcm9kdWNlZCBmcm9tIHhza190eF9tZXRhZGF0YV90b19jb21wbFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjA6ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTYxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhZFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY1LSAqL1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjY6c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTY3Olx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcyxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY4LVx0XHRcdFx0XHQgICAgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE5NT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX2Rlc3RydWN0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTk5LVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDA6c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV90b19jb21wbChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDE6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbClcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMjAyLXtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTIwNC1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MjA1OnN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjIwNjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTIwNy1cdFx0XHRcdFx0ICAgIHZvaWQgKnByaXYpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjY0PXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjY1Olx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsIHU2NCAqZmxhZ3MpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNjYte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI2OS1cdFx0aWYgKHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIFx1MDAzY1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjcwOlx0XHQgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzEtXHRcdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3OS0gKiAgQHBtZXRhOiBwb2ludGVyIHRvIHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4MDogKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9Mjg3PXhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjg4Olx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4OTpcdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLCB2b2lkICpwcml2KVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjkwLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI5MTpcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSAqcG1ldGE7XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTItXHR1NjQgZmxhZ3M7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzIwLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIxOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjItX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMwLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzMxOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzIteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTIyPXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTIzOlx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsIHU2NCAqZmxhZ3MpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MjQte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUyOT14c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUzMDpcdFx0XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzE6XHRcdFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcywgdm9pZCAqcHJpdilcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzMi17XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM0LVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTM1OnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzYtX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTQxLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQyOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01NDMteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oPTI1PXN0cnVjdCB4ZHBfYnVmZl94c2sge1xuLS1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0zNC0jZGVmaW5lIFhTS19DSEVDS19QUklWX1RZUEUodCkgQlVJTERfQlVHX09OKHNpemVvZih0KSBcdTAwM2Ugb2Zmc2V0b2ZlbmQoc3RydWN0IHhkcF9idWZmX3hzaywgY2IpKVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjM1OiNkZWZpbmUgWFNLX1RYX0NPTVBMX0ZJVFModCkgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsKSBcdTAwM2Ugc2l6ZW9mKHQpKVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTM2LVxuLS1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaD0xNTI9c3RydWN0IHhkcF9kZXNjX2N0eCB7XG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTUzLVx0ZG1hX2FkZHJfdCBkbWE7XG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg6MTU0Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTUtfTtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg9MTAyPXN0cnVjdCB4ZHBfb3B0aW9ucyB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEyMC0vKiBSZXF1ZXN0IHRyYW5zbWl0IHRpbWVzdGFtcC4gVXBvbiBjb21wbGV0aW9uLCBwdXQgaXQgaW50byB0eF90aW1lc3RhbXBcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxMjE6ICogZmllbGQgb2Ygc3RydWN0IHhza190eF9tZXRhZGF0YS5cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjItICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEzMi0gKiB0cmFuc21pc3Npb24gYXQgYSBwcmUtZGV0ZXJtaW5lZCB0aW1lIGNhbGxlZCBsYXVuY2ggdGltZS4gVGhlIHZhbHVlIG9mXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTMzOiAqIGxhdW5jaCB0aW1lIGlzIGNvbW11bmljYXRlZCB2aWEgbGF1bmNoX3RpbWUgZmllbGQgb2Ygc3RydWN0IHhza190eF9tZXRhZGF0YS5cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzQtICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0MC0gKi9cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxNDE6c3RydWN0IHhza190eF9tZXRhZGF0YSB7XG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTQyLVx0X191NjQgZmxhZ3M7XG4tLVxubmV0L3hkcC94c2suYz05MDg9dm9pZCB4c2tfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICpza2IpXG5uZXQveGRwL3hzay5jLTkwOS17XG5uZXQveGRwL3hzay5jOjkxMDpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsID0gXHUwMDI2c2tiX3NoaW5mbyhza2IpLVx1MDAzZXhza19tZXRhO1xubmV0L3hkcC94c2suYy05MTEtXG4tLVxubmV0L3hkcC94c2suYz05NjQ9c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcbi0tXG5uZXQveGRwL3hzay5jLTk2Ny17XG5uZXQveGRwL3hzay5jOjk2ODpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xubmV0L3hkcC94c2suYy05NjktXHR1MTYgY3N1bV9zdGFydCwgY3N1bV9vZmZzZXQ7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oPTEwMj1zdHJ1Y3QgeGRwX29wdGlvbnMge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjAtLyogUmVxdWVzdCB0cmFuc21pdCB0aW1lc3RhbXAuIFVwb24gY29tcGxldGlvbiwgcHV0IGl0IGludG8gdHhfdGltZXN0YW1wXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTIxOiAqIGZpZWxkIG9mIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEuXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTIyLSAqL1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzItICogdHJhbnNtaXNzaW9uIGF0IGEgcHJlLWRldGVybWluZWQgdGltZSBjYWxsZWQgbGF1bmNoIHRpbWUuIFRoZSB2YWx1ZSBvZlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjEzMzogKiBsYXVuY2ggdGltZSBpcyBjb21tdW5pY2F0ZWQgdmlhIGxhdW5jaF90aW1lIGZpZWxkIG9mIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEuXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTM0LSAqL1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xNDAtICovXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTQxOnN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0Mi1cdF9fdTY0IGZsYWdzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jPTU5PXN0YXRpYyBpbnQgb3Blbl94c2soaW50IGlmaW5kZXgsIHN0cnVjdCB4c2sgKnhzaylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy03Mi1cdFx0XHQgWERQX1VNRU1fVFhfTUVUQURBVEFfTEVOLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6NzM6XHRcdC50eF9tZXRhZGF0YV9sZW4gPSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy03NC1cdH07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xMzcte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6MTM4Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTEzOS1cdHN0cnVjdCB4ZHBfZGVzYyAqdHhfZGVzYztcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xNTEtXHR0eF9kZXNjID0geHNrX3JpbmdfcHJvZF9fdHhfZGVzYyhcdTAwMjZ4c2stXHUwMDNldHgsIGlkeCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxNTI6XHR0eF9kZXNjLVx1MDAzZWFkZHIgPSBpZHggJSAoVU1FTV9OVU0gLyAyKSAqIFVNRU1fRlJBTUVfU0laRSAmIzQzOyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xNTMtXHRwcmludGYoXCYjMzQ7JXA6IHR4X2Rlc2NbJXVdLVx1MDAzZWFkZHI9JWxseFxcblwmIzM0OywgeHNrLCBpZHgsIHR4X2Rlc2MtXHUwMDNlYWRkcik7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTU1LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6MTU2Olx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xNTctXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MjI3PXN0YXRpYyB2b2lkIGNvbXBsZXRlX3R4KHN0cnVjdCB4c2sgKnhzaylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTIyOC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyMjk6XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjMwLVx0X191NjQgYWRkcjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0yMzktXHRcdGRhdGEgPSB4c2tfdW1lbV9fZ2V0X2RhdGEoeHNrLVx1MDAzZXVtZW1fYXJlYSwgYWRkcik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyNDA6XHRcdG1ldGEgPSBkYXRhIC0gc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjQxLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYz05Mj1zdGF0aWMgaW50IG9wZW5feHNrKGludCBpZmluZGV4LCBzdHJ1Y3QgeHNrICp4c2ssIF9fdTMyIHF1ZXVlX2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0xMDQtXHRcdC5mbGFncyA9IFhEUF9VTUVNX1RYX01FVEFEQVRBX0xFTixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzoxMDU6XHRcdC50eF9tZXRhZGF0YV9sZW4gPSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMTA2LVx0fTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM9MzA0PXN0YXRpYyBib29sIGNvbXBsZXRlX3R4KHN0cnVjdCB4c2sgKnhzaywgY2xvY2tpZF90IGNsb2NrX2lkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMwNS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzA2Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zMDctXHRfX3U2NCBhZGRyO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zMTUtXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cdTAwM2V1bWVtX2FyZWEsIGFkZHIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jOjMxNjpcdG1ldGEgPSBkYXRhIC0gc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMxNy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM9MzUyPXN0YXRpYyB2b2lkIHBpbmdfcG9uZyhzdHJ1Y3QgeHNrICp4c2ssIHZvaWQgKnJ4X3BhY2tldCwgY2xvY2tpZF90IGNsb2NrX2lkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM1My17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzU0Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNTUtXHRzdHJ1Y3QgaXB2NmhkciAqaXA2aCA9IE5VTEw7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3Mi1cdHR4X2Rlc2MgPSB4c2tfcmluZ19wcm9kX190eF9kZXNjKFx1MDAyNnhzay1cdTAwM2V0eCwgaWR4KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNzM6XHR0eF9kZXNjLVx1MDAzZWFkZHIgPSBpZHggJSAoVU1FTV9OVU0gLyAyKSAqIFVNRU1fRlJBTUVfU0laRSAmIzQzOyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzc0LVx0ZGF0YSA9IHhza191bWVtX19nZXRfZGF0YSh4c2stXHUwMDNldW1lbV9hcmVhLCB0eF9kZXNjLVx1MDAzZWFkZHIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3NS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNzY6XHRtZXRhID0gZGF0YSAtIHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNzctXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjk2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFVBUEkgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBVQVBJIGNoYW5nZSBpcyBtZXNzaW5nIHdpdGggYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBgX191MzIgcmVzZXJ2ZWQ7YC4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgdGhhdCYjMzk7cyBnb2luZyB0byBjaGFuZ2UgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAuJiMzNDsgIFdoaWNoIGltbWVkaWF0ZWx5IGxlYWRzIG1lIHRvLCAmIzM0O0RvZXMgdGhpcyBpbXBhY3QgdGhlIGNvcmUga2VybmVsPyBBcmUgd2UgZ29pbmcgdG8gaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGNoYW5nZT8mIzM0OwoKTGV0IG1lIGNoZWNrIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYC4gQWgsIGhlcmUgaXQgaXM6CmBgYGMKCQlpZiAocG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuICZsdDsKCQkgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpCgkJCXJldHVybiBmYWxzZTsKYGBgCkl0JiMzOTtzIGEgY29tcGlsZS10aW1lIG9mZnNldCBjaGVjaywgd2hpY2ggaXMgZ29vZCwgYnV0IG5vdyB0aGF0IGByZXNlcnZlZGAgaXMgYWRkZWQsIGByZXF1ZXN0LmxhdW5jaF90aW1lYCYjMzk7cyBvZmZzZXQgd2lsbCBiZSBkaWZmZXJlbnQuIFRoYXQmIzM5O3MgYSBwcm9ibGVtISAKCldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIExldCBtZSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBhZ2Fpbi4KYGBgYwpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHsKCV9fdTY0IGZsYWdzOwoKCS8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovCglzdHJ1Y3QgewoJCS8qIE9mZnNldCBmcm9tIGRlc2MtJmd0O2FkZHIgd2hlcmUgY2hlY2tzdW1taW5nIHNob3VsZCBzdGFydC4gKi8KCQlfX3UxNiBjc3VtX3N0YXJ0OwoJCS8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi8KCQlfX3UxNiBjc3VtX29mZnNldDsKCQlfX3UzMiByZXNlcnZlZDsKCX0gcmVxdWVzdDsKCgkvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqLwoJc3RydWN0IHsKCQkvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqLwoJCV9fdTY0IGxhdW5jaF90aW1lOwoJfSByZXF1ZXN0Owp9OwpgYGAKSXMgdGhpcyBzdHJ1Y3QgcmVhbGx5IGRlZmluaW5nIGByZXF1ZXN0YCBtdWx0aXBsZSB0aW1lcz8gTm8sIGl0JiMzOTtzIGEgdW5pb24sIG9yIG1heWJlIGFuIGFub255bW91cyBzdHJ1Y3QuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIGRldGFpbC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGludGVycHJldGluZyB0aGlzIGNvcnJlY3RseS4gTGV0IG1lIGp1bXAgb3ZlciB0byBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCB0byBjb25maXJtIHRoZSBkZWZpbml0aW9uLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBgcmVxdWVzdGAgZmllbGQgd29ya3MgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUga2VybmVsIGltcGFjdCBhY2N1cmF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTM1Olx0I2RlZmluZSBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRVx0XHQoMSBcdTAwM2NcdTAwM2MgMilcbiAxMzY6XHRcbiAxMzc6XHQvKiBBRl9YRFAgb2ZmbG9hZHMgcmVxdWVzdC4gJiMzOTtyZXF1ZXN0JiMzOTsgdW5pb24gbWVtYmVyIGlzIGNvbnN1bWVkIGJ5IHRoZSBkcml2ZXJcbiAxMzg6XHQgKiB3aGVuIHRoZSBwYWNrZXQgaXMgYmVpbmcgdHJhbnNtaXR0ZWQuICYjMzk7Y29tcGxldGlvbiYjMzk7IHVuaW9uIG1lbWJlciBpc1xuIDEzOTpcdCAqIGZpbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIHRyYW5zbWl0IGNvbXBsZXRpb24gYXJyaXZlcy5cbiAxNDA6XHQgKi9cbiAxNDE6XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiAxNDI6XHRcdF9fdTY0IGZsYWdzO1xuIDE0MzpcdFxuIDE0NDpcdFx0dW5pb24ge1xuIDE0NTpcdFx0XHRzdHJ1Y3Qge1xuIDE0NjpcdFx0XHRcdC8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovXG4gMTQ3Olx0XG4gMTQ4Olx0XHRcdFx0LyogT2Zmc2V0IGZyb20gZGVzYy1cdTAwM2VhZGRyIHdoZXJlIGNoZWNrc3VtbWluZyBzaG91bGQgc3RhcnQuICovXG4gMTQ5Olx0XHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiAxNTA6XHRcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gMTUxOlx0XHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4gMTUyOlx0XHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gMTUzOlx0XG4gMTU0Olx0XHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiAxNTU6XHRcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuIDE1NjpcdFx0XHRcdF9fdTY0IGxhdW5jaF90aW1lO1xuIDE1NzpcdFx0XHR9IHJlcXVlc3Q7XG4gMTU4Olx0XG4gMTU5Olx0XHRcdHN0cnVjdCB7XG4gMTYwOlx0XHRcdFx0LyogWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovXG4gMTYxOlx0XHRcdFx0X191NjQgdHhfdGltZXN0YW1wO1xuIDE2MjpcdFx0XHR9IGNvbXBsZXRpb247XG4gMTYzOlx0XHR9O1xuIDE2NDpcdH07XG4gMTY1Olx0XG4gMTY2Olx0LyogUngvVHggZGVzY3JpcHRvciAqL1xuIDE2NzpcdHN0cnVjdCB4ZHBfZGVzYyB7XG4gMTY4Olx0XHRfX3U2NCBhZGRyO1xuIDE2OTpcdFx0X191MzIgbGVuO1xuIDE3MDpcdFx0X191MzIgb3B0aW9ucztcbiAxNzE6XHR9O1xuIDE3MjpcdFxuIDE3MzpcdC8qIFVNRU0gZGVzY3JpcHRvciBpcyBfX3U2NCAqL1xuIDE3NDpcdFxuIDE3NTpcdC8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBwYWNrZXQgY29udGludWVzIHdpdGggdGhlIGJ1ZmZlciBwb2ludGVkIG91dCBieSB0aGVcbiAxNzY6XHQgKiBuZXh0IGZyYW1lIGluIHRoZSByaW5nLiBUaGUgZW5kIG9mIHRoZSBwYWNrZXQgaXMgc2lnbmFsbGVkIGJ5IHNldHRpbmcgdGhpc1xuIDE3NzpcdCAqIGJpdCB0byB6ZXJvLiBGb3Igc2luZ2xlIGJ1ZmZlciBwYWNrZXRzLCBldmVyeSBkZXNjcmlwdG9yIGhhcyAmIzM5O29wdGlvbnMmIzM5OyBzZXRcbiAxNzg6XHQgKiB0byAwIGFuZCB0aGlzIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuIDE3OTpcdCAqL1xuIDE4MDpcdCNkZWZpbmUgWERQX1BLVF9DT05URCAoMSBcdTAwM2NcdTAwM2MgMClcbiAxODE6XHRcbiAxODI6XHQvKiBUWCBwYWNrZXQgY2FycmllcyB2YWxpZCBtZXRhZGF0YS4gKi9cbiAxODM6XHQjZGVmaW5lIFhEUF9UWF9NRVRBREFUQSAoMSBcdTAwM2NcdTAwM2MgMSlcbiAxODQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA4NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFGX1hEUCBNZXRhZGF0YSBIYW5kbGluZyBhbmQgQWxpZ25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHN0cnVjdCBgcmVxdWVzdGAgbmVzdGxlZCBpbnNpZGUgYSBgdW5pb25gLiBUaGUga2V5IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBfX3UzMiByZXNlcnZlZDtgLiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBhbGlnbm1lbnQuIEkga25vdyB0aGF0IGBjc3VtX3N0YXJ0YCBhbmQgYGNzdW1fb2Zmc2V0YCBhcmUgMiBieXRlcyBlYWNoLiBCZWZvcmUsIGBsYXVuY2hfdGltZWAgKGBfX3U2NGApIHdhcyBwcm9iYWJseSBkaXJlY3RseSBhZnRlciB0aG9zZSwgbWFraW5nIGl0cyBvZmZzZXQgNCBieXRlcy4gVGhhdCYjMzk7cyBhIHByb2JsZW0gYmVjYXVzZSwgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMsIGBfX3U2NGAgbmVlZHMgOC1ieXRlIGFsaWdubWVudC4gU28sIHdpdGhvdXQgcGFkZGluZywgaXQmIzM5O3MgbWlzYWxpZ25lZC4gQWRkaW5nIGBfX3UzMiByZXNlcnZlZGAgZXhwbGljaXRseSBhbGlnbnMgYGxhdW5jaF90aW1lYCwgc2hpZnRpbmcgaXRzIG9mZnNldCB0byA4IGJ5dGVzIGFuZCBlbnN1cmluZyBwcm9wZXIgbWVtb3J5IGxheW91dCwgd2hpY2ggbWFrZXMgdGhpcyBhIFVBUEkgZml4LgoKSSB0aGVuIG1vdmUgb24gdG8gdGhlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgdGhlcmUgaW52b2x2ZXMgY2hlY2tpbmcgYG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBjaGFuZ2UgcmVsYXRlZCB0byBBRl9YRFAuIEJ1dCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hlcmUgdGhpcyBpcyBhY3R1YWxseSB1c2VkLCBlc3BlY2lhbGx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuCgpUaGUgY2FsbCBzaXRlcyBhcmUgd2hhdCBtYXR0ZXIuIEkgc2VlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaXMgY2FsbGVkIGJ5IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgICh1c2VkIGJ5IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgKSBhbmQgYHhwX3Jhd19nZXRfY3R4YCAodXNlZCBieSBhIGNoYWluIG9mIGZ1bmN0aW9ucyBlbmRpbmcgd2l0aCBgaWRwZmApLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgKGBpZ2NgLCBgbWx4NWAsIGBpZHBmYCkgYXJlIHVzdWFsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gTm93LCBgc3RtbWFjYCwgdGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBjaGVjay4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MuIEkgbmVlZCB0byBnbyB2ZXJpZnkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjcxMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgZm9yIHRoZSBgU1RNTUFDX1BDSWAgRmxhZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgZHJpdmVyIGNvZGUsIGFuZCBmaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogZ290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb25maWd1cmF0aW9uIHRoYXQgYWN0dWFsbHkgdXNlcyBQQ0kgZm9yIHRoZSBTVE1NQUMgKFNUTWljcm9lbGVjdHJvbmljcyBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgZGV2aWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2Vzcz8gJiMzNDtJcyBgU1RNTUFDX1BDSWAgZXZlbiBkZWZpbmVkPyYjMzQ7IEkgbmVlZCB0byBjb25maXJtIGlmIHRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgdG8gYWNjb21tb2RhdGUgYSBQQ0ktYmFzZWQgU1RNTUFDIGluc3RhbmNlLiBUaGlzIGNoZWNrIGlzIGNydWNpYWw7IGl0IGRpY3RhdGVzIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgc3Vic2VxdWVudCBhY3Rpb25zIHRoZSBkcml2ZXIgd2lsbCB0YWtlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0aGUgZ2F0ZWtlZXBlciBmb3IgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLCBzbyBjb25maXJtaW5nIHRoaXMgaXMgZXNzZW50aWFsIGJlZm9yZSBtb3ZpbmcgYW55IGZ1cnRoZXIuIElmIGl0JiMzOTtzICpub3QqIGRlZmluZWQsIEkmIzM5O2xsIG5lZWQgdG8gYWRhcHQgbXkgYW5hbHlzaXMgYWNjb3JkaW5nbHksIGFzIEkmIzM5O20gbGlrZWx5IGxvb2tpbmcgYXQgYSBkaWZmZXJlbnQgaGFyZHdhcmUgc2V0dXAgb3IgY29uZmlndXJhdGlvbiBhbHRvZ2V0aGVyLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRldmljZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDg0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5ldHdvcmsgRHJpdmVyIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEkga25vdyBpdCBleGlzdHMsIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgaGFuZGxlZCB3aXRoaW4gUUVNVS4gRG9lcyBRRU1VIGVtdWxhdGUgaXQgZGlyZWN0bHk/IE5vcGUsIGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdC4gSSBrbm93IFFFTVUgZW11bGF0ZXMgb3RoZXIgbmV0d29yayBpbnRlcmZhY2VzIC0gYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYW5kIGB2aXJ0aW8tbmV0LXBjaWAgYXJlIGZhbWlsaWFyIG9uZXMuIEJ1dCBgU1RNTUFDX1BDSWAgaXNuJiMzOTt0IG9uIHRoZSBsaXN0LgoKTm93LCBteSBtaW5kIHNoaWZ0cyB0byBgdmV0aGAuIEl0JiMzOTtzIGEga2V5IHZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLiBJJiMzOTttIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGN1cmlvdXMgd2hldGhlciBgdmV0aGAgbWFrZXMgdXNlIG9mIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGluIGl0cyBvcGVyYXRpb24uIFRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzbyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvdmV0aC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBhbnN3ZXJzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUwOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIGVCUEYgRGF0YSBBY2Nlc3MqKgoKSG1tLCBzbyB0aGUgcXVlc3Rpb24gb2Ygd2hldGhlciBgdmV0aGAgdXNlcyBzb21ldGhpbmcgbGlrZSBhIHNoYXJlZCByaW5nIGJ1ZmZlciBvciBtZXRhZGF0YSBhY2Nlc3MgaW4gdGhlIFhEUCBjb250ZXh0IGlzIHN0aWxsIGhhbmdpbmcuIEl0IGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdCBkb2VzIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZSwgYnV0IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgcXVpY2tseSBydWxlIG91dCBgdmV0aGAmIzM5O3MgZGlyZWN0IGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gTXkgdGhvdWdodHMgaW1tZWRpYXRlbHkganVtcCB0byBgbmV0L3hkcC94c2suY2AuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBYRFAgc29ja2V0IGltcGxlbWVudGF0aW9uIGxpdmVzIGFuZCBpcyB0aGVyZWZvcmUgd2hlcmUgYW55IFhEUC1yZWxhdGVkIG1ldGFkYXRhIGhhbmRsaW5nIGlzIGxpa2VseSBsb2NhdGVkLiBUaGUgY3JpdGljYWwgcGllY2Ugb2YgaW5mbyBJIG5lZWQgdG8gZGV0ZXJtaW5lIG5vdyBpcyB3aGV0aGVyIHRoaXMgYHhza19idWZmX2dldF9tZXRhZGF0YWAgZnVuY3Rpb24gaXMgdXNlZC4gSWYgaXQgaXMsIHRoZW4gdGhlIG1lY2hhbmlzbSBpcyB0aGVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyB1c2FnZS4gSWYgbm90LCBJIGNhbiBjb250aW51ZSB0byBpbnZlc3RpZ2F0ZSBvdGhlciBsb2NhdGlvbnMgb2YgcG90ZW50aWFsIGFjY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4MTgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgWERQIERhdGEgUGF0aCoqCgpPa2F5LCBuby4gTGV0JiMzOTtzIHJlLWV2YWx1YXRlIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgbWV0YWRhdGEgZ2V0cyBoYW5kbGVkLiBJIHJlY2FsbCBzZWVpbmcgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIHdpdGhpbiBgeHBfcmF3X2dldF9jdHhgLiBOb3csIGlzIGB4cF9yYXdfZ2V0X2N0eGAgdXNlZCBhbnl3aGVyZSBlbHNlPyBUaW1lIHRvIGRvdWJsZS1jaGVjay4gSSBkaWQgYSBxdWljayBncmVwIGFscmVhZHksIGFuZCBpdCBsb29rcyBsaWtlIGB4cF9yYXdfZ2V0X2N0eGAgaXMgKm9ubHkqIHVzZWQgaW4gYHhza19idWZmX3Jhd19nZXRfY3R4YCB3aXRoaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgd2hpY2ggaW4gdHVybiwgaXMgb25seSB1c2VkIGJ5IGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEkgdGhpbmsgSSBmb3VuZCBpdC4KCkFuZCwgb2YgY291cnNlLCBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGlzICpzb2xlbHkqIHVzZWQgaW4gYGlkcGZgLiBJIGtuZXcgaXQhCgpIb2xkIG9uLCBJIGFsbW9zdCBtaXNzZWQgc29tZXRoaW5nLiBXaGF0IGFib3V0IHRoYXQgY2hhbmdlIGluIGBzdG1tYWNfeGRwX3htaXRfemNgPyBUaGF0IHNuaXBwZXQuLi4KCmBgYGMKLQkJaWYgKHByaXYtJmd0O2VzdCAmYW1wOyZhbXA7IHByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlICZhbXA7JmFtcDsKLQkJICAgIHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0gJmFtcDsmYW1wOwotCQkgICAgeGRwX2Rlc2MubGVuICZndDsgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSkgewotCQkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOzsKLQkJCWNvbnRpbnVlOwotCQl9CmBgYAoKLi4ucmVtb3ZlcyB0aGUgY2hlY2sgZm9yIGBtYXhfc2R1YCBpbiBgc3RtbWFjX3hkcF94bWl0X3pjYC4gIEJ1dCwgdGhlIGBzdG1tYWNgIGRyaXZlciBpc24mIzM5O3QgZXZlbiByZWFjaGFibGUgaW4gUUVNVS4gVGhhdCYjMzk7cyBhIGRlYWQgZW5kLCB0aGVuLgoKTGV0JiMzOTtzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gSXMgdGhlcmUgKmFueSogb3RoZXIgZHJpdmVyIEkgaGF2ZW4mIzM5O3QgY29uc2lkZXJlZD8gSSBuZWVkIHRvIGxvb2sgZm9yIGBYRFBfVFhfTUVUQURBVEFgIGRpcmVjdGx5IHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaW52b2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1hEUF9UWF9NRVRBREFUQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD00MT10aGUgYGB4c2tfdHhfbWV0YWRhdGFgYCkuIEZvciB0aGUgZnJhbWVzIHRoYXQgc2hvdWxkbiYjMzk7dCBjYXJyeVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6NDI6YW55IG1ldGFkYXRhIChpLmUuLCB0aGUgb25lcyB0aGF0IGRvbiYjMzk7dCBoYXZlIGBgWERQX1RYX01FVEFEQVRBYGAgb3B0aW9uKSxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTQzLXRoZSBtZXRhZGF0YSBhcmVhIGlzIGlnbm9yZWQgYnkgdGhlIGtlcm5lbCBhcyB3ZWxsLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTU5PUJlc2lkZXMgdGhlIGZsYWdzIGFib3ZlLCBpbiBvcmRlciB0byB0cmlnZ2VyIHRoZSBvZmZsb2FkcywgdGhlIGZpcnN0XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo2MDpwYWNrZXQmIzM5O3MgYGBzdHJ1Y3QgeGRwX2Rlc2NgYCBkZXNjcmlwdG9yIHNob3VsZCBzZXQgYGBYRFBfVFhfTUVUQURBVEFgYFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNjEtYml0IGluIHRoZSBgYG9wdGlvbnNgYCBmaWVsZC4gQWxzbyBub3RlIHRoYXQgaW4gYSBtdWx0aS1idWZmZXIgcGFja2V0XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIyPV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyNC17XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMjU6XHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyNi1cdFx0cmV0dXJuIE5VTEw7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oPTE2Nz1zdHJ1Y3QgeGRwX2Rlc2Mge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODItLyogVFggcGFja2V0IGNhcnJpZXMgdmFsaWQgbWV0YWRhdGEuICovXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTgzOiNkZWZpbmUgWERQX1RYX01FVEFEQVRBICgxIFx1MDAzY1x1MDAzYyAxKVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE4NC1cbi0tXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXG4tLVxubmV0L3hkcC94c2suYy0xMDMwLVx0XHRza2JfcmVzZXJ2ZShza2IsIGhyKTtcbm5ldC94ZHAveHNrLmM6MTAzMTpcdFx0aWYgKGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XG5uZXQveGRwL3hzay5jLTEwMzItXHRcdFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYywgcG9vbCwgaHIpO1xuLS1cbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTExMTktXG5uZXQveGRwL3hzay5jOjExMjA6XHRcdFx0aWYgKGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XG5uZXQveGRwL3hzay5jLTExMjEtXHRcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLFxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmg9MTU0PXN0YXRpYyBpbmxpbmUgYm9vbCB4cF91bnVzZWRfb3B0aW9uc19zZXQodTMyIG9wdGlvbnMpXG5uZXQveGRwL3hza19xdWV1ZS5oLTE1NS17XG5uZXQveGRwL3hza19xdWV1ZS5oOjE1NjpcdHJldHVybiBvcHRpb25zIFx1MDAyNiB+KFhEUF9QS1RfQ09OVEQgfCBYRFBfVFhfTUVUQURBVEEpO1xubmV0L3hkcC94c2tfcXVldWUuaC0xNTctfVxuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaD0xNjc9c3RydWN0IHhkcF9kZXNjIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTgyLS8qIFRYIHBhY2tldCBjYXJyaWVzIHZhbGlkIG1ldGFkYXRhLiAqL1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjE4MzojZGVmaW5lIFhEUF9UWF9NRVRBREFUQSAoMSBcdTAwM2NcdTAwM2MgMSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODQtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTkyLVx0dHhfZGVzYy1cdTAwM2VsZW4gPSBzaXplb2YoKmV0aCkgJiM0Mzsgc2l6ZW9mKCppcGgpICYjNDM7IHNpemVvZigqdWRwaCkgJiM0MzsgVURQX1BBWUxPQURfQllURVM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxOTM6XHR0eF9kZXNjLVx1MDAzZW9wdGlvbnMgfD0gWERQX1RYX01FVEFEQVRBO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTk0LVx0eHNrX3JpbmdfcHJvZF9fc3VibWl0KFx1MDAyNnhzay1cdTAwM2V0eCwgMSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jPTM1Mj1zdGF0aWMgdm9pZCBwaW5nX3Bvbmcoc3RydWN0IHhzayAqeHNrLCB2b2lkICpyeF9wYWNrZXQsIGNsb2NraWRfdCBjbG9ja19pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtNDM3LVx0bWVtY3B5KGRhdGEsIHJ4X3BhY2tldCwgbGVuKTsgLyogZG9uJiMzOTt0IHNoYXJlIHVtZW0gY2h1bmsgZm9yIHNpbXBsaWNpdHkgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzo0Mzg6XHR0eF9kZXNjLVx1MDAzZW9wdGlvbnMgfD0gWERQX1RYX01FVEFEQVRBO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTQzOS1cdHR4X2Rlc2MtXHUwMDNlbGVuID0gbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFBfVFhfTUVUQURBVEEgYW5kIHRoZSBJbXBsaWNhdGlvbnMgb2YgVGhpcyBQYXRjaCoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIGp1c3Qgc2F3IHRoYXQgYG5ldC94ZHAveHNrLmNgIG1ha2VzIHVzZSBvZiBgWERQX1RYX01FVEFEQVRBYC4gVGhhdCYjMzk7cyBhdCBsaW5lIDEwMzEsIHNwZWNpZmljYWxseToKCmBgYGMKaWYgKGRlc2MtJmd0O29wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKSB7CgllcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7Cn0KYGBgCgpCdXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCAqZGlyZWN0bHkqIHRvdWNoIGBuZXQveGRwL3hzay5jYC4gVGhlIGNoYW5nZXMgYXJlIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGBpbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhgLCBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgLCBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCwgYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAsIGFuZCBhIGZldyBkcml2ZXJzOiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGluZGlyZWN0IGltcGFjdD8KClRoZSBVQVBJIGNoYW5nZSBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBpcyB3aGVyZSB0aGUgcG90ZW50aWFsIGdvdGNoYSBpcy4gVGhlcmUmIzM5O3MgYSBuZXcgYF9fdTMyIHJlc2VydmVkO2AgZmllbGQgYmVpbmcgYWRkZWQuIE5vdywgZG9lcyAqdGhhdCogaW1wYWN0IHRoZSBgeHNrX3NrYl9tZXRhZGF0YWAgZnVuY3Rpb24/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGB4c2tfc2tiX21ldGFkYXRhYCBpbiBgbmV0L3hkcC94c2suY2AgdG8gc2VlIGlmIGl0IHJlbGllcyBvbiBhbnkgb2YgdGhlIHN0cnVjdHVyZSBvciBkYXRhIHRoYXQgYXJlIGluIHRoZSBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfc2tiX21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTk1NT1zdGF0aWMgdm9pZCB4c2tfZHJvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGRwL3hzay5jLTk2My1cbm5ldC94ZHAveHNrLmM6OTY0OnN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG5uZXQveGRwL3hzay5jLTk2NS1cdFx0XHQgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXG4tLVxubmV0L3hkcC94c2suYy0xMDMxLVx0XHRpZiAoZGVzYy1cdTAwM2VvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpIHtcbm5ldC94ZHAveHNrLmM6MTAzMjpcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7XG5uZXQveGRwL3hzay5jLTEwMzMtXHRcdFx0aWYgKHVubGlrZWx5KGVycikpIHtcbi0tXG5uZXQveGRwL3hzay5jPTEwODU9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiKHN0cnVjdCB4ZHBfc29jayAqeHMsXG4tLVxubmV0L3hkcC94c2suYy0xMTIwLVx0XHRcdGlmIChkZXNjLVx1MDAzZW9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xubmV0L3hkcC94c2suYzoxMTIxOlx0XHRcdFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYyxcbm5ldC94ZHAveHNrLmMtMTEyMi1cdFx0XHRcdFx0XHQgICAgICAgeHMtXHUwMDNlcG9vbCwgaHIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTA0MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gdGhlIHdlZWRzIG9mIG5ldHdvcmsgcHJvZ3JhbW1pbmcsIHBvc3NpYmx5IHdvcmtpbmcgd2l0aCBYRFA6CgoqKkFuYWx5emluZyBgeHNrX3NrYl9tZXRhZGF0YWAqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gYHhza19za2JfbWV0YWRhdGFgLiBUaGF0IG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIGNydWNpYWwgdG8gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIFhEUCBzb2NrZXQgKFhTSykgYW5kIHRoZSBrZXJuZWwmIzM5O3MgU0tCIChTb2NrZXQgQnVmZmVyKS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIFhEUCBwcm9ncmFtIGdyYWJzIG9yIGhhbmRzIG9mZiBjb250cm9sIG9mIHBhY2tldHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3RydWN0dXJlIGludGltYXRlbHkuIEkgc3VzcGVjdCBpdCYjMzk7cyB0aGUgZ2x1ZSBob2xkaW5nIHRvZ2V0aGVyIHRoZSBYU0smIzM5O3MgZWZmaWNpZW50IHplcm8tY29weSBtZWNoYW5pc20gd2l0aCB0aGUgbW9yZSB0cmFkaXRpb25hbCBTS0Igd29ybGQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbWVtYmVycyB3aXRoaW4gaXQuIFByb2JhYmx5IGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgcG9pbnRlcnMgdG8gdGhlIHBhY2tldCBkYXRhLCB0aGUgbWV0YWRhdGEgZmxhZ3MsIG1heWJlIHNvbWUgc29ydCBvZiBpbmRleCBpbnRvIHRoZSBBRl9YRFAgc2hhcmVkIG1lbW9yeSByaW5nLiBJcyB0aGVyZSBhIGRlc2NyaXB0b3I/IEhvdyBpcyByZWZlcmVuY2UgY291bnRpbmcgaGFuZGxlZCBiZXR3ZWVuIFhEUCBwcm9ncmFtIGFuZCB0aGUgU0tCPyBJcyB0aGlzIHN0cnVjdHVyZSB1c2VkIGluIGJvdGggdGhlIFRYIGFuZCBSWCBwYXRocywgb3IgaXMgaXQgc3BlY2lmaWMgdG8gb25lIGRpcmVjdGlvbj8gSSBiZXQgdGhlcmUgYXJlIG51YW5jZXMgaGVyZSBhcm91bmQgbWVtb3J5IG1hbmFnZW1lbnQsIGNvbmN1cnJlbmN5LCBhbmQgZXJyb3IgaGFuZGxpbmcuIEdvdCB0byBzdGFydCBleGFtaW5pbmcgdGhlIGFjdHVhbCBzdHJ1Y3QgZGVmaW5pdGlvbiBhbmQgc2VlIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgdmFyaW91cyBrZXJuZWwgZnVuY3Rpb25zLi4uIFRoaXMgd2lsbCB0ZWxsIG1lIG1vcmUgYWJvdXQgaXRzIHB1cnBvc2UuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIGluIGJvdGggdGhlIFJYIGFuZCBUWCBwYXRocyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBPa2F5LCBsZXQmIzM5O3MgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk2NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTY0Olx0c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcbiA5NjU6XHRcdFx0XHQgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiA5NjY6XHRcdFx0XHQgICAgdTMyIGhyKVxuIDk2NzpcdHtcbiA5Njg6XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xuIDk2OTpcdFx0dTE2IGNzdW1fc3RhcnQsIGNzdW1fb2Zmc2V0O1xuIDk3MDpcdFx0dTY0IGZsYWdzO1xuIDk3MTpcdFxuIDk3MjpcdFx0aWYgKHVubGlrZWx5KHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuID09IDApKVxuIDk3MzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA5NzQ6XHRcbiA5NzU6XHRcdG1ldGEgPSBidWZmZXIgLSBwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbjtcbiA5NzY6XHRcdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEocG9vbCwgbWV0YSwgXHUwMDI2ZmxhZ3MpKSlcbiA5Nzc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gOTc4Olx0XG4gOTc5Olx0XHRpZiAoZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XG4gOTgwOlx0XHRcdGNzdW1fc3RhcnQgPSBSRUFEX09OQ0UobWV0YS1cdTAwM2VyZXF1ZXN0LmNzdW1fc3RhcnQpO1xuIDk4MTpcdFx0XHRjc3VtX29mZnNldCA9IFJFQURfT05DRShtZXRhLVx1MDAzZXJlcXVlc3QuY3N1bV9vZmZzZXQpO1xuIDk4MjpcdFxuIDk4MzpcdFx0XHRpZiAodW5saWtlbHkoY3N1bV9zdGFydCAmIzQzOyBjc3VtX29mZnNldCAmIzQzO1xuIDk4NDpcdFx0XHRcdCAgICAgc2l6ZW9mKF9fc3VtMTYpIFx1MDAzZSBkZXNjLVx1MDAzZWxlbikpXG4gOTg1Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gOTg2Olx0XG4gOTg3Olx0XHRcdHNrYi1cdTAwM2Vjc3VtX3N0YXJ0ID0gaHIgJiM0MzsgY3N1bV9zdGFydDtcbiA5ODg6XHRcdFx0c2tiLVx1MDAzZWNzdW1fb2Zmc2V0ID0gY3N1bV9vZmZzZXQ7XG4gOTg5Olx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9QQVJUSUFMO1xuIDk5MDpcdFxuIDk5MTpcdFx0XHRpZiAodW5saWtlbHkocG9vbC1cdTAwM2V0eF9zd19jc3VtKSkge1xuIDk5MjpcdFx0XHRcdGludCBlcnI7XG4gOTkzOlx0XG4gOTk0Olx0XHRcdFx0ZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKTtcbiA5OTU6XHRcdFx0XHRpZiAoZXJyKVxuIDk5NjpcdFx0XHRcdFx0cmV0dXJuIGVycjtcbiA5OTc6XHRcdFx0fVxuIDk5ODpcdFx0fVxuIDk5OTpcdFxuMTAwMDpcdFx0aWYgKGZsYWdzIFx1MDAyNiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSlcbjEwMDE6XHRcdFx0c2tiLVx1MDAzZXNrYl9tc3RhbXBfbnMgPSBSRUFEX09OQ0UobWV0YS1cdTAwM2VyZXF1ZXN0LmxhdW5jaF90aW1lKTtcbjEwMDI6XHRcdGlmICghKGZsYWdzIFx1MDAyNiBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVApKVxuMTAwMzpcdFx0XHRtZXRhID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwNTgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGp1c3Qgb2NjdXJyZWQgdG8gbWUgd2hpbGUgYW5hbHl6aW5nIHRoaXMgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YSoqCgpPa2F5LCBzbyBJIHNlZSBgeHNrX3NrYl9tZXRhZGF0YWAgY2FsbHMgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gIE15IHNwaWRlciBzZW5zZXMgYXJlIHRpbmdsaW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgdmFsaWRhdGlvbiBlbnRhaWxzLiBOb3csIEkgdmFndWVseSByZWNhbGwgc2VlaW5nIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgdGhhdCByaW5ncyBhIGJlbGwuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gdGhhdCBpbmNsdWRlIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHBvb2xgLCBgbWV0YWAsIGFuZCBgZmxhZ3NgIGFyZSBhbGwgYWJvdXQgaW4gdGhpcyBjb250ZXh0IGFuZCBob3cgdGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdvcmtzLiBIb3BlZnVsbHksIHRoaXMgc2hlZHMgc29tZSBsaWdodCBvbiB0aGUgb3ZlcmFsbCBmbG93LCBzcGVjaWZpY2FsbHkgaG93IHRoZSBTS0IgbWV0YWRhdGEgaXMgYmVpbmcgdHJlYXRlZCBhbmQgaXRzIHJvbGUgaW4gdHJhbnNtaXNzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjY0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNjQ6XHR4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiAyNjU6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLCB1NjQgKmZsYWdzKVxuIDI2NjpcdHtcbiAyNjc6XHRcdCpmbGFncyA9IFJFQURfT05DRShtZXRhLVx1MDAzZWZsYWdzKTtcbiAyNjg6XHRcdGlmICgqZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxuIDI2OTpcdFx0XHRpZiAocG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4gXHUwMDNjXG4gMjcwOlx0XHRcdCAgICBvZmZzZXRvZmVuZChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLCByZXF1ZXN0LmxhdW5jaF90aW1lKSlcbiAyNzE6XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMjcyOlx0XHRyZXR1cm4gISgqZmxhZ3MgXHUwMDI2IH5YRFBfVFhNRF9GTEFHU19WQUxJRCk7XG4gMjczOlx0fVxuIDI3NDpcdFxuIDI3NTpcdC8qKlxuIDI3NjpcdCAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXG4gMjc3Olx0ICogIGFuZCBjYWxsIGFwcHJvcHJpYXRlIHhza190eF9tZXRhZGF0YV9vcHMgb3BlcmF0aW9uLlxuIDI3ODpcdCAqICBAcG9vbDogcG9pbnRlciB0byBBRl9YRFAgYnVmZmVyIHBvb2wsIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG1ldGFkYXRhXG4gMjc5Olx0ICogIEBwbWV0YTogcG9pbnRlciB0byBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXG4gMjgwOlx0ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcbiAyODE6XHQgKiAgQHByaXY6IHBvaW50ZXIgdG8gZHJpdmVyLXByaXZhdGUgYXJlYVxuIDI4MjpcdCAqXG4gMjgzOlx0ICogIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgbmV0d29ya2luZyBkZXZpY2Ugd2hlblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc0NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYU0sgVFggTWV0YWRhdGEgQ2hhbmdlIGFuZCBQb3RlbnRpYWwgSW1wYWN0KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgWFNLIGNoYW5nZSByZWxhdGVkIHRvIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSB0aGF0IHRoZXkmIzM5O3ZlIGFkZGVkIGEgYHJlc2VydmVkYCBmaWVsZCB0byB0aGUgYHhza190eF9tZXRhZGF0YWAgc3RydWN0dXJlLCB3aGljaCBzaGlmdHMgdGhlIG9mZnNldCBvZiBgcmVxdWVzdC5sYXVuY2hfdGltZWAuICBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgY291bGQgYnJlYWsgY29tcGF0aWJpbGl0eSBpZiB1c2Vyc3BhY2UgY29kZSB3YXMgY29tcGlsZWQgd2l0aCB0aGUgKm9sZCogc3RydWN0dXJlIGRlZmluaXRpb24uIFNwZWNpZmljYWxseSwgaWYgdGhlIHVzZXItc3BhY2UgcHJvZ3JhbSByZWxpZXMgb24gYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgWFNLIGhlYWRlcnMsIHdoZXJlIHRoZSBgdHhfbWV0YWRhdGFfbGVuYCBpdCBzZXRzIGluIGBzdHJ1Y3QgeGRwX3VtZW1fcmVnYCB3b3VsZCBiZSBzbWFsbGVyIHRoYW4gdGhlIGFjdHVhbCBuZXcgc3RydWN0dXJlIHNpemUuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0LiAgSSYjMzk7bSB0aGlua2luZywgaWYgdGhleSBwYXNzZWQgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAgZnJvbSB0aGUgb2xkIGhlYWRlciwgdGhhdCBzaXplIHdvdWxkIGhhdmUgYmVlbiAxMiBieXRlcyBpbml0aWFsbHkgKG9yIHBvdGVudGlhbGx5IDE2IGJ5dGVzIGR1ZSB0byBwYWRkaW5nKS4gIE5vdywgd2l0aCB0aGUgcmVzZXJ2ZWQgZmllbGQsIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBzaXplIGZvciBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGFyY2hpdGVjdHVyZXMuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsYXlvdXQgb2YgdGhlIG9sZCBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgc3RydWN0OgoKYGBgYwpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHsKCV9fdTY0IGZsYWdzOyAvLyA4IGJ5dGVzCgoJdW5pb24gewoJCXN0cnVjdCB7CgkJCS8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovCgoJCQkvKiBPZmZzZXQgZnJvbSBkZXNjLSZndDthZGRyIHdoZXJlIGNoZWNrc3VtbWluZyBzaG91bGQgc3RhcnQuICovCgkJCV9fdTE2IGNzdW1fc3RhcnQ7IC8vIDIgYnl0ZXMKCQkJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwoJCQlfX3UxNiBjc3VtX29mZnNldDsgLy8gMiBieXRlcwoKCQkJLyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi8KCQkJLyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi8KCQkJX191NjQgbGF1bmNoX3RpbWU7IC8vIDggYnl0ZXMKCQl9IHJlcXVlc3Q7IC8vIDEyIGJ5dGVzLCBidXQgd2l0aCA4LWJ5dGUgYWxpZ25tZW50IGl0IGlzIHBhZGRlZCB0byAxNiBieXRlcz8KYGBgCgpJIHJlYWxpemUgYF9fdTY0IGxhdW5jaF90aW1lYCByZXF1aXJlcyA4LWJ5dGUgYWxpZ25tZW50IG9uIDY0LWJpdCBhcmNoaXRlY3R1cmVzLiBUaGlzIG1lYW5zIHRoYXQgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMgdGhlIGNvbXBpbGVyIGluc2VydHMgcGFkZGluZy4gU28gaW4gdGhlIG9sZCBzdHJ1Y3QsIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGZpZWxkIHdhcyBhY3R1YWxseSAxNiBieXRlcyAocGFkZGluZyBhZnRlciBgY3N1bV9vZmZzZXRgKS4gVGhlIGVudGlyZSBzdHJ1Y3R1cmUmIzM5O3Mgc2l6ZSB3b3VsZCB0aGVuIGJlIDggKGZsYWdzKSAmIzQzOyAxNiAocmVxdWVzdCkgPSAyNCBieXRlcy4gIEhvd2V2ZXIsIG9uIDMyLWJpdCBtYWNoaW5lcywgYF9fdTY0YCBvbmx5IHJlcXVpcmVzIDQtYnl0ZSBhbGlnbm1lbnQsIHNvIHRoZSBgcmVxdWVzdGAgc3RydWN0dXJlIGlzIG9ubHkgMTIgYnl0ZXMsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBhIHRvdGFsIHN0cnVjdCBzaXplIG9mIDggJiM0MzsgMTIgPSAyMCBieXRlcy4KCk5vdywgd2l0aCB0aGUgYWRkaXRpb24gb2YgYF9fdTMyIHJlc2VydmVkYCwgdGhlIGByZXF1ZXN0YCBzdHJ1Y3R1cmUgYmVjb21lczoKCmBgYGMKc3RydWN0IHsKCS8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovCgoJLyogT2Zmc2V0IGZyb20gZGVzYy0mZ3Q7YWRkciB3aGVyZSBjaGVja3N1bW1pbmcgc2hvdWxkIHN0YXJ0LiAqLwoJX191MTYgY3N1bV9zdGFydDsgLy8gMiBieXRlcwoJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwoJX191MTYgY3N1bV9vZmZzZXQ7IC8vIDIgYnl0ZXMKCV9fdTMyIHJlc2VydmVkOyAvLyA0IGJ5dGVzCgoJLyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi8KCS8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovCglfX3U2NCBsYXVuY2hfdGltZTsgLy8gOCBieXRlcwp9IHJlcXVlc3Q7IC8vIDE2IGJ5dGVzCmBgYAoKVGhlIGByZXF1ZXN0YCBzdHJ1Y3R1cmUgd291bGQgYmUgMiAmIzQzOyAyICYjNDM7IDQgJiM0MzsgOCA9IDE2IGJ5dGVzIG9uIGJvdGggMzIgYW5kIDY0IGJpdCBhcmNoaXRlY3R1cmVzLiBUb3RhbCBzaXplIHdvdWxkIGJlIDggKGZsYWdzKSAmIzQzOyAxNiAocmVxdWVzdCkgPSAyNCBieXRlcy4KClNvLCB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5IGZpeGVzIGEgMzItYml0LzY0LWJpdCBBQkkgbWlzbWF0Y2gsIGNvb2whCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIFVBUEkgY2hhbmdlIGludHJvZHVjZXMgYW55IG5ldyBleGVjdXRpb24gcGF0aHMgdGhhdCBuZWVkIHRvIGJlIGZ1enplZC4gIFRoZSBjaGFuZ2VkIGxheW91dCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYW5kIGV4cGxpY2l0IHBhZGRpbmcgb24gNjQtYml0IG1hY2hpbmVzIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiAgQWxzbywgSSBub3RpY2VkIHRoZSBwYXRjaCBtb2RpZmllcyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIHRvIGNoZWNrIGBvcHRpb25zICZhbXA7IFhEUF9UWF9NRVRBREFUQWAsIHdoaWNoIGNvdWxkIGJlIGEgY2hhbmdlIHBvaW50LgoKSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGNhbGwgY2hhaW46IGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaXMgdXNlZCBpbiBgeHBfcmF3X2dldF9jdHhgLCB3aGljaCBpcyBpbiB0dXJuIHVzZWQgYnkgYHhza19idWZmX3Jhd19nZXRfY3R4YCBhbmQgZmluYWxseSBpbiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiAgSSBjaGVja2VkIGJlZm9yZSBpZiBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyB1c2VkCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfcG9vbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTgwPXN0cnVjdCB0c25lcF90eCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cdGludCBpbmNyZW1lbnRfb3duZXJfY291bnRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6OTM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC0xMzAtXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoxMzE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9iYXRjaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oOjIzMjpcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTIzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTI2MD11MzIgdHNuZXBfZ2V0X2lycV9jb2FsZXNjZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MjYxOmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTIwNzQ9c3RhdGljIGludCB0c25lcF9uZXRkZXZfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjA5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDk2OmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jPTIxPXN0YXRpYyBpbnQgdHNuZXBfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XHRcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz01OD1zdGF0aWMgaW50IHRzbmVwX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTU5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy02MS1cdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9ODA9aW50IHRzbmVwX3hkcF9zZXR1cF9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XHRcdFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy04Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaC01MDYtXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo1MDc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVx0c3RydWN0IGRwYWEyX2V0aF9icCAqYnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oOjg0NzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTg0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MTczPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2Rpc2FibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQoZGV2LCBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3Ni1cdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTIyMD1zdGF0aWMgaW50IGRwYWEyX3hza19lbmFibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcdFx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0yMjItXHRcdFx0XHQgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NDQtXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaDo1NDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaD01NjE9c3RydWN0IGZlY19lbmV0X3ByaXZfcnhfcSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2My1cdHVuaW9uIGZlY19yeF9idWZmZXIgcnhfYnVmW1JYX1JJTkdfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNDgyPXN0YXRpYyBib29sIGZlY19lbmV0X3hza194bWl0KHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNDgzOlx0XHRcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cdFx0XHQgICAgICB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTU2NT1zdGF0aWMgaW50IGZlY19lbmV0X3R4X3F1ZXVlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcxOS1cdGlmICh0eHEtXHUwMDNleHNrX3Bvb2wpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE3MjA6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NDIwPWZlY19hbGxvY19uZXdfcnhxX3hzayhzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLCBpbnQgcXVldWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NDIxOlx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ0MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ1MjI9c3RhdGljIGludCBmZWNfeHNrX3Jlc3RhcnRfbmFwaShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDUyMzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDUyNC1cdFx0XHRcdHUxNiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTYxPXN0YXRpYyBpbnQgZmVjX2VuYWJsZV94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU2MjpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVx0XHRcdCAgICAgICB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU5Mj1zdGF0aWMgaW50IGZlY19kaXNhYmxlX3hza19wb29sKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5NS1cdHN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3EgKnR4cSA9IGZlcC1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTk2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKm9sZF9wb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5Ny1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDYxOD1zdGF0aWMgaW50IGZlY19zZXR1cF94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDYxOTpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXHRcdFx0ICAgICAgdTE2IHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MjQyPXN0cnVjdCBndmVfcnhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDMtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQ1LVx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oPTQ3Mz1zdHJ1Y3QgZ3ZlX3R4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtNjU5LVx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC02NjEtXHR1NjQgeGRwX3hza19zZW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xMjI3PXN0YXRpYyBpbnQgZ3ZlX3JlZ194c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcdFx0XHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTIyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI4NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcnhfY2ZnLm51bV9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTI4NjpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTYzMDpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTYzMS1cdFx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTY3OT1zdGF0aWMgaW50IGd2ZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGlfdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTY4NTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODYtXHRpbnQgdHhfcWlkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jPTEwODQ9c3RhdGljIGJvb2wgZ3ZlX3hza190eF9kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3R4X3JpbmcgKnR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmM6MTA4NzpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHgtXHUwMDNleHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYy0xMDg4LVx0c3RydWN0IHhkcF9kZXNjIGRlc2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0zNDAyPXN0YXRpYyB2b2lkIGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MzQyNDpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmk0MGVfeHNrX3Bvb2woc3RydWN0IGk0MGVfcmluZyAqcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMzQyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaD0zMjc9c3RydWN0IGk0MGVfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oOjQwMjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgtNDAzLX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo4MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVx0XHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDItXHRib29sIGlmX3J1bm5pbmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE4Mi0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6MTgzOmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9NjMwPWJvb2wgaTQwZV9jbGVhbl94ZHBfdHhfaXJxKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NjMyOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKmJwID0gdHhfcmluZy1cdTAwM2V4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy02MzMtXHR1MzIgaSwgY29tcGxldGVkX2ZyYW1lcywgeHNrX2ZyYW1lcyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jPTc0Nj12b2lkIGk0MGVfeHNrX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVx0dTE2IG50YyA9IHR4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiwgbnR1ID0gdHhfcmluZy1cdTAwM2VuZXh0X3RvX3VzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo3NDk6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTc1MC1cdHN0cnVjdCBpNDBlX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTE5PXN0cnVjdCBuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjIwOnN0cnVjdCB4c2tfYnVmZl9wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0yMz1pbnQgaTQwZV9xdWV1ZV9wYWlyX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgaW50IHF1ZXVlX3BhaXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaC0yNS1cdFx0XHR1MTYgcWlkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkzLSAqIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkIGFzIHplcm8tY29weSwgTlVMTCBvdGhlcndpc2UuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk2LVx0XHRcdFx0XHRcdFx0dTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5ODpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHZzaS1cdTAwM2VuZXRkZXYsIHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyODAtXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTI4MTpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sID0gUkVBRF9PTkNFKHR4X3JpbmctXHUwMDNleHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cdFx0Ym9vbCB3ZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMzEwLVx0aWNlX2Zvcl9lYWNoX3J4X3JpbmcocnhfcmluZywgcV92ZWN0b3ItXHUwMDNlcngpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMTE6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVx1MDAzZXhza19wb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMTItXHRcdGludCBjbGVhbmVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMwNC1cdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg9MzQ5PXN0cnVjdCBpY2VfdHhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzY1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTI2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVx1MDAzZW5ldGRldiwgcWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTQ0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTQ1OmljZV94c2tfcG9vbF9lbmFibGUoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0xNzQ9aWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTk3OmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI2MS1cdFx0XHQgICAgIHVuaW9uIGljZV8zMmJfcnhfZmxleF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI5MzpcdFx0XHRcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MzQyPWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XHRcdFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjM2MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTQzMj1zdGF0aWMgaW50IGljZV94bWl0X3hkcF90eF96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVx0XHRcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQzNDpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy00NzMtXHRcdHR4X2Rlc2MtXHUwMDNlY21kX3R5cGVfb2Zmc2V0X2JzeiA9IGljZV9idWlsZF9jdG9iKDAsIDAsIHNpemUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0NzQ6XHRcdC8qIGFjY291bnQgZm9yIGVhY2ggeGRwX2J1ZmYgZnJvbSB4c2tfYnVmZl9wb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQ3NS1cdFx0eGRwX3JpbmctXHUwMDNleGRwX3R4X2FjdGl2ZSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01MTU9aWNlX3J1bl94ZHBfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVx0ICAgICAgIHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2csIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjUxNzpcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTUxOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo1Njg6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01NjktXHRcdFx0aW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTcwOT1zdGF0aWMgdm9pZCBpY2VfeG1pdF9wa3Qoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzEwOlx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVx0XHRcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzM0PXN0YXRpYyB2b2lkIGljZV94bWl0X3BrdF9iYXRjaChzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XHRcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzM2LVx0XHRcdCAgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzcwOlx0XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXHRcdFx0XHRzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLCB1MzIgbmJfcGt0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzkxOmJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03OTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTA9c3RydWN0IGljZV92c2k7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjEzOmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTE0LVx0XHQgICAgICAgdTE2IHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE1PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xNy1cdFx0XHRpbnQgYnVkZ2V0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyMDpcdFx0XHQgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMjEtYm9vbCBpY2VfeHNrX2FueV9yeF9yaW5nX2VuYShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTIzPXZvaWQgaWNlX3hza19jbGVhbl94ZHBfcmluZyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjQ6Ym9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0zND1zdGF0aWMgaW5saW5lIGJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0zNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjQyOlx0XHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTQzLVx0XHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTQ5PWljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XHRcdCAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cdFx0ICAgIGludCBfX2Fsd2F5c191bnVzZWQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NTc9aWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTg6XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgX19hbHdheXNfdW51c2VkICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtNTktXHRcdCAgICAgdTE2IF9fYWx3YXlzX3VudXNlZCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjMtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeHNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2NS1cdFx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTY0Mz1zdHJ1Y3QgaWRwZl90eF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC02NTktXHRcdHN0cnVjdCBkZXZpY2UgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NjYwOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjYxLVx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTcyMD1saWJldGhfY2FjaGVsaW5lX3NldF9hc3NlcnQoc3RydWN0IGlkcGZfdHhfcXVldWUsIDY0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcdTAwMjZ4ZHBfYnVmZiBmb3IgWFNrIFJ4IGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NzM0OiAqIEBwb29sOiBcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzM1LSAqIEBoZHJfYnVmOiBcdTAwMjZsaWJldGhfZnFlIGZvciBoZWFkZXIgYnVmZmVyc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NzU1PXN0cnVjdCBpZHBmX2J1Zl9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjc2NTpcdFx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzY2LVx0XHR9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz0yNj1zdGF0aWMgdm9pZCBpZHBmX3hza19zZXR1cF9idWZxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVx0Y29uc3Qgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyA9IFx1MDAyNnZwb3J0LVx1MDAzZWRmbHRfcXZfcnNyYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MzA6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXHR1MzIgcWlkID0gVTMyX01BWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU4LVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTc5PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX2NvbXBscShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjgyOlx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTgzLVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU1ND1pbnQgaWRwZl94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gYnBmLVx1MDAzZXhzay5wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXHR1MzIgcWlkID0gYnBmLVx1MDAzZXhzay5xdWV1ZV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9MzE5PXN0cnVjdCBpZ2JfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDozNjU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtMzY2LX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU2PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODU5OnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2MC1cdFx0XHRcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODYxPWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2MjpcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2My1cdFx0ICAgICAgIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTg2ND1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NjU6XHRcdFx0ICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY2LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04Njc9aW50IGlnYl9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODY4Olx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODY5OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg3MC1pbnQgaWdiX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHFpZCwgdTMyIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODItXHRcdFx0XHRcdFx0ICAgICBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04Mjg0LVx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9ODMyNz1zdGF0aWMgYm9vbCBpZ2JfY2xlYW5fdHhfaXJxKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBpbnQgbmFwaV9idWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNS1cdHN0cnVjdCBpZ2JfdHhfYnVmZmVyICp0eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNy1cdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz01Nz1zdGF0aWMgdm9pZCBpZ2JfdHhyeF9yaW5nX2VuYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODM6c3RydWN0IHhza19idWZmX3Bvb2wgKmlnYl94c2tfcG9vbChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVx0XHRcdFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXHRpbnQgcWlkID0gcmluZy1cdTAwM2VxdWV1ZV9pbmRleDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz05Nz1zdGF0aWMgaW50IGlnYl94c2tfcG9vbF9lbmFibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo5ODpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVx0XHRcdCAgICAgICB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTM5PXN0YXRpYyBpbnQgaWdiX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVx0c3RydWN0IGlnYl9yaW5nICpyeF9yaW5nO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNjk6XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTcwLVx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc3LVx0XHRcdCAgICAgdW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsIHUxNiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MjAxOlx0XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTIwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0yOTQ9c3RhdGljIGludCBpZ2JfcnVuX3hkcF96YyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6Mjk1Olx0XHRcdCAgc3RydWN0IHhkcF9idWZmICp4ZHAsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVx0XHRcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTM0MT1pbnQgaWdiX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWdiX3FfdmVjdG9yICpxX3ZlY3RvcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6NDY1OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTE0Nz1zdHJ1Y3QgaWdjX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDMtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6MjA0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTIwNS19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE2LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDM5Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSByaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA0MC1cdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5xID0gdHhyaW5nX3R4cShyaW5nKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jPTc0OT1zdGF0aWMgdm9pZCBpZ2NfcHRwX3R4X3JlZ190b19zdGFtcChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXHRpZiAodHN0YW1wLVx1MDAzZWJ1ZmZlcl90eXBlID09IElHQ19UWF9CVUZGRVJfVFlQRV9YU0spIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jPTU2PXN0YXRpYyBpbnQgaWdjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy01OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTEyMC1cdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjEyMTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjE1OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTE2MC1cdFx0ICAgICAgIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTgtXHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmg6OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTEwLVx0XHQgICAgICAgdTE2IHF1ZXVlX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkxMzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQUZfWERQIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZHJpdmVycyB0aGF0IGN1cnJlbnRseSBzdXBwb3J0IEFGX1hEUCB6ZXJvLWNvcHkuIExldCBtZSBzZWUuLi4gSSYjMzk7dmUgZ290IGEgbWVudGFsIGxpc3Qgc3RhcnRpbmcgdG8gZm9ybS4gVGhlcmUmIzM5O3MgYHRzbmVwYCAtIHRoZSBFbmdsZWRlciBUU04gZW5kcG9pbnQuIFRoZW4gdGhlcmUmIzM5O3MgdGhlIEZyZWVzY2FsZSBEUEFBMiwgdGhhdCYjMzk7cyBgZHBhYTJgLiBJIHJlbWVtYmVyIGBmZWNgIGZyb20gRnJlZXNjYWxlLCB0b28uIEFuZCBvZiBjb3Vyc2UsIGBndmVgLCB0aGUgR29vZ2xlIFZpcnR1YWwgTklDLCBpdCYjMzk7cyBwcmV0dHkgY3J1Y2lhbC4gVGhlIHVzdWFsIHN1c3BlY3RzIGZyb20gSW50ZWwgYXJlIGluIHRoZSBtaXg6IGBpNDBlYCwgYGljZWAsIGBpZHBmYCwgYGlnYmAsIGBpZ2NgLCBhbmQgYGl4Z2JlYC4gVGhlbiwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IE1lbGxhbm94IGBtbHg1YC4gQW5kLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGBzdG1tYWNgIGRyaXZlciBmcm9tIFNUTWljcm9lbGVjdHJvbmljcy4KCldhaXQgYSBzZWNvbmTigKYgYHZldGhgPyBWaXJ0dWFsIEV0aGVybmV0PyBJIGNvdWxkIGhhdmUgc3dvcm4gdGhhdCBJIGRpZG4mIzM5O3QgdGhpbmsgYHZldGhgIHN1cHBvcnRlZCBBRl9YRFAgemVyby1jb3B5LiBJIGNvdWxkIGJlIG1pc3Rha2VuLCB0aG91Z2guIE1heWJlIHRoaW5ncyBoYXZlIGNoYW5nZWQsIG9yIG15IG1lbW9yeSYjMzk7cyBzbGlwcGluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIExldCYjMzk7cyBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC92ZXRoLmNgIGFuZCBjb25maXJtIHRoYXQgaXQgcmVhbGx5IHN1cHBvcnRzIEFGX1hEUC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9wb29sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2ODQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgdmV0aCBhbmQgWFNLIEludGVncmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIFZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLCBgdmV0aGAsIHdvdWxkIGxldmVyYWdlIHRoZSBgeHNrX2J1ZmZfcG9vbGAgZm9yIGl0cyB6ZXJvLWNvcHkgY2FwYWJpbGl0aWVzLiBCdXQgc29tZXRoaW5nJiMzOTtzIG5pZ2dsaW5nIGF0IG1lLi4uIGlzIHRoYXQgYWN0dWFsbHkgKnRydWUqPyBMZXQgbWUgY2xhcmlmeSB0aGF0IG1lbnRhbCBtb2RlbC4gRG9lcyBgdmV0aGAgYWN0dWFsbHkgKnVzZSogYHhza19idWZmX3Bvb2xgIGRpcmVjdGx5PyBPciBwZXJoYXBzLCBjb3VsZCBpdCBiZSBhIG1vcmUgaW5kaXJlY3QgY29ubmVjdGlvbiwgb3IgcG9zc2libHksIHplcm8tY29weSBpcyBhY2hpZXZlZCBpbiBhIGRpZmZlcmVudCB3YXkgZW50aXJlbHk/IEhtbW0uCgpSaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSB0byBjbGFyaWZ5IHRoaXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdmV0aC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIgYW5kIHNoZWQgc29tZSBsaWdodCBvbiBob3cgYHZldGhgIGhhbmRsZXMgWERQIHNvY2tldHMgYW5kIHplcm8tY29weSBpZiBpdCAqaXMqIHVzaW5nIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDAwMQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgWERQL3ZldGggUmVsYXRpb25zaGlwKioKCkhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgdmlydHVhbCBFdGhlcm5ldCBkZXZpY2UsIGB2ZXRoYCwgaGFkIHNvbWUgaW50ZWdyYXRpb24gd2l0aCBYRFAsIHBlcmhhcHMgdGhyb3VnaCBgeHNrYCBzb2NrZXRzLCBidXQgbm93IHRoYXQgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdCwgdGhhdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIHZldGggZHJpdmVyLiBSaWdodCwgaXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC92ZXRoLmNgIHRvIHNlZSBob3cgYHZldGhgIGFjdHVhbGx5IGludGVyYWN0cywgaWYgYXQgYWxsLCB3aXRoIFhEUCYjMzk7cyBjYXBhYmlsaXRpZXMuIFRoZXJlIG11c3QgYmUgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIHRoZSBzb3VyY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC92ZXRoLmMtMjEtI2luY2x1ZGUgXHUwMDNjbmV0L3hmcm0uaFx1MDAzZVxuZHJpdmVycy9uZXQvdmV0aC5jOjIyOiNpbmNsdWRlIFx1MDAzY25ldC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvdmV0aC5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZldGguaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz00Mz1zdHJ1Y3QgdmV0aF9zdGF0cyB7XG5kcml2ZXJzL25ldC92ZXRoLmMtNDQtXHR1NjRcdHJ4X2Ryb3BzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ1Olx0LyogeGRwICovXG5kcml2ZXJzL25ldC92ZXRoLmM6NDY6XHR1NjRcdHhkcF9wYWNrZXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ3Olx0dTY0XHR4ZHBfYnl0ZXM7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDg6XHR1NjRcdHhkcF9yZWRpcmVjdDtcbmRyaXZlcnMvbmV0L3ZldGguYzo0OTpcdHU2NFx0eGRwX2Ryb3BzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjUwOlx0dTY0XHR4ZHBfdHg7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTE6XHR1NjRcdHhkcF90eF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTI6XHR1NjRcdHBlZXJfdHFfeGRwX3htaXQ7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTM6XHR1NjRcdHBlZXJfdHFfeGRwX3htaXRfZXJyO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU0LX07XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTYxPXN0cnVjdCB2ZXRoX3JxIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjpcdHN0cnVjdCBuYXBpX3N0cnVjdFx0eGRwX25hcGk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjM6XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgX19yY3UgKm5hcGk7IC8qIHBvaW50cyB0byB4ZHBfbmFwaSB3aGVuIHRoZSBsYXR0ZXIgaXMgaW5pdGlhbGl6ZWQgKi9cbmRyaXZlcnMvbmV0L3ZldGguYy02NC1cdHN0cnVjdCBuZXRfZGV2aWNlXHQqZGV2O1xuZHJpdmVycy9uZXQvdmV0aC5jOjY1Olx0c3RydWN0IGJwZl9wcm9nIF9fcmN1XHQqeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjY6XHRzdHJ1Y3QgeGRwX21lbV9pbmZvXHR4ZHBfbWVtO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY3LVx0c3RydWN0IHZldGhfcnFfc3RhdHNcdHN0YXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY4LVx0Ym9vbFx0XHRcdHJ4X25vdGlmeV9tYXNrZWQ7XG5kcml2ZXJzL25ldC92ZXRoLmM6Njk6XHRzdHJ1Y3QgcHRyX3JpbmdcdFx0eGRwX3Jpbmc7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzA6XHRzdHJ1Y3QgeGRwX3J4cV9pbmZvXHR4ZHBfcnhxO1xuZHJpdmVycy9uZXQvdmV0aC5jLTcxLVx0c3RydWN0IHBhZ2VfcG9vbFx0KnBhZ2VfcG9vbDtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NzQ9c3RydWN0IHZldGhfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTc2LVx0YXRvbWljNjRfdFx0XHRkcm9wcGVkO1xuZHJpdmVycy9uZXQvdmV0aC5jOjc3Olx0c3RydWN0IGJwZl9wcm9nXHRcdCpfeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzgtXHRzdHJ1Y3QgdmV0aF9ycVx0XHQqcnE7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTgxLVxuZHJpdmVycy9uZXQvdmV0aC5jOjgyOnN0cnVjdCB2ZXRoX3hkcF90eF9icSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6ODM6XHRzdHJ1Y3QgeGRwX2ZyYW1lICpxW1ZFVEhfWERQX1RYX0JVTEtfU0laRV07XG5kcml2ZXJzL25ldC92ZXRoLmMtODQtXHR1bnNpZ25lZCBpbnQgY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTk4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3JxX3N0YXRzX2Rlc2NbXSA9IHtcbmRyaXZlcnMvbmV0L3ZldGguYzo5OTpcdHsgXCYjMzQ7eGRwX3BhY2tldHNcJiMzNDssXHRWRVRIX1JRX1NUQVQoeGRwX3BhY2tldHMpIH0sXG5kcml2ZXJzL25ldC92ZXRoLmM6MTAwOlx0eyBcJiMzNDt4ZHBfYnl0ZXNcJiMzNDssXHRcdFZFVEhfUlFfU1RBVCh4ZHBfYnl0ZXMpIH0sXG5kcml2ZXJzL25ldC92ZXRoLmMtMTAxLVx0eyBcJiMzNDtkcm9wc1wmIzM0OyxcdFx0VkVUSF9SUV9TVEFUKHJ4X2Ryb3BzKSB9LFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwMjpcdHsgXCYjMzQ7eGRwX3JlZGlyZWN0XCYjMzQ7LFx0VkVUSF9SUV9TVEFUKHhkcF9yZWRpcmVjdCkgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMDM6XHR7IFwmIzM0O3hkcF9kcm9wc1wmIzM0OyxcdFx0VkVUSF9SUV9TVEFUKHhkcF9kcm9wcykgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMDQ6XHR7IFwmIzM0O3hkcF90eFwmIzM0OyxcdFx0VkVUSF9SUV9TVEFUKHhkcF90eCkgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMDU6XHR7IFwmIzM0O3hkcF90eF9lcnJvcnNcJiMzNDssXHRWRVRIX1JRX1NUQVQoeGRwX3R4X2VycikgfSxcbmRyaXZlcnMvbmV0L3ZldGguYy0xMDYtfTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3RxX3N0YXRzX2Rlc2NbXSA9IHtcbmRyaXZlcnMvbmV0L3ZldGguYzoxMTE6XHR7IFwmIzM0O3hkcF94bWl0XCYjMzQ7LFx0XHRWRVRIX1JRX1NUQVQocGVlcl90cV94ZHBfeG1pdCkgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMTI6XHR7IFwmIzM0O3hkcF94bWl0X2Vycm9yc1wmIzM0OyxcdFZFVEhfUlFfU1RBVChwZWVyX3RxX3hkcF94bWl0X2VycikgfSxcbmRyaXZlcnMvbmV0L3ZldGguYy0xMTMtfTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MTE3PXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0xMjItXG5kcml2ZXJzL25ldC92ZXRoLmM6MTIzOnN0cnVjdCB2ZXRoX3hkcF9idWZmIHtcbmRyaXZlcnMvbmV0L3ZldGguYzoxMjQ6XHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTEyNS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHZldGhfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTI3Ny1cbmRyaXZlcnMvbmV0L3ZldGguYzoyNzg6c3RhdGljIGJvb2wgdmV0aF9pc194ZHBfZnJhbWUodm9pZCAqcHRyKVxuZHJpdmVycy9uZXQvdmV0aC5jLTI3OS17XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTI4Mi1cbmRyaXZlcnMvbmV0L3ZldGguYzoyODM6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfcHRyX3RvX3hkcCh2b2lkICpwdHIpXG5kcml2ZXJzL25ldC92ZXRoLmMtMjg0LXtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtMjg3LVxuZHJpdmVycy9uZXQvdmV0aC5jOjI4ODpzdGF0aWMgdm9pZCAqdmV0aF94ZHBfdG9fcHRyKHN0cnVjdCB4ZHBfZnJhbWUgKnhkcClcbmRyaXZlcnMvbmV0L3ZldGguYy0yODkte1xuZHJpdmVycy9uZXQvdmV0aC5jOjI5MDpcdHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZyl4ZHAgfCBWRVRIX1hEUF9GTEFHKTtcbmRyaXZlcnMvbmV0L3ZldGguYy0yOTEtfVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz0yOTM9c3RhdGljIHZvaWQgdmV0aF9wdHJfZnJlZSh2b2lkICpwdHIpXG5kcml2ZXJzL25ldC92ZXRoLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3ZldGguYzoyOTU6XHRpZiAodmV0aF9pc194ZHBfZnJhbWUocHRyKSlcbmRyaXZlcnMvbmV0L3ZldGguYzoyOTY6XHRcdHhkcF9yZXR1cm5fZnJhbWUodmV0aF9wdHJfdG9feGRwKHB0cikpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTI5Ny1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtMzAwLVxuZHJpdmVycy9uZXQvdmV0aC5jOjMwMTpzdGF0aWMgdm9pZCBfX3ZldGhfeGRwX2ZsdXNoKHN0cnVjdCB2ZXRoX3JxICpycSlcbmRyaXZlcnMvbmV0L3ZldGguYy0zMDIte1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0zMDUtXHRpZiAoIVJFQURfT05DRShycS1cdTAwM2VyeF9ub3RpZnlfbWFza2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3ZldGguYzozMDY6XHQgICAgbmFwaV9zY2hlZHVsZV9wcmVwKFx1MDAyNnJxLVx1MDAzZXhkcF9uYXBpKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTMwNy1cdFx0V1JJVEVfT05DRShycS1cdTAwM2VyeF9ub3RpZnlfbWFza2VkLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3ZldGguYzozMDg6XHRcdF9fbmFwaV9zY2hlZHVsZShcdTAwMjZycS1cdTAwM2V4ZHBfbmFwaSk7XG5kcml2ZXJzL25ldC92ZXRoLmMtMzA5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0zMTEtXG5kcml2ZXJzL25ldC92ZXRoLmM6MzEyOnN0YXRpYyBpbnQgdmV0aF94ZHBfcngoc3RydWN0IHZldGhfcnEgKnJxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdmV0aC5jLTMxMy17XG5kcml2ZXJzL25ldC92ZXRoLmM6MzE0Olx0aWYgKHVubGlrZWx5KHB0cl9yaW5nX3Byb2R1Y2UoXHUwMDI2cnEtXHUwMDNleGRwX3JpbmcsIHNrYikpKVxuZHJpdmVycy9uZXQvdmV0aC5jLTMxNS1cdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZOyAvKiBzaWduYWwgcWRpc2MgbGF5ZXIgKi9cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MzIwPXN0YXRpYyBpbnQgdmV0aF9mb3J3YXJkX3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdmV0aC5jOjMyMTpcdFx0XHQgICAgc3RydWN0IHZldGhfcnEgKnJxLCBib29sIHhkcClcbmRyaXZlcnMvbmV0L3ZldGguYy0zMjIte1xuZHJpdmVycy9uZXQvdmV0aC5jOjMyMzpcdHJldHVybiBfX2Rldl9mb3J3YXJkX3NrYihkZXYsIHNrYikgPzogeGRwID9cbmRyaXZlcnMvbmV0L3ZldGguYzozMjQ6XHRcdHZldGhfeGRwX3J4KHJxLCBza2IpIDpcbmRyaXZlcnMvbmV0L3ZldGguYy0zMjUtXHRcdF9fbmV0aWZfcngoc2tiKTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MzQ3PXN0YXRpYyBuZXRkZXZfdHhfdCB2ZXRoX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtMzg0LVx0XHRlbHNlXG5kcml2ZXJzL25ldC92ZXRoLmM6Mzg1Olx0XHRcdF9fdmV0aF94ZHBfZmx1c2gocnEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTM4Ni1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTQwMy1cdFx0ICovXG5kcml2ZXJzL25ldC92ZXRoLmM6NDA0Olx0XHRfX3ZldGhfeGRwX2ZsdXNoKHJxKTtcbmRyaXZlcnMvbmV0L3ZldGguYy00MDUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz00MjA9c3RhdGljIHZvaWQgdmV0aF9zdGF0c19yeChzdHJ1Y3QgdmV0aF9zdGF0cyAqcmVzdWx0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy00MjQtXG5kcml2ZXJzL25ldC92ZXRoLmM6NDI1Olx0cmVzdWx0LVx1MDAzZXBlZXJfdHFfeGRwX3htaXRfZXJyID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYzo0MjY6XHRyZXN1bHQtXHUwMDNleGRwX3BhY2tldHMgPSAwO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQyNzpcdHJlc3VsdC1cdTAwM2V4ZHBfdHhfZXJyID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYzo0Mjg6XHRyZXN1bHQtXHUwMDNleGRwX2J5dGVzID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYy00MjktXHRyZXN1bHQtXHUwMDNlcnhfZHJvcHMgPSAwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTQzMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdmV0aC5jOjQzMTpcdFx0dTY0IHBhY2tldHMsIGJ5dGVzLCBkcm9wcywgeGRwX3R4X2VyciwgcGVlcl90cV94ZHBfeG1pdF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmMtNDMyLVx0XHRzdHJ1Y3QgdmV0aF9ycV9zdGF0cyAqc3RhdHMgPSBcdTAwMjZwcml2LVx1MDAzZXJxW2ldLnN0YXRzO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy00MzYtXHRcdFx0c3RhcnQgPSB1NjRfc3RhdHNfZmV0Y2hfYmVnaW4oXHUwMDI2c3RhdHMtXHUwMDNlc3luY3ApO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQzNzpcdFx0XHRwZWVyX3RxX3hkcF94bWl0X2VyciA9IHN0YXRzLVx1MDAzZXZzLnBlZXJfdHFfeGRwX3htaXRfZXJyO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQzODpcdFx0XHR4ZHBfdHhfZXJyID0gc3RhdHMtXHUwMDNldnMueGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0Mzk6XHRcdFx0cGFja2V0cyA9IHN0YXRzLVx1MDAzZXZzLnhkcF9wYWNrZXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ0MDpcdFx0XHRieXRlcyA9IHN0YXRzLVx1MDAzZXZzLnhkcF9ieXRlcztcbmRyaXZlcnMvbmV0L3ZldGguYy00NDEtXHRcdFx0ZHJvcHMgPSBzdGF0cy1cdTAwM2V2cy5yeF9kcm9wcztcbmRyaXZlcnMvbmV0L3ZldGguYy00NDItXHRcdH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeShcdTAwMjZzdGF0cy1cdTAwM2VzeW5jcCwgc3RhcnQpKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDM6XHRcdHJlc3VsdC1cdTAwM2VwZWVyX3RxX3hkcF94bWl0X2VyciAmIzQzOz0gcGVlcl90cV94ZHBfeG1pdF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDQ0Olx0XHRyZXN1bHQtXHUwMDNleGRwX3R4X2VyciAmIzQzOz0geGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDU6XHRcdHJlc3VsdC1cdTAwM2V4ZHBfcGFja2V0cyAmIzQzOz0gcGFja2V0cztcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDY6XHRcdHJlc3VsdC1cdTAwM2V4ZHBfYnl0ZXMgJiM0Mzs9IGJ5dGVzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTQ0Ny1cdFx0cmVzdWx0LVx1MDAzZXJ4X2Ryb3BzICYjNDM7PSBkcm9wcztcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NDUxPXN0YXRpYyB2b2lkIHZldGhfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNDYxLVx0dmV0aF9zdGF0c19yeChcdTAwMjZyeCwgZGV2KTtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjI6XHR0b3QtXHUwMDNldHhfZHJvcHBlZCAmIzQzOz0gcngueGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjM6XHR0b3QtXHUwMDNlcnhfZHJvcHBlZCA9IHJ4LnJ4X2Ryb3BzICYjNDM7IHJ4LnBlZXJfdHFfeGRwX3htaXRfZXJyO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ2NDpcdHRvdC1cdTAwM2VyeF9ieXRlcyAmIzQzOz0gcngueGRwX2J5dGVzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ2NTpcdHRvdC1cdTAwM2VyeF9wYWNrZXRzICYjNDM7PSByeC54ZHBfcGFja2V0cztcbmRyaXZlcnMvbmV0L3ZldGguYy00NjYtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTQ3Ni1cdFx0dmV0aF9zdGF0c19yeChcdTAwMjZyeCwgcGVlcik7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDc3Olx0XHR0b3QtXHUwMDNldHhfZHJvcHBlZCAmIzQzOz0gcngucGVlcl90cV94ZHBfeG1pdF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDc4Olx0XHR0b3QtXHUwMDNlcnhfZHJvcHBlZCAmIzQzOz0gcngueGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0Nzk6XHRcdHRvdC1cdTAwM2V0eF9ieXRlcyAmIzQzOz0gcngueGRwX2J5dGVzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ4MDpcdFx0dG90LVx1MDAzZXR4X3BhY2tldHMgJiM0Mzs9IHJ4LnhkcF9wYWNrZXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTQ4MS1cdH1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NDk1PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqdmV0aF9wZWVyX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01MDItXG5kcml2ZXJzL25ldC92ZXRoLmM6NTAzOnN0YXRpYyBpbnQgdmV0aF94ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbixcbmRyaXZlcnMvbmV0L3ZldGguYzo1MDQ6XHRcdFx0IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsXG5kcml2ZXJzL25ldC92ZXRoLmMtNTA1LVx0XHRcdCB1MzIgZmxhZ3MsIGJvb2wgbmRvX3htaXQpXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTUyMy1cdC8qIFRoZSBuYXBpIHBvaW50ZXIgaXMgc2V0IGlmIE5BUEkgaXMgZW5hYmxlZCwgd2hpY2ggZW5zdXJlcyB0aGF0XG5kcml2ZXJzL25ldC92ZXRoLmM6NTI0Olx0ICogeGRwX3JpbmcgaXMgaW5pdGlhbGl6ZWQgb24gcmVjZWl2ZSBzaWRlIGFuZCB0aGUgcGVlciBkZXZpY2UgaXMgdXAuXG5kcml2ZXJzL25ldC92ZXRoLmMtNTI1LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTUzMC1cbmRyaXZlcnMvbmV0L3ZldGguYzo1MzE6XHRzcGluX2xvY2soXHUwMDI2cnEtXHUwMDNleGRwX3JpbmcucHJvZHVjZXJfbG9jayk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNTMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzM6XHRcdHN0cnVjdCB4ZHBfZnJhbWUgKmZyYW1lID0gZnJhbWVzW2ldO1xuZHJpdmVycy9uZXQvdmV0aC5jOjUzNDpcdFx0dm9pZCAqcHRyID0gdmV0aF94ZHBfdG9fcHRyKGZyYW1lKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01MzUtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTM2Olx0XHRpZiAodW5saWtlbHkoeGRwX2dldF9mcmFtZV9sZW4oZnJhbWUpIFx1MDAzZSBtYXhfbGVuIHx8XG5kcml2ZXJzL25ldC92ZXRoLmM6NTM3Olx0XHRcdCAgICAgX19wdHJfcmluZ19wcm9kdWNlKFx1MDAyNnJxLVx1MDAzZXhkcF9yaW5nLCBwdHIpKSlcbmRyaXZlcnMvbmV0L3ZldGguYy01MzgtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTU0MC1cdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo1NDE6XHRzcGluX3VubG9jayhcdTAwMjZycS1cdTAwM2V4ZHBfcmluZy5wcm9kdWNlcl9sb2NrKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01NDItXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQzLVx0aWYgKGZsYWdzIFx1MDAyNiBYRFBfWE1JVF9GTFVTSClcbmRyaXZlcnMvbmV0L3ZldGguYzo1NDQ6XHRcdF9fdmV0aF94ZHBfZmx1c2gocnEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU0NS1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQ4LVx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo1NDk6XHRcdHJxLVx1MDAzZXN0YXRzLnZzLnBlZXJfdHFfeGRwX3htaXQgJiM0Mzs9IG54bWl0O1xuZHJpdmVycy9uZXQvdmV0aC5jOjU1MDpcdFx0cnEtXHUwMDNlc3RhdHMudnMucGVlcl90cV94ZHBfeG1pdF9lcnIgJiM0Mzs9IG4gLSBueG1pdDtcbmRyaXZlcnMvbmV0L3ZldGguYy01NTEtXHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTU5LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU2MDpzdGF0aWMgaW50IHZldGhfbmRvX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuLFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2MTpcdFx0XHQgICAgIHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsIHUzMiBmbGFncylcbmRyaXZlcnMvbmV0L3ZldGguYy01NjIte1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01NjQtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTY1Olx0ZXJyID0gdmV0aF94ZHBfeG1pdChkZXYsIG4sIGZyYW1lcywgZmxhZ3MsIHRydWUpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ni1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc0LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU3NTpzdGF0aWMgdm9pZCB2ZXRoX3hkcF9mbHVzaF9icShzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc2LXtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU3OTpcdHNlbnQgPSB2ZXRoX3hkcF94bWl0KHJxLVx1MDAzZWRldiwgYnEtXHUwMDNlY291bnQsIGJxLVx1MDAzZXEsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01ODAtXHRpZiAoc2VudCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01ODUtXHRmb3IgKGkgPSBzZW50OyB1bmxpa2VseShpIFx1MDAzYyBicS1cdTAwM2Vjb3VudCk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvdmV0aC5jOjU4NjpcdFx0eGRwX3JldHVybl9mcmFtZShicS1cdTAwM2VxW2ldKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01ODctXG5kcml2ZXJzL25ldC92ZXRoLmMtNTg4LVx0ZHJvcHMgPSBicS1cdTAwM2Vjb3VudCAtIHNlbnQ7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTg5Olx0dHJhY2VfeGRwX2J1bGtfdHgocnEtXHUwMDNlZGV2LCBzZW50LCBkcm9wcywgZXJyKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01OTAtXG5kcml2ZXJzL25ldC92ZXRoLmMtNTkxLVx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZycS1cdTAwM2VzdGF0cy5zeW5jcCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTkyOlx0cnEtXHUwMDNlc3RhdHMudnMueGRwX3R4ICYjNDM7PSBzZW50O1xuZHJpdmVycy9uZXQvdmV0aC5jOjU5MzpcdHJxLVx1MDAzZXN0YXRzLnZzLnhkcF90eF9lcnIgJiM0Mzs9IGRyb3BzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU5NC1cdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTk4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU5OTpzdGF0aWMgdm9pZCB2ZXRoX3hkcF9mbHVzaChzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXG5kcml2ZXJzL25ldC92ZXRoLmMtNjAwLXtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNjA1LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjYwNjpcdHZldGhfeGRwX2ZsdXNoX2JxKHJxLCBicSk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjA3LVx0cmN2ID0gcmN1X2RlcmVmZXJlbmNlKHByaXYtXHUwMDNlcGVlcik7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYxMi1cdHJjdl9ycSA9IFx1MDAyNnJjdl9wcml2LVx1MDAzZXJxW3ZldGhfc2VsZWN0X3J4cShyY3YpXTtcbmRyaXZlcnMvbmV0L3ZldGguYzo2MTM6XHQvKiB4ZHBfcmluZyBpcyBpbml0aWFsaXplZCBvbiByZWNlaXZlIHNpZGU/ICovXG5kcml2ZXJzL25ldC92ZXRoLmM6NjE0Olx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIocmN2X3JxLVx1MDAzZXhkcF9wcm9nKSkpXG5kcml2ZXJzL25ldC92ZXRoLmMtNjE1LVx0XHRnb3RvIG91dDtcbmRyaXZlcnMvbmV0L3ZldGguYy02MTYtXG5kcml2ZXJzL25ldC92ZXRoLmM6NjE3Olx0X192ZXRoX3hkcF9mbHVzaChyY3ZfcnEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTYxOC1vdXQ6XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYyMS1cbmRyaXZlcnMvbmV0L3ZldGguYzo2MjI6c3RhdGljIGludCB2ZXRoX3hkcF90eChzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxuZHJpdmVycy9uZXQvdmV0aC5jOjYyMzpcdFx0ICAgICAgIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXG5kcml2ZXJzL25ldC92ZXRoLmMtNjI0LXtcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjU6XHRzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSA9IHhkcF9jb252ZXJ0X2J1ZmZfdG9fZnJhbWUoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYzMC1cdGlmICh1bmxpa2VseShicS1cdTAwM2Vjb3VudCA9PSBWRVRIX1hEUF9UWF9CVUxLX1NJWkUpKVxuZHJpdmVycy9uZXQvdmV0aC5jOjYzMTpcdFx0dmV0aF94ZHBfZmx1c2hfYnEocnEsIGJxKTtcbmRyaXZlcnMvbmV0L3ZldGguYy02MzItXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYzNy1cbmRyaXZlcnMvbmV0L3ZldGguYzo2Mzg6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfeGRwX3Jjdl9vbmUoc3RydWN0IHZldGhfcnEgKnJxLFxuZHJpdmVycy9uZXQvdmV0aC5jOjYzOTpcdFx0XHRcdFx0ICBzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSxcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDA6XHRcdFx0XHRcdCAgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSxcbmRyaXZlcnMvbmV0L3ZldGguYy02NDEtXHRcdFx0XHRcdCAgc3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxuZHJpdmVycy9uZXQvdmV0aC5jLTY0Mi17XG5kcml2ZXJzL25ldC92ZXRoLmM6NjQzOlx0c3RydWN0IHhkcF9mcmFtZSBvcmlnX2ZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY0NDpcdHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjQ1LVxuZHJpdmVycy9uZXQvdmV0aC5jLTY0Ni1cdHJjdV9yZWFkX2xvY2soKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDc6XHR4ZHBfcHJvZyA9IHJjdV9kZXJlZmVyZW5jZShycS1cdTAwM2V4ZHBfcHJvZyk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjQ4Olx0aWYgKGxpa2VseSh4ZHBfcHJvZykpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDk6XHRcdHN0cnVjdCB2ZXRoX3hkcF9idWZmIHZ4YnVmO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY1MDpcdFx0c3RydWN0IHhkcF9idWZmICp4ZHAgPSBcdTAwMjZ2eGJ1Zi54ZHA7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjUxLVx0XHR1MzIgYWN0O1xuZHJpdmVycy9uZXQvdmV0aC5jLTY1Mi1cbmRyaXZlcnMvbmV0L3ZldGguYzo2NTM6XHRcdHhkcF9jb252ZXJ0X2ZyYW1lX3RvX2J1ZmYoZnJhbWUsIHhkcCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjU0Olx0XHR4ZHAtXHUwMDNlcnhxID0gXHUwMDI2cnEtXHUwMDNleGRwX3J4cTtcbmRyaXZlcnMvbmV0L3ZldGguYy02NTUtXHRcdHZ4YnVmLnNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjU2LVxuZHJpdmVycy9uZXQvdmV0aC5jOjY1NzpcdFx0YWN0ID0gYnBmX3Byb2dfcnVuX3hkcCh4ZHBfcHJvZywgeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTY2MC1cdFx0Y2FzZSBYRFBfUEFTUzpcbmRyaXZlcnMvbmV0L3ZldGguYzo2NjE6XHRcdFx0aWYgKHhkcF91cGRhdGVfZnJhbWVfZnJvbV9idWZmKHhkcCwgZnJhbWUpKVxuZHJpdmVycy9uZXQvdmV0aC5jOjY2MjpcdFx0XHRcdGdvdG8gZXJyX3hkcDtcbmRyaXZlcnMvbmV0L3ZldGguYy02NjMtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTY2NS1cdFx0XHRvcmlnX2ZyYW1lID0gKmZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY2NjpcdFx0XHR4ZHAtXHUwMDNlcnhxLVx1MDAzZW1lbS50eXBlID0gZnJhbWUtXHUwMDNlbWVtX3R5cGU7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjY3Olx0XHRcdGlmICh1bmxpa2VseSh2ZXRoX3hkcF90eChycSwgeGRwLCBicSkgXHUwMDNjIDApKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjY4Olx0XHRcdFx0dHJhY2VfeGRwX2V4Y2VwdGlvbihycS1cdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY2OS1cdFx0XHRcdGZyYW1lID0gXHUwMDI2b3JpZ19mcmFtZTtcbmRyaXZlcnMvbmV0L3ZldGguYy02NzAtXHRcdFx0XHRzdGF0cy1cdTAwM2VyeF9kcm9wcyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjcxOlx0XHRcdFx0Z290byBlcnJfeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY3Mi1cdFx0XHR9XG5kcml2ZXJzL25ldC92ZXRoLmM6NjczOlx0XHRcdHN0YXRzLVx1MDAzZXhkcF90eCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjc0LVx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY3NTpcdFx0XHRnb3RvIHhkcF94bWl0O1xuZHJpdmVycy9uZXQvdmV0aC5jLTY3Ni1cdFx0Y2FzZSBYRFBfUkVESVJFQ1Q6XG5kcml2ZXJzL25ldC92ZXRoLmMtNjc3LVx0XHRcdG9yaWdfZnJhbWUgPSAqZnJhbWU7XG5kcml2ZXJzL25ldC92ZXRoLmM6Njc4Olx0XHRcdHhkcC1cdTAwM2VyeHEtXHUwMDNlbWVtLnR5cGUgPSBmcmFtZS1cdTAwM2VtZW1fdHlwZTtcbmRyaXZlcnMvbmV0L3ZldGguYzo2Nzk6XHRcdFx0aWYgKHhkcF9kb19yZWRpcmVjdChycS1cdTAwM2VkZXYsIHhkcCwgeGRwX3Byb2cpKSB7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjgwLVx0XHRcdFx0ZnJhbWUgPSBcdTAwMjZvcmlnX2ZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY4MS1cdFx0XHRcdHN0YXRzLVx1MDAzZXJ4X2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo2ODI6XHRcdFx0XHRnb3RvIGVycl94ZHA7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjgzLVx0XHRcdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo2ODQ6XHRcdFx0c3RhdHMtXHUwMDNleGRwX3JlZGlyZWN0JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYy02ODUtXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6Njg2Olx0XHRcdGdvdG8geGRwX3htaXQ7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjg3LVx0XHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvdmV0aC5jOjY4ODpcdFx0XHRicGZfd2Fybl9pbnZhbGlkX3hkcF9hY3Rpb24ocnEtXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcbmRyaXZlcnMvbmV0L3ZldGguYy02ODktXHRcdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjkwLVx0XHRjYXNlIFhEUF9BQk9SVEVEOlxuZHJpdmVycy9uZXQvdmV0aC5jOjY5MTpcdFx0XHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjkyLVx0XHRcdGZhbGx0aHJvdWdoO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY5My1cdFx0Y2FzZSBYRFBfRFJPUDpcbmRyaXZlcnMvbmV0L3ZldGguYzo2OTQ6XHRcdFx0c3RhdHMtXHUwMDNleGRwX2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo2OTU6XHRcdFx0Z290byBlcnJfeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY5Ni1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MDAtXHRyZXR1cm4gZnJhbWU7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzAxOmVycl94ZHA6XG5kcml2ZXJzL25ldC92ZXRoLmMtNzAyLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzAzOlx0eGRwX3JldHVybl9mcmFtZShmcmFtZSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzA0OnhkcF94bWl0OlxuZHJpdmVycy9uZXQvdmV0aC5jLTcwNS1cdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MDgtLyogZnJhbWVzIGFycmF5IGNvbnRhaW5zIFZFVEhfWERQX0JBVENIIGF0IG1vc3QgKi9cbmRyaXZlcnMvbmV0L3ZldGguYzo3MDk6c3RhdGljIHZvaWQgdmV0aF94ZHBfcmN2X2J1bGtfc2tiKHN0cnVjdCB2ZXRoX3JxICpycSwgdm9pZCAqKmZyYW1lcyxcbmRyaXZlcnMvbmV0L3ZldGguYzo3MTA6XHRcdFx0XHQgIGludCBuX3hkcGYsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXG5kcml2ZXJzL25ldC92ZXRoLmMtNzExLVx0XHRcdFx0ICBzdHJ1Y3QgdmV0aF9zdGF0cyAqc3RhdHMpXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTcxNS1cbmRyaXZlcnMvbmV0L3ZldGguYzo3MTY6XHRpZiAodW5saWtlbHkoIW5hcGlfc2tiX2NhY2hlX2dldF9idWxrKHNrYnMsIG5feGRwZikpKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzE3Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX3hkcGY7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvdmV0aC5jOjcxODpcdFx0XHR4ZHBfcmV0dXJuX2ZyYW1lKGZyYW1lc1tpXSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzE5Olx0XHRzdGF0cy1cdTAwM2VyeF9kcm9wcyAmIzQzOz0gbl94ZHBmO1xuZHJpdmVycy9uZXQvdmV0aC5jLTcyMC1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNzIzLVxuZHJpdmVycy9uZXQvdmV0aC5jOjcyNDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5feGRwZjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3ZldGguYy03MjUtXHRcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JzW2ldO1xuZHJpdmVycy9uZXQvdmV0aC5jLTcyNi1cbmRyaXZlcnMvbmV0L3ZldGguYzo3Mjc6XHRcdHNrYiA9IF9feGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKGZyYW1lc1tpXSwgc2tiLFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOC1cdFx0XHRcdFx0XHQgcnEtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3ZldGguYy03MjktXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzMwOlx0XHRcdHhkcF9yZXR1cm5fZnJhbWUoZnJhbWVzW2ldKTtcbmRyaXZlcnMvbmV0L3ZldGguYy03MzEtXHRcdFx0c3RhdHMtXHUwMDNlcnhfZHJvcHMmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MzMtXHRcdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo3MzQ6XHRcdG5hcGlfZ3JvX3JlY2VpdmUoXHUwMDI2cnEtXHUwMDNleGRwX25hcGksIHNrYik7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzM1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MzctXG5kcml2ZXJzL25ldC92ZXRoLmM6NzM4OnN0YXRpYyB2b2lkIHZldGhfeGRwX2dldChzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbmRyaXZlcnMvbmV0L3ZldGguYy03Mzkte1xuZHJpdmVycy9uZXQvdmV0aC5jOjc0MDpcdHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKnNpbmZvID0geGRwX2dldF9zaGFyZWRfaW5mb19mcm9tX2J1ZmYoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy03NDEtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3ZldGguYy03NDItXG5kcml2ZXJzL25ldC92ZXRoLmM6NzQzOlx0Z2V0X3BhZ2UodmlydF90b19wYWdlKHhkcC1cdTAwM2VkYXRhKSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzQ0Olx0aWYgKGxpa2VseSgheGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpKVxuZHJpdmVycy9uZXQvdmV0aC5jLTc0NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03NTAtXG5kcml2ZXJzL25ldC92ZXRoLmM6NzUxOnN0YXRpYyBpbnQgdmV0aF9jb252ZXJ0X3NrYl90b194ZHBfYnVmZihzdHJ1Y3QgdmV0aF9ycSAqcnEsXG5kcml2ZXJzL25ldC92ZXRoLmM6NzUyOlx0XHRcdFx0XHRzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L3ZldGguYy03NTMtXHRcdFx0XHRcdHN0cnVjdCBza19idWZmICoqcHNrYilcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNzY5LVx0ZnJhbWVfc3ogJiM0Mzs9IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzcwOlx0eGRwX2luaXRfYnVmZih4ZHAsIGZyYW1lX3N6LCBcdTAwMjZycS1cdTAwM2V4ZHBfcnhxKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzE6XHR4ZHBfcHJlcGFyZV9idWZmKHhkcCwgc2tiLVx1MDAzZWhlYWQsIHNrYl9oZWFkcm9vbShza2IpLFxuZHJpdmVycy9uZXQvdmV0aC5jLTc3Mi1cdFx0XHQgc2tiX2hlYWRsZW4oc2tiKSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTc3NC1cdGlmIChza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3MpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzU6XHRcdHNrYl9zaGluZm8oc2tiKS1cdTAwM2V4ZHBfZnJhZ3Nfc2l6ZSA9IHNrYi1cdTAwM2VkYXRhX2xlbjtcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzY6XHRcdHhkcF9idWZmX3NldF9mcmFnc19mbGFnKHhkcCk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzc3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo3Nzg6XHRcdHhkcF9idWZmX2NsZWFyX2ZyYWdzX2ZsYWcoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy03NzktXHR9XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTc4OS1cbmRyaXZlcnMvbmV0L3ZldGguYzo3OTA6c3RhdGljIHN0cnVjdCBza19idWZmICp2ZXRoX3hkcF9yY3Zfc2tiKHN0cnVjdCB2ZXRoX3JxICpycSxcbmRyaXZlcnMvbmV0L3ZldGguYy03OTEtXHRcdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC92ZXRoLmM6NzkyOlx0XHRcdFx0XHRzdHJ1Y3QgdmV0aF94ZHBfdHhfYnEgKmJxLFxuZHJpdmVycy9uZXQvdmV0aC5jLTc5My1cdFx0XHRcdFx0c3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03OTUtXHR2b2lkICpvcmlnX2RhdGEsICpvcmlnX2RhdGFfZW5kO1xuZHJpdmVycy9uZXQvdmV0aC5jOjc5NjpcdHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmM6Nzk3Olx0c3RydWN0IHZldGhfeGRwX2J1ZmYgdnhidWY7XG5kcml2ZXJzL25ldC92ZXRoLmM6Nzk4Olx0c3RydWN0IHhkcF9idWZmICp4ZHAgPSBcdTAwMjZ2eGJ1Zi54ZHA7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzk5LVx0dTMyIGFjdCwgbWV0YWxlbjtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODA0LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjgwNTpcdHhkcF9wcm9nID0gcmN1X2RlcmVmZXJlbmNlKHJxLVx1MDAzZXhkcF9wcm9nKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4MDY6XHRpZiAodW5saWtlbHkoIXhkcF9wcm9nKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTgwNy1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTgxMS1cdF9fc2tiX3B1c2goc2tiLCBza2ItXHUwMDNlZGF0YSAtIHNrYl9tYWNfaGVhZGVyKHNrYikpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjgxMjpcdGlmICh2ZXRoX2NvbnZlcnRfc2tiX3RvX3hkcF9idWZmKHJxLCB4ZHAsIFx1MDAyNnNrYikpXG5kcml2ZXJzL25ldC92ZXRoLmMtODEzLVx0XHRnb3RvIGRyb3A7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTgxNS1cbmRyaXZlcnMvbmV0L3ZldGguYzo4MTY6XHRvcmlnX2RhdGEgPSB4ZHAtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4MTc6XHRvcmlnX2RhdGFfZW5kID0geGRwLVx1MDAzZWRhdGFfZW5kO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgxOC1cbmRyaXZlcnMvbmV0L3ZldGguYzo4MTk6XHRhY3QgPSBicGZfcHJvZ19ydW5feGRwKHhkcF9wcm9nLCB4ZHApO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgyMC1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODI0LVx0Y2FzZSBYRFBfVFg6XG5kcml2ZXJzL25ldC92ZXRoLmM6ODI1Olx0XHR2ZXRoX3hkcF9nZXQoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy04MjYtXHRcdGNvbnN1bWVfc2tiKHNrYik7XG5kcml2ZXJzL25ldC92ZXRoLmM6ODI3Olx0XHR4ZHAtXHUwMDNlcnhxLVx1MDAzZW1lbSA9IHJxLVx1MDAzZXhkcF9tZW07XG5kcml2ZXJzL25ldC92ZXRoLmM6ODI4Olx0XHRpZiAodW5saWtlbHkodmV0aF94ZHBfdHgocnEsIHhkcCwgYnEpIFx1MDAzYyAwKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jOjgyOTpcdFx0XHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XG5kcml2ZXJzL25ldC92ZXRoLmMtODMwLVx0XHRcdHN0YXRzLVx1MDAzZXJ4X2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo4MzE6XHRcdFx0Z290byBlcnJfeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgzMi1cdFx0fVxuZHJpdmVycy9uZXQvdmV0aC5jOjgzMzpcdFx0c3RhdHMtXHUwMDNleGRwX3R4JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYy04MzQtXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjgzNTpcdFx0Z290byB4ZHBfeG1pdDtcbmRyaXZlcnMvbmV0L3ZldGguYy04MzYtXHRjYXNlIFhEUF9SRURJUkVDVDpcbmRyaXZlcnMvbmV0L3ZldGguYzo4Mzc6XHRcdHZldGhfeGRwX2dldCh4ZHApO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgzOC1cdFx0Y29uc3VtZV9za2Ioc2tiKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4Mzk6XHRcdHhkcC1cdTAwM2VyeHEtXHUwMDNlbWVtID0gcnEtXHUwMDNleGRwX21lbTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDA6XHRcdGlmICh4ZHBfZG9fcmVkaXJlY3QocnEtXHUwMDNlZGV2LCB4ZHAsIHhkcF9wcm9nKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTg0MS1cdFx0XHRzdGF0cy1cdTAwM2VyeF9kcm9wcyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmM6ODQyOlx0XHRcdGdvdG8gZXJyX3hkcDtcbmRyaXZlcnMvbmV0L3ZldGguYy04NDMtXHRcdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo4NDQ6XHRcdHN0YXRzLVx1MDAzZXhkcF9yZWRpcmVjdCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmMtODQ1LVx0XHRyY3VfcmVhZF91bmxvY2soKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDY6XHRcdGdvdG8geGRwX3htaXQ7XG5kcml2ZXJzL25ldC92ZXRoLmMtODQ3LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDg6XHRcdGJwZl93YXJuX2ludmFsaWRfeGRwX2FjdGlvbihycS1cdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTg0OS1cdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC92ZXRoLmMtODUwLVx0Y2FzZSBYRFBfQUJPUlRFRDpcbmRyaXZlcnMvbmV0L3ZldGguYzo4NTE6XHRcdHRyYWNlX3hkcF9leGNlcHRpb24ocnEtXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcbmRyaXZlcnMvbmV0L3ZldGguYy04NTItXHRcdGZhbGx0aHJvdWdoO1xuZHJpdmVycy9uZXQvdmV0aC5jLTg1My1cdGNhc2UgWERQX0RST1A6XG5kcml2ZXJzL25ldC92ZXRoLmM6ODU0Olx0XHRzdGF0cy1cdTAwM2V4ZHBfZHJvcHMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdmV0aC5jOjg1NTpcdFx0Z290byB4ZHBfZHJvcDtcbmRyaXZlcnMvbmV0L3ZldGguYy04NTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTg1OC1cbmRyaXZlcnMvbmV0L3ZldGguYzo4NTk6XHQvKiBjaGVjayBpZiBicGZfeGRwX2FkanVzdF9oZWFkIHdhcyB1c2VkICovXG5kcml2ZXJzL25ldC92ZXRoLmM6ODYwOlx0b2ZmID0gb3JpZ19kYXRhIC0geGRwLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC92ZXRoLmMtODYxLVx0aWYgKG9mZiBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODY4LVx0LyogWERQIGZyYWcgbWV0YWRhdGEgKGUuZy4gbnJfZnJhZ3MpIGFyZSB1cGRhdGVkIGluIGVCUEYgaGVscGVyc1xuZHJpdmVycy9uZXQvdmV0aC5jOjg2OTpcdCAqIChlLmcuIGJwZl94ZHBfYWRqdXN0X3RhaWwpLiBSZW1vdmUgdGhlIG9sZCBmcmFnbWVudCBjb250cmlidXRpb25cbmRyaXZlcnMvbmV0L3ZldGguYy04NzAtXHQgKiBmcm9tIHNrYi1cdTAwM2VsZW4gYmVmb3JlIHVwZGF0aW5nIGRhdGFfbGVuLCB0aGVuIGFkZCB0aGUgbmV3IG9uZSBiYWNrLlxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy04NzItXHRza2ItXHUwMDNlbGVuIC09IHNrYi1cdTAwM2VkYXRhX2xlbjtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NzM6XHRpZiAoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NzQ6XHRcdHNrYi1cdTAwM2VkYXRhX2xlbiA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2V4ZHBfZnJhZ3Nfc2l6ZTtcbmRyaXZlcnMvbmV0L3ZldGguYy04NzUtXHRcdHNrYi1cdTAwM2VsZW4gJiM0Mzs9IHNrYi1cdTAwM2VkYXRhX2xlbjtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODgwLVx0LyogU3luY2hyb25pemUgdGhlIHNrYiB0YWlsIHdpdGggWERQJiMzOTtzIHVwZGF0ZWQgbGluZWFyIGFyZWEuICovXG5kcml2ZXJzL25ldC92ZXRoLmM6ODgxOlx0b2ZmID0geGRwLVx1MDAzZWRhdGFfZW5kIC0gb3JpZ19kYXRhX2VuZDtcbmRyaXZlcnMvbmV0L3ZldGguYy04ODItXHRpZiAob2ZmICE9IDApIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo4ODM6XHRcdHNrYl9zZXRfdGFpbF9wb2ludGVyKHNrYiwgeGRwLVx1MDAzZWRhdGFfZW5kIC0geGRwLVx1MDAzZWRhdGEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTg4NC1cdFx0c2tiLVx1MDAzZWxlbiAmIzQzOz0gb2ZmOyAvKiBwb3NpdGl2ZSBvbiBncm93LCBuZWdhdGl2ZSBvbiBzaHJpbmsgKi9cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODg4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjg4OTpcdG1ldGFsZW4gPSB4ZHAtXHUwMDNlZGF0YSAtIHhkcC1cdTAwM2VkYXRhX21ldGE7XG5kcml2ZXJzL25ldC92ZXRoLmMtODkwLVx0aWYgKG1ldGFsZW4pXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTg5NS1cdHN0YXRzLVx1MDAzZXJ4X2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo4OTY6eGRwX2Ryb3A6XG5kcml2ZXJzL25ldC92ZXRoLmMtODk3LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTg5OS1cdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkwMDplcnJfeGRwOlxuZHJpdmVycy9uZXQvdmV0aC5jLTkwMS1cdHJjdV9yZWFkX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkwMjpcdHhkcF9yZXR1cm5fYnVmZih4ZHApO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkwMzp4ZHBfeG1pdDpcbmRyaXZlcnMvbmV0L3ZldGguYy05MDQtXHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtOTA2LVxuZHJpdmVycy9uZXQvdmV0aC5jOjkwNzpzdGF0aWMgaW50IHZldGhfeGRwX3JjdihzdHJ1Y3QgdmV0aF9ycSAqcnEsIGludCBidWRnZXQsXG5kcml2ZXJzL25ldC92ZXRoLmM6OTA4Olx0XHRcdHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXG5kcml2ZXJzL25ldC92ZXRoLmMtOTA5LVx0XHRcdHN0cnVjdCB2ZXRoX3N0YXRzICpzdGF0cylcbmRyaXZlcnMvbmV0L3ZldGguYy05MTAte1xuZHJpdmVycy9uZXQvdmV0aC5jOjkxMTpcdGludCBpLCBkb25lID0gMCwgbl94ZHBmID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTI6XHR2b2lkICp4ZHBmW1ZFVEhfWERQX0JBVENIXTtcbmRyaXZlcnMvbmV0L3ZldGguYy05MTMtXG5kcml2ZXJzL25ldC92ZXRoLmMtOTE0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnVkZ2V0OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdmV0aC5jOjkxNTpcdFx0dm9pZCAqcHRyID0gX19wdHJfcmluZ19jb25zdW1lKFx1MDAyNnJxLVx1MDAzZXhkcF9yaW5nKTtcbmRyaXZlcnMvbmV0L3ZldGguYy05MTYtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTkxOS1cbmRyaXZlcnMvbmV0L3ZldGguYzo5MjA6XHRcdGlmICh2ZXRoX2lzX3hkcF9mcmFtZShwdHIpKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6OTIxOlx0XHRcdC8qIG5kb194ZHBfeG1pdCAqL1xuZHJpdmVycy9uZXQvdmV0aC5jOjkyMjpcdFx0XHRzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSA9IHZldGhfcHRyX3RvX3hkcChwdHIpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTkyMy1cbmRyaXZlcnMvbmV0L3ZldGguYzo5MjQ6XHRcdFx0c3RhdHMtXHUwMDNleGRwX2J5dGVzICYjNDM7PSB4ZHBfZ2V0X2ZyYW1lX2xlbihmcmFtZSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6OTI1Olx0XHRcdGZyYW1lID0gdmV0aF94ZHBfcmN2X29uZShycSwgZnJhbWUsIGJxLCBzdGF0cyk7XG5kcml2ZXJzL25ldC92ZXRoLmMtOTI2LVx0XHRcdGlmIChmcmFtZSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTkyNy1cdFx0XHRcdC8qIFhEUF9QQVNTICovXG5kcml2ZXJzL25ldC92ZXRoLmM6OTI4Olx0XHRcdFx0eGRwZltuX3hkcGYmIzQzOyYjNDM7XSA9IGZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkyOTpcdFx0XHRcdGlmIChuX3hkcGYgPT0gVkVUSF9YRFBfQkFUQ0gpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo5MzA6XHRcdFx0XHRcdHZldGhfeGRwX3Jjdl9idWxrX3NrYihycSwgeGRwZiwgbl94ZHBmLFxuZHJpdmVycy9uZXQvdmV0aC5jLTkzMS1cdFx0XHRcdFx0XHRcdCAgICAgIGJxLCBzdGF0cyk7XG5kcml2ZXJzL25ldC92ZXRoLmM6OTMyOlx0XHRcdFx0XHRuX3hkcGYgPSAwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTkzMy1cdFx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtOTM4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjkzOTpcdFx0XHRzdGF0cy1cdTAwM2V4ZHBfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC92ZXRoLmM6OTQwOlx0XHRcdHNrYiA9IHZldGhfeGRwX3Jjdl9za2IocnEsIHNrYiwgYnEsIHN0YXRzKTtcbmRyaXZlcnMvbmV0L3ZldGguYy05NDEtXHRcdFx0aWYgKHNrYikge1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy05NDQtXHRcdFx0XHRlbHNlXG5kcml2ZXJzL25ldC92ZXRoLmM6OTQ1Olx0XHRcdFx0XHRuYXBpX2dyb19yZWNlaXZlKFx1MDAyNnJxLVx1MDAzZXhkcF9uYXBpLCBza2IpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTk0Ni1cdFx0XHR9XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyODcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQUZfWERQIFplcm8tQ29weSBJbXBhY3QqKgoKT2theSwgc28gdGhlIGB2ZXRoYCBpbnRlcmZhY2UsIHdoaWxlIFhEUC1jYXBhYmxlLCBkb2VzbiYjMzk7dCB1dGlsaXplIHRoZSBgeHNrX2J1ZmZfcG9vbGAsIGluc3RlYWQgcmVseWluZyBvbiBgeGRwX2ZyYW1lYCBhbmQgYHhkcF9idWZmYC4gVGhhdCBtZWFucyB0aGUgcmVjZW50IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGNoYW5nZSB3b24mIzM5O3QgYWZmZWN0IGl0LiBHb29kLgoKTGV0JiMzOTtzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIG90aGVyIGNhbmRpZGF0ZXM6IGBtYWN2bGFuYD8gTm9wZS4gWmVyby1jb3B5IEFGX1hEUCBpcyBhIG5vLWdvIHRoZXJlLiBgdmlydGlvX25ldGA/IFN0aWxsIG5vLiBgdHVuYC9gdGFwYD8gTmVnYXRpdmUuCgpTbywgaXQgbG9va3MgbGlrZSwgYXQgbGVhc3QgaW5pdGlhbGx5LCB0aGUgb25seSBkcml2ZXJzIHRoYXQgKmRvKiBzdXBwb3J0IHRoaXMgemVyby1jb3B5IEFGX1hEUCBtZWNoYW5pc20gYXJlIHBoeXNpY2FsIE5JQ3MgYW5kIGEgZmV3IHNwZWNpYWxpemVkIHZpcnR1YWwgb25lczogYHRzbmVwYCAoRlBHQSBlbmRwb2ludCkgYW5kIGBndmVgLCB0aGUgR29vZ2xlIFZpcnR1YWwgTklDLiBIYW5nIG9u4oCmIGBndmVg4oCmIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuCgpDYW4gSSBldmVuIHJlYWNoIGBndmVgIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFByb2JhYmx5IG5vdCBuYXRpdmVseS4gSG93ZXZlciwgc3l6a2FsbGVyICptaWdodCogYmUgcnVubmluZyBvbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHdoZXJlIGBndmVgIGlzIHRoZSBhY3R1YWwgbmV0d29yayBpbnRlcmZhY2UhIEJ1dCwgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIHRlc3RzICppbnNpZGUqIGEgVk0uIElmIHRoZSBWTSBpcyBvbiBHQ0UsIGl0IGNvdWxkIHRoZW9yZXRpY2FsbHkgaGF2ZSBhIGBndmVgIGludGVyZmFjZSwgYnV0IHN5emthbGxlciB1c3VhbGx5IGlzb2xhdGVzIHdpdGggbmVzdGVkIFZNcyAoUUVNVSkgb3IgbmV0d29yayBuYW1lc3BhY2VzIHdpdGggYHZldGhgIG9yIGB0dW5gIGRldmljZXMuIEl0JiMzOTtzIG5vdCB1c3VhbGx5IGZ1enppbmcgdGhlIGhvc3QmIzM5O3MgYGd2ZWAgZGV2aWNlIGRpcmVjdGx5IGJlY2F1c2UgdGhhdCB3b3VsZCB0ZWFyIGRvd24gdGhlIG5ldHdvcmsgY29ubmVjdGlvbiB0byB0aGUgVk0uCgpFdmVuIGlmIGl0IGRpZCwgdGhlIGNydWNpYWwgcG9pbnQgaXM6IGRvZXMgYGd2ZWAgKnVzZSogYHhza19idWZmX2dldF9tZXRhZGF0YWA/IFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIERlcGVuZGVuY3kgVXNhZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgdGhlIGBndmVgIGxpYnJhcnkgbm90IHV0aWxpemluZyB0aGUgZGVwZW5kZW5jeSBpbiBxdWVzdGlvbiwgYnV0IGl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gQmVmb3JlIEkgbW92ZSBvbiB3aXRoIG15IG93biB3b3JrLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3MgKm5vdCogYSBmYWN0b3IgaW4gYGd2ZWAmIzM5O3Mgb3BlcmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY29kZS4KCk5vdywgaWYgYGd2ZWAgZG9lc24mIzM5O3QgdXNlIGl0LCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdHNuZXBgLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoYXQgbGlicmFyeSwgd2hpY2ggaXMgcmVsYXRlZCBpbiBmdW5jdGlvbmFsaXR5LCBhY3R1YWxseSBkZXBlbmRzIG9uIGl0LiBBIHF1aWNrIHNlYXJjaCB0aHJvdWdoIHRoZSBgdHNuZXBgIGNvZGViYXNlIGlzIGluIG9yZGVyLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8ga25vdyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGFsbCB0aGVzZSB0b29scy4gSWYgZWl0aGVyIG9mIHRob3NlIHBhY2thZ2VzIHVzZSBpdCwgdGhhdCB3aWxsIGRyYXN0aWNhbGx5IGNoYW5nZSB3aGF0IGlzIG5lY2Vzc2FyeSBpbiBteSBjdXJyZW50IGRldmVsb3BtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMzY5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIExhbmRzY2FwZSoqCgpOb3BlLiBOb3QgaGFwcGVuaW5nLiBNeSBndXQgcmVhY3Rpb24gaXMgYSBoYXJkICYjMzQ7bm8mIzM0OyBvbiB0aGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgZGlzbWlzc2luZyB0aGlzIHBvaW50IHRob3VnaC4gTGV0JiMzOTtzIG5vdCBqdXN0IGlnbm9yZSB0aGlzLCBsZXQmIzM5O3MgZ28gZGVlcGVyIGFuZCBjaGVjayBpZiB0aGlzIGFjdHVhbGx5IGlzIGJlaW5nIHVzZWQgYnkgdGhlIGBkcGFhMmAgc3lzdGVtLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjUzOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIGRpcmVjdCB0aG91Z2h0IHByb2Nlc3M6CgoqKk5vLiBMZXQmIzM5O3MgVmVyaWZ5IFRoaXMgQ2xhaW0uKioKCkFscmlnaHQsIHRoYXQmIzM5O3MgYSBmbGF0ICYjMzQ7bm8uJiMzNDsgQnV0LCBsZXQmIzM5O3Mgbm90IGp1c3QgdGFrZSB0aGF0IGFzIHRoZSBmaW5hbCBhbnN3ZXIsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggW2ltcGxpZWQgZmllbGQgLSB1c2VyJiMzOTtzIGFyZWEgb2YgZXhwZXJ0aXNlLCBlLmcuLCBjb21wbGV4IHN5c3RlbXMsIGRhdGEgYW5hbHlzaXMsIHRoZW9yZXRpY2FsIHBoeXNpY3NdLiBNeSBndXQgc2F5cyAmIzM0O25vLCYjMzQ7IGJ1dCBndXQgZmVlbGluZ3MgYXJlbiYjMzk7dCBlbm91Z2guIEkgbmVlZCB0byBiZSAqc3VyZSouIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgdGhpcyBpcyBiZWluZyBpbXBsZW1lbnRlZCBhbnl3aGVyZSwgZXZlbiBpbiBhIHNtYWxsIHdheS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgaWYgYGZlY2AgaXMgdXRpbGl6aW5nIHdoYXRldmVyIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgY29kZWJhc2Ugb3IgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiB0aGF0IHdvdWxkIHByb3ZpZGUgYW4gYW5zd2VyIGhlcmU/IFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IHNlYXJjaC4gQSBxdWljayBjaGVjayBvZiBgZmVjYCB3aWxsIGVpdGhlciBjb25maXJtIHRoaXMgbmVnYXRpdmUgb3IgZ2l2ZSBtZSBhbiBpbW1lZGlhdGUganVtcGluZy1vZmYgcG9pbnQgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI4MDIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEFCSSBNaXNtYXRjaCBpbiBYRFAgYW5kIEFGX1hEUCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgY29kZSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyByZWNlbnQgY2hhbmdlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYCAodGhyb3VnaCBgbGliZXRoYCkgYXJlIHRoZSBvbmx5IGRyaXZlcnMgdGhhdCB1c2UgdGhvc2UgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMuIEJ1dCwgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBmdXp6IHRob3NlIGluIGEgd2F5IHRoYXQgd291bGQgaGl0IHRoaXMgcGFydGljdWxhciBhcmVhIGJlY2F1c2UgaXQgcHJlZmVycyB0aGluZ3MgbGlrZSBgdmV0aGAsIGB0dW5gLCBgbWFjdmxhbmAsIGB2Y2FuYCwgYW5kIGB2eGxhbmAuCgpUaGVuLCB3YWl0IGEgbWludXRlLCB0aGVyZSYjMzk7cyB0aGF0IFVBUEkgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBzcGVjaWZpY2FsbHkgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gTXkgY29uY2VybiBub3cgY2VudGVycyBhcm91bmQgYG5ldC94ZHAveHNrLmNgLCB0aGUgY29yZSBBRl9YRFAgc29ja2V0IGltcGxlbWVudGF0aW9uLgoKQSB1c2VyIGNhbiBzZXQgYHR4X21ldGFkYXRhX2xlbmAgaW4gYHN0cnVjdCB4ZHBfdW1lbV9yZWdgIHdoZW4gY3JlYXRpbmcgYW4gQUZfWERQIHNvY2tldC4gIFRoZW4sIGluIGB4c2tfc2tiX21ldGFkYXRhYCBpdCBjYWxscyBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLiAgVGhlIGNydWNpYWwgY2hlY2sgaGVyZSB1c2VzIGBvZmZzZXRvZmVuZGAgdG8gZGV0ZXJtaW5lIGlmIGVub3VnaCBzcGFjZSBpcyBhdmFpbGFibGUuIEEgMzItYml0IHVzZXJzcGFjZSBwcm9ncmFtIGNvbXBpbGVkIHdpdGggdGhlICpvbGQqIGhlYWRlciB3b3VsZCBzZXQgYHR4X21ldGFkYXRhX2xlbmAgdG8gMjAsIGJ1dCB0aGUgKm5ldyogaGVhZGVyIG1ha2VzIGBvZmZzZXRvZmVuZGAgZXF1YWwgMjQuIENvbnNlcXVlbnRseSwgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCB3aWxsIHJldHVybiBgZmFsc2VgLCB3aGljaCBsZWFkcyB0byBhbiBgLUVJTlZBTGAgZnJvbSBgeHNrX3NrYl9tZXRhZGF0YWAuCgpTbywgdGhlIHBhdGNoIGlzIGZpeGluZyBhIDMyLWJpdC82NC1iaXQgQUJJIG1pc21hdGNoLCBidXQgaXQgYWxzbyBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgYW55IDMyLWJpdCBwcm9ncmFtcyB1c2luZyB0aGUgb2xkIHN0cnVjdCBzaXplLiBUaGlzIGlzIGltcG9ydGFudCB0byByZW1lbWJlciBiZWNhdXNlIHN1Y2ggYSBjaGFuZ2UgY2FuIGJyZWFrIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2UsIGlmIGl0IGlzIG5vdCwgdGhpcyBtYXkgbm90IGJlIGEgdmFsaWQgY29uY2Vybi4gQUZfWERQIHNvY2tldHMgKGBBRl9YRFBgKSAqY2FuKiBiZSBjcmVhdGVkIG9uIGFueSBuZXR3b3JrIGludGVyZmFjZSwgaW5jbHVkaW5nIGB2ZXRoYC4gT2theSwgYHZldGhgIGNvdWxkIGJlIHVzZWQuIFdhaXQuLi4gZG9lcyBgdmV0aGAgZXZlbiBzdXBwb3J0IGBYRFBfVFhfTUVUQURBVEFgPyBUaGlzIG5lZWRzIHZlcmlmaWNhdGlvbi4KCk9rYXksIGxldCYjMzk7cyBzZWUuIExvb2tpbmcgYXQgYG5ldC94ZHAveHNrLmNgLCBgeHNrX2J1aWxkX3NrYmAgYW5kIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCBjaGVjayBgZGVzYy0mZ3Q7b3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cyB2aWEgQUZfWERQIHNvY2tldHMuIElmIHRoZSBzb2NrZXQgaXMgYm91bmQgdG8gYHZldGhgLCBpdCYjMzk7bGwgdXNlIGB4c2tfYnVpbGRfc2tiYCBzaW5jZSBgdmV0aGAgZG9lcyBub3Qgc3VwcG9ydCB6ZXJvLWNvcHkgQUZfWERQLiBJIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWlsZF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4tLVxubmV0L3hkcC94c2suYy0xMDA4LVxubmV0L3hkcC94c2suYzoxMDA5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxubmV0L3hkcC94c2suYy0xMDEwLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy0xMDg0LVxubmV0L3hkcC94c2suYzoxMDg1OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxubmV0L3hkcC94c2suYy0xMDg2LVx0XHRcdFx0ICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy0xMDkyLVx0aWYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfVFhfU0tCX05PX0xJTkVBUikge1xubmV0L3hkcC94c2suYzoxMDkzOlx0XHRza2IgPSB4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHhzLCBkZXNjKTtcbm5ldC94ZHAveHNrLmMtMTA5NC1cdFx0aWYgKElTX0VSUihza2IpKSB7XG4tLVxubmV0L3hkcC94c2suYz0xMTkxPXN0YXRpYyBpbnQgX194c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGRwL3hzay5jLTEyMzctXG5uZXQveGRwL3hzay5jOjEyMzg6XHRcdHNrYiA9IHhza19idWlsZF9za2IoeHMsIFx1MDAyNmRlc2MpO1xubmV0L3hkcC94c2suYy0xMjM5LVx0XHRpZiAoSVNfRVJSKHNrYikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2NjgKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMzE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBYRFAgWmVyby1Db3B5IFRYIE1ldGFkYXRhIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgZm9jdXNlZCBvbiBlbmhhbmNpbmcgWERQIHplcm8tY29weSB0cmFuc21pc3Npb24sIHBhcnRpY3VsYXJseSB0aGUgbWV0YWRhdGEgaGFuZGxpbmcuIEluaXRpYWxseSwgSSBzYXcgdGhhdCBgX194c2tfZ2VuZXJpY194bWl0YCBpcyB0aGUga2V5LCBjYWxsaW5nIGB4c2tfYnVpbGRfc2tiYCwgYW5kIGNydWNpYWxseSwgYHhza19za2JfbWV0YWRhdGFgLCB3aGljaCBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBldmVuIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGlzIHRoZW4gZ29lcyB0byBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLiAgTXkgbWFpbiBxdWVzdGlvbiBpcyB3aGV0aGVyIGFueSBvZiB0aGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKSSBzZWUgYSBtb2RpZmljYXRpb24gdG8gdGhlIGB4c2tfdHhfbWV0YWRhdGFgIHN0cnVjdCBhbmQsIGNvbnNlcXVlbnRseSwgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCB3aXRoaW4gYG5ldC94ZHAveHNrLmNgICh0aHJvdWdoIGlubGluZSkuIFRoaXMgYWZmZWN0cyB0aGUgYHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbmAgcmVxdWlyZW1lbnQgLSBub3cgMjQgYnl0ZXMgbWluaW11bSBpbnN0ZWFkIG9mIDIwIG9uIDMyLWJpdCBzeXN0ZW1zLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHN0cnVjdCBsYXlvdXQgY2hhbmdlIGlzIGEgbWVhbmluZ2Z1bCBlbm91Z2ggZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYmUgd29ydGggZnV6emluZy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IGFmZmVjdHMgZXhlY3V0aW9uIGZsb3cgb3IgaXMganVzdCBhIHN0cnVjdHVyYWwgYWRqdXN0bWVudC4gTXkgaW5jbGluYXRpb24gaXMgdGhhdCBpdOKAmXMgbW9yZSBvZiB0aGUgbGF0dGVyLCBidXQgSSBuZWVkIHRvIGJlIHByZWNpc2UuCgpJIGFsc28gbm90aWNlIHRoYXQgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBoYXMgY2hhbmdlZCBpbiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBidXQgaXQgaXMgb25seSBjYWxsZWQgYnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyAtIGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLiAgVGhlc2UgYXJlIG5vdCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwIHdoaWNoIGlzIHdoYXQgc3l6a2FsbGVyIGlzIHVzZWQgd2l0aC4gU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgaXMgYSBub24taXNzdWUgZnJvbSBteSBwZXJzcGVjdGl2ZS4gIFRoZSBzdG1tYWMgY2hhbmdlcyBhcmUgYWxzbyBub3QgcmVsZXZhbnQuCgpUaGUgY29yZSBsb2dpYyBjaGFuZ2UgbG9va3MgbGlrZSBpdCBpcyB0byBtYWtlIHRoZSBgb3B0aW9uc2AgYXJndW1lbnQgYmUgcGFzc2VkIHRvIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBpbmNsdWRlcyBhIGNoZWNrIGZvciBgb3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgdGhlIHVzYWdlIG9mIGludmFsaWQgbWV0YWRhdGEgaWYgdGhlIG9wdGlvbiBpc24mIzM5O3Qgc2V0LiAgVGhpcyBhZmZlY3RzIHRoZSB6ZXJvLWNvcHkgVFggcGF0aCBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBub25lIG9mIHdoaWNoIGFyZSByZWFjaGFibGUgZm9yIGZ1enppbmcuCgpOb3csIHRoYXQgc3RydWN0IGxheW91dCBjaGFuZ2UsIHRoZSBvbmx5IHJlYWNoYWJsZSBhbHRlcmF0aW9uLCBvbmx5IGNoYW5nZXMgYSBudW1lcmljIGNvbnN0YW50IHVzZWQgaW4gYSBzaXplIGNoZWNrLiBJZiB0aGUgbGVuZ3RoIGlzIGxlc3MgdGhhbiAyNCwgd2UgcmV0dXJuIGAtRUlOVkFMYCwgYW5kIHRoZSBwYWNrZXQgaXMgZHJvcHBlZC4gSXQgaXMgYSBib3VuZCBjaGVjaywgbm90IGxvZ2ljIGNoYW5nZS4gSXMgdGhpcyBhIG5ldyBzdGF0ZSBtYWNoaW5lIG9yIGNvbXBsZXggbG9naWMgdG8gZnV6ej8gTm8sIEkgd291bGRu4oCZdCBjb25zaWRlciB0aGlzIHNpZ25pZmljYW50LiBJdOKAmXMganVzdCB0aGUgYWRkaXRpb24gb2YgcGFkZGluZy4gTXkgcHJldmlvdXMgZXhwZXJpZW5jZSBpbmRpY2F0ZXMgdGhlc2Ugc3RydWN0IHBhZGRpbmcgZml4ZXMgYXJlbuKAmXQgZ2VuZXJhbGx5IGEgZnV6emluZyB0YXJnZXQgYmVjYXVzZSB0aGV5JiMzOTtyZSBlc3NlbnRpYWxseSBqdXN0IGNvbnN0YW50IHVwZGF0ZXMuCgpOb3csIGxldCYjMzk7cyByZXZpc2l0IGBzdG1tYWNgIGFnYWluLiBJIGtub3cgUUVNVSB1c2VzIGBkZXNpZ253YXJlYCwgYnV0IGlzIGl0IHRoZSBzYW1lPyBUdXJucyBvdXQgdGhlIGRyaXZlciBpcyB0aGUgRGVzaWduV2FyZSBNQUMuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGF0IGhhcmR3YXJlIGlzIGFjY2Vzc2libGUsIGFuZCBhbHNvIGlmIHplcm8tY29weSBpcyBzdXBwb3J0ZWQuIEl04oCZcyBhIFN5c0J1cyBkZXZpY2UsIHdoaWNoIGRvZXNuJiMzOTt0IGZpdCB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24uCgpBZnRlciBsb29raW5nIGF0IHRoZSBsb2NhdGlvbnMgZm9yIHRoZSBtZXRhZGF0YToKMS4gYGlnY19tYWluLmNgOiBgbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLCB4ZHBfZGVzYy5vcHRpb25zKTtgCjIuIGBtbHg1L2NvcmUvZW4veHNrL3R4LmNgOiBgbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7YAozLiBgc3RtbWFjX21haW4uY2A6IGBtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsIHhkcF9kZXNjLm9wdGlvbnMpO2AgYW5kIHJlbW92ZWQgYG1heF9zZHVgIGNoZWNrLgo0LiBgaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oYDogYGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLSZndDtwb29sLCB4ZGVzYy0mZ3Q7YWRkciwgeGRlc2MtJmd0O29wdGlvbnMpO2AKNS4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYDogQWRkZWQgYG9wdGlvbnNgIGFyZ3VtZW50IHRvIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAsIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAsIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLiBBZGRlZCBgb3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgIGNoZWNrLgo2LiBgaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oYDogQWRkZWQgYG9wdGlvbnNgIGFyZ3VtZW50IHRvIGB4cF9yYXdfZ2V0X2N0eGAuCjcuIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgOiBBZGRlZCBgX191MzIgcmVzZXJ2ZWQ7YCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAuCjguIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2A6IEFkZGVkIGBvcHRpb25zYCBhcmd1bWVudCB0byBgeHBfcmF3X2dldF9jdHhgLgo5LiBgdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmXwoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgemVyby1jb3B5IFRYIG1ldGFkYXRhIHBhdGggdG8gY2hlY2sgdGhlIFhEUF9UWF9NRVRBREFUQSBvcHRpb24gYmVmb3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhpcyBsb2dpYyBpcyBvbmx5IGltcGxlbWVudGVkIGFuZCByZWFjaGFibGUgaW4gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyAoaWdjLCBtbHg1LCBzdG1tYWMsIGlkcGYpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIHBhdGNoIGFsc28gYWRkcyBhIHJlc2VydmVkIHBhZGRpbmcgZmllbGQgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGluIHRoZSBVQVBJLCB3aGljaCBvbmx5IGFsdGVycyBhIG51bWVyaWMgY29uc3RhbnQgKHN0cnVjdCBzaXplKSB1c2VkIGluIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBnZW5lcmljIFhEUCBUWCBwYXRoLCB3aXRob3V0IGludHJvZHVjaW5nIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MTk6MDYuMjU2NjQ3NjU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTMwNjQ0MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjA2LjI1NjY1Mzk5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5NzY0Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmNhYjE0OTk3ZjJkYzhlZjRmY2MzMTE3YWViYTNlNGZiNmFiMjE3MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMDoxOTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXFxuaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXFxuQEAgLTMwNzQsNyArMzA3NCw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuIFxcdFxcdG9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gXFx1MDAzY1xcdTAwM2MgSUdDX0FEVlRYRF9QQVlMRU5fU0hJRlQ7XFxuIFxcbiBcXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4tXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4rXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbiBcXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XFxuIFxcdFxcdGJpID0gXFx1MDAyNnJpbmctXFx1MDAzZXR4X2J1ZmZlcl9pbmZvW250dV07XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcXG5pbmRleCAzZDE5ZGFkOGY4Njg4Li5kMTk0ZWVkZGQ3YjU1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xcbkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXFxuIFxcdFxcdHhkcHR4ZC5kbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIGRlc2MuYWRkcik7XFxuIFxcdFxcdHhkcHR4ZC5kYXRhID0geHNrX2J1ZmZfcmF3X2dldF9kYXRhKHBvb2wsIGRlc2MuYWRkcik7XFxuIFxcdFxcdHhkcHR4ZC5sZW4gPSBkZXNjLmxlbjtcXG4tXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xcbitcXHRcXHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtcXG4gXFxuIFxcdFxcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjRhODJmNDM1MTMwM2EgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMjcxMCwxNiArMjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuIFxcdFxcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcXHUwMDI2eGRwX2Rlc2MpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuLVxcdFxcdGlmIChwcml2LVxcdTAwM2Vlc3QgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VlbmFibGUgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHhkcF9kZXNjLmxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0pIHtcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdKys7XFxuLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHR9XFxuLVxcbiBcXHRcXHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcXG4gXFx0XFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4tXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4rXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbiBcXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTtcXG4gXFxuIFxcdFxcdC8qIFRvIHJldHVybiBYRFAgYnVmZmVyIHRvIFhTSyBwb29sLCB3ZSBzaW1wbGUgY2FsbFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmggYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcXG5pbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxcbisrKyBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxcbkBAIC0xOTYsNyArMTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG4gXFx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xcbiBcXHRzdHJ1Y3QgeGRwX2Rlc2NfY3R4IGN0eDtcXG4gXFxuLVxcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkcik7XFxuK1xcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkciwgeGRlc2MtXFx1MDAzZW9wdGlvbnMpO1xcbiBcXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XFxuIFxcdFxcdC5hZGRyXFx0PSBjdHguZG1hLFxcbiBcXHRcXHRfX2xpYmV0aF94ZHBfdHhfbGVuKHhkZXNjLVxcdTAwM2VsZW4pLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuaW5kZXggYjM0NDc4OWY1ZGY4My4uZDk0YWViNTA2Mzc5YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxcbisrKyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuQEAgLTI0MCw2ICsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0IFxcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXFxuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxcbisgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSlcXG4gICpcXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcXG4gICogZGV0YWlscy5cXG5AQCAtMjQ4LDkgKzI0OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuK3hza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4tXFx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIpO1xcbitcXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XFxuIH1cXG4gXFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxcXFxuQEAgLTMxOCwxOCArMzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcXG4rX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuK1xcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbiB7XFxuLVxcdGlmICghcG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuKVxcbitcXHRpZiAoIXBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHJldHVybiBkYXRhIC0gcG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbit4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG4ge1xcbi1cXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG4rXFx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIG9wdGlvbnMpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5AQCAtNTEwLDcgKzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4XFxuLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG4ge1xcbiBcXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xcbiB9XFxuQEAgLTUzMCwxMyArNTMzLDE0IEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcXG4rX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuK1xcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbiB7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbit4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG4ge1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcXG5pbmRleCAyYmIxZDEyMmIxYmM2Li5hN2RmNTczNzg0ZmQ2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxcbisrKyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxcbkBAIC0xNTQsNyArMTU0LDggQEAgc3RydWN0IHhkcF9kZXNjX2N0eCB7XFxuIFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XFxuIH07XFxuIFxcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcik7XFxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbitcXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucyk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgeHBfZ2V0X2RtYShzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcXG4gXFx0XFx0XFx0X191MTYgY3N1bV9zdGFydDtcXG4gXFx0XFx0XFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xcbiBcXHRcXHRcXHRfX3UxNiBjc3VtX29mZnNldDtcXG4rXFx0XFx0XFx0X191MzIgcmVzZXJ2ZWQ7XFxuIFxcbiBcXHRcXHRcXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xcbiBcXHRcXHRcXHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19idWZmX3Bvb2wuYyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jXFxuaW5kZXggNzhjMTRmMTA2Mzk1Ny4uOWQyZDk0ZjFmYjc1OSAxMDA2NDRcXG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xcbisrKyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jXFxuQEAgLTc2Myw2ICs3NjMsNyBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTtcXG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcXG4gICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXFxuKyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxcbiAgKlxcbiAgKiBIZWxwZXIgZm9yIGdldHRpbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxcbiAgKiBTYXZlcyBvbmUgY2FsbCBvbiBob3RwYXRoIGFuZCBkb3VibGUgY2FsY3VsYXRpb24gb2YgdGhlIGFjdHVhbCBhZGRyZXNzLlxcbkBAIC03NzEsMTQgKzc3MiwxNiBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTtcXG4gICogUmV0dXJuOiBuZXcgXFx1MDAyNnhkcF9kZXNjX2N0eCBzdHJ1Y3QgY29udGFpbmluZyBkZXNjJ3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhXFxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXFxuICAqL1xcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4rc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuK1xcdFxcdFxcdFxcdCAgIHUzMiBvcHRpb25zKVxcbiB7XFxuIFxcdHN0cnVjdCB4ZHBfZGVzY19jdHggcmV0O1xcbiBcXG4gXFx0YWRkciA9IF9feHBfcmF3X2dldF9hZGRyKHBvb2wsIGFkZHIpO1xcbiBcXG4gXFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XFxuLVxcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xcbitcXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxcbitcXHRcXHRcXHRcXHRcXHQgICBvcHRpb25zKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDRcXG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcXG4rKysgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcXG5AQCAtMTQ5LDYgKzE0OSw3IEBAIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xcbiBcXHRcXHRcXHRfX3UxNiBjc3VtX3N0YXJ0O1xcbiBcXHRcXHRcXHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXFxuIFxcdFxcdFxcdF9fdTE2IGNzdW1fb2Zmc2V0O1xcbitcXHRcXHRcXHRfX3UzMiByZXNlcnZlZDtcXG4gXFxuIFxcdFxcdFxcdC8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovXFxuIFxcdFxcdFxcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjA2LjgwNzE5NTMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjA1OTgwMDc5NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfWERQIHplcm8tY29weSBUWCBtZXRhZGF0YSBwYXRoIHRvIGNoZWNrIHRoZSBYRFBfVFhfTUVUQURBVEEgb3B0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgbWV0YWRhdGEuIFRoaXMgbG9naWMgaXMgb25seSBpbXBsZW1lbnRlZCBhbmQgcmVhY2hhYmxlIGluIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgKGlnYywgbWx4NSwgc3RtbWFjLCBpZHBmKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSByZXNlcnZlZCBwYWRkaW5nIGZpZWxkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiB0aGUgVUFQSSwgd2hpY2ggb25seSBhbHRlcnMgYSBudW1lcmljIGNvbnN0YW50IChzdHJ1Y3Qgc2l6ZSkgdXNlZCBpbiBhIGxlbmd0aCBjaGVjayBpbiB0aGUgZ2VuZXJpYyBYRFAgVFggcGF0aCwgd2l0aG91dCBpbnRyb2R1Y2luZyBuZXcgZnVuY3Rpb25hbCBsb2dpYyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmNhYjE0OTk3ZjJkYzhlZjRmY2MzMTE3YWViYTNlNGZiNmFiMjE3MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDIwOjE5OjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuQEAgLTMwNzQsNyArMzA3NCw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4gXHRcdG9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gXHUwMDNjXHUwMDNjIElHQ19BRFZUWERfUEFZTEVOX1NISUZUO1xuIFxuIFx0XHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4gXHRcdGJpID0gXHUwMDI2cmluZy1cdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXG5AQCAtOTksNyArOTksNyBAQCBib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxuIFx0XHR4ZHB0eGQuZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQuZGF0YSA9IHhza19idWZmX3Jhd19nZXRfZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XG4tXHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XG4gXG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjRhODJmNDM1MTMwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjcxMCwxNiArMjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcbiBcdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTtcbiBcbiBcdFx0LyogVG8gcmV0dXJuIFhEUCBidWZmZXIgdG8gWFNLIHBvb2wsIHdlIHNpbXBsZSBjYWxsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG5pbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbkBAIC0xOTYsNyArMTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbiBcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggY3R4O1xuIFxuLVx0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkcik7XG4rXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbiBcdGRlc2MgPSAodHlwZW9mKGRlc2MpKXtcbiBcdFx0LmFkZHJcdD0gY3R4LmRtYSxcbiBcdFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cdTAwM2VsZW4pLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbkBAIC0yNDAsNiArMjQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0IFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxuKyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbiAgKiBkZXRhaWxzLlxuQEAgLTI0OCw5ICsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4tXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkcik7XG4rXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG4gfVxuIFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuQEAgLTMxOCwxOCArMzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuK1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbi1cdGlmICghcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4pXG4rXHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZGF0YSAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4ge1xuLVx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG4rXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuK1x0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbkBAIC01MTAsNyArNTEzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xuIH1cbkBAIC01MzAsMTMgKzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbitfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbitcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbisrKyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxuQEAgLTE1NCw3ICsxNTQsOCBAQCBzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHtcbiBcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XG4gfTtcbiBcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcik7XG4rc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4rXHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4gXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbkBAIC0xNDksNiArMTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG4gXHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiBcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gXHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4rXHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuKysrIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbkBAIC03NjMsNiArNzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4rICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXG4gICpcbiAgKiBIZWxwZXIgZm9yIGdldHRpbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxuICAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5AQCAtNzcxLDE0ICs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogUmV0dXJuOiBuZXcgXHUwMDI2eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MncyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGFcbiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLlxuICAqL1xuLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuK1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4ge1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7XG4gXG4gXHRhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7XG4gXG4gXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbi1cdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuK1x0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcbitcdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbitcdFx0XHRfX3UzMiByZXNlcnZlZDtcbiBcbiBcdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuIFx0XHRcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTowNi44MDcxOTc2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczOTU1MTYzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgWERQL0FGX1hEUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyB0byB0aGUgWERQIGFuZCBBRl9YRFAgc29ja2V0IGNvZGUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgdHdlYWtpbmcgaG93IHdlJ3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhleSdyZSBhZGRpbmcgY2hlY2tzIHVzaW5nIHRoZSBgb3B0aW9uc2AgZmllbGQgZnJvbSB0aGUgWERQIGRlc2NyaXB0b3IgdG8gc2VlIGlmIGBYRFBfVFhfTUVUQURBVEFgIGlzIHByZXNlbnQgYmVmb3JlIGNhbGxpbmcgYHhza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHBvdGVudGlhbCBlZGdlIGNhc2VzIGFyb3VuZCBtZXRhZGF0YSBhdmFpbGFiaWxpdHkgaXMgYWx3YXlzIGdvb2QuIFRoZSBhZGRpdGlvbiBvZiBgX191MzIgcmVzZXJ2ZWQ7YCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgbG9va3MgbGlrZSBhIGZvcndhcmQtY29tcGF0aWJpbGl0eSBtb3ZlLCBwcm9iYWJseSBwcmVwYXJpbmcgZm9yIGZ1dHVyZSBmZWF0dXJlcy4gVGhlbiwgdGhlcmUncyBzb21lIGNvZGUgYmVpbmcgcmVtb3ZlZCBmcm9tIGBzdG1tYWNfeGRwX3htaXRfemNgIHJlbGF0ZWQgdG8gYHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdYC4gTm90IHN1cmUgd2h5IHRoYXQncyBiZWluZyByZW1vdmVkLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhhdCBhIGJpdCBtb3JlLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgY29kZSBhY3R1YWxseSBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQUZfWERQIGlzIGEgY29yZSBuZXR3b3JraW5nIGZlYXR1cmUsIHNvIGl0IHNob3VsZCBiZSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGRyaXZlcnMgYmVpbmcgdG91Y2hlZCBhcmUgYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgLiBJIGtub3cgYGlnY2AgYW5kIGBtbHg1YCBhcmUgY29tbW9uIGluIHZpcnR1YWxpemVkIHNjZW5hcmlvcywgYnV0IGBzdG1tYWNgIGlzIGxlc3MgdHlwaWNhbC4gQnV0IGhhbmcgb24sIHRoZSBjb3JlIEFGX1hEUCBjb2RlIGxpdmVzIGluIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2AgYW5kIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGFuZCBgc3RtbWFjYCBpc24ndCBuZWNlc3NhcmlseSBkaXJlY3RseSBpbiB0aGUgY3JpdGljYWwgcGF0aCwgYnV0IGB2ZXRoYCBhbHNvIHVzZXMgQUZfWERQISBUaGUgcHJvYmxlbSBoZXJlIGlzIGB2ZXRoYCBpc24ndCBsaXN0ZWQgaGVyZSBhcyBiZWluZyBtb2RpZmllZCEgTmVlZCB0byBjaGVjayB0aGF0LlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCouIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNhbGxlZCBpbiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuIEkgc2VlIHRoZXNlIGRyaXZlcnMgYmVpbmcgdG91Y2hlZCwgYnV0IGlzIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgdXNlZCAqYW55d2hlcmUqIGVsc2U/IEkgbmVlZCB0byBjaGVjayB0byBtYWtlIHN1cmUgaXQncyBub3QgYmVpbmcgdXNlZCBpbiBgdmV0aGAsIG9yIGFub3RoZXIgZHJpdmVyLiBJJ2xsIG5lZWQgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIGZvciBib3RoIGB4cF9yYXdfZ2V0X2N0eGAgYW5kIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHZhbGlkIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBhY2NvdW50aW5nIGZvciAqYWxsKiB0aGUgdXNlcyBvZiB0aGVzZSBmdW5jdGlvbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToxNC4yMDI3MTcxNzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMjcwMzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3Ni1cXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc3OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc4LVxcdFxcdFxcdFxcdFxcdCAgICAgeGRwX2Rlc2Mub3B0aW9ucyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXFx0XFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY3Nz1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3MTQtXFx0XFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3MTU6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcxNi1cXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMy1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMzMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzMjp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzMte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMzNS1cXHRcXHRcXHRcXHQgICAgICAgb3B0aW9ucyk7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01MzU9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM3LVxcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQzOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTU0NC17XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NzU9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODItXFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzgzOlxcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgIG9wdGlvbnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToxNS45MjU0MjUzOTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDA0OTQ0NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqQW5hbHl6aW5nIHRoZSBYRFAgU29ja2V0IE1ldGFkYXRhIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIFhEUCBzb2NrZXQgbWV0YWRhdGEgaGFuZGxpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgZnVuY3Rpb24uIEkgc2VlIGl0J3MgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYW5kIHRoZSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGNoZWNraW5nIHRoZSBgb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYCBiaXQuIFRoYXQncyBpbnRlcmVzdGluZywgaXQncyBhYm91dCB3aGV0aGVyIHdlJ3JlIGdvaW5nIHRvIHRyYW5zbWl0IG1ldGFkYXRhIHdpdGggdGhlIFhEUCBwYWNrZXQuXG5cbk5vdywgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbiAqaW5saW5lKiBmdW5jdGlvbiwgc28gaXQncyBwcm9iYWJseSBwZXJmb3JtYW5jZS1jcml0aWNhbC4gSXQncyB1c2VkIGJ5IHR3byBvdGhlciBmdW5jdGlvbnMsIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIChtYWtlcyBzZW5zZSwgdGhhdCdzIHRoZSBvYnZpb3VzIGNhbGwpIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBBbHJpZ2h0LCBsZXQncyBrZWVwIGFuIGV5ZSBvbiBgeHBfcmF3X2dldF9jdHhgIOKAkyB0aGF0IGNvdWxkIGJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3QuXG5cbkFoLCB0aGVyZSBpdCBpcyEgYHhwX3Jhd19nZXRfY3R4YCBpcywgaW4gdHVybiwgdXNlZCBieSBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGluIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBUaGF0IG1ha2VzIHNlbnNlLCBgbGliZXRoYCBpcyBoYW5kbGluZyBldGhlcm5ldCBmcmFtZXMgaW4gWERQLiBTbyBub3csIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCBpcyBiZWluZyAqY2FsbGVkKi4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBjaGFuZ2UgdG8gdGhlIGNvcmUgWERQIGxvZ2ljLCBvciBpcyBpdCBtb3JlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB1c2UgY2FzZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NzYxOCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToyMi4zMzAzNzMzMTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MTU0NjQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTc4LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzk6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L21ldGFcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTgwLSAqIEB4ZGVzYzogXFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTkxOl9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Mi1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDc9bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjUyLVxcdGlmIChwcml2KVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTM6XFx0XFx0ZGVzYyA9IF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKFxcdTAwMjZmcm0uZGVzYywgc3EsIHByaXYpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTQtXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToyNC4xODE5MjUwNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzk0NDc2NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2FnZSBvZiBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYCoqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYGxpYmV0aGAgYW5kLCBzcGVjaWZpY2FsbHksIEkndmUgZ290IHRvIHVuZGVyc3RhbmQgaG93IGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoYXQgbGlicmFyeS4gIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHkuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGluc3RhbmNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uLCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYCwgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgYGxpYmV0aGAgY29kZS4gVGhlbiBJIGNhbiB1bmRlcnN0YW5kIGl0cyByb2xlIGluIFhTSyB0cmFuc21pc3Npb24uIE5vdGhpbmcgY29tcGxpY2F0ZWQgc28gZmFyLCBqdXN0IHN0YW5kYXJkIGNvZGUgYW5hbHlzaXMgcHJvY2VkdXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTM3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MTk6MjguNTc2NDA0MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0Mjg0ODg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaWJldGhfeHNrX3htaXRfZmlsbF9idWZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc5OiAqIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgWFNrIHhtaXQgdy9tZXRhXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4MC0gKiBAeGRlc2M6IFxcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODMtICpcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTg0OiAqIFNhbWUgYXMgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoKSwgYnV0IHJlcXVlc3RzIG1ldGFkYXRhIHBvaW50ZXIgYW5kXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4NS0gKiBmaWxscyBhZGRpdGlvbmFsIGZpZWxkcyBpbiBcXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIHRvIGFzayBmb3IgbWV0YWRhdGEgb2ZmbG9hZC5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE1LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMTY6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L28gbWV0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMTctICogQHhkZXNjOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjIzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMjQ6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjI1LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzMy0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjM0OiAqIGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIGFuIFhTayB4bWl0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzNS0gKiBAZnJtOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNDc6bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI0OC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsIHU2NCBwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Mi1cXHRpZiAocHJpdilcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjUzOlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcXHUwMDI2ZnJtLmRlc2MsIHNxLCBwcml2KTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU0LVxcdGVsc2VcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjU1OlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihcXHUwMDI2ZnJtLmRlc2MsIHNxKTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU2LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA0LVxcdFxcdFxcdFxcdGxpYmV0aF94ZHBfcHRyX3RvX3ByaXYodG1vKSwgcHJlcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MzA1OlxcdFxcdFxcdFxcdGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiwgeG1pdCk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTMwNi1cXHRmaW5hbGl6ZSh4ZHBzcSwgbiwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjMwLjIxOTI1NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzc0NDg5MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBzbyBgbGliZXRoX3hza194bWl0X2RvX2J1bGtgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBJdCdzIHBvcHBpbmcgdXAgaW4gYSBmZXcgZHJpdmVycywgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGxldCdzIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlLlwiIEkgbmVlZCB0byBpZGVudGlmeSAqcHJlY2lzZWx5KiB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoaXMuIEknbSB0aGlua2luZyB0aGlzIG1pZ2h0IGJlIGEga2V5IGluZGljYXRvciBmb3IgWERQIGFjY2VsZXJhdGlvbiBvciBzb21lIG90aGVyIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGguIEtub3dpbmcgd2hpY2ggTklDcyBvciB2aXJ0dWFsIGRldmljZXMgdXRpbGl6ZSB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGltcGFjdHMgbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIG9wdGltaXphdGlvbnMuIEnigJlsbCBuZWVkIHRvIGRvIGEgY29kZSBzZWFyY2ggYWNyb3NzIHRoZSByZWxldmFudCB0cmVlcy4gSG9wZWZ1bGx5LCB0aGlzIGlzIHdlbGwtZGVmaW5lZCwgYW5kIHRoZSB1c2FnZSBpcyBjb25zaXN0ZW50IGFjcm9zcyB0aGUgaW1wbGVtZW50YXRpb24uIEFmdGVyIGlkZW50aWZ5aW5nIGFsbCB1c2VycyBvZiB0aGUgZnVuY3Rpb24sIEkgY2FuIGJlZ2luIHRvIGRyYXcgc29tZSBjb25jbHVzaW9ucywgc28gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTozMy41OTM3NDk1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MzA5OTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaWJldGhfeHNrX3htaXRfZG9fYnVsa1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTMxNj1ib29sIGlkcGZfeHNrX3htaXQoc3RydWN0IGlkcGZfdHhfcXVldWUgKnhza3NxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0zMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYzozMjY6XFx0cmV0dXJuIGxpYmV0aF94c2tfeG1pdF9kb19idWxrKHhza3NxLVxcdTAwM2Vwb29sLCB4c2tzcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICAgbWluKGZyZWUgLSAxLCB4c2tzcS1cXHUwMDNldGhyZXNoKSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDc9bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjY0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNjU6ICogbGliZXRoX3hza194bWl0X2RvX2J1bGsgLSBzZW5kIFhTayB4bWl0IGZyYW1lc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjYtICogQHBvb2w6IFhTayBidWZmZXIgcG9vbCBjb250YWluaW5nIHRoZSBmcmFtZXMgdG8gc2VuZFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg1OmxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjg2LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjM1LjIzNjg1NzY3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjQzMzA4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgdGhlIFhEUCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggdXNlcyBgaWRwZmAsIGludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgYHN0bW1hY194ZHBfeG1pdF96Y2AgaW4gYHN0bW1hY19tYWluLmNgLiBSaWdodCwgYHN0bW1hY2AuLi4gU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgdGhpbmcgaW4gUUVNVT8gSSBrbm93IHRoZXJlJ3MgYSBmaWxlIGZvciBpLk1YIEZFQywgYnV0IGBzdG1tYWNgIGlzIHR5cGljYWxseSBBUk0uIEhvd2V2ZXIsIHdhaXQsIGl0ICpkb2VzKiBoYXZlIFBDSSBiaW5kaW5ncywgYHN0bW1hY19wY2kuY2AuIFFFTVUgbWlnaHQgbm90IGV2ZW4gZW11bGF0ZSB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCB0aG91Z2guLi5cblxuTGV0J3Mgc3RlcCBiYWNrLiBEb2VzIGB2ZXRoYCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggYHhza19idWZmX2dldF9tZXRhZGF0YWA/IE5vLCBpdCBkb2Vzbid0IHN1cHBvcnQgWERQIFRYIG1ldGFkYXRhLiBPa2F5LCB0aGUgcGxvdCB0aGlja2Vucy4gVGhpcyBwYXRjaCBpcyBhbHNvIG1vZGlmeWluZyBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBTbywgaXQncyBtZXNzaW5nIHdpdGggYHhwX3Jhd19nZXRfY3R4YC5cblxuSG9sZCBvbiwgaXMgYHhwX3Jhd19nZXRfY3R4YCB1c2VkIGFueXdoZXJlIGVsc2U/IExldCdzIGNoZWNrIHdpdGhpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFnYWluLiBBaGEsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgbW9kaWZpZXMgYHhwX3Jhd19nZXRfY3R4YCB0byB0YWtlIGBvcHRpb25zYCBhbmQgcGFzcyBpdCBpbnRvIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAuIFRoZSBwYXRjaCBhbHNvIGFkZGVkIGBfX3UzMiByZXNlcnZlZDtgIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYC4gQSBVQVBJIGNoYW5nZS4gVGhpcyBpcyBzaWduaWZpY2FudC5cblxuRG9lcyB0aGlzIGNoYW5nZSB1bHRpbWF0ZWx5IGltcGFjdCB0aGUgY29yZSBBRl9YRFAgY29kZT8gWWVzLCBgeHBfcmF3X2dldF9jdHhgIGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0J3MgdXNhYmxlIG91dHNpZGUuIEJ1dCBpcyB0aGUga2VybmVsIGRpcmVjdGx5IHVzaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGB4cF9yYXdfZ2V0X2N0eGAgZWxzZXdoZXJlPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBuZXQveGRwL2AgYW5kIGBuZXQvY29yZS9gIGRpcmVjdG9yaWVzIGZvciBjb25maXJtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDg2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjQzLjcwMTE5MjIxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMjAxODMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4cF9yYXdfZ2V0X2N0eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yMzQ9c3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQ0LSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjQ1OiAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQ2LSAqIGRldGFpbHMuXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yNTI9eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI1NDpcXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjU1LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaD0xNTI9c3RydWN0IHhkcF9kZXNjX2N0eCB7XFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTU2LVxcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaDoxNTc6c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTE1OC1cXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucyk7XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NjA9RVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjItLyoqXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzYzOiAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0IFxcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzY0LSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzQtICovXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzc1OnN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3Ni1cXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucylcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4Ny19XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzg4OkVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9jdHgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTo0NS4zMzMyMTUzMjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1NjQzNjczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBYU0sgQnVmZmVyIE1ldGFkYXRhIFVzYWdlKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhlIHVzYWdlIG9mIHRoZXNlIFhTSyBidWZmZXIgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGB4cF9yYXdfZ2V0X2N0eGAgc2VlbXMgdG8gYmUgc29sZWx5IHVzZWQgd2l0aGluIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAsIGFuZCB0aGF0IG9uZSBpcyB1c2VkIGluIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZSBoZXJlLiBUaGVuLCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBjYWxsZWQgaW4gYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpczogYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgd2hhdCBJJ20gdXN1YWxseSB0ZXN0aW5nIHdpdGg/XG5cbiogICBgaWdjYC4uLiB0aGF0J3MgdGhlIEludGVsIEkyMjUtTE0vSTIyNS1WIDIuNUcgRXRoZXJuZXQgY29udHJvbGxlci4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgaXQ7IGl0IHN0aWNrcyB3aXRoIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIFNvLCBubyBqb3kgdGhlcmUuXG4qICAgYG1seDVgLi4uIHRoYXQncyBNZWxsYW5veCBDb25uZWN0WC00LzUvNi4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhhdCBuYXRpdmVseSB3aXRob3V0IFZGSU8gb3IgdGhlIGhhcmR3YXJlLCB3aGljaCBpc24ndCB0aGUgZW52aXJvbm1lbnQgSSdtIGZvY3VzaW5nIG9uLlxuKiAgIGBzdG1tYWNgLi4uIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldC4gUUVNVSBsaWtlbHkgZG9lc24ndCBlbXVsYXRlIGl0IG9uIHN0YW5kYXJkIHg4Nl82NCwgd2hpY2ggaXMgd2hhdCBTeXprYWxsZXIsIHdoaWNoIEkgZ2VuZXJhbGx5IHVzZSwgdGVzdHMuIEl0ICptaWdodCogYmUgcHJlc2VudCBvbiBBUk0gZW11bGF0aW9ucywgYnV0IHRoYXQncyBub3QgdGhlIHByaW1hcnkgdGFyZ2V0LlxuKiAgIFdhaXQgYSBtaW51dGUsIEkgbWlzc2VkIGBpZHBmYC4uLiB0aGF0J3MgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uLiBRRU1VIGRlZmluaXRlbHkgZG9lc24ndCBlbXVsYXRlIHRoYXQgb25lLlxuXG5TbyB0aGUgb2J2aW91cyBxdWVzdGlvbiBpczogaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlIGNhbGxpbmcgZWl0aGVyIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgdGhhdCBJJ20gbWlzc2luZz8gSSBuZWVkIHRvIHBlcmZvcm0gYSBtb3JlIHRob3JvdWdoIHNlYXJjaC4gVGltZSB0byBncmVwIGZvciBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBMZXQncyBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA1NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTo1MS4xODk2NjIzOTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjA4MzQ2ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcmF3X2dldF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MT1fX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk5OlxcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkciwgeGRlc2MtXFx1MDAzZW9wdGlvbnMpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXFx0ZGVzYyA9ICh0eXBlb2YoZGVzYykpe1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTIzOS0vKipcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNDEtICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTI6eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTE1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjUyLjgxMDUwMzIyNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTg1OTYwODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBYU0sgQnVmZmVyIEZsb3cgYW5kIFBvdGVudGlhbCBJbXBhY3QqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgaXMsIGFzIGZhciBhcyBJIGNhbiBzZWUsICpvbmx5KiB1c2VkIHdpdGhpbiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiBBbmQgYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCBpcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAsIHdoaWNoIGl0c2VsZiBmZWVkcyBpbnRvIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AsIHdoaWNoIGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCAqb25seSogdXNlZCBieSBgaWRwZmAuIFNvLCB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGRpcmVjdGx5IGFmZmVjdGluZyB0aGUgYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGFuZCBgaWRwZmAgZHJpdmVycy5cblxuVGhlIGNydWNpYWwgcXVlc3Rpb24gbm93OiBhcmUgYW55IG9mIHRoZXNlIGRyaXZlcnMgZW11bGF0ZWQgaW4gUUVNVSBpbiBhIHdheSB0aGF0IHdvdWxkIG1hdHRlciBmb3Igc3RhbmRhcmQgc3l6a2FsbGVyIHRlc3Rpbmc/IE5vcGUuIFN0YW5kYXJkIHN5emthbGxlciB0ZXN0aW5nIGRvZXNuJ3QgdG91Y2ggdGhvc2UuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgc29tZXRoaW5nIGxpa2UgYHZldGhgPyBEb2VzIGl0IHNvbWVob3cgaW5kaXJlY3RseSB1c2UgYHhza19idWZmX2dldF9tZXRhZGF0YWA/IE5vLCB0aGF0J3Mgbm90IHRoZSBjYXNlLiBXaGF0IGFib3V0IGBzdG1tYWNgLCBzcGVjaWZpY2FsbHk/IENhbiB3ZSByZWFjaCBpdCB0aHJvdWdoIHNvbWUgZm9ybSBvZiB2aXJ0dWFsaXphdGlvbj8gTm8sIGBzdG1tYWNgIGlzIGZpcm1seSByb290ZWQgaW4gcGh5c2ljYWwgaGFyZHdhcmUuXG5cbk9rYXksIEkgc2VlIGl0ISBUaGVyZSdzIGEgVUFQSSBjaGFuZ2UgaW4gdGhlIGBpZl94ZHAuaGAgaGVhZGVyOiBhIG5ldyBgcmVzZXJ2ZWRgIGZpZWxkIGhhcyBiZWVuIGFkZGVkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYC4gSSBuZWVkIHRvIHRoaW5rIGNhcmVmdWxseSBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbGF5b3V0IGNoYW5nZS5cblxuTm93LCBkb2VzIHRoaXMgYWx0ZXJhdGlvbiB0byB0aGUgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGltcGFjdCBhbnkgY29yZSBrZXJuZWwgY29kZT8gVGhpcyBpcyB0aGUgY29yZSBxdWVzdGlvbiBJIG5lZWQgdG8gY29uc2lkZXIgdG8gdW5kZXJzdGFuZCBpZiB0aGUgcGF0Y2ggbWlnaHQgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHBsYWNlcyB3aGVyZSBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaXMgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMDYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MDEuMzk2NDY4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg4MjU2Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCB4c2tfdHhfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q9MTY9bGVuZ3RoIGlzIHRoZXJlZm9yZSB0aGUgc2FtZSBmb3IgZXZlcnkgc29ja2V0IHRoYXQgc2hhcmVzIHRoZSBzYW1lIHVtZW0uXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTc6VGhlIG1ldGFkYXRhIGxheW91dCBpcyBhIGZpeGVkIFVBUEksIHJlZmVyIHRvIGBgc3RydWN0IHhza190eF9tZXRhZGF0YWBgIGluXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTgtYGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgYC4gVGh1cywgZ2VuZXJhbGx5LCB0aGUgYGB0eF9tZXRhZGF0YV9sZW5gYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjE5OmZpZWxkIGFib3ZlIHNob3VsZCBjb250YWluIGBgc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpYGAuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMjAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD00NT1UaGUgZmxhZ3MgZmllbGQgZW5hYmxlcyB0aGUgcGFydGljdWxhciBvZmZsb2FkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNDgtICB0aW1lc3RhbXAgaW50byBgYGNvbXBsZXRpb24udHhfdGltZXN0YW1wYGAgZmllbGQgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo0OTogIGBgc3RydWN0IHhza190eF9tZXRhZGF0YWBgLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTUwLS0gYGBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTWBgOiByZXF1ZXN0cyB0aGUgZGV2aWNlIHRvIGNhbGN1bGF0ZSBMNFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNTYtICB2YWx1ZSBvZiBsYXVuY2ggdGltZSBpcyBpbmRpY2F0ZWQgYnkgYGByZXF1ZXN0LmxhdW5jaF90aW1lYGAgZmllbGQgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo1NzogIGBgc3RydWN0IHhza190eF9tZXRhZGF0YWBgLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTEwOD1zdHJ1Y3QgaWdjX3R4X3RpbWVzdGFtcF9yZXF1ZXN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0xMTktXFx0dTggeHNrX3F1ZXVlX2luZGV4OyAgICAvKiBUeCBxdWV1ZSB3aGljaCByZXF1ZXN0aW5nIHRpbWVzdGFtcCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoxMjA6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCB4c2tfbWV0YTtcXHQvKiByZWYgdG8geHNrIFR4IG1ldGFkYXRhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTEyMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTM3Mj1pbnQgaWdjX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHF1ZXVlX2lkLCB1MzIgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTM3NC0vKiBBRl9YRFAgVFggbWV0YWRhdGEgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDozNzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIGlnY194c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0zNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg9NjAyPXN0cnVjdCBpZ2NfbWV0YWRhdGFfcmVxdWVzdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTYwMy1cXHRzdHJ1Y3QgaWdjX3R4X2J1ZmZlciAqdHhfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDo2MDQ6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtNjA1LVxcdHN0cnVjdCBpZ2NfcmluZyAqdHhfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTI5OTM9c3RhdGljIHZvaWQgaWdjX3hza19yZXF1ZXN0X2xhdW5jaF90aW1lKHU2NCBsYXVuY2hfdGltZSwgdm9pZCAqX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwMzE6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgaWdjX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzMi1cXHQudG1vX3JlcXVlc3RfdGltZXN0YW1wXFx0XFx0PSBpZ2NfeHNrX3JlcXVlc3RfdGltZXN0YW1wLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA2NC1cXHRcXHRzdHJ1Y3QgaWdjX21ldGFkYXRhX3JlcXVlc3QgbWV0YV9yZXE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA2NTpcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDY2LVxcdFxcdHN0cnVjdCBpZ2NfdHhfYnVmZmVyICpiaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2Lmg9MTU9c3RydWN0IHhkcF9mcmFtZV9idWxrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2LmgtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaDoxNzpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2LmgtMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM9MzkwPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTM5Mi1cXHRcXHRcXHQgICAgICAgdTMyIHpjX3NlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjM5MzpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz0xND12b2lkIF9fY29sZCBsaWJldGhfeHNrX3R4X3JldHVybl9idWxrKGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lICpicSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6MjM6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yNC1cXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cXHRcXHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD00ODA9c3RydWN0IG1seDVlX3htaXRfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo0ODE6c3RydWN0IHhza190eF9tZXRhZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC00ODItdHlwZWRlZiBpbnQgKCptbHg1ZV9mcF94bWl0X3hkcF9mcmFtZV9jaGVjaykoc3RydWN0IG1seDVlX3hkcHNxICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTQ4Mz10eXBlZGVmIGJvb2wgKCptbHg1ZV9mcF94bWl0X3hkcF9mcmFtZSkoc3RydWN0IG1seDVlX3hkcHNxICosXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC00ODUtXFx0XFx0XFx0XFx0XFx0aW50LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjQ4NjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC00ODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9MzA0PXN0YXRpYyB2b2lkIG1seDVlX3hza19yZXF1ZXN0X2NoZWNrc3VtKHUxNiBjc3VtX3N0YXJ0LCB1MTYgY3N1bV9vZmZzZXQsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzozMTI6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzEzLVxcdC50bW9fZmlsbF90aW1lc3RhbXBcXHRcXHQ9IG1seDVlX3hza19maWxsX3RpbWVzdGFtcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTQ9bWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo0NTU6XFx0XFx0ICAgICBpbnQgY2hlY2tfcmVzdWx0LCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqbWV0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTQ1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTg9bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo0NTk6XFx0XFx0XFx0ICAgaW50IGNoZWNrX3Jlc3VsdCwgc3RydWN0IHhza190eF9tZXRhZGF0YSAqKm1ldGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NTQxOlxcdFxcdCAgICAgaW50IGNoZWNrX3Jlc3VsdCwgc3RydWN0IHhza190eF9tZXRhZGF0YSAqKm1ldGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTU0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NjY1PXN0YXRpYyB2b2lkIG1seDVlX2ZyZWVfeGRwc3FfZGVzYyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTczMi1cXHRcXHRcXHQvKiBBRl9YRFAgc2VuZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo3MzM6XFx0XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy03MzQtXFx0XFx0XFx0c3RydWN0IG1seDVlX3hza190eF9jb21wbGV0ZSBwcml2ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oPTg0PXVuaW9uIG1seDVlX3hkcF9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC05NC1cXHR9IHBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjk1OlxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgeHNrX21ldGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTk2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg9MTExPWV4dGVybiBjb25zdCBzdHJ1Y3QgeGRwX21ldGFkYXRhX29wcyBtbHg1ZV94ZHBfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaDoxMTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIG1seDVlX3hza190eF9tZXRhZGF0YV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg9MTE0PUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExNi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGludCBjaGVja19yZXN1bHQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjExNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExOC1JTkRJUkVDVF9DQUxMQUJMRV9ERUNMQVJFKGJvb2wgbWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC0xMjAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBjaGVja19yZXN1bHQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjEyMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza190eF9tZXRhZGF0YSAqKm1ldGEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTIyLUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoaW50IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYz02Nj1ib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTY4LVxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gc3EtXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzo2OTpcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtNzAtXFx0dW5pb24gbWx4NWVfeGRwX2luZm8geGRwaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMTYtXFx0XFx0XFx0aWYgKHhwX3R4X21ldGFkYXRhX2VuYWJsZWQoc3EtXFx1MDAzZXhza19wb29sKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMTc6XFx0XFx0XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCBjb21wbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDk9c3RydWN0IHN0bW1hY190eF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo1MDpcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTUxLVxcdGRtYV9hZGRyX3QgYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjYxPXN0YXRpYyB2b2lkIHN0bW1hY194c2tfcmVxdWVzdF9sYXVuY2hfdGltZSh1NjQgbGF1bmNoX3RpbWUsIHZvaWQgKl9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjY3MTpzdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgc3RtbWFjX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjcyLVxcdC50bW9fcmVxdWVzdF90aW1lc3RhbXBcXHRcXHQ9IHN0bW1hY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2Nzc9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjk2LVxcdFxcdHN0cnVjdCBzdG1tYWNfbWV0YWRhdGFfcmVxdWVzdCBtZXRhX3JlcTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2OTc6XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjk4LVxcdFxcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNDk9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMjU2LVxcdGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzICp4ZHBfbWV0YWRhdGFfb3BzO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjI1NzpcXHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqeHNrX3R4X21ldGFkYXRhX29wcztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNTgtXFx0dW5zaWduZWQgc2hvcnRcXHRcXHRnZmxhZ3M7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTU3OT12b2lkIG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXMoc3RydWN0IG1tcGluICptbXApO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01ODUtICovXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo1ODY6c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCB7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01ODctXFx0X191NjQgKnR4X3RpbWVzdGFtcDtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTkzPXN0cnVjdCBza2Jfc2hhcmVkX2luZm8ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC02MDMtXFx0XFx0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzIGh3dHN0YW1wcztcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjYwNDpcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNjA1LVxcdH07XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9MTgyMT12b2lkIF9fbGliZXRoX3hkcF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODIzLVxcdFxcdFxcdCAgICAgICB1MzIgemNfc2VncyxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTgyNDpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjUtdm9pZCBsaWJldGhfeGRwX3NldF9yZWRpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSk7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTY3PXN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeHNrdG1vX3JlcV9jc3VtKHUxNiBjc3VtX3N0YXJ0LCB1MTYgY3N1bV9vZmZzZXQsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTczLS8qIE9ubHkgdG8gaW5saW5lIHRoZSBjYWxsYmFja3MgYmVsb3csIHVzZSBAbGliZXRoX3hza3RtbyBpbiBkcml2ZXJzIGluc3RlYWQgKi9cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3NS1cXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cXHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTk0LXtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk1OlxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8gPSBsaWJldGhfeGRwX3ByaXZfdG9fcHRyKHByaXYpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTYtXFx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI4NjpcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yODctXFx0XFx0XFx0dTMyICgqcHJlcCkodm9pZCAqeGRwc3EsIHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKSxcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE2LSAqL1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTE3OnN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHtcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTExOC1cXHR2b2lkXFx0KCp0bW9fcmVxdWVzdF90aW1lc3RhbXApKHZvaWQgKnByaXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xMjk9SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRSh2b2lkIHhza19kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKikpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMzQtICogIEBtZXRhOiBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMzU6ICogIEBjb21wbDogcG9pbnRlciB0byBvdXRwdXQgc3RydWN0IHhza190eF9tZXRhZGF0YV90b19jb21wbFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTM2LSAqXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE0MC0gKi9cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE0MTpzdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNDI6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTQzLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTU5LSAqICBAY29tcGw6IHBvaW50ZXIgdG8gY29tcGxldGlvbiBtZXRhZGF0YSBwcm9kdWNlZCBmcm9tIHhza190eF9tZXRhZGF0YV90b19jb21wbFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTYwOiAqICBAb3BzOiBwb2ludGVyIHRvIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNjEtICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFkXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE2NS0gKi9cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE2NjpzdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTY3OlxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY4LVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xOTU9c3RhdGljIGlubGluZSB2b2lkIHhza19kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTk5LVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MjAwOnN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfdG9fY29tcGwoc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjIwMTpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0yMDIte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0yMDQtXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDU6c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbCxcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjIwNjpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcyxcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTIwNy1cXHRcXHRcXHRcXHRcXHQgICAgdm9pZCAqcHJpdilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI2ND14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNjU6XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSwgdTY0ICpmbGFncylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNjYte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjY5LVxcdFxcdGlmIChwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW4gXFx1MDAzY1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3MDpcXHRcXHQgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjcxLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3OS0gKiAgQHBtZXRhOiBwb2ludGVyIHRvIHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODA6ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yODEtICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI4Nz14c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODg6XFx0XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqKnBtZXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4OTpcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLCB2b2lkICpwcml2KVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI5MC17XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjkxOlxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSAqcG1ldGE7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjkyLVxcdHU2NCBmbGFncztcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMC1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMjE6c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjItX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzAtXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzMxOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMyLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTIyPXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUyMzpcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLCB1NjQgKmZsYWdzKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUyNC17XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01Mjk9eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTMwOlxcdFxcdFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzE6XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcywgdm9pZCAqcHJpdilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzIte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM0LVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUzNTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzNi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTU0MS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1NDI6c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01NDMteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg9MjU9c3RydWN0IHhkcF9idWZmX3hzayB7XFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMzQtI2RlZmluZSBYU0tfQ0hFQ0tfUFJJVl9UWVBFKHQpIEJVSUxEX0JVR19PTihzaXplb2YodCkgXFx1MDAzZSBvZmZzZXRvZmVuZChzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCBjYikpXFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjM1OiNkZWZpbmUgWFNLX1RYX0NPTVBMX0ZJVFModCkgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsKSBcXHUwMDNlIHNpemVvZih0KSlcXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMzYtXFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg9MTUyPXN0cnVjdCB4ZHBfZGVzY19jdHgge1xcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTMtXFx0ZG1hX2FkZHJfdCBkbWE7XFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjE1NDpcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTUtfTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaD0xMDI9c3RydWN0IHhkcF9vcHRpb25zIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjAtLyogUmVxdWVzdCB0cmFuc21pdCB0aW1lc3RhbXAuIFVwb24gY29tcGxldGlvbiwgcHV0IGl0IGludG8gdHhfdGltZXN0YW1wXFxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjEyMTogKiBmaWVsZCBvZiBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLlxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjItICovXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTMyLSAqIHRyYW5zbWlzc2lvbiBhdCBhIHByZS1kZXRlcm1pbmVkIHRpbWUgY2FsbGVkIGxhdW5jaCB0aW1lLiBUaGUgdmFsdWUgb2ZcXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTMzOiAqIGxhdW5jaCB0aW1lIGlzIGNvbW11bmljYXRlZCB2aWEgbGF1bmNoX3RpbWUgZmllbGQgb2Ygc3RydWN0IHhza190eF9tZXRhZGF0YS5cXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTM0LSAqL1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0MC0gKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTQxOnN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xNDItXFx0X191NjQgZmxhZ3M7XFxuLS1cXG5uZXQveGRwL3hzay5jPTkwOD12b2lkIHhza19kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQveGRwL3hzay5jLTkwOS17XFxubmV0L3hkcC94c2suYzo5MTA6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwgPSBcXHUwMDI2c2tiX3NoaW5mbyhza2IpLVxcdTAwM2V4c2tfbWV0YTtcXG5uZXQveGRwL3hzay5jLTkxMS1cXG4tLVxcbm5ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxuLS1cXG5uZXQveGRwL3hzay5jLTk2Ny17XFxubmV0L3hkcC94c2suYzo5Njg6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XFxubmV0L3hkcC94c2suYy05NjktXFx0dTE2IGNzdW1fc3RhcnQsIGNzdW1fb2Zmc2V0O1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oPTEwMj1zdHJ1Y3QgeGRwX29wdGlvbnMge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEyMC0vKiBSZXF1ZXN0IHRyYW5zbWl0IHRpbWVzdGFtcC4gVXBvbiBjb21wbGV0aW9uLCBwdXQgaXQgaW50byB0eF90aW1lc3RhbXBcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTIxOiAqIGZpZWxkIG9mIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEuXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEyMi0gKi9cXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzItICogdHJhbnNtaXNzaW9uIGF0IGEgcHJlLWRldGVybWluZWQgdGltZSBjYWxsZWQgbGF1bmNoIHRpbWUuIFRoZSB2YWx1ZSBvZlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxMzM6ICogbGF1bmNoIHRpbWUgaXMgY29tbXVuaWNhdGVkIHZpYSBsYXVuY2hfdGltZSBmaWVsZCBvZiBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzQtICovXFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTQwLSAqL1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxNDE6c3RydWN0IHhza190eF9tZXRhZGF0YSB7XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0Mi1cXHRfX3U2NCBmbGFncztcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jPTU5PXN0YXRpYyBpbnQgb3Blbl94c2soaW50IGlmaW5kZXgsIHN0cnVjdCB4c2sgKnhzaylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTcyLVxcdFxcdFxcdCBYRFBfVU1FTV9UWF9NRVRBREFUQV9MRU4sXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6NzM6XFx0XFx0LnR4X21ldGFkYXRhX2xlbiA9IHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy03NC1cXHR9O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTM3LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxMzg6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xMzktXFx0c3RydWN0IHhkcF9kZXNjICp0eF9kZXNjO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTUxLVxcdHR4X2Rlc2MgPSB4c2tfcmluZ19wcm9kX190eF9kZXNjKFxcdTAwMjZ4c2stXFx1MDAzZXR4LCBpZHgpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jOjE1MjpcXHR0eF9kZXNjLVxcdTAwM2VhZGRyID0gaWR4ICUgKFVNRU1fTlVNIC8gMikgKiBVTUVNX0ZSQU1FX1NJWkUgKyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTUzLVxcdHByaW50ZihcXFwiJXA6IHR4X2Rlc2NbJXVdLVxcdTAwM2VhZGRyPSVsbHhcXFxcblxcXCIsIHhzaywgaWR4LCB0eF9kZXNjLVxcdTAwM2VhZGRyKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTE1NS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxNTY6XFx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTU3LVxcdG1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jPTIyNz1zdGF0aWMgdm9pZCBjb21wbGV0ZV90eChzdHJ1Y3QgeHNrICp4c2spXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjI4LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyMjk6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0yMzAtXFx0X191NjQgYWRkcjtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTIzOS1cXHRcXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cXHUwMDNldW1lbV9hcmVhLCBhZGRyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyNDA6XFx0XFx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjQxLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jPTkyPXN0YXRpYyBpbnQgb3Blbl94c2soaW50IGlmaW5kZXgsIHN0cnVjdCB4c2sgKnhzaywgX191MzIgcXVldWVfaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMTA0LVxcdFxcdC5mbGFncyA9IFhEUF9VTUVNX1RYX01FVEFEQVRBX0xFTixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MTA1OlxcdFxcdC50eF9tZXRhZGF0YV9sZW4gPSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTEwNi1cXHR9O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jPTMwND1zdGF0aWMgYm9vbCBjb21wbGV0ZV90eChzdHJ1Y3QgeHNrICp4c2ssIGNsb2NraWRfdCBjbG9ja19pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzA1LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzA2OlxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMwNy1cXHRfX3U2NCBhZGRyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMxNS1cXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cXHUwMDNldW1lbV9hcmVhLCBhZGRyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzE2OlxcdG1ldGEgPSBkYXRhIC0gc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zMTctXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM9MzUyPXN0YXRpYyB2b2lkIHBpbmdfcG9uZyhzdHJ1Y3QgeHNrICp4c2ssIHZvaWQgKnJ4X3BhY2tldCwgY2xvY2tpZF90IGNsb2NrX2lkKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNTMte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNTQ6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzU1LVxcdHN0cnVjdCBpcHY2aGRyICppcDZoID0gTlVMTDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNzItXFx0dHhfZGVzYyA9IHhza19yaW5nX3Byb2RfX3R4X2Rlc2MoXFx1MDAyNnhzay1cXHUwMDNldHgsIGlkeCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jOjM3MzpcXHR0eF9kZXNjLVxcdTAwM2VhZGRyID0gaWR4ICUgKFVNRU1fTlVNIC8gMikgKiBVTUVNX0ZSQU1FX1NJWkUgKyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3NC1cXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cXHUwMDNldW1lbV9hcmVhLCB0eF9kZXNjLVxcdTAwM2VhZGRyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzc1LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNzY6XFx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3Ny1cXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIwOjAzLjA4NDczMDA4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzU2ODk0OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFVBUEkgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIFVBUEkgY2hhbmdlIGlzIG1lc3Npbmcgd2l0aCBgc3RydWN0IHhza190eF9tZXRhZGF0YWAuIEkgc2VlIHRoZXkndmUgYWRkZWQgYF9fdTMyIHJlc2VydmVkO2AuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiUmlnaHQsIHRoYXQncyBnb2luZyB0byBjaGFuZ2UgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAuXCIgIFdoaWNoIGltbWVkaWF0ZWx5IGxlYWRzIG1lIHRvLCBcIkRvZXMgdGhpcyBpbXBhY3QgdGhlIGNvcmUga2VybmVsPyBBcmUgd2UgZ29pbmcgdG8gaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGNoYW5nZT9cIlxuXG5MZXQgbWUgY2hlY2sgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCBpbiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBBaCwgaGVyZSBpdCBpczpcbmBgYGNcblx0XHRpZiAocG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4gXHUwMDNjXG5cdFx0ICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuYGBgXG5JdCdzIGEgY29tcGlsZS10aW1lIG9mZnNldCBjaGVjaywgd2hpY2ggaXMgZ29vZCwgYnV0IG5vdyB0aGF0IGByZXNlcnZlZGAgaXMgYWRkZWQsIGByZXF1ZXN0LmxhdW5jaF90aW1lYCdzIG9mZnNldCB3aWxsIGJlIGRpZmZlcmVudC4gVGhhdCdzIGEgcHJvYmxlbSEgXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIExldCBtZSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBhZ2Fpbi5cbmBgYGNcbnN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xuXHRfX3U2NCBmbGFncztcblxuXHQvKiBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTSAqL1xuXHRzdHJ1Y3Qge1xuXHRcdC8qIE9mZnNldCBmcm9tIGRlc2MtXHUwMDNlYWRkciB3aGVyZSBjaGVja3N1bW1pbmcgc2hvdWxkIHN0YXJ0LiAqL1xuXHRcdF9fdTE2IGNzdW1fc3RhcnQ7XG5cdFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xuXHRcdF9fdTE2IGNzdW1fb2Zmc2V0O1xuXHRcdF9fdTMyIHJlc2VydmVkO1xuXHR9IHJlcXVlc3Q7XG5cblx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cblx0c3RydWN0IHtcblx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuXHRcdF9fdTY0IGxhdW5jaF90aW1lO1xuXHR9IHJlcXVlc3Q7XG59O1xuYGBgXG5JcyB0aGlzIHN0cnVjdCByZWFsbHkgZGVmaW5pbmcgYHJlcXVlc3RgIG11bHRpcGxlIHRpbWVzPyBObywgaXQncyBhIHVuaW9uLCBvciBtYXliZSBhbiBhbm9ueW1vdXMgc3RydWN0LiBUaGF0J3MgYSBjcnVjaWFsIGRldGFpbC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gaW50ZXJwcmV0aW5nIHRoaXMgY29ycmVjdGx5LiBMZXQgbWUganVtcCBvdmVyIHRvIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgIHRvIGNvbmZpcm0gdGhlIGRlZmluaXRpb24uIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGByZXF1ZXN0YCBmaWVsZCB3b3JrcyBiZWZvcmUgSSBjYW4gYXNzZXNzIHRoZSBrZXJuZWwgaW1wYWN0IGFjY3VyYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjk2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIwOjA5Ljg0MTYyOTc0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjcyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMTM1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTM1OlxcdCNkZWZpbmUgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUVcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyAyKVxcbiAxMzY6XFx0XFxuIDEzNzpcXHQvKiBBRl9YRFAgb2ZmbG9hZHMgcmVxdWVzdC4gJ3JlcXVlc3QnIHVuaW9uIG1lbWJlciBpcyBjb25zdW1lZCBieSB0aGUgZHJpdmVyXFxuIDEzODpcXHQgKiB3aGVuIHRoZSBwYWNrZXQgaXMgYmVpbmcgdHJhbnNtaXR0ZWQuICdjb21wbGV0aW9uJyB1bmlvbiBtZW1iZXIgaXNcXG4gMTM5OlxcdCAqIGZpbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIHRyYW5zbWl0IGNvbXBsZXRpb24gYXJyaXZlcy5cXG4gMTQwOlxcdCAqL1xcbiAxNDE6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSB7XFxuIDE0MjpcXHRcXHRfX3U2NCBmbGFncztcXG4gMTQzOlxcdFxcbiAxNDQ6XFx0XFx0dW5pb24ge1xcbiAxNDU6XFx0XFx0XFx0c3RydWN0IHtcXG4gMTQ2OlxcdFxcdFxcdFxcdC8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovXFxuIDE0NzpcXHRcXG4gMTQ4OlxcdFxcdFxcdFxcdC8qIE9mZnNldCBmcm9tIGRlc2MtXFx1MDAzZWFkZHIgd2hlcmUgY2hlY2tzdW1taW5nIHNob3VsZCBzdGFydC4gKi9cXG4gMTQ5OlxcdFxcdFxcdFxcdF9fdTE2IGNzdW1fc3RhcnQ7XFxuIDE1MDpcXHRcXHRcXHRcXHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXFxuIDE1MTpcXHRcXHRcXHRcXHRfX3UxNiBjc3VtX29mZnNldDtcXG4gMTUyOlxcdFxcdFxcdFxcdF9fdTMyIHJlc2VydmVkO1xcbiAxNTM6XFx0XFxuIDE1NDpcXHRcXHRcXHRcXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xcbiAxNTU6XFx0XFx0XFx0XFx0LyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi9cXG4gMTU2OlxcdFxcdFxcdFxcdF9fdTY0IGxhdW5jaF90aW1lO1xcbiAxNTc6XFx0XFx0XFx0fSByZXF1ZXN0O1xcbiAxNTg6XFx0XFxuIDE1OTpcXHRcXHRcXHRzdHJ1Y3Qge1xcbiAxNjA6XFx0XFx0XFx0XFx0LyogWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovXFxuIDE2MTpcXHRcXHRcXHRcXHRfX3U2NCB0eF90aW1lc3RhbXA7XFxuIDE2MjpcXHRcXHRcXHR9IGNvbXBsZXRpb247XFxuIDE2MzpcXHRcXHR9O1xcbiAxNjQ6XFx0fTtcXG4gMTY1OlxcdFxcbiAxNjY6XFx0LyogUngvVHggZGVzY3JpcHRvciAqL1xcbiAxNjc6XFx0c3RydWN0IHhkcF9kZXNjIHtcXG4gMTY4OlxcdFxcdF9fdTY0IGFkZHI7XFxuIDE2OTpcXHRcXHRfX3UzMiBsZW47XFxuIDE3MDpcXHRcXHRfX3UzMiBvcHRpb25zO1xcbiAxNzE6XFx0fTtcXG4gMTcyOlxcdFxcbiAxNzM6XFx0LyogVU1FTSBkZXNjcmlwdG9yIGlzIF9fdTY0ICovXFxuIDE3NDpcXHRcXG4gMTc1OlxcdC8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBwYWNrZXQgY29udGludWVzIHdpdGggdGhlIGJ1ZmZlciBwb2ludGVkIG91dCBieSB0aGVcXG4gMTc2OlxcdCAqIG5leHQgZnJhbWUgaW4gdGhlIHJpbmcuIFRoZSBlbmQgb2YgdGhlIHBhY2tldCBpcyBzaWduYWxsZWQgYnkgc2V0dGluZyB0aGlzXFxuIDE3NzpcXHQgKiBiaXQgdG8gemVyby4gRm9yIHNpbmdsZSBidWZmZXIgcGFja2V0cywgZXZlcnkgZGVzY3JpcHRvciBoYXMgJ29wdGlvbnMnIHNldFxcbiAxNzg6XFx0ICogdG8gMCBhbmQgdGhpcyBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cXG4gMTc5OlxcdCAqL1xcbiAxODA6XFx0I2RlZmluZSBYRFBfUEtUX0NPTlREICgxIFxcdTAwM2NcXHUwMDNjIDApXFxuIDE4MTpcXHRcXG4gMTgyOlxcdC8qIFRYIHBhY2tldCBjYXJyaWVzIHZhbGlkIG1ldGFkYXRhLiAqL1xcbiAxODM6XFx0I2RlZmluZSBYRFBfVFhfTUVUQURBVEEgKDEgXFx1MDAzY1xcdTAwM2MgMSlcXG4gMTg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDowOS44NDE3MTYwMjdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMDg5OTAyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFGX1hEUCBNZXRhZGF0YSBIYW5kbGluZyBhbmQgQWxpZ25tZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBzdHJ1Y3QgYHJlcXVlc3RgIG5lc3RsZWQgaW5zaWRlIGEgYHVuaW9uYC4gVGhlIGtleSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgX191MzIgcmVzZXJ2ZWQ7YC4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gYWxpZ25tZW50LiBJIGtub3cgdGhhdCBgY3N1bV9zdGFydGAgYW5kIGBjc3VtX29mZnNldGAgYXJlIDIgYnl0ZXMgZWFjaC4gQmVmb3JlLCBgbGF1bmNoX3RpbWVgIChgX191NjRgKSB3YXMgcHJvYmFibHkgZGlyZWN0bHkgYWZ0ZXIgdGhvc2UsIG1ha2luZyBpdHMgb2Zmc2V0IDQgYnl0ZXMuIFRoYXQncyBhIHByb2JsZW0gYmVjYXVzZSwgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMsIGBfX3U2NGAgbmVlZHMgOC1ieXRlIGFsaWdubWVudC4gU28sIHdpdGhvdXQgcGFkZGluZywgaXQncyBtaXNhbGlnbmVkLiBBZGRpbmcgYF9fdTMyIHJlc2VydmVkYCBleHBsaWNpdGx5IGFsaWducyBgbGF1bmNoX3RpbWVgLCBzaGlmdGluZyBpdHMgb2Zmc2V0IHRvIDggYnl0ZXMgYW5kIGVuc3VyaW5nIHByb3BlciBtZW1vcnkgbGF5b3V0LCB3aGljaCBtYWtlcyB0aGlzIGEgVUFQSSBmaXguXG5cbkkgdGhlbiBtb3ZlIG9uIHRvIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uLiBUaGUgY2hhbmdlIHRoZXJlIGludm9sdmVzIGNoZWNraW5nIGBvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEFgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjb3JlIGNoYW5nZSByZWxhdGVkIHRvIEFGX1hEUC4gQnV0IEkgbmVlZCB0byB0aGluayBhYm91dCB3aGVyZSB0aGlzIGlzIGFjdHVhbGx5IHVzZWQsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cblxuVGhlIGNhbGwgc2l0ZXMgYXJlIHdoYXQgbWF0dGVyLiBJIHNlZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNhbGxlZCBieSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCAodXNlZCBieSBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCkgYW5kIGB4cF9yYXdfZ2V0X2N0eGAgKHVzZWQgYnkgYSBjaGFpbiBvZiBmdW5jdGlvbnMgZW5kaW5nIHdpdGggYGlkcGZgKS4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIChgaWdjYCwgYG1seDVgLCBgaWRwZmApIGFyZSB1c3VhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIE5vdywgYHN0bW1hY2AsIHRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBjaGVjay4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlncy4gSSBuZWVkIHRvIGdvIHZlcmlmeSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzE0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MjAuMDUwNzEwNTQzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIyNjgxOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MjIuMDczMzk4MjQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDIwMzczMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgZm9yIHRoZSBgU1RNTUFDX1BDSWAgRmxhZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGRyaXZlciBjb2RlLCBhbmQgZmlyc3QgdGhpbmcncyBmaXJzdDogZ290dGEgbWFrZSBzdXJlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNvbmZpZ3VyYXRpb24gdGhhdCBhY3R1YWxseSB1c2VzIFBDSSBmb3IgdGhlIFNUTU1BQyAoU1RNaWNyb2VsZWN0cm9uaWNzIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBkZXZpY2UuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzPyBcIklzIGBTVE1NQUNfUENJYCBldmVuIGRlZmluZWQ/XCIgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCB0byBhY2NvbW1vZGF0ZSBhIFBDSS1iYXNlZCBTVE1NQUMgaW5zdGFuY2UuIFRoaXMgY2hlY2sgaXMgY3J1Y2lhbDsgaXQgZGljdGF0ZXMgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBzdWJzZXF1ZW50IGFjdGlvbnMgdGhlIGRyaXZlciB3aWxsIHRha2UuIEl0J3MgZXNzZW50aWFsbHkgdGhlIGdhdGVrZWVwZXIgZm9yIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiwgc28gY29uZmlybWluZyB0aGlzIGlzIGVzc2VudGlhbCBiZWZvcmUgbW92aW5nIGFueSBmdXJ0aGVyLiBJZiBpdCdzICpub3QqIGRlZmluZWQsIEknbGwgbmVlZCB0byBhZGFwdCBteSBhbmFseXNpcyBhY2NvcmRpbmdseSwgYXMgSSdtIGxpa2VseSBsb29raW5nIGF0IGEgZGlmZmVyZW50IGhhcmR3YXJlIHNldHVwIG9yIGNvbmZpZ3VyYXRpb24gYWx0b2dldGhlci4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3MTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDoyNS40MTU0MzkzMzNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDkyMDY0MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MjcuMDI0NjUxNjU0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5OTEwMDQ3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBEcml2ZXIgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEkga25vdyBpdCBleGlzdHMsIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQncyBoYW5kbGVkIHdpdGhpbiBRRU1VLiBEb2VzIFFFTVUgZW11bGF0ZSBpdCBkaXJlY3RseT8gTm9wZSwgZG9lc24ndCBsb29rIGxpa2UgaXQuIEkga25vdyBRRU1VIGVtdWxhdGVzIG90aGVyIG5ldHdvcmsgaW50ZXJmYWNlcyAtIGBlMTAwMGAsIGBlMTAwMGVgLCBgaWdiYCwgYHJ0bDgxMzlgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgdm14bmV0M2AsIGFuZCBgdmlydGlvLW5ldC1wY2lgIGFyZSBmYW1pbGlhciBvbmVzLiBCdXQgYFNUTU1BQ19QQ0lgIGlzbid0IG9uIHRoZSBsaXN0LlxuXG5Ob3csIG15IG1pbmQgc2hpZnRzIHRvIGB2ZXRoYC4gSXQncyBhIGtleSB2aXJ0dWFsIEV0aGVybmV0IGRldmljZS4gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJ20gY3VyaW91cyB3aGV0aGVyIGB2ZXRoYCBtYWtlcyB1c2Ugb2YgYHhza19idWZmX2dldF9tZXRhZGF0YWAgaW4gaXRzIG9wZXJhdGlvbi4gVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgc291cmNlIGNvZGUsIHNvIEknbGwgY2hlY2sgYGRyaXZlcnMvbmV0L3ZldGguY2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGFuc3dlcnMgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA4NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDozMi4wMTU2NTk0OTZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzU1NTc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDozMi4wNjQwMjg3MzRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3MDUyOTE4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgZUJQRiBEYXRhIEFjY2VzcyoqXG5cbkhtbSwgc28gdGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgYHZldGhgIHVzZXMgc29tZXRoaW5nIGxpa2UgYSBzaGFyZWQgcmluZyBidWZmZXIgb3IgbWV0YWRhdGEgYWNjZXNzIGluIHRoZSBYRFAgY29udGV4dCBpcyBzdGlsbCBoYW5naW5nLiBJdCBkb2Vzbid0IGxvb2sgbGlrZSBpdCBkb2VzIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZSwgYnV0IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgcXVpY2tseSBydWxlIG91dCBgdmV0aGAncyBkaXJlY3QgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBNeSB0aG91Z2h0cyBpbW1lZGlhdGVseSBqdW1wIHRvIGBuZXQveGRwL3hzay5jYC4gSSBrbm93IHRoYXQncyB3aGVyZSB0aGUgWERQIHNvY2tldCBpbXBsZW1lbnRhdGlvbiBsaXZlcyBhbmQgaXMgdGhlcmVmb3JlIHdoZXJlIGFueSBYRFAtcmVsYXRlZCBtZXRhZGF0YSBoYW5kbGluZyBpcyBsaWtlbHkgbG9jYXRlZC4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGluZm8gSSBuZWVkIHRvIGRldGVybWluZSBub3cgaXMgd2hldGhlciB0aGlzIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uIGlzIHVzZWQuIElmIGl0IGlzLCB0aGVuIHRoZSBtZWNoYW5pc20gaXMgdGhlcmUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgdXNhZ2UuIElmIG5vdCwgSSBjYW4gY29udGludWUgdG8gaW52ZXN0aWdhdGUgb3RoZXIgbG9jYXRpb25zIG9mIHBvdGVudGlhbCBhY2Nlc3MuIEknbGwgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1MDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDozNi4wMzQ1NjI3OTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDAxNTU4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC94c2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MzYuMDgxNTc0Nzg1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzkxMzQwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgWERQIERhdGEgUGF0aCoqXG5cbk9rYXksIG5vLiBMZXQncyByZS1ldmFsdWF0ZSB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIG1ldGFkYXRhIGdldHMgaGFuZGxlZC4gSSByZWNhbGwgc2VlaW5nIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaW4gYG5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jYCB3aXRoaW4gYHhwX3Jhd19nZXRfY3R4YC4gTm93LCBpcyBgeHBfcmF3X2dldF9jdHhgIHVzZWQgYW55d2hlcmUgZWxzZT8gVGltZSB0byBkb3VibGUtY2hlY2suIEkgZGlkIGEgcXVpY2sgZ3JlcCBhbHJlYWR5LCBhbmQgaXQgbG9va3MgbGlrZSBgeHBfcmF3X2dldF9jdHhgIGlzICpvbmx5KiB1c2VkIGluIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgd2l0aGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIHdoaWNoIGluIHR1cm4sIGlzIG9ubHkgdXNlZCBieSBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiBJIHRoaW5rIEkgZm91bmQgaXQuXG5cbkFuZCwgb2YgY291cnNlLCBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGlzICpzb2xlbHkqIHVzZWQgaW4gYGlkcGZgLiBJIGtuZXcgaXQhXG5cbkhvbGQgb24sIEkgYWxtb3N0IG1pc3NlZCBzb21ldGhpbmcuIFdoYXQgYWJvdXQgdGhhdCBjaGFuZ2UgaW4gYHN0bW1hY194ZHBfeG1pdF96Y2A/IFRoYXQgc25pcHBldC4uLlxuXG5gYGBjXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuYGBgXG5cbi4uLnJlbW92ZXMgdGhlIGNoZWNrIGZvciBgbWF4X3NkdWAgaW4gYHN0bW1hY194ZHBfeG1pdF96Y2AuICBCdXQsIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXNuJ3QgZXZlbiByZWFjaGFibGUgaW4gUUVNVS4gVGhhdCdzIGEgZGVhZCBlbmQsIHRoZW4uXG5cbkxldCdzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gSXMgdGhlcmUgKmFueSogb3RoZXIgZHJpdmVyIEkgaGF2ZW4ndCBjb25zaWRlcmVkPyBJIG5lZWQgdG8gbG9vayBmb3IgYFhEUF9UWF9NRVRBREFUQWAgZGlyZWN0bHkgdG8gc2VlIHdoYXQgZWxzZSBtaWdodCBiZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4MTgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6NDEuOTYwNzExNTgxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE5OTM4ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhEUF9UWF9NRVRBREFUQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD00MT10aGUgYGB4c2tfdHhfbWV0YWRhdGFgYCkuIEZvciB0aGUgZnJhbWVzIHRoYXQgc2hvdWxkbid0IGNhcnJ5XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6NDI6YW55IG1ldGFkYXRhIChpLmUuLCB0aGUgb25lcyB0aGF0IGRvbid0IGhhdmUgYGBYRFBfVFhfTUVUQURBVEFgYCBvcHRpb24pLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTQzLXRoZSBtZXRhZGF0YSBhcmVhIGlzIGlnbm9yZWQgYnkgdGhlIGtlcm5lbCBhcyB3ZWxsLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q9NTk9QmVzaWRlcyB0aGUgZmxhZ3MgYWJvdmUsIGluIG9yZGVyIHRvIHRyaWdnZXIgdGhlIG9mZmxvYWRzLCB0aGUgZmlyc3RcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo2MDpwYWNrZXQncyBgYHN0cnVjdCB4ZHBfZGVzY2BgIGRlc2NyaXB0b3Igc2hvdWxkIHNldCBgYFhEUF9UWF9NRVRBREFUQWBgXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNjEtYml0IGluIHRoZSBgYG9wdGlvbnNgYCBmaWVsZC4gQWxzbyBub3RlIHRoYXQgaW4gYSBtdWx0aS1idWZmZXIgcGFja2V0XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMjI9X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjQte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMyNTpcXHRpZiAoIXBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyNi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaD0xNjc9c3RydWN0IHhkcF9kZXNjIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODItLyogVFggcGFja2V0IGNhcnJpZXMgdmFsaWQgbWV0YWRhdGEuICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjE4MzojZGVmaW5lIFhEUF9UWF9NRVRBREFUQSAoMSBcXHUwMDNjXFx1MDAzYyAxKVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODQtXFxuLS1cXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwMzAtXFx0XFx0c2tiX3Jlc2VydmUoc2tiLCBocik7XFxubmV0L3hkcC94c2suYzoxMDMxOlxcdFxcdGlmIChkZXNjLVxcdTAwM2VvcHRpb25zIFxcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XFxubmV0L3hkcC94c2suYy0xMDMyLVxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsIHBvb2wsIGhyKTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTExOS1cXG5uZXQveGRwL3hzay5jOjExMjA6XFx0XFx0XFx0aWYgKGRlc2MtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpIHtcXG5uZXQveGRwL3hzay5jLTExMjEtXFx0XFx0XFx0XFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYyxcXG4tLVxcbm5ldC94ZHAveHNrX3F1ZXVlLmg9MTU0PXN0YXRpYyBpbmxpbmUgYm9vbCB4cF91bnVzZWRfb3B0aW9uc19zZXQodTMyIG9wdGlvbnMpXFxubmV0L3hkcC94c2tfcXVldWUuaC0xNTUte1xcbm5ldC94ZHAveHNrX3F1ZXVlLmg6MTU2OlxcdHJldHVybiBvcHRpb25zIFxcdTAwMjYgfihYRFBfUEtUX0NPTlREIHwgWERQX1RYX01FVEFEQVRBKTtcXG5uZXQveGRwL3hza19xdWV1ZS5oLTE1Ny19XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg9MTY3PXN0cnVjdCB4ZHBfZGVzYyB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTgyLS8qIFRYIHBhY2tldCBjYXJyaWVzIHZhbGlkIG1ldGFkYXRhLiAqL1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxODM6I2RlZmluZSBYRFBfVFhfTUVUQURBVEEgKDEgXFx1MDAzY1xcdTAwM2MgMSlcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTg0LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xOTItXFx0dHhfZGVzYy1cXHUwMDNlbGVuID0gc2l6ZW9mKCpldGgpICsgc2l6ZW9mKCppcGgpICsgc2l6ZW9mKCp1ZHBoKSArIFVEUF9QQVlMT0FEX0JZVEVTO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jOjE5MzpcXHR0eF9kZXNjLVxcdTAwM2VvcHRpb25zIHw9IFhEUF9UWF9NRVRBREFUQTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xOTQtXFx0eHNrX3JpbmdfcHJvZF9fc3VibWl0KFxcdTAwMjZ4c2stXFx1MDAzZXR4LCAxKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYz0zNTI9c3RhdGljIHZvaWQgcGluZ19wb25nKHN0cnVjdCB4c2sgKnhzaywgdm9pZCAqcnhfcGFja2V0LCBjbG9ja2lkX3QgY2xvY2tfaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtNDM3LVxcdG1lbWNweShkYXRhLCByeF9wYWNrZXQsIGxlbik7IC8qIGRvbid0IHNoYXJlIHVtZW0gY2h1bmsgZm9yIHNpbXBsaWNpdHkgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6NDM4OlxcdHR4X2Rlc2MtXFx1MDAzZW9wdGlvbnMgfD0gWERQX1RYX01FVEFEQVRBO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy00MzktXFx0dHhfZGVzYy1cXHUwMDNlbGVuID0gbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDo0My41ODA2NTY2MzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODczMTE0ODI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipYRFBfVFhfTUVUQURBVEEgYW5kIHRoZSBJbXBsaWNhdGlvbnMgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkganVzdCBzYXcgdGhhdCBgbmV0L3hkcC94c2suY2AgbWFrZXMgdXNlIG9mIGBYRFBfVFhfTUVUQURBVEFgLiBUaGF0J3MgYXQgbGluZSAxMDMxLCBzcGVjaWZpY2FsbHk6XG5cbmBgYGNcbmlmIChkZXNjLVx1MDAzZW9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xuXHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7XG59XG5gYGBcblxuQnV0IHRoaXMgcGF0Y2ggZG9lc24ndCAqZGlyZWN0bHkqIHRvdWNoIGBuZXQveGRwL3hzay5jYC4gVGhlIGNoYW5nZXMgYXJlIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGBpbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhgLCBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgLCBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCwgYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAsIGFuZCBhIGZldyBkcml2ZXJzOiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGluZGlyZWN0IGltcGFjdD9cblxuVGhlIFVBUEkgY2hhbmdlIGluIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgIGlzIHdoZXJlIHRoZSBwb3RlbnRpYWwgZ290Y2hhIGlzLiBUaGVyZSdzIGEgbmV3IGBfX3UzMiByZXNlcnZlZDtgIGZpZWxkIGJlaW5nIGFkZGVkLiBOb3csIGRvZXMgKnRoYXQqIGltcGFjdCB0aGUgYHhza19za2JfbWV0YWRhdGFgIGZ1bmN0aW9uPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGB4c2tfc2tiX21ldGFkYXRhYCBpbiBgbmV0L3hkcC94c2suY2AgdG8gc2VlIGlmIGl0IHJlbGllcyBvbiBhbnkgb2YgdGhlIHN0cnVjdHVyZSBvciBkYXRhIHRoYXQgYXJlIGluIHRoZSBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDo1Mi4zMTE4MDg2OTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQ4NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19za2JfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC94c2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL3hzay5jPTk1NT1zdGF0aWMgdm9pZCB4c2tfZHJvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZHAveHNrLmMtOTYzLVxcbm5ldC94ZHAveHNrLmM6OTY0OnN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxubmV0L3hkcC94c2suYy05NjUtXFx0XFx0XFx0ICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYywgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwMzEtXFx0XFx0aWYgKGRlc2MtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpIHtcXG5uZXQveGRwL3hzay5jOjEwMzI6XFx0XFx0XFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYywgcG9vbCwgaHIpO1xcbm5ldC94ZHAveHNrLmMtMTAzMy1cXHRcXHRcXHRpZiAodW5saWtlbHkoZXJyKSkge1xcbi0tXFxubmV0L3hkcC94c2suYz0xMDg1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbi0tXFxubmV0L3hkcC94c2suYy0xMTIwLVxcdFxcdFxcdGlmIChkZXNjLVxcdTAwM2VvcHRpb25zIFxcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XFxubmV0L3hkcC94c2suYzoxMTIxOlxcdFxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsXFxubmV0L3hkcC94c2suYy0xMTIyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICB4cy1cXHUwMDNlcG9vbCwgaHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDo1Mi4zNjM1NjYwNzFaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3NDkyODY0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgbmV0d29yayBwcm9ncmFtbWluZywgcG9zc2libHkgd29ya2luZyB3aXRoIFhEUDpcblxuKipBbmFseXppbmcgYHhza19za2JfbWV0YWRhdGFgKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gYHhza19za2JfbWV0YWRhdGFgLiBUaGF0IG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgY3J1Y2lhbCB0byB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgWERQIHNvY2tldCAoWFNLKSBhbmQgdGhlIGtlcm5lbCdzIFNLQiAoU29ja2V0IEJ1ZmZlcikuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIHRoZSBYRFAgcHJvZ3JhbSBncmFicyBvciBoYW5kcyBvZmYgY29udHJvbCBvZiBwYWNrZXRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHN0cnVjdHVyZSBpbnRpbWF0ZWx5LiBJIHN1c3BlY3QgaXQncyB0aGUgZ2x1ZSBob2xkaW5nIHRvZ2V0aGVyIHRoZSBYU0sncyBlZmZpY2llbnQgemVyby1jb3B5IG1lY2hhbmlzbSB3aXRoIHRoZSBtb3JlIHRyYWRpdGlvbmFsIFNLQiB3b3JsZC4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIG1lbWJlcnMgd2l0aGluIGl0LiBQcm9iYWJseSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIHBvaW50ZXJzIHRvIHRoZSBwYWNrZXQgZGF0YSwgdGhlIG1ldGFkYXRhIGZsYWdzLCBtYXliZSBzb21lIHNvcnQgb2YgaW5kZXggaW50byB0aGUgQUZfWERQIHNoYXJlZCBtZW1vcnkgcmluZy4gSXMgdGhlcmUgYSBkZXNjcmlwdG9yPyBIb3cgaXMgcmVmZXJlbmNlIGNvdW50aW5nIGhhbmRsZWQgYmV0d2VlbiBYRFAgcHJvZ3JhbSBhbmQgdGhlIFNLQj8gSXMgdGhpcyBzdHJ1Y3R1cmUgdXNlZCBpbiBib3RoIHRoZSBUWCBhbmQgUlggcGF0aHMsIG9yIGlzIGl0IHNwZWNpZmljIHRvIG9uZSBkaXJlY3Rpb24/IEkgYmV0IHRoZXJlIGFyZSBudWFuY2VzIGhlcmUgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50LCBjb25jdXJyZW5jeSwgYW5kIGVycm9yIGhhbmRsaW5nLiBHb3QgdG8gc3RhcnQgZXhhbWluaW5nIHRoZSBhY3R1YWwgc3RydWN0IGRlZmluaXRpb24gYW5kIHNlZSBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgdmFyaW91cyBrZXJuZWwgZnVuY3Rpb25zLi4uIFRoaXMgd2lsbCB0ZWxsIG1lIG1vcmUgYWJvdXQgaXRzIHB1cnBvc2UuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgaW4gYm90aCB0aGUgUlggYW5kIFRYIHBhdGhzIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIE9rYXksIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA0MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIwOjU2LjYzODQ5ODQ3NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hkcC94c2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NjQsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NjQ6XFx0c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcXG4gOTY1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbiA5NjY6XFx0XFx0XFx0XFx0ICAgIHUzMiBocilcXG4gOTY3OlxcdHtcXG4gOTY4OlxcdFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xcbiA5Njk6XFx0XFx0dTE2IGNzdW1fc3RhcnQsIGNzdW1fb2Zmc2V0O1xcbiA5NzA6XFx0XFx0dTY0IGZsYWdzO1xcbiA5NzE6XFx0XFxuIDk3MjpcXHRcXHRpZiAodW5saWtlbHkocG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuID09IDApKVxcbiA5NzM6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDk3NDpcXHRcXG4gOTc1OlxcdFxcdG1ldGEgPSBidWZmZXIgLSBwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW47XFxuIDk3NjpcXHRcXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEsIFxcdTAwMjZmbGFncykpKVxcbiA5Nzc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDk3ODpcXHRcXG4gOTc5OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XFxuIDk4MDpcXHRcXHRcXHRjc3VtX3N0YXJ0ID0gUkVBRF9PTkNFKG1ldGEtXFx1MDAzZXJlcXVlc3QuY3N1bV9zdGFydCk7XFxuIDk4MTpcXHRcXHRcXHRjc3VtX29mZnNldCA9IFJFQURfT05DRShtZXRhLVxcdTAwM2VyZXF1ZXN0LmNzdW1fb2Zmc2V0KTtcXG4gOTgyOlxcdFxcbiA5ODM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KGNzdW1fc3RhcnQgKyBjc3VtX29mZnNldCArXFxuIDk4NDpcXHRcXHRcXHRcXHQgICAgIHNpemVvZihfX3N1bTE2KSBcXHUwMDNlIGRlc2MtXFx1MDAzZWxlbikpXFxuIDk4NTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gOTg2OlxcdFxcbiA5ODc6XFx0XFx0XFx0c2tiLVxcdTAwM2Vjc3VtX3N0YXJ0ID0gaHIgKyBjc3VtX3N0YXJ0O1xcbiA5ODg6XFx0XFx0XFx0c2tiLVxcdTAwM2Vjc3VtX29mZnNldCA9IGNzdW1fb2Zmc2V0O1xcbiA5ODk6XFx0XFx0XFx0c2tiLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9QQVJUSUFMO1xcbiA5OTA6XFx0XFxuIDk5MTpcXHRcXHRcXHRpZiAodW5saWtlbHkocG9vbC1cXHUwMDNldHhfc3dfY3N1bSkpIHtcXG4gOTkyOlxcdFxcdFxcdFxcdGludCBlcnI7XFxuIDk5MzpcXHRcXG4gOTk0OlxcdFxcdFxcdFxcdGVyciA9IHNrYl9jaGVja3N1bV9oZWxwKHNrYik7XFxuIDk5NTpcXHRcXHRcXHRcXHRpZiAoZXJyKVxcbiA5OTY6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gOTk3OlxcdFxcdFxcdH1cXG4gOTk4OlxcdFxcdH1cXG4gOTk5OlxcdFxcbjEwMDA6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUpXFxuMTAwMTpcXHRcXHRcXHRza2ItXFx1MDAzZXNrYl9tc3RhbXBfbnMgPSBSRUFEX09OQ0UobWV0YS1cXHUwMDNlcmVxdWVzdC5sYXVuY2hfdGltZSk7XFxuMTAwMjpcXHRcXHRpZiAoIShmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUCkpXFxuMTAwMzpcXHRcXHRcXHRtZXRhID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6NTYuNjM4NjE4OTI0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTEzOTEwMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGp1c3Qgb2NjdXJyZWQgdG8gbWUgd2hpbGUgYW5hbHl6aW5nIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKipcblxuT2theSwgc28gSSBzZWUgYHhza19za2JfbWV0YWRhdGFgIGNhbGxzIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBNeSBzcGlkZXIgc2Vuc2VzIGFyZSB0aW5nbGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IHZhbGlkYXRpb24gZW50YWlscy4gTm93LCBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIHRoYXQgcmluZ3MgYSBiZWxsLiBMZXQncyBoZWFkIG92ZXIgdG8gdGhhdCBpbmNsdWRlIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHBvb2xgLCBgbWV0YWAsIGFuZCBgZmxhZ3NgIGFyZSBhbGwgYWJvdXQgaW4gdGhpcyBjb250ZXh0IGFuZCBob3cgdGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdvcmtzLiBIb3BlZnVsbHksIHRoaXMgc2hlZHMgc29tZSBsaWdodCBvbiB0aGUgb3ZlcmFsbCBmbG93LCBzcGVjaWZpY2FsbHkgaG93IHRoZSBTS0IgbWV0YWRhdGEgaXMgYmVpbmcgdHJlYXRlZCBhbmQgaXRzIHJvbGUgaW4gdHJhbnNtaXNzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA1OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6MDAuMTkwMDEyODk5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI2NDpcXHR4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4gMjY1OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsIHU2NCAqZmxhZ3MpXFxuIDI2NjpcXHR7XFxuIDI2NzpcXHRcXHQqZmxhZ3MgPSBSRUFEX09OQ0UobWV0YS1cXHUwMDNlZmxhZ3MpO1xcbiAyNjg6XFx0XFx0aWYgKCpmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxcbiAyNjk6XFx0XFx0XFx0aWYgKHBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbiBcXHUwMDNjXFxuIDI3MDpcXHRcXHRcXHQgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpXFxuIDI3MTpcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDI3MjpcXHRcXHRyZXR1cm4gISgqZmxhZ3MgXFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpO1xcbiAyNzM6XFx0fVxcbiAyNzQ6XFx0XFxuIDI3NTpcXHQvKipcXG4gMjc2OlxcdCAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXFxuIDI3NzpcXHQgKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXFxuIDI3ODpcXHQgKiAgQHBvb2w6IHBvaW50ZXIgdG8gQUZfWERQIGJ1ZmZlciBwb29sLCB1c2VkIHRvIHZhbGlkYXRlIHRoZSBtZXRhZGF0YVxcbiAyNzk6XFx0ICogIEBwbWV0YTogcG9pbnRlciB0byBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXFxuIDI4MDpcXHQgKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xcbiAyODE6XFx0ICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFcXG4gMjgyOlxcdCAqXFxuIDI4MzpcXHQgKiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBuZXR3b3JraW5nIGRldmljZSB3aGVuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjAwLjE5MDA5OTAyOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTA2NTgzNjA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhTSyBUWCBNZXRhZGF0YSBDaGFuZ2UgYW5kIFBvdGVudGlhbCBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgWFNLIGNoYW5nZSByZWxhdGVkIHRvIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSB0aGF0IHRoZXkndmUgYWRkZWQgYSBgcmVzZXJ2ZWRgIGZpZWxkIHRvIHRoZSBgeHNrX3R4X21ldGFkYXRhYCBzdHJ1Y3R1cmUsIHdoaWNoIHNoaWZ0cyB0aGUgb2Zmc2V0IG9mIGByZXF1ZXN0LmxhdW5jaF90aW1lYC4gIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhpcyBjb3VsZCBicmVhayBjb21wYXRpYmlsaXR5IGlmIHVzZXJzcGFjZSBjb2RlIHdhcyBjb21waWxlZCB3aXRoIHRoZSAqb2xkKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgdXNlci1zcGFjZSBwcm9ncmFtIHJlbGllcyBvbiBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSBYU0sgaGVhZGVycywgd2hlcmUgdGhlIGB0eF9tZXRhZGF0YV9sZW5gIGl0IHNldHMgaW4gYHN0cnVjdCB4ZHBfdW1lbV9yZWdgIHdvdWxkIGJlIHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIG5ldyBzdHJ1Y3R1cmUgc2l6ZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gIEknbSB0aGlua2luZywgaWYgdGhleSBwYXNzZWQgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAgZnJvbSB0aGUgb2xkIGhlYWRlciwgdGhhdCBzaXplIHdvdWxkIGhhdmUgYmVlbiAxMiBieXRlcyBpbml0aWFsbHkgKG9yIHBvdGVudGlhbGx5IDE2IGJ5dGVzIGR1ZSB0byBwYWRkaW5nKS4gIE5vdywgd2l0aCB0aGUgcmVzZXJ2ZWQgZmllbGQsIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBzaXplIGZvciBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGFyY2hpdGVjdHVyZXMuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgbGF5b3V0IG9mIHRoZSBvbGQgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIHN0cnVjdDpcblxuYGBgY1xuc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG5cdF9fdTY0IGZsYWdzOyAvLyA4IGJ5dGVzXG5cblx0dW5pb24ge1xuXHRcdHN0cnVjdCB7XG5cdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTSAqL1xuXG5cdFx0XHQvKiBPZmZzZXQgZnJvbSBkZXNjLVx1MDAzZWFkZHIgd2hlcmUgY2hlY2tzdW1taW5nIHNob3VsZCBzdGFydC4gKi9cblx0XHRcdF9fdTE2IGNzdW1fc3RhcnQ7IC8vIDIgYnl0ZXNcblx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cblx0XHRcdF9fdTE2IGNzdW1fb2Zmc2V0OyAvLyAyIGJ5dGVzXG5cblx0XHRcdC8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovXG5cdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuXHRcdFx0X191NjQgbGF1bmNoX3RpbWU7IC8vIDggYnl0ZXNcblx0XHR9IHJlcXVlc3Q7IC8vIDEyIGJ5dGVzLCBidXQgd2l0aCA4LWJ5dGUgYWxpZ25tZW50IGl0IGlzIHBhZGRlZCB0byAxNiBieXRlcz9cbmBgYFxuXG5JIHJlYWxpemUgYF9fdTY0IGxhdW5jaF90aW1lYCByZXF1aXJlcyA4LWJ5dGUgYWxpZ25tZW50IG9uIDY0LWJpdCBhcmNoaXRlY3R1cmVzLiBUaGlzIG1lYW5zIHRoYXQgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMgdGhlIGNvbXBpbGVyIGluc2VydHMgcGFkZGluZy4gU28gaW4gdGhlIG9sZCBzdHJ1Y3QsIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGZpZWxkIHdhcyBhY3R1YWxseSAxNiBieXRlcyAocGFkZGluZyBhZnRlciBgY3N1bV9vZmZzZXRgKS4gVGhlIGVudGlyZSBzdHJ1Y3R1cmUncyBzaXplIHdvdWxkIHRoZW4gYmUgOCAoZmxhZ3MpICsgMTYgKHJlcXVlc3QpID0gMjQgYnl0ZXMuICBIb3dldmVyLCBvbiAzMi1iaXQgbWFjaGluZXMsIGBfX3U2NGAgb25seSByZXF1aXJlcyA0LWJ5dGUgYWxpZ25tZW50LCBzbyB0aGUgYHJlcXVlc3RgIHN0cnVjdHVyZSBpcyBvbmx5IDEyIGJ5dGVzLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gYSB0b3RhbCBzdHJ1Y3Qgc2l6ZSBvZiA4ICsgMTIgPSAyMCBieXRlcy5cblxuTm93LCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgX191MzIgcmVzZXJ2ZWRgLCB0aGUgYHJlcXVlc3RgIHN0cnVjdHVyZSBiZWNvbWVzOlxuXG5gYGBjXG5zdHJ1Y3Qge1xuXHQvKiBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTSAqL1xuXG5cdC8qIE9mZnNldCBmcm9tIGRlc2MtXHUwMDNlYWRkciB3aGVyZSBjaGVja3N1bW1pbmcgc2hvdWxkIHN0YXJ0LiAqL1xuXHRfX3UxNiBjc3VtX3N0YXJ0OyAvLyAyIGJ5dGVzXG5cdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cblx0X191MTYgY3N1bV9vZmZzZXQ7IC8vIDIgYnl0ZXNcblx0X191MzIgcmVzZXJ2ZWQ7IC8vIDQgYnl0ZXNcblxuXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuXHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuXHRfX3U2NCBsYXVuY2hfdGltZTsgLy8gOCBieXRlc1xufSByZXF1ZXN0OyAvLyAxNiBieXRlc1xuYGBgXG5cblRoZSBgcmVxdWVzdGAgc3RydWN0dXJlIHdvdWxkIGJlIDIgKyAyICsgNCArIDggPSAxNiBieXRlcyBvbiBib3RoIDMyIGFuZCA2NCBiaXQgYXJjaGl0ZWN0dXJlcy4gVG90YWwgc2l6ZSB3b3VsZCBiZSA4IChmbGFncykgKyAxNiAocmVxdWVzdCkgPSAyNCBieXRlcy5cblxuU28sIHRoaXMgcGF0Y2ggZWZmZWN0aXZlbHkgZml4ZXMgYSAzMi1iaXQvNjQtYml0IEFCSSBtaXNtYXRjaCwgY29vbCFcblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBVQVBJIGNoYW5nZSBpbnRyb2R1Y2VzIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbmVlZCB0byBiZSBmdXp6ZWQuICBUaGUgY2hhbmdlZCBsYXlvdXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGFuZCBleHBsaWNpdCBwYWRkaW5nIG9uIDY0LWJpdCBtYWNoaW5lcyB3YXJyYW50cyBjbG9zZXIgaW5zcGVjdGlvbi4gIEFsc28sIEkgbm90aWNlZCB0aGUgcGF0Y2ggbW9kaWZpZXMgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCB0byBjaGVjayBgb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYCwgd2hpY2ggY291bGQgYmUgYSBjaGFuZ2UgcG9pbnQuXG5cbkknbSBmb2xsb3dpbmcgdGhlIGNhbGwgY2hhaW46IGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaXMgdXNlZCBpbiBgeHBfcmF3X2dldF9jdHhgLCB3aGljaCBpcyBpbiB0dXJuIHVzZWQgYnkgYHhza19idWZmX3Jhd19nZXRfY3R4YCBhbmQgZmluYWxseSBpbiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiAgSSBjaGVja2VkIGJlZm9yZSBpZiBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyB1c2VkXG5cbiIsIklucHV0VG9rZW5zIjozMjc0NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToxNS4yNTU5Mzc5MjRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjI2NTU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9wb29sXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkxOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD04MD1zdHJ1Y3QgdHNuZXBfdHgge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cXHRpbnQgaW5jcmVtZW50X293bmVyX2NvdW50ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDo5MzpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMC1cXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MTMxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cXHRzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHBfYmF0Y2g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyMzI6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD0yNjA9dTMyIHRzbmVwX2dldF9pcnFfY29hbGVzY2Uoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyNjE6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjA3ND1zdGF0aWMgaW50IHRzbmVwX25ldGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwOTY6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9MjE9c3RhdGljIGludCB0c25lcF94ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XFx0XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9NTg9c3RhdGljIGludCB0c25lcF94ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtNTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTYxLVxcdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz04MD1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTUwNi1cXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmg6NTA3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVxcdHN0cnVjdCBkcGFhMl9ldGhfYnAgKmJwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo4NDc6aW50IGRwYWEyX3hza19zZXR1cF9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtODQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTE3Mz1zdGF0aWMgaW50IGRwYWEyX3hza19kaXNhYmxlX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKGRldiwgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc2LVxcdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MjIwPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2VuYWJsZV9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcXHRcXHRcXHRcXHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTIyMi1cXHRcXHRcXHRcXHQgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0zMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU0NC1cXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTQ1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oPTU2MT1zdHJ1Y3QgZmVjX2VuZXRfcHJpdl9yeF9xIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NjMtXFx0dW5pb24gZmVjX3J4X2J1ZmZlciByeF9idWZbUlhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTQ4Mj1zdGF0aWMgYm9vbCBmZWNfZW5ldF94c2tfeG1pdChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE0ODM6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cXHRcXHRcXHQgICAgICB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNTY1PXN0YXRpYyBpbnQgZmVjX2VuZXRfdHhfcXVldWUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTE3MTktXFx0aWYgKHR4cS1cXHUwMDNleHNrX3Bvb2wpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNzIwOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0xNzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDQyMD1mZWNfYWxsb2NfbmV3X3J4cV94c2soc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCwgaW50IHF1ZXVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQ0MjE6XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDQyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTIyPXN0YXRpYyBpbnQgZmVjX3hza19yZXN0YXJ0X25hcGkoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTIzOlxcdFxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1MjQtXFx0XFx0XFx0XFx0dTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU2MT1zdGF0aWMgaW50IGZlY19lbmFibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTYyOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVxcdFxcdFxcdCAgICAgICB1MTYgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTkyPXN0YXRpYyBpbnQgZmVjX2Rpc2FibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTUtXFx0c3RydWN0IGZlY19lbmV0X3ByaXZfdHhfcSAqdHhxID0gZmVwLVxcdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU5NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqb2xkX3Bvb2wgPSB0eHEtXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTctXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ2MTg9c3RhdGljIGludCBmZWNfc2V0dXBfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NjE5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXFx0XFx0XFx0ICAgICAgdTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaD0yNDI9c3RydWN0IGd2ZV9yeF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQzLVxcdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDUtXFx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9NDczPXN0cnVjdCBndmVfdHhfcmluZyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY1OS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3RhdHNzOyAvKiBzeW5jIHN0YXRzIGZvciAzMmJpdCBhcmNocyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY2MS1cXHR1NjQgeGRwX3hza19zZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyMjc9c3RhdGljIGludCBndmVfcmVnX3hza19wb29sKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VyeF9jZmcubnVtX3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjEyODY6XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE2MzA6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjMxLVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Nzk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpX3R4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxNjg1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjg2LVxcdGludCB0eF9xaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYz0xMDg0PXN0YXRpYyBib29sIGd2ZV94c2tfdHhfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV90eF9yaW5nICp0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jOjEwODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB0eC1cXHUwMDNleHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmMtMTA4OC1cXHRzdHJ1Y3QgeGRwX2Rlc2MgZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MzQwMj1zdGF0aWMgdm9pZCBpNDBlX2NvbmZpZ194cHNfdHhfcmluZyhzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjM0MjQ6c3RhdGljIHN0cnVjdCB4c2tfYnVmZl9wb29sICppNDBlX3hza19wb29sKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg9MzI3PXN0cnVjdCBpNDBlX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg6NDAyOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oLTQwMy19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6ODM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVxcdFxcdFxcdFxcdHUxNiBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE0MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjE0MTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtMTQyLVxcdGJvb2wgaWZfcnVubmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxODM6aW50IGk0MGVfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXFx0XFx0XFx0dTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz02MzA9Ym9vbCBpNDBlX2NsZWFuX3hkcF90eF9pcnEoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjYzMjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNjMzLVxcdHUzMiBpLCBjb21wbGV0ZWRfZnJhbWVzLCB4c2tfZnJhbWVzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz03NDY9dm9pZCBpNDBlX3hza19jbGVhbl90eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVxcdHUxNiBudGMgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuLCBudHUgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NzQ5OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpicCA9IHR4X3JpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy03NTAtXFx0c3RydWN0IGk0MGVfdHhfYnVmZmVyICp0eF9iaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0xOT1zdHJ1Y3QgbmV0X2RldmljZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmg6MjA6c3RydWN0IHhza19idWZmX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTIzPWludCBpNDBlX3F1ZXVlX3BhaXJfZW5hYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgcXVldWVfcGFpcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmgtMjUtXFx0XFx0XFx0dTE2IHFpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5My0gKiBhdHRhY2hlZCBhbmQgY29uZmlndXJlZCBhcyB6ZXJvLWNvcHksIE5VTEwgb3RoZXJ3aXNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHR1MTYgcWlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaDo3OTg6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4MC1cXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNldHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMjgxOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRSh0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cXHRcXHRib29sIHdkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMC1cXHRpY2VfZm9yX2VhY2hfcnhfcmluZyhyeF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMzExOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMi1cXHRcXHRpbnQgY2xlYW5lZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzA0LVxcdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzA1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaD0zNDk9c3RydWN0IGljZV90eF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozNjU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTEyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxMjY6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xMjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE0ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxNDU6aWNlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE3ND1pY2VfcmVhbGxvY19yeF94ZHBfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIGJvb2wgcG9vbF9wcmVzZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xOTYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxOTc6aW50IGljZV94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI1OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNjEtXFx0XFx0XFx0ICAgICB1bmlvbiBpY2VfMzJiX3J4X2ZsZXhfZGVzYyAqcnhfZGVzYywgdTE2IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoyOTM6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0zNDI9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNjM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NDMyPXN0YXRpYyBpbnQgaWNlX3htaXRfeGRwX3R4X3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0MzQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDczLVxcdFxcdHR4X2Rlc2MtXFx1MDAzZWNtZF90eXBlX29mZnNldF9ic3ogPSBpY2VfYnVpbGRfY3RvYigwLCAwLCBzaXplLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQ3NDpcXHRcXHQvKiBhY2NvdW50IGZvciBlYWNoIHhkcF9idWZmIGZyb20geHNrX2J1ZmZfcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDc1LVxcdFxcdHhkcF9yaW5nLVxcdTAwM2V4ZHBfdHhfYWN0aXZlKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTUxNT1pY2VfcnVuX3hkcF96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVxcdCAgICAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTE3OlxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTY4OlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTU2OS1cXHRcXHRcXHRpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MDk9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0KHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MTA6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgc3RydWN0IHhkcF9kZXNjICpkZXNjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MzQ9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0X2JhdGNoKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTczNi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc3MDpcXHRcXHRcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXFx0XFx0XFx0XFx0c3RydWN0IHhkcF9kZXNjICpkZXNjcywgdTMyIG5iX3BrdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc5MTpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTEwPXN0cnVjdCBpY2VfdnNpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoxMzppbnQgaWNlX3hza19wb29sX3NldHVwKHN0cnVjdCBpY2VfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTQtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTU9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTctXFx0XFx0XFx0aW50IGJ1ZGdldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjA6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yMS1ib29sIGljZV94c2tfYW55X3J4X3JpbmdfZW5hKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0yMz12b2lkIGljZV94c2tfY2xlYW5feGRwX3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyNDpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTM0PXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgX19hbHdheXNfdW51c2VkICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo0MjpcXHRcXHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC00My1cXHRcXHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NDk9aWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgX19hbHdheXNfdW51c2VkICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XFx0XFx0ICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cXHRcXHQgICAgaW50IF9fYWx3YXlzX3VudXNlZCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTU3PWljZV9hbGxvY19yeF9idWZzX3pjKHN0cnVjdCBpY2VfcnhfcmluZyBfX2Fsd2F5c191bnVzZWQgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo1ODpcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01OS1cXHRcXHQgICAgIHUxNiBfX2Fsd2F5c191bnVzZWQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2My1cXHRcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4c2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjUtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NjQzPXN0cnVjdCBpZHBmX3R4X3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjU5LVxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjY2MDpcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTY2MS1cXHR9O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaD03MjA9bGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHN0cnVjdCBpZHBmX3R4X3F1ZXVlLCA2NCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcXHUwMDI2eGRwX2J1ZmYgZm9yIFhTayBSeCBidWZmZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3MzQ6ICogQHBvb2w6IFxcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTczNS0gKiBAaGRyX2J1ZjogXFx1MDAyNmxpYmV0aF9mcWUgZm9yIGhlYWRlciBidWZmZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTc1NT1zdHJ1Y3QgaWRwZl9idWZfcXVldWUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXFx0XFx0XFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3NjU6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjYtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MjY9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfYnVmcShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVxcdGNvbnN0IHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMgPSBcXHUwMDI2dnBvcnQtXFx1MDAzZWRmbHRfcXZfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXFx0dTMyIHFpZCA9IFUzMl9NQVg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTgtXFx0dTMyIHFpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9Nzk9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfY29tcGxxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6ODI6XFx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04My1cXHR1MzIgcWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz01NTQ9aW50IGlkcGZfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IGJwZi1cXHUwMDNleHNrLnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXFx0dTMyIHFpZCA9IGJwZi1cXHUwMDNleHNrLnF1ZXVlX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTMxOT1zdHJ1Y3QgaWdiX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjM2NTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2Ni19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU2PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODU5OnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODYxPWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NjI6XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjMtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04NjQ9Ym9vbCBpZ2JfYWxsb2NfcnhfYnVmZmVyc196YyhzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2NTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY2LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODY3PWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4Njg6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCBjb25zdCBpbnQgYnVkZ2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODY5OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NzAtaW50IGlnYl94c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxaWQsIHUzMiBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODI4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODQtXFx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04MzI3PXN0YXRpYyBib29sIGlnYl9jbGVhbl90eF9pcnEoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIGludCBuYXBpX2J1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgzMzUtXFx0c3RydWN0IGlnYl90eF9idWZmZXIgKnR4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04MzM3LVxcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTU3PXN0YXRpYyB2b2lkIGlnYl90eHJ4X3JpbmdfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo4MzpzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqaWdiX3hza19wb29sKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXFx0aW50IHFpZCA9IHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9OTc9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjk4OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0xMzk9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTQxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVxcdHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTY5OlxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3MC1cXHRcXHQgICAgICAgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3Ny1cXHRcXHRcXHQgICAgIHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjIwMTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9Mjk0PXN0YXRpYyBpbnQgaWdiX3J1bl94ZHBfemMoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoyOTU6XFx0XFx0XFx0ICBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVxcdFxcdFxcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MzQxPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjQ2NTpib29sIGlnYl94bWl0X3pjKHN0cnVjdCBpZ2JfcmluZyAqdHhfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0xNDc9c3RydWN0IGlnY19yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDMtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoyMDQ6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDUtfSBfX19fY2FjaGVsaW5lX2ludGVybm9kZWFsaWduZWRfaW5fc21wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNi1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM3PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAzOTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IHJpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwNDAtXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbnEgPSB0eHJpbmdfdHhxKHJpbmcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYz03NDk9c3RhdGljIHZvaWQgaWdjX3B0cF90eF9yZWdfdG9fc3RhbXAoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXFx0aWYgKHRzdGFtcC1cXHUwMDNlYnVmZmVyX3R5cGUgPT0gSUdDX1RYX0JVRkZFUl9UWVBFX1hTSykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmM9NTY9c3RhdGljIGludCBpZ2NfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTIwLVxcdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxMjE6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxNTk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTYwLVxcdFxcdCAgICAgICB1MTYgcXVldWVfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuaC04LVxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oOjk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmgtMTAtXFx0XFx0ICAgICAgIHUxNiBxdWV1ZV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjE1LjM5ODIxMTA2OVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU4NTA1NzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFGX1hEUCBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkcml2ZXJzIHRoYXQgY3VycmVudGx5IHN1cHBvcnQgQUZfWERQIHplcm8tY29weS4gTGV0IG1lIHNlZS4uLiBJJ3ZlIGdvdCBhIG1lbnRhbCBsaXN0IHN0YXJ0aW5nIHRvIGZvcm0uIFRoZXJlJ3MgYHRzbmVwYCAtIHRoZSBFbmdsZWRlciBUU04gZW5kcG9pbnQuIFRoZW4gdGhlcmUncyB0aGUgRnJlZXNjYWxlIERQQUEyLCB0aGF0J3MgYGRwYWEyYC4gSSByZW1lbWJlciBgZmVjYCBmcm9tIEZyZWVzY2FsZSwgdG9vLiBBbmQgb2YgY291cnNlLCBgZ3ZlYCwgdGhlIEdvb2dsZSBWaXJ0dWFsIE5JQywgaXQncyBwcmV0dHkgY3J1Y2lhbC4gVGhlIHVzdWFsIHN1c3BlY3RzIGZyb20gSW50ZWwgYXJlIGluIHRoZSBtaXg6IGBpNDBlYCwgYGljZWAsIGBpZHBmYCwgYGlnYmAsIGBpZ2NgLCBhbmQgYGl4Z2JlYC4gVGhlbiwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IE1lbGxhbm94IGBtbHg1YC4gQW5kLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGBzdG1tYWNgIGRyaXZlciBmcm9tIFNUTWljcm9lbGVjdHJvbmljcy5cblxuV2FpdCBhIHNlY29uZOKApiBgdmV0aGA/IFZpcnR1YWwgRXRoZXJuZXQ/IEkgY291bGQgaGF2ZSBzd29ybiB0aGF0IEkgZGlkbid0IHRoaW5rIGB2ZXRoYCBzdXBwb3J0ZWQgQUZfWERQIHplcm8tY29weS4gSSBjb3VsZCBiZSBtaXN0YWtlbiwgdGhvdWdoLiBNYXliZSB0aGluZ3MgaGF2ZSBjaGFuZ2VkLCBvciBteSBtZW1vcnkncyBzbGlwcGluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIExldCdzIG1ha2Ugc3VyZSBpdCdzIGNvcnJlY3QuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29kZS4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvdmV0aC5jYCBhbmQgY29uZmlybSB0aGF0IGl0IHJlYWxseSBzdXBwb3J0cyBBRl9YRFAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjIxLjY1NjcxOTYyNFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1NDYyMDE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9wb29sXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6MjIuMTAyMTkyMTlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MDY3ODQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIHZldGggYW5kIFhTSyBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIFZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLCBgdmV0aGAsIHdvdWxkIGxldmVyYWdlIHRoZSBgeHNrX2J1ZmZfcG9vbGAgZm9yIGl0cyB6ZXJvLWNvcHkgY2FwYWJpbGl0aWVzLiBCdXQgc29tZXRoaW5nJ3MgbmlnZ2xpbmcgYXQgbWUuLi4gaXMgdGhhdCBhY3R1YWxseSAqdHJ1ZSo/IExldCBtZSBjbGFyaWZ5IHRoYXQgbWVudGFsIG1vZGVsLiBEb2VzIGB2ZXRoYCBhY3R1YWxseSAqdXNlKiBgeHNrX2J1ZmZfcG9vbGAgZGlyZWN0bHk/IE9yIHBlcmhhcHMsIGNvdWxkIGl0IGJlIGEgbW9yZSBpbmRpcmVjdCBjb25uZWN0aW9uLCBvciBwb3NzaWJseSwgemVyby1jb3B5IGlzIGFjaGlldmVkIGluIGEgZGlmZmVyZW50IHdheSBlbnRpcmVseT8gSG1tbS5cblxuUmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgdG8gY2xhcmlmeSB0aGlzLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3ZldGguY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIGFuZCBzaGVkIHNvbWUgbGlnaHQgb24gaG93IGB2ZXRoYCBoYW5kbGVzIFhEUCBzb2NrZXRzIGFuZCB6ZXJvLWNvcHkgaWYgaXQgKmlzKiB1c2luZyBpdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk2ODQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToyNS44OTI4NzMxNjlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODM3NTA4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToyNS45NDU3MTY3NDdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MTU1NjY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBYRFAvdmV0aCBSZWxhdGlvbnNoaXAqKlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIHZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLCBgdmV0aGAsIGhhZCBzb21lIGludGVncmF0aW9uIHdpdGggWERQLCBwZXJoYXBzIHRocm91Z2ggYHhza2Agc29ja2V0cywgYnV0IG5vdyB0aGF0IEknbSB0aGlua2luZyBhYm91dCBpdCwgdGhhdCBkb2Vzbid0IGZlZWwgcmlnaHQuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgdmV0aCBkcml2ZXIuIFJpZ2h0LCBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3ZldGguY2AgdG8gc2VlIGhvdyBgdmV0aGAgYWN0dWFsbHkgaW50ZXJhY3RzLCBpZiBhdCBhbGwsIHdpdGggWERQJ3MgY2FwYWJpbGl0aWVzLiBUaGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheSB0byBjaGVjayB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDAwMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjI5LjgyNzI3NjU3MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NzM0MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgzNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvdmV0aC5jLTIxLSNpbmNsdWRlIFxcdTAwM2NuZXQveGZybS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3ZldGguYzoyMjojaW5jbHVkZSBcXHUwMDNjbmV0L3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3ZldGguYy0yMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvdmV0aC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTQzPXN0cnVjdCB2ZXRoX3N0YXRzIHtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDQtXFx0dTY0XFx0cnhfZHJvcHM7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ1OlxcdC8qIHhkcCAqL1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjpcXHR1NjRcXHR4ZHBfcGFja2V0cztcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDc6XFx0dTY0XFx0eGRwX2J5dGVzO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0ODpcXHR1NjRcXHR4ZHBfcmVkaXJlY3Q7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ5OlxcdHU2NFxcdHhkcF9kcm9wcztcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTA6XFx0dTY0XFx0eGRwX3R4O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MTpcXHR1NjRcXHR4ZHBfdHhfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MjpcXHR1NjRcXHRwZWVyX3RxX3hkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzpcXHR1NjRcXHRwZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz02MT1zdHJ1Y3QgdmV0aF9ycSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjYyOlxcdHN0cnVjdCBuYXBpX3N0cnVjdFxcdHhkcF9uYXBpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2MzpcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgX19yY3UgKm5hcGk7IC8qIHBvaW50cyB0byB4ZHBfbmFwaSB3aGVuIHRoZSBsYXR0ZXIgaXMgaW5pdGlhbGl6ZWQgKi9cXG5kcml2ZXJzL25ldC92ZXRoLmMtNjQtXFx0c3RydWN0IG5ldF9kZXZpY2VcXHQqZGV2O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NTpcXHRzdHJ1Y3QgYnBmX3Byb2cgX19yY3VcXHQqeGRwX3Byb2c7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY2OlxcdHN0cnVjdCB4ZHBfbWVtX2luZm9cXHR4ZHBfbWVtO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02Ny1cXHRzdHJ1Y3QgdmV0aF9ycV9zdGF0c1xcdHN0YXRzO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02OC1cXHRib29sXFx0XFx0XFx0cnhfbm90aWZ5X21hc2tlZDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6Njk6XFx0c3RydWN0IHB0cl9yaW5nXFx0XFx0eGRwX3Jpbmc7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjcwOlxcdHN0cnVjdCB4ZHBfcnhxX2luZm9cXHR4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03MS1cXHRzdHJ1Y3QgcGFnZV9wb29sXFx0KnBhZ2VfcG9vbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz03ND1zdHJ1Y3QgdmV0aF9wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03Ni1cXHRhdG9taWM2NF90XFx0XFx0ZHJvcHBlZDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6Nzc6XFx0c3RydWN0IGJwZl9wcm9nXFx0XFx0Kl94ZHBfcHJvZztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzgtXFx0c3RydWN0IHZldGhfcnFcXHRcXHQqcnE7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtODEtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjgyOnN0cnVjdCB2ZXRoX3hkcF90eF9icSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzOlxcdHN0cnVjdCB4ZHBfZnJhbWUgKnFbVkVUSF9YRFBfVFhfQlVMS19TSVpFXTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQtXFx0dW5zaWduZWQgaW50IGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTk4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3JxX3N0YXRzX2Rlc2NbXSA9IHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTk6XFx0eyBcXFwieGRwX3BhY2tldHNcXFwiLFxcdFZFVEhfUlFfU1RBVCh4ZHBfcGFja2V0cykgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmM6MTAwOlxcdHsgXFxcInhkcF9ieXRlc1xcXCIsXFx0XFx0VkVUSF9SUV9TVEFUKHhkcF9ieXRlcykgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmMtMTAxLVxcdHsgXFxcImRyb3BzXFxcIixcXHRcXHRWRVRIX1JRX1NUQVQocnhfZHJvcHMpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwMjpcXHR7IFxcXCJ4ZHBfcmVkaXJlY3RcXFwiLFxcdFZFVEhfUlFfU1RBVCh4ZHBfcmVkaXJlY3QpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwMzpcXHR7IFxcXCJ4ZHBfZHJvcHNcXFwiLFxcdFxcdFZFVEhfUlFfU1RBVCh4ZHBfZHJvcHMpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwNDpcXHR7IFxcXCJ4ZHBfdHhcXFwiLFxcdFxcdFZFVEhfUlFfU1RBVCh4ZHBfdHgpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwNTpcXHR7IFxcXCJ4ZHBfdHhfZXJyb3JzXFxcIixcXHRWRVRIX1JRX1NUQVQoeGRwX3R4X2VycikgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmMtMTA2LX07XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9MTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3RxX3N0YXRzX2Rlc2NbXSA9IHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MTExOlxcdHsgXFxcInhkcF94bWl0XFxcIixcXHRcXHRWRVRIX1JRX1NUQVQocGVlcl90cV94ZHBfeG1pdCkgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmM6MTEyOlxcdHsgXFxcInhkcF94bWl0X2Vycm9yc1xcXCIsXFx0VkVUSF9SUV9TVEFUKHBlZXJfdHFfeGRwX3htaXRfZXJyKSB9LFxcbmRyaXZlcnMvbmV0L3ZldGguYy0xMTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0xMTc9c3RhdGljIHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtMTIyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMjM6c3RydWN0IHZldGhfeGRwX2J1ZmYge1xcbmRyaXZlcnMvbmV0L3ZldGguYzoxMjQ6XFx0c3RydWN0IHhkcF9idWZmIHhkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMTI1LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9MjY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmV0aF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0yNzctXFxuZHJpdmVycy9uZXQvdmV0aC5jOjI3ODpzdGF0aWMgYm9vbCB2ZXRoX2lzX3hkcF9mcmFtZSh2b2lkICpwdHIpXFxuZHJpdmVycy9uZXQvdmV0aC5jLTI3OS17XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzoyODM6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfcHRyX3RvX3hkcCh2b2lkICpwdHIpXFxuZHJpdmVycy9uZXQvdmV0aC5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtMjg3LVxcbmRyaXZlcnMvbmV0L3ZldGguYzoyODg6c3RhdGljIHZvaWQgKnZldGhfeGRwX3RvX3B0cihzdHJ1Y3QgeGRwX2ZyYW1lICp4ZHApXFxuZHJpdmVycy9uZXQvdmV0aC5jLTI4OS17XFxuZHJpdmVycy9uZXQvdmV0aC5jOjI5MDpcXHRyZXR1cm4gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpeGRwIHwgVkVUSF9YRFBfRkxBRyk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTI5MS19XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9MjkzPXN0YXRpYyB2b2lkIHZldGhfcHRyX2ZyZWUodm9pZCAqcHRyKVxcbmRyaXZlcnMvbmV0L3ZldGguYy0yOTQte1xcbmRyaXZlcnMvbmV0L3ZldGguYzoyOTU6XFx0aWYgKHZldGhfaXNfeGRwX2ZyYW1lKHB0cikpXFxuZHJpdmVycy9uZXQvdmV0aC5jOjI5NjpcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKHZldGhfcHRyX3RvX3hkcChwdHIpKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMjk3LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMDAtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjMwMTpzdGF0aWMgdm9pZCBfX3ZldGhfeGRwX2ZsdXNoKHN0cnVjdCB2ZXRoX3JxICpycSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMDUtXFx0aWYgKCFSRUFEX09OQ0UocnEtXFx1MDAzZXJ4X25vdGlmeV9tYXNrZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvdmV0aC5jOjMwNjpcXHQgICAgbmFwaV9zY2hlZHVsZV9wcmVwKFxcdTAwMjZycS1cXHUwMDNleGRwX25hcGkpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTMwNy1cXHRcXHRXUklURV9PTkNFKHJxLVxcdTAwM2VyeF9ub3RpZnlfbWFza2VkLCB0cnVlKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MzA4OlxcdFxcdF9fbmFwaV9zY2hlZHVsZShcXHUwMDI2cnEtXFx1MDAzZXhkcF9uYXBpKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzA5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMTEtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjMxMjpzdGF0aWMgaW50IHZldGhfeGRwX3J4KHN0cnVjdCB2ZXRoX3JxICpycSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzEzLXtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MzE0OlxcdGlmICh1bmxpa2VseShwdHJfcmluZ19wcm9kdWNlKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcsIHNrYikpKVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMTUtXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZOyAvKiBzaWduYWwgcWRpc2MgbGF5ZXIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0zMjA9c3RhdGljIGludCB2ZXRoX2ZvcndhcmRfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjMyMTpcXHRcXHRcXHQgICAgc3RydWN0IHZldGhfcnEgKnJxLCBib29sIHhkcClcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzIyLXtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MzIzOlxcdHJldHVybiBfX2Rldl9mb3J3YXJkX3NrYihkZXYsIHNrYikgPzogeGRwID9cXG5kcml2ZXJzL25ldC92ZXRoLmM6MzI0OlxcdFxcdHZldGhfeGRwX3J4KHJxLCBza2IpIDpcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzI1LVxcdFxcdF9fbmV0aWZfcngoc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0zNDc9c3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTM4NC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvdmV0aC5jOjM4NTpcXHRcXHRcXHRfX3ZldGhfeGRwX2ZsdXNoKHJxKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzg2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTQwMy1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6NDA0OlxcdFxcdF9fdmV0aF94ZHBfZmx1c2gocnEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy00MDUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9NDIwPXN0YXRpYyB2b2lkIHZldGhfc3RhdHNfcngoc3RydWN0IHZldGhfc3RhdHMgKnJlc3VsdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy00MjQtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjQyNTpcXHRyZXN1bHQtXFx1MDAzZXBlZXJfdHFfeGRwX3htaXRfZXJyID0gMDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDI2OlxcdHJlc3VsdC1cXHUwMDNleGRwX3BhY2tldHMgPSAwO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0Mjc6XFx0cmVzdWx0LVxcdTAwM2V4ZHBfdHhfZXJyID0gMDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDI4OlxcdHJlc3VsdC1cXHUwMDNleGRwX2J5dGVzID0gMDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDI5LVxcdHJlc3VsdC1cXHUwMDNlcnhfZHJvcHMgPSAwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy00MzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQzMTpcXHRcXHR1NjQgcGFja2V0cywgYnl0ZXMsIGRyb3BzLCB4ZHBfdHhfZXJyLCBwZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDMyLVxcdFxcdHN0cnVjdCB2ZXRoX3JxX3N0YXRzICpzdGF0cyA9IFxcdTAwMjZwcml2LVxcdTAwM2VycVtpXS5zdGF0cztcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy00MzYtXFx0XFx0XFx0c3RhcnQgPSB1NjRfc3RhdHNfZmV0Y2hfYmVnaW4oXFx1MDAyNnN0YXRzLVxcdTAwM2VzeW5jcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQzNzpcXHRcXHRcXHRwZWVyX3RxX3hkcF94bWl0X2VyciA9IHN0YXRzLVxcdTAwM2V2cy5wZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDM4OlxcdFxcdFxcdHhkcF90eF9lcnIgPSBzdGF0cy1cXHUwMDNldnMueGRwX3R4X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDM5OlxcdFxcdFxcdHBhY2tldHMgPSBzdGF0cy1cXHUwMDNldnMueGRwX3BhY2tldHM7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ0MDpcXHRcXHRcXHRieXRlcyA9IHN0YXRzLVxcdTAwM2V2cy54ZHBfYnl0ZXM7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTQ0MS1cXHRcXHRcXHRkcm9wcyA9IHN0YXRzLVxcdTAwM2V2cy5yeF9kcm9wcztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDQyLVxcdFxcdH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeShcXHUwMDI2c3RhdHMtXFx1MDAzZXN5bmNwLCBzdGFydCkpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDM6XFx0XFx0cmVzdWx0LVxcdTAwM2VwZWVyX3RxX3hkcF94bWl0X2VyciArPSBwZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDQ0OlxcdFxcdHJlc3VsdC1cXHUwMDNleGRwX3R4X2VyciArPSB4ZHBfdHhfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDU6XFx0XFx0cmVzdWx0LVxcdTAwM2V4ZHBfcGFja2V0cyArPSBwYWNrZXRzO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDY6XFx0XFx0cmVzdWx0LVxcdTAwM2V4ZHBfYnl0ZXMgKz0gYnl0ZXM7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTQ0Ny1cXHRcXHRyZXN1bHQtXFx1MDAzZXJ4X2Ryb3BzICs9IGRyb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTQ1MT1zdGF0aWMgdm9pZCB2ZXRoX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNDYxLVxcdHZldGhfc3RhdHNfcngoXFx1MDAyNnJ4LCBkZXYpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjI6XFx0dG90LVxcdTAwM2V0eF9kcm9wcGVkICs9IHJ4LnhkcF90eF9lcnI7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ2MzpcXHR0b3QtXFx1MDAzZXJ4X2Ryb3BwZWQgPSByeC5yeF9kcm9wcyArIHJ4LnBlZXJfdHFfeGRwX3htaXRfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjQ6XFx0dG90LVxcdTAwM2VyeF9ieXRlcyArPSByeC54ZHBfYnl0ZXM7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ2NTpcXHR0b3QtXFx1MDAzZXJ4X3BhY2tldHMgKz0gcngueGRwX3BhY2tldHM7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy00NzYtXFx0XFx0dmV0aF9zdGF0c19yeChcXHUwMDI2cngsIHBlZXIpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0Nzc6XFx0XFx0dG90LVxcdTAwM2V0eF9kcm9wcGVkICs9IHJ4LnBlZXJfdHFfeGRwX3htaXRfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0Nzg6XFx0XFx0dG90LVxcdTAwM2VyeF9kcm9wcGVkICs9IHJ4LnhkcF90eF9lcnI7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ3OTpcXHRcXHR0b3QtXFx1MDAzZXR4X2J5dGVzICs9IHJ4LnhkcF9ieXRlcztcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDgwOlxcdFxcdHRvdC1cXHUwMDNldHhfcGFja2V0cyArPSByeC54ZHBfcGFja2V0cztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDgxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz00OTU9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICp2ZXRoX3BlZXJfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTAyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MDM6c3RhdGljIGludCB2ZXRoX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuLFxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MDQ6XFx0XFx0XFx0IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUwNS1cXHRcXHRcXHQgdTMyIGZsYWdzLCBib29sIG5kb194bWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUyMy1cXHQvKiBUaGUgbmFwaSBwb2ludGVyIGlzIHNldCBpZiBOQVBJIGlzIGVuYWJsZWQsIHdoaWNoIGVuc3VyZXMgdGhhdFxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MjQ6XFx0ICogeGRwX3JpbmcgaXMgaW5pdGlhbGl6ZWQgb24gcmVjZWl2ZSBzaWRlIGFuZCB0aGUgcGVlciBkZXZpY2UgaXMgdXAuXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUyNS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01MzAtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjUzMTpcXHRzcGluX2xvY2soXFx1MDAyNnJxLVxcdTAwM2V4ZHBfcmluZy5wcm9kdWNlcl9sb2NrKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTMyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuOyBpKyspIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTMzOlxcdFxcdHN0cnVjdCB4ZHBfZnJhbWUgKmZyYW1lID0gZnJhbWVzW2ldO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzQ6XFx0XFx0dm9pZCAqcHRyID0gdmV0aF94ZHBfdG9fcHRyKGZyYW1lKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTM1LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzY6XFx0XFx0aWYgKHVubGlrZWx5KHhkcF9nZXRfZnJhbWVfbGVuKGZyYW1lKSBcXHUwMDNlIG1heF9sZW4gfHxcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTM3OlxcdFxcdFxcdCAgICAgX19wdHJfcmluZ19wcm9kdWNlKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcsIHB0cikpKVxcbmRyaXZlcnMvbmV0L3ZldGguYy01MzgtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQwLVxcdH1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NTQxOlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcucHJvZHVjZXJfbG9jayk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU0Mi1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQzLVxcdGlmIChmbGFncyBcXHUwMDI2IFhEUF9YTUlUX0ZMVVNIKVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1NDQ6XFx0XFx0X192ZXRoX3hkcF9mbHVzaChycSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NDgtXFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTQ5OlxcdFxcdHJxLVxcdTAwM2VzdGF0cy52cy5wZWVyX3RxX3hkcF94bWl0ICs9IG54bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1NTA6XFx0XFx0cnEtXFx1MDAzZXN0YXRzLnZzLnBlZXJfdHFfeGRwX3htaXRfZXJyICs9IG4gLSBueG1pdDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTUxLVxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZycS1cXHUwMDNlc3RhdHMuc3luY3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTU1OS1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NTYwOnN0YXRpYyBpbnQgdmV0aF9uZG9feGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG4sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2MTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsIHUzMiBmbGFncylcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NjQtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2NTpcXHRlcnIgPSB2ZXRoX3hkcF94bWl0KGRldiwgbiwgZnJhbWVzLCBmbGFncywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ni1cXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTU3NC1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NTc1OnN0YXRpYyB2b2lkIHZldGhfeGRwX2ZsdXNoX2JxKHN0cnVjdCB2ZXRoX3JxICpycSwgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NzgtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU3OTpcXHRzZW50ID0gdmV0aF94ZHBfeG1pdChycS1cXHUwMDNlZGV2LCBicS1cXHUwMDNlY291bnQsIGJxLVxcdTAwM2VxLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU4MC1cXHRpZiAoc2VudCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01ODUtXFx0Zm9yIChpID0gc2VudDsgdW5saWtlbHkoaSBcXHUwMDNjIGJxLVxcdTAwM2Vjb3VudCk7IGkrKylcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTg2OlxcdFxcdHhkcF9yZXR1cm5fZnJhbWUoYnEtXFx1MDAzZXFbaV0pO1xcbmRyaXZlcnMvbmV0L3ZldGguYy01ODctXFxuZHJpdmVycy9uZXQvdmV0aC5jLTU4OC1cXHRkcm9wcyA9IGJxLVxcdTAwM2Vjb3VudCAtIHNlbnQ7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjU4OTpcXHR0cmFjZV94ZHBfYnVsa190eChycS1cXHUwMDNlZGV2LCBzZW50LCBkcm9wcywgZXJyKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTkwLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01OTEtXFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTkyOlxcdHJxLVxcdTAwM2VzdGF0cy52cy54ZHBfdHggKz0gc2VudDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTkzOlxcdHJxLVxcdTAwM2VzdGF0cy52cy54ZHBfdHhfZXJyICs9IGRyb3BzO1xcbmRyaXZlcnMvbmV0L3ZldGguYy01OTQtXFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNnJxLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTk4LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1OTk6c3RhdGljIHZvaWQgdmV0aF94ZHBfZmx1c2goc3RydWN0IHZldGhfcnEgKnJxLCBzdHJ1Y3QgdmV0aF94ZHBfdHhfYnEgKmJxKVxcbmRyaXZlcnMvbmV0L3ZldGguYy02MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYwNS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjYwNjpcXHR2ZXRoX3hkcF9mbHVzaF9icShycSwgYnEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02MDctXFx0cmN2ID0gcmN1X2RlcmVmZXJlbmNlKHByaXYtXFx1MDAzZXBlZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYxMi1cXHRyY3ZfcnEgPSBcXHUwMDI2cmN2X3ByaXYtXFx1MDAzZXJxW3ZldGhfc2VsZWN0X3J4cShyY3YpXTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjEzOlxcdC8qIHhkcF9yaW5nIGlzIGluaXRpYWxpemVkIG9uIHJlY2VpdmUgc2lkZT8gKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6NjE0OlxcdGlmICh1bmxpa2VseSghcmN1X2FjY2Vzc19wb2ludGVyKHJjdl9ycS1cXHUwMDNleGRwX3Byb2cpKSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjE1LVxcdFxcdGdvdG8gb3V0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy02MTYtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjYxNzpcXHRfX3ZldGhfeGRwX2ZsdXNoKHJjdl9ycSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTYxOC1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNjIxLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjI6c3RhdGljIGludCB2ZXRoX3hkcF90eChzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjM6XFx0XFx0ICAgICAgIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYyNC17XFxuZHJpdmVycy9uZXQvdmV0aC5jOjYyNTpcXHRzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSA9IHhkcF9jb252ZXJ0X2J1ZmZfdG9fZnJhbWUoeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjI2LVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYzMC1cXHRpZiAodW5saWtlbHkoYnEtXFx1MDAzZWNvdW50ID09IFZFVEhfWERQX1RYX0JVTEtfU0laRSkpXFxuZHJpdmVycy9uZXQvdmV0aC5jOjYzMTpcXHRcXHR2ZXRoX3hkcF9mbHVzaF9icShycSwgYnEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02MzItXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNjM3LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2Mzg6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfeGRwX3Jjdl9vbmUoc3RydWN0IHZldGhfcnEgKnJxLFxcbmRyaXZlcnMvbmV0L3ZldGguYzo2Mzk6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSxcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjQwOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSxcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjQxLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L3ZldGguYy02NDIte1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDM6XFx0c3RydWN0IHhkcF9mcmFtZSBvcmlnX2ZyYW1lO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDQ6XFx0c3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjQ1LVxcbmRyaXZlcnMvbmV0L3ZldGguYy02NDYtXFx0cmN1X3JlYWRfbG9jaygpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDc6XFx0eGRwX3Byb2cgPSByY3VfZGVyZWZlcmVuY2UocnEtXFx1MDAzZXhkcF9wcm9nKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjQ4OlxcdGlmIChsaWtlbHkoeGRwX3Byb2cpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY0OTpcXHRcXHRzdHJ1Y3QgdmV0aF94ZHBfYnVmZiB2eGJ1ZjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjUwOlxcdFxcdHN0cnVjdCB4ZHBfYnVmZiAqeGRwID0gXFx1MDAyNnZ4YnVmLnhkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjUxLVxcdFxcdHUzMiBhY3Q7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY1Mi1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NjUzOlxcdFxcdHhkcF9jb252ZXJ0X2ZyYW1lX3RvX2J1ZmYoZnJhbWUsIHhkcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY1NDpcXHRcXHR4ZHAtXFx1MDAzZXJ4cSA9IFxcdTAwMjZycS1cXHUwMDNleGRwX3J4cTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjU1LVxcdFxcdHZ4YnVmLnNrYiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY1Ni1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NjU3OlxcdFxcdGFjdCA9IGJwZl9wcm9nX3J1bl94ZHAoeGRwX3Byb2csIHhkcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy02NjAtXFx0XFx0Y2FzZSBYRFBfUEFTUzpcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjYxOlxcdFxcdFxcdGlmICh4ZHBfdXBkYXRlX2ZyYW1lX2Zyb21fYnVmZih4ZHAsIGZyYW1lKSlcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjYyOlxcdFxcdFxcdFxcdGdvdG8gZXJyX3hkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjYzLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTY2NS1cXHRcXHRcXHRvcmlnX2ZyYW1lID0gKmZyYW1lO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NjY6XFx0XFx0XFx0eGRwLVxcdTAwM2VyeHEtXFx1MDAzZW1lbS50eXBlID0gZnJhbWUtXFx1MDAzZW1lbV90eXBlO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2Njc6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHZldGhfeGRwX3R4KHJxLCB4ZHAsIGJxKSBcXHUwMDNjIDApKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY2ODpcXHRcXHRcXHRcXHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVxcdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NjktXFx0XFx0XFx0XFx0ZnJhbWUgPSBcXHUwMDI2b3JpZ19mcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjcwLVxcdFxcdFxcdFxcdHN0YXRzLVxcdTAwM2VyeF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NzE6XFx0XFx0XFx0XFx0Z290byBlcnJfeGRwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NzItXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2NzM6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF90eCsrO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NzQtXFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY3NTpcXHRcXHRcXHRnb3RvIHhkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NzYtXFx0XFx0Y2FzZSBYRFBfUkVESVJFQ1Q6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY3Ny1cXHRcXHRcXHRvcmlnX2ZyYW1lID0gKmZyYW1lO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2Nzg6XFx0XFx0XFx0eGRwLVxcdTAwM2VyeHEtXFx1MDAzZW1lbS50eXBlID0gZnJhbWUtXFx1MDAzZW1lbV90eXBlO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2Nzk6XFx0XFx0XFx0aWYgKHhkcF9kb19yZWRpcmVjdChycS1cXHUwMDNlZGV2LCB4ZHAsIHhkcF9wcm9nKSkge1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODAtXFx0XFx0XFx0XFx0ZnJhbWUgPSBcXHUwMDI2b3JpZ19mcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjgxLVxcdFxcdFxcdFxcdHN0YXRzLVxcdTAwM2VyeF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2ODI6XFx0XFx0XFx0XFx0Z290byBlcnJfeGRwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODMtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2ODQ6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9yZWRpcmVjdCsrO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODUtXFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY4NjpcXHRcXHRcXHRnb3RvIHhkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODctXFx0XFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC92ZXRoLmM6Njg4OlxcdFxcdFxcdGJwZl93YXJuX2ludmFsaWRfeGRwX2FjdGlvbihycS1cXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjg5LVxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02OTAtXFx0XFx0Y2FzZSBYRFBfQUJPUlRFRDpcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjkxOlxcdFxcdFxcdHRyYWNlX3hkcF9leGNlcHRpb24ocnEtXFx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY5Mi1cXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjkzLVxcdFxcdGNhc2UgWERQX0RST1A6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY5NDpcXHRcXHRcXHRzdGF0cy1cXHUwMDNleGRwX2Ryb3BzKys7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY5NTpcXHRcXHRcXHRnb3RvIGVycl94ZHA7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY5Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzAwLVxcdHJldHVybiBmcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzAxOmVycl94ZHA6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcwMi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzAzOlxcdHhkcF9yZXR1cm5fZnJhbWUoZnJhbWUpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3MDQ6eGRwX3htaXQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcwNS1cXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MDgtLyogZnJhbWVzIGFycmF5IGNvbnRhaW5zIFZFVEhfWERQX0JBVENIIGF0IG1vc3QgKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6NzA5OnN0YXRpYyB2b2lkIHZldGhfeGRwX3Jjdl9idWxrX3NrYihzdHJ1Y3QgdmV0aF9ycSAqcnEsIHZvaWQgKipmcmFtZXMsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxMDpcXHRcXHRcXHRcXHQgIGludCBuX3hkcGYsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTcxMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCB2ZXRoX3N0YXRzICpzdGF0cylcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MTUtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxNjpcXHRpZiAodW5saWtlbHkoIW5hcGlfc2tiX2NhY2hlX2dldF9idWxrKHNrYnMsIG5feGRwZikpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxNzpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl94ZHBmOyBpKyspXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxODpcXHRcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKGZyYW1lc1tpXSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxOTpcXHRcXHRzdGF0cy1cXHUwMDNlcnhfZHJvcHMgKz0gbl94ZHBmO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03MjAtXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzIzLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo3MjQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5feGRwZjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyNS1cXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tic1tpXTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzI2LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo3Mjc6XFx0XFx0c2tiID0gX194ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWUoZnJhbWVzW2ldLCBza2IsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOC1cXHRcXHRcXHRcXHRcXHRcXHQgcnEtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOS1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3MzA6XFx0XFx0XFx0eGRwX3JldHVybl9mcmFtZShmcmFtZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03MzEtXFx0XFx0XFx0c3RhdHMtXFx1MDAzZXJ4X2Ryb3BzKys7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzMzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NzM0OlxcdFxcdG5hcGlfZ3JvX3JlY2VpdmUoXFx1MDAyNnJxLVxcdTAwM2V4ZHBfbmFwaSwgc2tiKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzM1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MzctXFxuZHJpdmVycy9uZXQvdmV0aC5jOjczODpzdGF0aWMgdm9pZCB2ZXRoX3hkcF9nZXQoc3RydWN0IHhkcF9idWZmICp4ZHApXFxuZHJpdmVycy9uZXQvdmV0aC5jLTczOS17XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc0MDpcXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvICpzaW5mbyA9IHhkcF9nZXRfc2hhcmVkX2luZm9fZnJvbV9idWZmKHhkcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTc0MS1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo3NDM6XFx0Z2V0X3BhZ2UodmlydF90b19wYWdlKHhkcC1cXHUwMDNlZGF0YSkpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3NDQ6XFx0aWYgKGxpa2VseSgheGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpKVxcbmRyaXZlcnMvbmV0L3ZldGguYy03NDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTc1MC1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NzUxOnN0YXRpYyBpbnQgdmV0aF9jb252ZXJ0X3NrYl90b194ZHBfYnVmZihzdHJ1Y3QgdmV0aF9ycSAqcnEsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjc1MjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzUzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICoqcHNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03NjktXFx0ZnJhbWVfc3ogKz0gU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzcwOlxcdHhkcF9pbml0X2J1ZmYoeGRwLCBmcmFtZV9zeiwgXFx1MDAyNnJxLVxcdTAwM2V4ZHBfcnhxKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzcxOlxcdHhkcF9wcmVwYXJlX2J1ZmYoeGRwLCBza2ItXFx1MDAzZWhlYWQsIHNrYl9oZWFkcm9vbShza2IpLFxcbmRyaXZlcnMvbmV0L3ZldGguYy03NzItXFx0XFx0XFx0IHNrYl9oZWFkbGVuKHNrYiksIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTc3NC1cXHRpZiAoc2tiX3NoaW5mbyhza2IpLVxcdTAwM2Vucl9mcmFncykge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzU6XFx0XFx0c2tiX3NoaW5mbyhza2IpLVxcdTAwM2V4ZHBfZnJhZ3Nfc2l6ZSA9IHNrYi1cXHUwMDNlZGF0YV9sZW47XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc3NjpcXHRcXHR4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxhZyh4ZHApO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03NzctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6Nzc4OlxcdFxcdHhkcF9idWZmX2NsZWFyX2ZyYWdzX2ZsYWcoeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzc5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03ODktXFxuZHJpdmVycy9uZXQvdmV0aC5jOjc5MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZldGhfeGRwX3Jjdl9za2Ioc3RydWN0IHZldGhfcnEgKnJxLFxcbmRyaXZlcnMvbmV0L3ZldGguYy03OTEtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzkyOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTc5My1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgdmV0aF9zdGF0cyAqc3RhdHMpXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzk1LVxcdHZvaWQgKm9yaWdfZGF0YSwgKm9yaWdfZGF0YV9lbmQ7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc5NjpcXHRzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3OTc6XFx0c3RydWN0IHZldGhfeGRwX2J1ZmYgdnhidWY7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc5ODpcXHRzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCA9IFxcdTAwMjZ2eGJ1Zi54ZHA7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTc5OS1cXHR1MzIgYWN0LCBtZXRhbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTgwNC1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgwNTpcXHR4ZHBfcHJvZyA9IHJjdV9kZXJlZmVyZW5jZShycS1cXHUwMDNleGRwX3Byb2cpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4MDY6XFx0aWYgKHVubGlrZWx5KCF4ZHBfcHJvZykpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODA3LVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTgxMS1cXHRfX3NrYl9wdXNoKHNrYiwgc2tiLVxcdTAwM2VkYXRhIC0gc2tiX21hY19oZWFkZXIoc2tiKSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgxMjpcXHRpZiAodmV0aF9jb252ZXJ0X3NrYl90b194ZHBfYnVmZihycSwgeGRwLCBcXHUwMDI2c2tiKSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtODEzLVxcdFxcdGdvdG8gZHJvcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04MTUtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjgxNjpcXHRvcmlnX2RhdGEgPSB4ZHAtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgxNzpcXHRvcmlnX2RhdGFfZW5kID0geGRwLVxcdTAwM2VkYXRhX2VuZDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODE4LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo4MTk6XFx0YWN0ID0gYnBmX3Byb2dfcnVuX3hkcCh4ZHBfcHJvZywgeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODIwLVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTgyNC1cXHRjYXNlIFhEUF9UWDpcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODI1OlxcdFxcdHZldGhfeGRwX2dldCh4ZHApO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MjYtXFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODI3OlxcdFxcdHhkcC1cXHUwMDNlcnhxLVxcdTAwM2VtZW0gPSBycS1cXHUwMDNleGRwX21lbTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODI4OlxcdFxcdGlmICh1bmxpa2VseSh2ZXRoX3hkcF90eChycSwgeGRwLCBicSkgXFx1MDAzYyAwKSkge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4Mjk6XFx0XFx0XFx0dHJhY2VfeGRwX2V4Y2VwdGlvbihycS1cXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODMwLVxcdFxcdFxcdHN0YXRzLVxcdTAwM2VyeF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4MzE6XFx0XFx0XFx0Z290byBlcnJfeGRwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MzItXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3ZldGguYzo4MzM6XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF90eCsrO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MzQtXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzNTpcXHRcXHRnb3RvIHhkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MzYtXFx0Y2FzZSBYRFBfUkVESVJFQ1Q6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzNzpcXHRcXHR2ZXRoX3hkcF9nZXQoeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODM4LVxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzOTpcXHRcXHR4ZHAtXFx1MDAzZXJ4cS1cXHUwMDNlbWVtID0gcnEtXFx1MDAzZXhkcF9tZW07XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg0MDpcXHRcXHRpZiAoeGRwX2RvX3JlZGlyZWN0KHJxLVxcdTAwM2VkZXYsIHhkcCwgeGRwX3Byb2cpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg0MS1cXHRcXHRcXHRzdGF0cy1cXHUwMDNlcnhfZHJvcHMrKztcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODQyOlxcdFxcdFxcdGdvdG8gZXJyX3hkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC92ZXRoLmM6ODQ0OlxcdFxcdHN0YXRzLVxcdTAwM2V4ZHBfcmVkaXJlY3QrKztcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQ1LVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDY6XFx0XFx0Z290byB4ZHBfeG1pdDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQ3LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg0ODpcXHRcXHRicGZfd2Fybl9pbnZhbGlkX3hkcF9hY3Rpb24ocnEtXFx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg0OS1cXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODUwLVxcdGNhc2UgWERQX0FCT1JURUQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg1MTpcXHRcXHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVxcdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04NTItXFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg1My1cXHRjYXNlIFhEUF9EUk9QOlxcbmRyaXZlcnMvbmV0L3ZldGguYzo4NTQ6XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4NTU6XFx0XFx0Z290byB4ZHBfZHJvcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODU2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04NTgtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjg1OTpcXHQvKiBjaGVjayBpZiBicGZfeGRwX2FkanVzdF9oZWFkIHdhcyB1c2VkICovXFxuZHJpdmVycy9uZXQvdmV0aC5jOjg2MDpcXHRvZmYgPSBvcmlnX2RhdGEgLSB4ZHAtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg2MS1cXHRpZiAob2ZmIFxcdTAwM2UgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04NjgtXFx0LyogWERQIGZyYWcgbWV0YWRhdGEgKGUuZy4gbnJfZnJhZ3MpIGFyZSB1cGRhdGVkIGluIGVCUEYgaGVscGVyc1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4Njk6XFx0ICogKGUuZy4gYnBmX3hkcF9hZGp1c3RfdGFpbCkuIFJlbW92ZSB0aGUgb2xkIGZyYWdtZW50IGNvbnRyaWJ1dGlvblxcbmRyaXZlcnMvbmV0L3ZldGguYy04NzAtXFx0ICogZnJvbSBza2ItXFx1MDAzZWxlbiBiZWZvcmUgdXBkYXRpbmcgZGF0YV9sZW4sIHRoZW4gYWRkIHRoZSBuZXcgb25lIGJhY2suXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtODcyLVxcdHNrYi1cXHUwMDNlbGVuIC09IHNrYi1cXHUwMDNlZGF0YV9sZW47XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg3MzpcXHRpZiAoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODc0OlxcdFxcdHNrYi1cXHUwMDNlZGF0YV9sZW4gPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZXhkcF9mcmFnc19zaXplO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04NzUtXFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gc2tiLVxcdTAwM2VkYXRhX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04ODAtXFx0LyogU3luY2hyb25pemUgdGhlIHNrYiB0YWlsIHdpdGggWERQJ3MgdXBkYXRlZCBsaW5lYXIgYXJlYS4gKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6ODgxOlxcdG9mZiA9IHhkcC1cXHUwMDNlZGF0YV9lbmQgLSBvcmlnX2RhdGFfZW5kO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04ODItXFx0aWYgKG9mZiAhPSAwKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg4MzpcXHRcXHRza2Jfc2V0X3RhaWxfcG9pbnRlcihza2IsIHhkcC1cXHUwMDNlZGF0YV9lbmQgLSB4ZHAtXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04ODQtXFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gb2ZmOyAvKiBwb3NpdGl2ZSBvbiBncm93LCBuZWdhdGl2ZSBvbiBzaHJpbmsgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04ODgtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjg4OTpcXHRtZXRhbGVuID0geGRwLVxcdTAwM2VkYXRhIC0geGRwLVxcdTAwM2VkYXRhX21ldGE7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg5MC1cXHRpZiAobWV0YWxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04OTUtXFx0c3RhdHMtXFx1MDAzZXJ4X2Ryb3BzKys7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg5Njp4ZHBfZHJvcDpcXG5kcml2ZXJzL25ldC92ZXRoLmMtODk3LVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTg5OS1cXHRyZXR1cm4gTlVMTDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTAwOmVycl94ZHA6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkwMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTAyOlxcdHhkcF9yZXR1cm5fYnVmZih4ZHApO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MDM6eGRwX3htaXQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkwNC1cXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy05MDYtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjkwNzpzdGF0aWMgaW50IHZldGhfeGRwX3JjdihzdHJ1Y3QgdmV0aF9ycSAqcnEsIGludCBidWRnZXQsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjkwODpcXHRcXHRcXHRzdHJ1Y3QgdmV0aF94ZHBfdHhfYnEgKmJxLFxcbmRyaXZlcnMvbmV0L3ZldGguYy05MDktXFx0XFx0XFx0c3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L3ZldGguYy05MTAte1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTE6XFx0aW50IGksIGRvbmUgPSAwLCBuX3hkcGYgPSAwO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTI6XFx0dm9pZCAqeGRwZltWRVRIX1hEUF9CQVRDSF07XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkxMy1cXG5kcml2ZXJzL25ldC92ZXRoLmMtOTE0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBidWRnZXQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTU6XFx0XFx0dm9pZCAqcHRyID0gX19wdHJfcmluZ19jb25zdW1lKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy05MTYtXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtOTE5LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5MjA6XFx0XFx0aWYgKHZldGhfaXNfeGRwX2ZyYW1lKHB0cikpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTIxOlxcdFxcdFxcdC8qIG5kb194ZHBfeG1pdCAqL1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MjI6XFx0XFx0XFx0c3RydWN0IHhkcF9mcmFtZSAqZnJhbWUgPSB2ZXRoX3B0cl90b194ZHAocHRyKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtOTIzLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5MjQ6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9ieXRlcyArPSB4ZHBfZ2V0X2ZyYW1lX2xlbihmcmFtZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjkyNTpcXHRcXHRcXHRmcmFtZSA9IHZldGhfeGRwX3Jjdl9vbmUocnEsIGZyYW1lLCBicSwgc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy05MjYtXFx0XFx0XFx0aWYgKGZyYW1lKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkyNy1cXHRcXHRcXHRcXHQvKiBYRFBfUEFTUyAqL1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5Mjg6XFx0XFx0XFx0XFx0eGRwZltuX3hkcGYrK10gPSBmcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTI5OlxcdFxcdFxcdFxcdGlmIChuX3hkcGYgPT0gVkVUSF9YRFBfQkFUQ0gpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTMwOlxcdFxcdFxcdFxcdFxcdHZldGhfeGRwX3Jjdl9idWxrX3NrYihycSwgeGRwZiwgbl94ZHBmLFxcbmRyaXZlcnMvbmV0L3ZldGguYy05MzEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgYnEsIHN0YXRzKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTMyOlxcdFxcdFxcdFxcdFxcdG5feGRwZiA9IDA7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkzMy1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtOTM4LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5Mzk6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9ieXRlcyArPSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTQwOlxcdFxcdFxcdHNrYiA9IHZldGhfeGRwX3Jjdl9za2IocnEsIHNrYiwgYnEsIHN0YXRzKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtOTQxLVxcdFxcdFxcdGlmIChza2IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy05NDQtXFx0XFx0XFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5NDU6XFx0XFx0XFx0XFx0XFx0bmFwaV9ncm9fcmVjZWl2ZShcXHUwMDI2cnEtXFx1MDAzZXhkcF9uYXBpLCBza2IpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy05NDYtXFx0XFx0XFx0fVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToyOS44NzQyNTYyMTFaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY4NjY0OTU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBBRl9YRFAgWmVyby1Db3B5IEltcGFjdCoqXG5cbk9rYXksIHNvIHRoZSBgdmV0aGAgaW50ZXJmYWNlLCB3aGlsZSBYRFAtY2FwYWJsZSwgZG9lc24ndCB1dGlsaXplIHRoZSBgeHNrX2J1ZmZfcG9vbGAsIGluc3RlYWQgcmVseWluZyBvbiBgeGRwX2ZyYW1lYCBhbmQgYHhkcF9idWZmYC4gVGhhdCBtZWFucyB0aGUgcmVjZW50IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGNoYW5nZSB3b24ndCBhZmZlY3QgaXQuIEdvb2QuXG5cbkxldCdzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIG90aGVyIGNhbmRpZGF0ZXM6IGBtYWN2bGFuYD8gTm9wZS4gWmVyby1jb3B5IEFGX1hEUCBpcyBhIG5vLWdvIHRoZXJlLiBgdmlydGlvX25ldGA/IFN0aWxsIG5vLiBgdHVuYC9gdGFwYD8gTmVnYXRpdmUuXG5cblNvLCBpdCBsb29rcyBsaWtlLCBhdCBsZWFzdCBpbml0aWFsbHksIHRoZSBvbmx5IGRyaXZlcnMgdGhhdCAqZG8qIHN1cHBvcnQgdGhpcyB6ZXJvLWNvcHkgQUZfWERQIG1lY2hhbmlzbSBhcmUgcGh5c2ljYWwgTklDcyBhbmQgYSBmZXcgc3BlY2lhbGl6ZWQgdmlydHVhbCBvbmVzOiBgdHNuZXBgIChGUEdBIGVuZHBvaW50KSBhbmQgYGd2ZWAsIHRoZSBHb29nbGUgVmlydHVhbCBOSUMuIEhhbmcgb27igKYgYGd2ZWDigKYgdGhhdCdzIGludGVyZXN0aW5nLlxuXG5DYW4gSSBldmVuIHJlYWNoIGBndmVgIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFByb2JhYmx5IG5vdCBuYXRpdmVseS4gSG93ZXZlciwgc3l6a2FsbGVyICptaWdodCogYmUgcnVubmluZyBvbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHdoZXJlIGBndmVgIGlzIHRoZSBhY3R1YWwgbmV0d29yayBpbnRlcmZhY2UhIEJ1dCwgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIHRlc3RzICppbnNpZGUqIGEgVk0uIElmIHRoZSBWTSBpcyBvbiBHQ0UsIGl0IGNvdWxkIHRoZW9yZXRpY2FsbHkgaGF2ZSBhIGBndmVgIGludGVyZmFjZSwgYnV0IHN5emthbGxlciB1c3VhbGx5IGlzb2xhdGVzIHdpdGggbmVzdGVkIFZNcyAoUUVNVSkgb3IgbmV0d29yayBuYW1lc3BhY2VzIHdpdGggYHZldGhgIG9yIGB0dW5gIGRldmljZXMuIEl0J3Mgbm90IHVzdWFsbHkgZnV6emluZyB0aGUgaG9zdCdzIGBndmVgIGRldmljZSBkaXJlY3RseSBiZWNhdXNlIHRoYXQgd291bGQgdGVhciBkb3duIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gdG8gdGhlIFZNLlxuXG5FdmVuIGlmIGl0IGRpZCwgdGhlIGNydWNpYWwgcG9pbnQgaXM6IGRvZXMgYGd2ZWAgKnVzZSogYHhza19idWZmX2dldF9tZXRhZGF0YWA/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gTGV0J3MgZGlnIGRlZXBlciBhbmQgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjg3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjM5LjU2MDkwOTc1NFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2MTM3MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWZmX2dldF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6MzkuNjA5NTMxNTcyWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzQ4NDIxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY3kgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgdGhlIGBndmVgIGxpYnJhcnkgbm90IHV0aWxpemluZyB0aGUgZGVwZW5kZW5jeSBpbiBxdWVzdGlvbiwgYnV0IGl0J3MgYWx3YXlzIGJlc3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZWZvcmUgSSBtb3ZlIG9uIHdpdGggbXkgb3duIHdvcmssIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzICpub3QqIGEgZmFjdG9yIGluIGBndmVgJ3Mgb3BlcmF0aW9uLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjb2RlLlxuXG5Ob3csIGlmIGBndmVgIGRvZXNuJ3QgdXNlIGl0LCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdHNuZXBgLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoYXQgbGlicmFyeSwgd2hpY2ggaXMgcmVsYXRlZCBpbiBmdW5jdGlvbmFsaXR5LCBhY3R1YWxseSBkZXBlbmRzIG9uIGl0LiBBIHF1aWNrIHNlYXJjaCB0aHJvdWdoIHRoZSBgdHNuZXBgIGNvZGViYXNlIGlzIGluIG9yZGVyLiBJdCdzIGltcG9ydGFudCB0byBrbm93IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYWxsIHRoZXNlIHRvb2xzLiBJZiBlaXRoZXIgb2YgdGhvc2UgcGFja2FnZXMgdXNlIGl0LCB0aGF0IHdpbGwgZHJhc3RpY2FsbHkgY2hhbmdlIHdoYXQgaXMgbmVjZXNzYXJ5IGluIG15IGN1cnJlbnQgZGV2ZWxvcG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDkyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NDMuMTg0Mzc2NTM2WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc4MjcyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NDMuMjMxMTY4NTM1WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjA0NDQ3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBMYW5kc2NhcGUqKlxuXG5Ob3BlLiBOb3QgaGFwcGVuaW5nLiBNeSBndXQgcmVhY3Rpb24gaXMgYSBoYXJkIFwibm9cIiBvbiB0aGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgZGlzbWlzc2luZyB0aGlzIHBvaW50IHRob3VnaC4gTGV0J3Mgbm90IGp1c3QgaWdub3JlIHRoaXMsIGxldCdzIGdvIGRlZXBlciBhbmQgY2hlY2sgaWYgdGhpcyBhY3R1YWxseSBpcyBiZWluZyB1c2VkIGJ5IHRoZSBgZHBhYTJgIHN5c3RlbS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIzNjksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMTo0Ni40OTE2MTY5MjlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODIyOTg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NDYuNTM3NDQ3NTU3WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODAxMzk1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBkaXJlY3QgdGhvdWdodCBwcm9jZXNzOlxuXG4qKk5vLiBMZXQncyBWZXJpZnkgVGhpcyBDbGFpbS4qKlxuXG5BbHJpZ2h0LCB0aGF0J3MgYSBmbGF0IFwibm8uXCIgQnV0LCBsZXQncyBub3QganVzdCB0YWtlIHRoYXQgYXMgdGhlIGZpbmFsIGFuc3dlciwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBbaW1wbGllZCBmaWVsZCAtIHVzZXIncyBhcmVhIG9mIGV4cGVydGlzZSwgZS5nLiwgY29tcGxleCBzeXN0ZW1zLCBkYXRhIGFuYWx5c2lzLCB0aGVvcmV0aWNhbCBwaHlzaWNzXS4gTXkgZ3V0IHNheXMgXCJubyxcIiBidXQgZ3V0IGZlZWxpbmdzIGFyZW4ndCBlbm91Z2guIEkgbmVlZCB0byBiZSAqc3VyZSouIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgdGhpcyBpcyBiZWluZyBpbXBsZW1lbnRlZCBhbnl3aGVyZSwgZXZlbiBpbiBhIHNtYWxsIHdheS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgaWYgYGZlY2AgaXMgdXRpbGl6aW5nIHdoYXRldmVyIHdlJ3JlIHRhbGtpbmcgYWJvdXQuIElzIHRoZXJlIGFueSBleGlzdGluZyBjb2RlYmFzZSBvciByZWxldmFudCBkb2N1bWVudGF0aW9uIHRoYXQgd291bGQgcHJvdmlkZSBhbiBhbnN3ZXIgaGVyZT8gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBzZWFyY2guIEEgcXVpY2sgY2hlY2sgb2YgYGZlY2Agd2lsbCBlaXRoZXIgY29uZmlybSB0aGlzIG5lZ2F0aXZlIG9yIGdpdmUgbWUgYW4gaW1tZWRpYXRlIGp1bXBpbmctb2ZmIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTM5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NTAuNTE3NTkwNzA5WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzk4MDE1OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjUwLjU2NTU3ODc2N1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDk0NzgzNzUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgQUJJIE1pc21hdGNoIGluIFhEUCBhbmQgQUZfWERQKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgY29kZSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyByZWNlbnQgY2hhbmdlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYCAodGhyb3VnaCBgbGliZXRoYCkgYXJlIHRoZSBvbmx5IGRyaXZlcnMgdGhhdCB1c2UgdGhvc2UgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMuIEJ1dCwgU3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enogdGhvc2UgaW4gYSB3YXkgdGhhdCB3b3VsZCBoaXQgdGhpcyBwYXJ0aWN1bGFyIGFyZWEgYmVjYXVzZSBpdCBwcmVmZXJzIHRoaW5ncyBsaWtlIGB2ZXRoYCwgYHR1bmAsIGBtYWN2bGFuYCwgYHZjYW5gLCBhbmQgYHZ4bGFuYC5cblxuVGhlbiwgd2FpdCBhIG1pbnV0ZSwgdGhlcmUncyB0aGF0IFVBUEkgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBzcGVjaWZpY2FsbHkgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gTXkgY29uY2VybiBub3cgY2VudGVycyBhcm91bmQgYG5ldC94ZHAveHNrLmNgLCB0aGUgY29yZSBBRl9YRFAgc29ja2V0IGltcGxlbWVudGF0aW9uLlxuXG5BIHVzZXIgY2FuIHNldCBgdHhfbWV0YWRhdGFfbGVuYCBpbiBgc3RydWN0IHhkcF91bWVtX3JlZ2Agd2hlbiBjcmVhdGluZyBhbiBBRl9YRFAgc29ja2V0LiAgVGhlbiwgaW4gYHhza19za2JfbWV0YWRhdGFgIGl0IGNhbGxzIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBUaGUgY3J1Y2lhbCBjaGVjayBoZXJlIHVzZXMgYG9mZnNldG9mZW5kYCB0byBkZXRlcm1pbmUgaWYgZW5vdWdoIHNwYWNlIGlzIGF2YWlsYWJsZS4gQSAzMi1iaXQgdXNlcnNwYWNlIHByb2dyYW0gY29tcGlsZWQgd2l0aCB0aGUgKm9sZCogaGVhZGVyIHdvdWxkIHNldCBgdHhfbWV0YWRhdGFfbGVuYCB0byAyMCwgYnV0IHRoZSAqbmV3KiBoZWFkZXIgbWFrZXMgYG9mZnNldG9mZW5kYCBlcXVhbCAyNC4gQ29uc2VxdWVudGx5LCBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgIHdpbGwgcmV0dXJuIGBmYWxzZWAsIHdoaWNoIGxlYWRzIHRvIGFuIGAtRUlOVkFMYCBmcm9tIGB4c2tfc2tiX21ldGFkYXRhYC5cblxuU28sIHRoZSBwYXRjaCBpcyBmaXhpbmcgYSAzMi1iaXQvNjQtYml0IEFCSSBtaXNtYXRjaCwgYnV0IGl0IGFsc28gY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIGFueSAzMi1iaXQgcHJvZ3JhbXMgdXNpbmcgdGhlIG9sZCBzdHJ1Y3Qgc2l6ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgYmVjYXVzZSBzdWNoIGEgY2hhbmdlIGNhbiBicmVhayBleGlzdGluZyBhcHBsaWNhdGlvbnMuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2UsIGlmIGl0IGlzIG5vdCwgdGhpcyBtYXkgbm90IGJlIGEgdmFsaWQgY29uY2Vybi4gQUZfWERQIHNvY2tldHMgKGBBRl9YRFBgKSAqY2FuKiBiZSBjcmVhdGVkIG9uIGFueSBuZXR3b3JrIGludGVyZmFjZSwgaW5jbHVkaW5nIGB2ZXRoYC4gT2theSwgYHZldGhgIGNvdWxkIGJlIHVzZWQuIFdhaXQuLi4gZG9lcyBgdmV0aGAgZXZlbiBzdXBwb3J0IGBYRFBfVFhfTUVUQURBVEFgPyBUaGlzIG5lZWRzIHZlcmlmaWNhdGlvbi5cblxuT2theSwgbGV0J3Mgc2VlLiBMb29raW5nIGF0IGBuZXQveGRwL3hzay5jYCwgYHhza19idWlsZF9za2JgIGFuZCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAgY2hlY2sgYGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMgdmlhIEFGX1hEUCBzb2NrZXRzLiBJZiB0aGUgc29ja2V0IGlzIGJvdW5kIHRvIGB2ZXRoYCwgaXQnbGwgdXNlIGB4c2tfYnVpbGRfc2tiYCBzaW5jZSBgdmV0aGAgZG9lcyBub3Qgc3VwcG9ydCB6ZXJvLWNvcHkgQUZfWERQLiBJIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyODAyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIyOjAxLjUxMzQxODk2M1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MDEyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1aWxkX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL3hzay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwMDgtXFxubmV0L3hkcC94c2suYzoxMDA5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtMTAxMC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwODQtXFxubmV0L3hkcC94c2suYzoxMDg1OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtMTA4Ni1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTA5Mi1cXHRpZiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX1RYX1NLQl9OT19MSU5FQVIpIHtcXG5uZXQveGRwL3hzay5jOjEwOTM6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XFxubmV0L3hkcC94c2suYy0xMDk0LVxcdFxcdGlmIChJU19FUlIoc2tiKSkge1xcbi0tXFxubmV0L3hkcC94c2suYz0xMTkxPXN0YXRpYyBpbnQgX194c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTIzNy1cXG5uZXQveGRwL3hzay5jOjEyMzg6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYih4cywgXFx1MDAyNmRlc2MpO1xcbm5ldC94ZHAveHNrLmMtMTIzOS1cXHRcXHRpZiAoSVNfRVJSKHNrYikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjI6MDEuNTY0MTI1NzMxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjIzMTE4ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFhEUCBaZXJvLUNvcHkgVFggTWV0YWRhdGEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQgb24gZW5oYW5jaW5nIFhEUCB6ZXJvLWNvcHkgdHJhbnNtaXNzaW9uLCBwYXJ0aWN1bGFybHkgdGhlIG1ldGFkYXRhIGhhbmRsaW5nLiBJbml0aWFsbHksIEkgc2F3IHRoYXQgYF9feHNrX2dlbmVyaWNfeG1pdGAgaXMgdGhlIGtleSwgY2FsbGluZyBgeHNrX2J1aWxkX3NrYmAsIGFuZCBjcnVjaWFsbHksIGB4c2tfc2tiX21ldGFkYXRhYCwgd2hpY2ggaXMgYWJzb2x1dGVseSByZWFjaGFibGUgZXZlbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhpcyB0aGVuIGdvZXMgdG8gYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gIE15IG1haW4gcXVlc3Rpb24gaXMgd2hldGhlciBhbnkgb2YgdGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS5cblxuSSBzZWUgYSBtb2RpZmljYXRpb24gdG8gdGhlIGB4c2tfdHhfbWV0YWRhdGFgIHN0cnVjdCBhbmQsIGNvbnNlcXVlbnRseSwgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCB3aXRoaW4gYG5ldC94ZHAveHNrLmNgICh0aHJvdWdoIGlubGluZSkuIFRoaXMgYWZmZWN0cyB0aGUgYHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuYCByZXF1aXJlbWVudCAtIG5vdyAyNCBieXRlcyBtaW5pbXVtIGluc3RlYWQgb2YgMjAgb24gMzItYml0IHN5c3RlbXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgc3RydWN0IGxheW91dCBjaGFuZ2UgaXMgYSBtZWFuaW5nZnVsIGVub3VnaCBmdW5jdGlvbmFsIGNoYW5nZSB0byBiZSB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgYWZmZWN0cyBleGVjdXRpb24gZmxvdyBvciBpcyBqdXN0IGEgc3RydWN0dXJhbCBhZGp1c3RtZW50LiBNeSBpbmNsaW5hdGlvbiBpcyB0aGF0IGl04oCZcyBtb3JlIG9mIHRoZSBsYXR0ZXIsIGJ1dCBJIG5lZWQgdG8gYmUgcHJlY2lzZS5cblxuSSBhbHNvIG5vdGljZSB0aGF0IGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaGFzIGNoYW5nZWQgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYnV0IGl0IGlzIG9ubHkgY2FsbGVkIGJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgLSBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYC4gIFRoZXNlIGFyZSBub3QgdHlwaWNhbGx5IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCB3aGljaCBpcyB3aGF0IHN5emthbGxlciBpcyB1c2VkIHdpdGguIFNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGlzIGEgbm9uLWlzc3VlIGZyb20gbXkgcGVyc3BlY3RpdmUuICBUaGUgc3RtbWFjIGNoYW5nZXMgYXJlIGFsc28gbm90IHJlbGV2YW50LlxuXG5UaGUgY29yZSBsb2dpYyBjaGFuZ2UgbG9va3MgbGlrZSBpdCBpcyB0byBtYWtlIHRoZSBgb3B0aW9uc2AgYXJndW1lbnQgYmUgcGFzc2VkIHRvIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBpbmNsdWRlcyBhIGNoZWNrIGZvciBgb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBtZXRhZGF0YSBwb2ludGVyLiBUaGlzIHByZXZlbnRzIHRoZSB1c2FnZSBvZiBpbnZhbGlkIG1ldGFkYXRhIGlmIHRoZSBvcHRpb24gaXNuJ3Qgc2V0LiAgVGhpcyBhZmZlY3RzIHRoZSB6ZXJvLWNvcHkgVFggcGF0aCBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBub25lIG9mIHdoaWNoIGFyZSByZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cbk5vdywgdGhhdCBzdHJ1Y3QgbGF5b3V0IGNoYW5nZSwgdGhlIG9ubHkgcmVhY2hhYmxlIGFsdGVyYXRpb24sIG9ubHkgY2hhbmdlcyBhIG51bWVyaWMgY29uc3RhbnQgdXNlZCBpbiBhIHNpemUgY2hlY2suIElmIHRoZSBsZW5ndGggaXMgbGVzcyB0aGFuIDI0LCB3ZSByZXR1cm4gYC1FSU5WQUxgLCBhbmQgdGhlIHBhY2tldCBpcyBkcm9wcGVkLiBJdCBpcyBhIGJvdW5kIGNoZWNrLCBub3QgbG9naWMgY2hhbmdlLiBJcyB0aGlzIGEgbmV3IHN0YXRlIG1hY2hpbmUgb3IgY29tcGxleCBsb2dpYyB0byBmdXp6PyBObywgSSB3b3VsZG7igJl0IGNvbnNpZGVyIHRoaXMgc2lnbmlmaWNhbnQuIEl04oCZcyBqdXN0IHRoZSBhZGRpdGlvbiBvZiBwYWRkaW5nLiBNeSBwcmV2aW91cyBleHBlcmllbmNlIGluZGljYXRlcyB0aGVzZSBzdHJ1Y3QgcGFkZGluZyBmaXhlcyBhcmVu4oCZdCBnZW5lcmFsbHkgYSBmdXp6aW5nIHRhcmdldCBiZWNhdXNlIHRoZXkncmUgZXNzZW50aWFsbHkganVzdCBjb25zdGFudCB1cGRhdGVzLlxuXG5Ob3csIGxldCdzIHJldmlzaXQgYHN0bW1hY2AgYWdhaW4uIEkga25vdyBRRU1VIHVzZXMgYGRlc2lnbndhcmVgLCBidXQgaXMgaXQgdGhlIHNhbWU/IFR1cm5zIG91dCB0aGUgZHJpdmVyIGlzIHRoZSBEZXNpZ25XYXJlIE1BQy4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoYXQgaGFyZHdhcmUgaXMgYWNjZXNzaWJsZSwgYW5kIGFsc28gaWYgemVyby1jb3B5IGlzIHN1cHBvcnRlZC4gSXTigJlzIGEgU3lzQnVzIGRldmljZSwgd2hpY2ggZG9lc24ndCBmaXQgdGhlIHN0YW5kYXJkIHN5emthbGxlciBjb25maWd1cmF0aW9uLlxuXG5BZnRlciBsb29raW5nIGF0IHRoZSBsb2NhdGlvbnMgZm9yIHRoZSBtZXRhZGF0YTpcbjEuIGBpZ2NfbWFpbi5jYDogYG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkciwgeGRwX2Rlc2Mub3B0aW9ucyk7YFxuMi4gYG1seDUvY29yZS9lbi94c2svdHguY2A6IGBtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtgXG4zLiBgc3RtbWFjX21haW4uY2A6IGBtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsIHhkcF9kZXNjLm9wdGlvbnMpO2AgYW5kIHJlbW92ZWQgYG1heF9zZHVgIGNoZWNrLlxuNC4gYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGA6IGBjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtgXG41LiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgOiBBZGRlZCBgb3B0aW9uc2AgYXJndW1lbnQgdG8gYHhza19idWZmX3Jhd19nZXRfY3R4YCwgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCwgYHhza19idWZmX2dldF9tZXRhZGF0YWAuIEFkZGVkIGBvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEFgIGNoZWNrLlxuNi4gYGluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaGA6IEFkZGVkIGBvcHRpb25zYCBhcmd1bWVudCB0byBgeHBfcmF3X2dldF9jdHhgLlxuNy4gYGluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaGA6IEFkZGVkIGBfX3UzMiByZXNlcnZlZDtgIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYC5cbjguIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2A6IEFkZGVkIGBvcHRpb25zYCBhcmd1bWVudCB0byBgeHBfcmF3X2dldF9jdHhgLlxuOS4gYHRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl9cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjY4LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjI6MzIuNzg3MjQ3MjM2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgemVyby1jb3B5IFRYIG1ldGFkYXRhIHBhdGggdG8gY2hlY2sgdGhlIFhEUF9UWF9NRVRBREFUQSBvcHRpb24gYmVmb3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhpcyBsb2dpYyBpcyBvbmx5IGltcGxlbWVudGVkIGFuZCByZWFjaGFibGUgaW4gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyAoaWdjLCBtbHg1LCBzdG1tYWMsIGlkcGYpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIHBhdGNoIGFsc28gYWRkcyBhIHJlc2VydmVkIHBhZGRpbmcgZmllbGQgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGluIHRoZSBVQVBJLCB3aGljaCBvbmx5IGFsdGVycyBhIG51bWVyaWMgY29uc3RhbnQgKHN0cnVjdCBzaXplKSB1c2VkIGluIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBnZW5lcmljIFhEUCBUWCBwYXRoLCB3aXRob3V0IGludHJvZHVjaW5nIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMjozMi43ODcyNzY5MzZaIiwiU2VxIjo1NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowfg92s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 20:00:59 +0000 UTC FinishedAt: 2026-08-13 20:22:33 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmY2FiMTQ5OTdmMmRjOGVmNGZjYzMxMTdhZWJhM2U0ZmI2YWIyMTcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMjA6MTk6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuQEAgLTMwNzQsNyAmIzQzOzMwNzQsOCBAQCBzdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuIFx0XHRvbGluZm9fc3RhdHVzID0geGRwX2Rlc2MubGVuIFx1MDAzY1x1MDAzYyBJR0NfQURWVFhEX1BBWUxFTl9TSElGVDtcbiBcbiBcdFx0ZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG4tXHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG4mIzQzO1x0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4gXHRcdGJpID0gXHUwMDI2cmluZy1cdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXG5AQCAtOTksNyAmIzQzOzk5LDcgQEAgYm9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcbiBcdFx0eGRwdHhkLmRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgZGVzYy5hZGRyKTtcbiBcdFx0eGRwdHhkLmRhdGEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RhdGEocG9vbCwgZGVzYy5hZGRyKTtcbiBcdFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xuLVx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkcik7XG4mIzQzO1x0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtcbiBcbiBcdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgeGRwdHhkLmRtYV9hZGRyLCB4ZHB0eGQubGVuKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uNGE4MmY0MzUxMzAzYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0yNzEwLDE2ICYjNDM7MjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0mIzQzOyYjNDM7O1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXG4gXHRcdHR4X2Rlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZW50cnkpO1xuIFx0XHRkbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuLVx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpO1xuJiM0MztcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuJiM0MztcdFx0XHRcdFx0ICAgICB4ZHBfZGVzYy5vcHRpb25zKTtcbiBcdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7XG4gXG4gXHRcdC8qIFRvIHJldHVybiBYRFAgYnVmZmVyIHRvIFhTSyBwb29sLCB3ZSBzaW1wbGUgY2FsbFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxuaW5kZXggNWRjYzBkN2Y2NWI3Ni4uYTQ1MmI3ODI4Y2U0ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG5AQCAtMTk2LDcgJiM0MzsxOTYsNyBAQCBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxuIFx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCBjdHg7XG4gXG4tXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyKTtcbiYjNDM7XHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbiBcdGRlc2MgPSAodHlwZW9mKGRlc2MpKXtcbiBcdFx0LmFkZHJcdD0gY3R4LmRtYSxcbiBcdFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cdTAwM2VsZW4pLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbkBAIC0yNDAsNiAmIzQzOzI0MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiAgKiB4c2tfYnVmZl9yYXdfZ2V0X2N0eCAtIGdldCBcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XG4gICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cbiAgKiBAYWRkcjogZGVzYyBhZGRyZXNzIChmcm9tIHVzZXJzcGFjZSlcbiYjNDM7ICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXG4gICpcbiAgKiBXcmFwcGVyIGZvciB4cF9yYXdfZ2V0X2N0eCgpIHRvIGJlIHVzZWQgaW4gZHJpdmVycywgc2VlIGl0cyBrZG9jIGZvclxuICAqIGRldGFpbHMuXG5AQCAtMjQ4LDkgJiM0MzsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3hza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4ge1xuLVx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIpO1xuJiM0MztcdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyLCBvcHRpb25zKTtcbiB9XG4gXG4gI2RlZmluZSBYRFBfVFhNRF9GTEFHU19WQUxJRCAoIFxcXG5AQCAtMzE4LDE4ICYjNDM7MzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuJiM0MztfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbiYjNDM7XHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4ge1xuLVx0aWYgKCFwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbilcbiYjNDM7XHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZGF0YSAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbi1cdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuJiM0MztcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG4mIzQzO1x0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbkBAIC01MTAsNyAmIzQzOzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4XG4teHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuJiM0Mzt4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07XG4gfVxuQEAgLTUzMCwxMyAmIzQzOzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4mIzQzO1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4mIzQzO3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxuQEAgLTE1NCw3ICYjNDM7MTU0LDggQEAgc3RydWN0IHhkcF9kZXNjX2N0eCB7XG4gXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xuIH07XG4gXG4tc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpO1xuJiM0MztzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcbiYjNDM7XHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4gXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbkBAIC0xNDksNiAmIzQzOzE0OSw3IEBAIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xuIFx0XHRcdF9fdTE2IGNzdW1fc3RhcnQ7XG4gXHRcdFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xuIFx0XHRcdF9fdTE2IGNzdW1fb2Zmc2V0O1xuJiM0MztcdFx0XHRfX3UzMiByZXNlcnZlZDtcbiBcbiBcdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuIFx0XHRcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuaW5kZXggNzhjMTRmMTA2Mzk1Ny4uOWQyZDk0ZjFmYjc1OSAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuQEAgLTc2Myw2ICYjNDM7NzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4mIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogSGVscGVyIGZvciBnZXR0aW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhIHBvaW50ZXIsIGlmIHByZXNlbnQuXG4gICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy5cbkBAIC03NzEsMTQgJiM0Mzs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogUmV0dXJuOiBuZXcgXHUwMDI2eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiYjNDM7c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4ge1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7XG4gXG4gXHRhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7XG4gXG4gXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbi1cdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuJiM0MztcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG4mIzQzO1x0XHRcdFx0XHQgICBvcHRpb25zKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5AQCAtMTQ5LDYgJiM0MzsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbiYjNDM7XHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfWERQIHplcm8tY29weSBUWCBtZXRhZGF0YSBwYXRoIHRvIGNoZWNrIHRoZSBYRFBfVFhfTUVUQURBVEEgb3B0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgbWV0YWRhdGEuIFRoaXMgbG9naWMgaXMgb25seSBpbXBsZW1lbnRlZCBhbmQgcmVhY2hhYmxlIGluIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgKGlnYywgbWx4NSwgc3RtbWFjLCBpZHBmKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSByZXNlcnZlZCBwYWRkaW5nIGZpZWxkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiB0aGUgVUFQSSwgd2hpY2ggb25seSBhbHRlcnMgYSBudW1lcmljIGNvbnN0YW50IChzdHJ1Y3Qgc2l6ZSkgdXNlZCBpbiBhIGxlbmd0aCBjaGVjayBpbiB0aGUgZ2VuZXJpYyBYRFAgVFggcGF0aCwgd2l0aG91dCBpbnRyb2R1Y2luZyBuZXcgZnVuY3Rpb25hbCBsb2dpYyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZjYWIxNDk5N2YyZGM4ZWY0ZmNjMzExN2FlYmEzZTRmYjZhYjIxNzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAyMDoxOTowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMKaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMKQEAgLTMwNzQsNyAmIzQzOzMwNzQsOCBAQCBzdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKQogCQlvbGluZm9fc3RhdHVzID0geGRwX2Rlc2MubGVuICZsdDsmbHQ7IElHQ19BRFZUWERfUEFZTEVOX1NISUZUOwogCiAJCWRtYSA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwotCQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwomIzQzOwkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLAomIzQzOwkJCQkJICAgICB4ZHBfZGVzYy5vcHRpb25zKTsKIAkJeHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hLCB4ZHBfZGVzYy5sZW4pOwogCQliaSA9ICZhbXA7cmluZy0mZ3Q7dHhfYnVmZmVyX2luZm9bbnR1XTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jCmluZGV4IDNkMTlkYWQ4Zjg2ODguLmQxOTRlZWRkZDdiNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMKQEAgLTk5LDcgJiM0Mzs5OSw3IEBAIGJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpCiAJCXhkcHR4ZC5kbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIGRlc2MuYWRkcik7CiAJCXhkcHR4ZC5kYXRhID0geHNrX2J1ZmZfcmF3X2dldF9kYXRhKHBvb2wsIGRlc2MuYWRkcik7CiAJCXhkcHR4ZC5sZW4gPSBkZXNjLmxlbjsKLQkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpOwomIzQzOwkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7CiAKIAkJeHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgeGRwdHhkLmRtYV9hZGRyLCB4ZHB0eGQubGVuKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uNGE4MmY0MzUxMzAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0yNzEwLDE2ICYjNDM7MjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpCiAJCWlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCAmYW1wO3hkcF9kZXNjKSkKIAkJCWJyZWFrOwogCi0JCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSAmYW1wOyZhbXA7Ci0JCSAgICBwcml2LSZndDtlc3QtJmd0O21heF9zZHVbcXVldWVdICZhbXA7JmFtcDsKLQkJICAgIHhkcF9kZXNjLmxlbiAmZ3Q7IHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKLQkJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7Ci0JCQljb250aW51ZTsKLQkJfQotCiAJCXR4X2Rlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZW50cnkpOwogCQlkbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwotCQltZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIpOwomIzQzOwkJbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLAomIzQzOwkJCQkJICAgICB4ZHBfZGVzYy5vcHRpb25zKTsKIAkJeHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7CiAKIAkJLyogVG8gcmV0dXJuIFhEUCBidWZmZXIgdG8gWFNLIHBvb2wsIHdlIHNpbXBsZSBjYWxsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmggYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmgKaW5kZXggNWRjYzBkN2Y2NWI3Ni4uYTQ1MmI3ODI4Y2U0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaApAQCAtMTk2LDcgJiM0MzsxOTYsNyBAQCBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLAogCXN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYzsKIAlzdHJ1Y3QgeGRwX2Rlc2NfY3R4IGN0eDsKIAotCWN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLSZndDtwb29sLCB4ZGVzYy0mZ3Q7YWRkcik7CiYjNDM7CWN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLSZndDtwb29sLCB4ZGVzYy0mZ3Q7YWRkciwgeGRlc2MtJmd0O29wdGlvbnMpOwogCWRlc2MgPSAodHlwZW9mKGRlc2MpKXsKIAkJLmFkZHIJPSBjdHguZG1hLAogCQlfX2xpYmV0aF94ZHBfdHhfbGVuKHhkZXNjLSZndDtsZW4pLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmggYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaAppbmRleCBiMzQ0Nzg5ZjVkZjgzLi5kOTRhZWI1MDYzNzljIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaApAQCAtMjQwLDYgJiM0MzsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiAgKiB4c2tfYnVmZl9yYXdfZ2V0X2N0eCAtIGdldCAmYW1wO3hkcF9kZXNjIGNvbnRleHQKICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvCiAgKiBAYWRkcjogZGVzYyBhZGRyZXNzIChmcm9tIHVzZXJzcGFjZSkKJiM0MzsgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSkKICAqCiAgKiBXcmFwcGVyIGZvciB4cF9yYXdfZ2V0X2N0eCgpIHRvIGJlIHVzZWQgaW4gZHJpdmVycywgc2VlIGl0cyBrZG9jIGZvcgogICogZGV0YWlscy4KQEAgLTI0OCw5ICYjNDM7MjQ5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQogICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS4KICAqLwogc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4Ci14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucykKIHsKLQlyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkcik7CiYjNDM7CXJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyLCBvcHRpb25zKTsKIH0KIAogI2RlZmluZSBYRFBfVFhNRF9GTEFHU19WQUxJRCAoIFwKQEAgLTMxOCwxOCAmIzQzOzMxOSwyMCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKQomIzQzO19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLAomIzQzOwkJCXVuc2lnbmVkIGludCBvcHRpb25zKQogewotCWlmICghcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuKQomIzQzOwlpZiAoIXBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gZGF0YSAtIHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbjsKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoKLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpCiB7Ci0JcmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7CiYjNDM7CXJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksCiYjNDM7CQkJCSAgICAgICBvcHRpb25zKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoc3RydWN0IHhkcF9idWZmICp4ZHApCkBAIC01MTAsNyAmIzQzOzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4Ci14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpCiYjNDM7eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucykKIHsKIAlyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9OwogfQpAQCAtNTMwLDEzICYjNDM7NTMzLDE0IEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLAogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgotX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpCiYjNDM7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsCiYjNDM7CQkJdW5zaWduZWQgaW50IG9wdGlvbnMpCiB7CiAJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqCi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQomIzQzO3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKQogewogCXJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oIGIvaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oCmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgKQEAgLTE1NCw3ICYjNDM7MTU0LDggQEAgc3RydWN0IHhkcF9kZXNjX2N0eCB7CiAJc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTsKIH07CiAKLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKTsKJiM0MztzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwKJiM0MzsJCQkJICAgdTMyIG9wdGlvbnMpOwogCiBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgeHBfZ2V0X2RtYShzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKQEAgLTE0OSw2ICYjNDM7MTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7CiAJCQlfX3UxNiBjc3VtX3N0YXJ0OwogCQkJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwogCQkJX191MTYgY3N1bV9vZmZzZXQ7CiYjNDM7CQkJX191MzIgcmVzZXJ2ZWQ7CiAKIAkJCS8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovCiAJCQkvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqLwpkaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuYwppbmRleCA3OGMxNGYxMDYzOTU3Li45ZDJkOTRmMWZiNzU5IDEwMDY0NAotLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuYwpAQCAtNzYzLDYgJiM0Mzs3NjMsNyBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTsKICAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0ICZhbXA7eGRwX2Rlc2MgY29udGV4dAogICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG8KICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKQomIzQzOyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKQogICoKICAqIEhlbHBlciBmb3IgZ2V0dGluZyBkZXNjJiMzOTtzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LgogICogU2F2ZXMgb25lIGNhbGwgb24gaG90cGF0aCBhbmQgZG91YmxlIGNhbGN1bGF0aW9uIG9mIHRoZSBhY3R1YWwgYWRkcmVzcy4KQEAgLTc3MSwxNCAmIzQzOzc3MiwxNiBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTsKICAqIFJldHVybjogbmV3ICZhbXA7eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MmIzM5O3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhCiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLgogICovCi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKJiM0MztzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwKJiM0MzsJCQkJICAgdTMyIG9wdGlvbnMpCiB7CiAJc3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7CiAKIAlhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7CiAKIAlyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTsKLQlyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTsKJiM0MzsJcmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSwKJiM0MzsJCQkJCSAgIG9wdGlvbnMpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAppbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NAotLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oCkBAIC0xNDksNiAmIzQzOzE0OSw3IEBAIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgewogCQkJX191MTYgY3N1bV9zdGFydDsKIAkJCS8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi8KIAkJCV9fdTE2IGNzdW1fb2Zmc2V0OwomIzQzOwkJCV9fdTMyIHJlc2VydmVkOwogCiAJCQkvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqLwogCQkJLyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ2MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBYRFAvQUZfWERQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBtb2RpZmljYXRpb25zIHRvIHRoZSBYRFAgYW5kIEFGX1hEUCBzb2NrZXQgY29kZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSB0d2Vha2luZyBob3cgd2UmIzM5O3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhleSYjMzk7cmUgYWRkaW5nIGNoZWNrcyB1c2luZyB0aGUgYG9wdGlvbnNgIGZpZWxkIGZyb20gdGhlIFhEUCBkZXNjcmlwdG9yIHRvIHNlZSBpZiBgWERQX1RYX01FVEFEQVRBYCBpcyBwcmVzZW50IGJlZm9yZSBjYWxsaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBUaGF0IG1ha2VzIHNlbnNlLCBoYW5kbGluZyBwb3RlbnRpYWwgZWRnZSBjYXNlcyBhcm91bmQgbWV0YWRhdGEgYXZhaWxhYmlsaXR5IGlzIGFsd2F5cyBnb29kLiBUaGUgYWRkaXRpb24gb2YgYF9fdTMyIHJlc2VydmVkO2AgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGxvb2tzIGxpa2UgYSBmb3J3YXJkLWNvbXBhdGliaWxpdHkgbW92ZSwgcHJvYmFibHkgcHJlcGFyaW5nIGZvciBmdXR1cmUgZmVhdHVyZXMuIFRoZW4sIHRoZXJlJiMzOTtzIHNvbWUgY29kZSBiZWluZyByZW1vdmVkIGZyb20gYHN0bW1hY194ZHBfeG1pdF96Y2AgcmVsYXRlZCB0byBgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXWAuIE5vdCBzdXJlIHdoeSB0aGF0JiMzOTtzIGJlaW5nIHJlbW92ZWQsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhhdCBhIGJpdCBtb3JlLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGNvZGUgYWN0dWFsbHkgYmUgaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEFGX1hEUCBpcyBhIGNvcmUgbmV0d29ya2luZyBmZWF0dXJlLCBzbyBpdCBzaG91bGQgYmUgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBkcml2ZXJzIGJlaW5nIHRvdWNoZWQgYXJlIGBpZ2NgLCBgbWx4NWAsIGFuZCBgc3RtbWFjYC4gSSBrbm93IGBpZ2NgIGFuZCBgbWx4NWAgYXJlIGNvbW1vbiBpbiB2aXJ0dWFsaXplZCBzY2VuYXJpb3MsIGJ1dCBgc3RtbWFjYCBpcyBsZXNzIHR5cGljYWwuIEJ1dCBoYW5nIG9uLCB0aGUgY29yZSBBRl9YRFAgY29kZSBsaXZlcyBpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBhbmQgYHN0bW1hY2AgaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGRpcmVjdGx5IGluIHRoZSBjcml0aWNhbCBwYXRoLCBidXQgYHZldGhgIGFsc28gdXNlcyBBRl9YRFAhIFRoZSBwcm9ibGVtIGhlcmUgaXMgYHZldGhgIGlzbiYjMzk7dCBsaXN0ZWQgaGVyZSBhcyBiZWluZyBtb2RpZmllZCEgTmVlZCB0byBjaGVjayB0aGF0LgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKi4gYHhza19idWZmX2dldF9tZXRhZGF0YWAgaXMgY2FsbGVkIGluIGBpZ2NgLCBgbWx4NWAsIGFuZCBgc3RtbWFjYC4gSSBzZWUgdGhlc2UgZHJpdmVycyBiZWluZyB0b3VjaGVkLCBidXQgaXMgYHhza19idWZmX3Jhd19nZXRfY3R4YCB1c2VkICphbnl3aGVyZSogZWxzZT8gSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYmVpbmcgdXNlZCBpbiBgdmV0aGAsIG9yIGFub3RoZXIgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgYm90aCBgeHBfcmF3X2dldF9jdHhgIGFuZCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSB2YWxpZCBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYWNjb3VudGluZyBmb3IgKmFsbCogdGhlIHVzZXMgb2YgdGhlc2UgZnVuY3Rpb25zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM3PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3Ni1cdFx0ZG1hID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc3Olx0XHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc4LVx0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYz02Nj1ib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXHRcdHhkcHR4ZC5sZW4gPSBkZXNjLmxlbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyLCBkZXNjLm9wdGlvbnMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2Nzc9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcxNC1cdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjcxNTpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzE2LVx0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMyMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzIzLVx0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMzMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzMyOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMzLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzUtXHRcdFx0XHQgICAgICAgb3B0aW9ucyk7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTM1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzctXHRcdFx0dW5zaWduZWQgaW50IG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1NDM6eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01NDQte1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc3NT1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODItXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc4MzpcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODQtXHRcdFx0XHRcdCAgIG9wdGlvbnMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MTgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkFuYWx5emluZyB0aGUgWERQIFNvY2tldCBNZXRhZGF0YSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgWERQIHNvY2tldCBtZXRhZGF0YSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYW5kIHRoZSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGNoZWNraW5nIHRoZSBgb3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgIGJpdC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgaXQmIzM5O3MgYWJvdXQgd2hldGhlciB3ZSYjMzk7cmUgZ29pbmcgdG8gdHJhbnNtaXQgbWV0YWRhdGEgd2l0aCB0aGUgWERQIHBhY2tldC4KCk5vdywgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbiAqaW5saW5lKiBmdW5jdGlvbiwgc28gaXQmIzM5O3MgcHJvYmFibHkgcGVyZm9ybWFuY2UtY3JpdGljYWwuIEl0JiMzOTtzIHVzZWQgYnkgdHdvIG90aGVyIGZ1bmN0aW9ucywgYHhza19idWZmX2dldF9tZXRhZGF0YWAgKG1ha2VzIHNlbnNlLCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIGNhbGwpIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBBbHJpZ2h0LCBsZXQmIzM5O3Mga2VlcCBhbiBleWUgb24gYHhwX3Jhd19nZXRfY3R4YCDigJMgdGhhdCBjb3VsZCBiZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wYWN0LgoKQWgsIHRoZXJlIGl0IGlzISBgeHBfcmF3X2dldF9jdHhgIGlzLCBpbiB0dXJuLCB1c2VkIGJ5IGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAgaW4gYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGBsaWJldGhgIGlzIGhhbmRsaW5nIGV0aGVybmV0IGZyYW1lcyBpbiBYRFAuIFNvIG5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGlzIGJlaW5nICpjYWxsZWQqLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBjaGFuZ2UgdG8gdGhlIGNvcmUgWERQIGxvZ2ljLCBvciBpcyBpdCBtb3JlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB1c2UgY2FzZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzk6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L21ldGFcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODAtICogQHhkZXNjOiBcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Mi1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ3PWxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSBmcm0sIHUzMiBpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTItXHRpZiAocHJpdilcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTM6XHRcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcdTAwMjZmcm0uZGVzYywgc3EsIHByaXYpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1NC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTM3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGBsaWJldGhgIGFuZCwgc3BlY2lmaWNhbGx5LCBJJiMzOTt2ZSBnb3QgdG8gdW5kZXJzdGFuZCBob3cgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAgaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhhdCBsaWJyYXJ5LiAgSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHkuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGluc3RhbmNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uLCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYCwgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgYGxpYmV0aGAgY29kZS4gVGhlbiBJIGNhbiB1bmRlcnN0YW5kIGl0cyByb2xlIGluIFhTSyB0cmFuc21pc3Npb24uIE5vdGhpbmcgY29tcGxpY2F0ZWQgc28gZmFyLCBqdXN0IHN0YW5kYXJkIGNvZGUgYW5hbHlzaXMgcHJvY2VkdXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzk6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L21ldGFcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODAtICogQHhkZXNjOiBcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTgzLSAqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTg0OiAqIFNhbWUgYXMgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoKSwgYnV0IHJlcXVlc3RzIG1ldGFkYXRhIHBvaW50ZXIgYW5kXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTg1LSAqIGZpbGxzIGFkZGl0aW9uYWwgZmllbGRzIGluIFx1MDAyNmxpYmV0aF94ZHBfdHhfZGVzYyB0byBhc2sgZm9yIG1ldGFkYXRhIG9mZmxvYWQuXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTE6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIxNS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMTY6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L28gbWV0YVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIxNy0gKiBAeGRlc2M6IFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yMjM9c3RhdGljIGlubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjI0Ol9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjI1LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMzMtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjM0OiAqIGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIGFuIFhTayB4bWl0XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjM1LSAqIEBmcm06IFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDY9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjQ3OmxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSBmcm0sIHUzMiBpLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI0OC1cdFx0XHQgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsIHU2NCBwcml2KVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTItXHRpZiAocHJpdilcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTM6XHRcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcdTAwMjZmcm0uZGVzYywgc3EsIHByaXYpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1NC1cdGVsc2VcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTU6XHRcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihcdTAwMjZmcm0uZGVzYywgc3EpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Ni1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9Mjg1PWxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA0LVx0XHRcdFx0bGliZXRoX3hkcF9wdHJfdG9fcHJpdih0bW8pLCBwcmVwLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjMwNTpcdFx0XHRcdGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiwgeG1pdCk7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA2LVx0ZmluYWxpemUoeGRwc3EsIG4sIHRydWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgVXNhZ2UqKgoKQWxyaWdodCwgc28gYGxpYmV0aF94c2tfeG1pdF9kb19idWxrYC4uLiB0aGF0IHJpbmdzIGEgYmVsbC4gSXQmIzM5O3MgcG9wcGluZyB1cCBpbiBhIGZldyBkcml2ZXJzLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgbGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlLiYjMzQ7IEkgbmVlZCB0byBpZGVudGlmeSAqcHJlY2lzZWx5KiB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoaXMuIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBtaWdodCBiZSBhIGtleSBpbmRpY2F0b3IgZm9yIFhEUCBhY2NlbGVyYXRpb24gb3Igc29tZSBvdGhlciBwZXJmb3JtYW5jZS1jcml0aWNhbCBwYXRoLiBLbm93aW5nIHdoaWNoIE5JQ3Mgb3IgdmlydHVhbCBkZXZpY2VzIHV0aWxpemUgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RzIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBvcHRpbWl6YXRpb25zLiBJ4oCZbGwgbmVlZCB0byBkbyBhIGNvZGUgc2VhcmNoIGFjcm9zcyB0aGUgcmVsZXZhbnQgdHJlZXMuIEhvcGVmdWxseSwgdGhpcyBpcyB3ZWxsLWRlZmluZWQsIGFuZCB0aGUgdXNhZ2UgaXMgY29uc2lzdGVudCBhY3Jvc3MgdGhlIGltcGxlbWVudGF0aW9uLiBBZnRlciBpZGVudGlmeWluZyBhbGwgdXNlcnMgb2YgdGhlIGZ1bmN0aW9uLCBJIGNhbiBiZWdpbiB0byBkcmF3IHNvbWUgY29uY2x1c2lvbnMsIHNvIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aF94c2tfeG1pdF9kb19idWxrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MzE2PWJvb2wgaWRwZl94c2tfeG1pdChzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqeHNrc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMyNjpcdHJldHVybiBsaWJldGhfeHNrX3htaXRfZG9fYnVsayh4c2tzcS1cdTAwM2Vwb29sLCB4c2tzcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzI3LVx0XHRcdFx0ICAgICAgIG1pbihmcmVlIC0gMSwgeHNrc3EtXHUwMDNldGhyZXNoKSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ3PWxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihzdHJ1Y3QgbGliZXRoX3hkcF90eF9mcmFtZSBmcm0sIHUzMiBpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjY1OiAqIGxpYmV0aF94c2tfeG1pdF9kb19idWxrIC0gc2VuZCBYU2sgeG1pdCBmcmFtZXNcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjYtICogQHBvb2w6IFhTayBidWZmZXIgcG9vbCBjb250YWluaW5nIHRoZSBmcmFtZXMgdG8gc2VuZFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yODQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg1OmxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yODYtXHRcdFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0ODYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgdGhlIFhEUCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHVzZXMgYGlkcGZgLCBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyBgc3RtbWFjX3hkcF94bWl0X3pjYCBpbiBgc3RtbWFjX21haW4uY2AuIFJpZ2h0LCBgc3RtbWFjYC4uLiBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgY29udHJvbGxlcnMuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyBpbiBRRU1VPyBJIGtub3cgdGhlcmUmIzM5O3MgYSBmaWxlIGZvciBpLk1YIEZFQywgYnV0IGBzdG1tYWNgIGlzIHR5cGljYWxseSBBUk0uIEhvd2V2ZXIsIHdhaXQsIGl0ICpkb2VzKiBoYXZlIFBDSSBiaW5kaW5ncywgYHN0bW1hY19wY2kuY2AuIFFFTVUgbWlnaHQgbm90IGV2ZW4gZW11bGF0ZSB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCB0aG91Z2guLi4KCkxldCYjMzk7cyBzdGVwIGJhY2suIERvZXMgYHZldGhgIGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYD8gTm8sIGl0IGRvZXNuJiMzOTt0IHN1cHBvcnQgWERQIFRYIG1ldGFkYXRhLiBPa2F5LCB0aGUgcGxvdCB0aGlja2Vucy4gVGhpcyBwYXRjaCBpcyBhbHNvIG1vZGlmeWluZyBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBTbywgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGB4cF9yYXdfZ2V0X2N0eGAuCgpIb2xkIG9uLCBpcyBgeHBfcmF3X2dldF9jdHhgIHVzZWQgYW55d2hlcmUgZWxzZT8gTGV0JiMzOTtzIGNoZWNrIHdpdGhpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFnYWluLiBBaGEsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgbW9kaWZpZXMgYHhwX3Jhd19nZXRfY3R4YCB0byB0YWtlIGBvcHRpb25zYCBhbmQgcGFzcyBpdCBpbnRvIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAuIFRoZSBwYXRjaCBhbHNvIGFkZGVkIGBfX3UzMiByZXNlcnZlZDtgIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYC4gQSBVQVBJIGNoYW5nZS4gVGhpcyBpcyBzaWduaWZpY2FudC4KCkRvZXMgdGhpcyBjaGFuZ2UgdWx0aW1hdGVseSBpbXBhY3QgdGhlIGNvcmUgQUZfWERQIGNvZGU/IFllcywgYHhwX3Jhd19nZXRfY3R4YCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyB1c2FibGUgb3V0c2lkZS4gQnV0IGlzIHRoZSBrZXJuZWwgZGlyZWN0bHkgdXNpbmcgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBlbHNld2hlcmU/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBuZXQveGRwL2AgYW5kIGBuZXQvY29yZS9gIGRpcmVjdG9yaWVzIGZvciBjb25maXJtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hwX3Jhd19nZXRfY3R4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTIzND1zdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQ0LSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDU6ICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI0Ni0gKiBkZXRhaWxzLlxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1Mj14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjUzLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI1NDpcdHJldHVybiB4cF9yYXdfZ2V0X2N0eChwb29sLCBhZGRyLCBvcHRpb25zKTtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1NS19XG4tLVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oPTE1Mj1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHtcbi0tXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTU2LVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjE1NzpzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcixcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTgtXHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzYwPUVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9kbWEpO1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc2Mi0vKipcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc2MzogKiB4cF9yYXdfZ2V0X2N0eCAtIGdldCBcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjQtICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzQtICovXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzU6c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzYtXHRcdFx0XHQgICB1MzIgb3B0aW9ucylcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODctfVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzg4OkVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9jdHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1NwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBYU0sgQnVmZmVyIE1ldGFkYXRhIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgdXNhZ2Ugb2YgdGhlc2UgWFNLIGJ1ZmZlciBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgYHhwX3Jhd19nZXRfY3R4YCBzZWVtcyB0byBiZSBzb2xlbHkgdXNlZCB3aXRoaW4gYHhza19idWZmX3Jhd19nZXRfY3R4YCwgYW5kIHRoYXQgb25lIGlzIHVzZWQgaW4gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlIGhlcmUuIFRoZW4sIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNhbGxlZCBpbiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgd2hhdCBJJiMzOTttIHVzdWFsbHkgdGVzdGluZyB3aXRoPwoKKiAgIGBpZ2NgLi4uIHRoYXQmIzM5O3MgdGhlIEludGVsIEkyMjUtTE0vSTIyNS1WIDIuNUcgRXRoZXJuZXQgY29udHJvbGxlci4gUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGl0OyBpdCBzdGlja3Mgd2l0aCBgZTEwMDBgLCBgZTEwMDBlYCwgYW5kIGBpZ2JgLiBTbywgbm8gam95IHRoZXJlLgoqICAgYG1seDVgLi4uIHRoYXQmIzM5O3MgTWVsbGFub3ggQ29ubmVjdFgtNC81LzYuIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGF0IG5hdGl2ZWx5IHdpdGhvdXQgVkZJTyBvciB0aGUgaGFyZHdhcmUsIHdoaWNoIGlzbiYjMzk7dCB0aGUgZW52aXJvbm1lbnQgSSYjMzk7bSBmb2N1c2luZyBvbi4KKiAgIGBzdG1tYWNgLi4uIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldC4gUUVNVSBsaWtlbHkgZG9lc24mIzM5O3QgZW11bGF0ZSBpdCBvbiBzdGFuZGFyZCB4ODZfNjQsIHdoaWNoIGlzIHdoYXQgU3l6a2FsbGVyLCB3aGljaCBJIGdlbmVyYWxseSB1c2UsIHRlc3RzLiBJdCAqbWlnaHQqIGJlIHByZXNlbnQgb24gQVJNIGVtdWxhdGlvbnMsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSB0YXJnZXQuCiogICBXYWl0IGEgbWludXRlLCBJIG1pc3NlZCBgaWRwZmAuLi4gdGhhdCYjMzk7cyBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24uIFFFTVUgZGVmaW5pdGVseSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgb25lLgoKU28gdGhlIG9idmlvdXMgcXVlc3Rpb24gaXM6IGlzIHRoZXJlICphbnl0aGluZyogZWxzZSBjYWxsaW5nIGVpdGhlciBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBvciBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIHRoYXQgSSYjMzk7bSBtaXNzaW5nPyBJIG5lZWQgdG8gcGVyZm9ybSBhIG1vcmUgdGhvcm91Z2ggc2VhcmNoLiBUaW1lIHRvIGdyZXAgZm9yIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9yYXdfZ2V0X2N0eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxOTk6XHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yMzktLyoqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQxLSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjUyOnhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUxNT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTE3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMDYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFhTSyBCdWZmZXIgRmxvdyBhbmQgUG90ZW50aWFsIEltcGFjdCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgIGlzLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCAqb25seSogdXNlZCB3aXRoaW4gYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYC4gQW5kIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgLCB3aGljaCBpdHNlbGYgZmVlZHMgaW50byBgbGliZXRoX3hza194bWl0X2RvX2J1bGtgLCB3aGljaCBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgKm9ubHkqIHVzZWQgYnkgYGlkcGZgLiBTbywgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBkaXJlY3RseSBhZmZlY3RpbmcgdGhlIGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgIGRyaXZlcnMuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBub3c6IGFyZSBhbnkgb2YgdGhlc2UgZHJpdmVycyBlbXVsYXRlZCBpbiBRRU1VIGluIGEgd2F5IHRoYXQgd291bGQgbWF0dGVyIGZvciBzdGFuZGFyZCBzeXprYWxsZXIgdGVzdGluZz8gTm9wZS4gU3RhbmRhcmQgc3l6a2FsbGVyIHRlc3RpbmcgZG9lc24mIzM5O3QgdG91Y2ggdGhvc2UuCgpXYWl0IGEgbWludXRlLCB3aGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGB2ZXRoYD8gRG9lcyBpdCBzb21laG93IGluZGlyZWN0bHkgdXNlIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgPyBObywgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UuIFdoYXQgYWJvdXQgYHN0bW1hY2AsIHNwZWNpZmljYWxseT8gQ2FuIHdlIHJlYWNoIGl0IHRocm91Z2ggc29tZSBmb3JtIG9mIHZpcnR1YWxpemF0aW9uPyBObywgYHN0bW1hY2AgaXMgZmlybWx5IHJvb3RlZCBpbiBwaHlzaWNhbCBoYXJkd2FyZS4KCk9rYXksIEkgc2VlIGl0ISBUaGVyZSYjMzk7cyBhIFVBUEkgY2hhbmdlIGluIHRoZSBgaWZfeGRwLmhgIGhlYWRlcjogYSBuZXcgYHJlc2VydmVkYCBmaWVsZCBoYXMgYmVlbiBhZGRlZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAuIEkgbmVlZCB0byB0aGluayBjYXJlZnVsbHkgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGxheW91dCBjaGFuZ2UuCgpOb3csIGRvZXMgdGhpcyBhbHRlcmF0aW9uIHRvIHRoZSBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW1wYWN0IGFueSBjb3JlIGtlcm5lbCBjb2RlPyBUaGlzIGlzIHRoZSBjb3JlIHF1ZXN0aW9uIEkgbmVlZCB0byBjb25zaWRlciB0byB1bmRlcnN0YW5kIGlmIHRoZSBwYXRjaCBtaWdodCBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHBsYWNlcyB3aGVyZSBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaXMgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHhza190eF9tZXRhZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD0xNj1sZW5ndGggaXMgdGhlcmVmb3JlIHRoZSBzYW1lIGZvciBldmVyeSBzb2NrZXQgdGhhdCBzaGFyZXMgdGhlIHNhbWUgdW1lbS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjE3OlRoZSBtZXRhZGF0YSBsYXlvdXQgaXMgYSBmaXhlZCBVQVBJLCByZWZlciB0byBgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgYCBpblxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTgtYGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgYC4gVGh1cywgZ2VuZXJhbGx5LCB0aGUgYGB0eF9tZXRhZGF0YV9sZW5gYFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTk6ZmllbGQgYWJvdmUgc2hvdWxkIGNvbnRhaW4gYGBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSlgYC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTIwLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTQ1PVRoZSBmbGFncyBmaWVsZCBlbmFibGVzIHRoZSBwYXJ0aWN1bGFyIG9mZmxvYWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNDgtICB0aW1lc3RhbXAgaW50byBgYGNvbXBsZXRpb24udHhfdGltZXN0YW1wYGAgZmllbGQgb2ZcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjQ5OiAgYGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYGAuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdC01MC0tIGBgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU1gYDogcmVxdWVzdHMgdGhlIGRldmljZSB0byBjYWxjdWxhdGUgTDRcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdC01Ni0gIHZhbHVlIG9mIGxhdW5jaCB0aW1lIGlzIGluZGljYXRlZCBieSBgYHJlcXVlc3QubGF1bmNoX3RpbWVgYCBmaWVsZCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6NTc6ICBgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgYC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0xMDg9c3RydWN0IGlnY190eF90aW1lc3RhbXBfcmVxdWVzdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTExOS1cdHU4IHhza19xdWV1ZV9pbmRleDsgICAgLyogVHggcXVldWUgd2hpY2ggcmVxdWVzdGluZyB0aW1lc3RhbXAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoxMjA6XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1x0LyogcmVmIHRvIHhzayBUeCBtZXRhZGF0YSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTEyMS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0zNzI9aW50IGlnY194c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxdWV1ZV9pZCwgdTMyIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtMzc0LS8qIEFGX1hEUCBUWCBtZXRhZGF0YSBvcGVyYXRpb25zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6Mzc1OmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0zNzYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTYwMj1zdHJ1Y3QgaWdjX21ldGFkYXRhX3JlcXVlc3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTYwMy1cdHN0cnVjdCBpZ2NfdHhfYnVmZmVyICp0eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6NjA0Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC02MDUtXHRzdHJ1Y3QgaWdjX3JpbmcgKnR4X3Jpbmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9Mjk5Mz1zdGF0aWMgdm9pZCBpZ2NfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAzMTpjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBpZ2NfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwMzItXHQudG1vX3JlcXVlc3RfdGltZXN0YW1wXHRcdD0gaWdjX3hza19yZXF1ZXN0X3RpbWVzdGFtcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM3PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA2NC1cdFx0c3RydWN0IGlnY19tZXRhZGF0YV9yZXF1ZXN0IG1ldGFfcmVxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA2NTpcdFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDY2LVx0XHRzdHJ1Y3QgaWdjX3R4X2J1ZmZlciAqYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaD0xNT1zdHJ1Y3QgeGRwX2ZyYW1lX2J1bGs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvcHJpdi5oLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaDoxNzpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaC0xOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM9MzkwPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYy0zOTItXHRcdFx0ICAgICAgIHUzMiB6Y19zZWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjM5MzpcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94ZHAuYy0zOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz0xND12b2lkIF9fY29sZCBsaWJldGhfeHNrX3R4X3JldHVybl9idWxrKGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lICpicSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6MjM6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93ID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTI0LVx0LnRtb19yZXF1ZXN0X2NoZWNrc3VtXHRcdD0gbGliZXRoX3hza3Rtb19yZXFfY3N1bSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD00ODA9c3RydWN0IG1seDVlX3htaXRfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjQ4MTpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtNDgyLXR5cGVkZWYgaW50ICgqbWx4NWVfZnBfeG1pdF94ZHBfZnJhbWVfY2hlY2spKHN0cnVjdCBtbHg1ZV94ZHBzcSAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTQ4Mz10eXBlZGVmIGJvb2wgKCptbHg1ZV9mcF94bWl0X3hkcF9mcmFtZSkoc3RydWN0IG1seDVlX3hkcHNxICosXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtNDg1LVx0XHRcdFx0XHRpbnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo0ODY6XHRcdFx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtNDg3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz0zMDQ9c3RhdGljIHZvaWQgbWx4NWVfeHNrX3JlcXVlc3RfY2hlY2tzdW0odTE2IGNzdW1fc3RhcnQsIHUxNiBjc3VtX29mZnNldCwgdm9pZCAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jOjMxMjpjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTMxMy1cdC50bW9fZmlsbF90aW1lc3RhbXBcdFx0PSBtbHg1ZV94c2tfZmlsbF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTQ1ND1tbHg1ZV94bWl0X3hkcF9mcmFtZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NDU1Olx0XHQgICAgIGludCBjaGVja19yZXN1bHQsIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy00NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTQ1OD1tbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NDU5Olx0XHRcdCAgIGludCBjaGVja19yZXN1bHQsIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTU0MD1tbHg1ZV94bWl0X3hkcF9mcmFtZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1Y3QgbWx4NWVfeG1pdF9kYXRhICp4ZHB0eGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NTQxOlx0XHQgICAgIGludCBjaGVja19yZXN1bHQsIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTU0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jPTY2NT1zdGF0aWMgdm9pZCBtbHg1ZV9mcmVlX3hkcHNxX2Rlc2Moc3RydWN0IG1seDVlX3hkcHNxICpzcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtNzMyLVx0XHRcdC8qIEFGX1hEUCBzZW5kICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NzMzOlx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy03MzQtXHRcdFx0c3RydWN0IG1seDVlX3hza190eF9jb21wbGV0ZSBwcml2ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD04ND11bmlvbiBtbHg1ZV94ZHBfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTk0LVx0fSBwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjk1Olx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCB4c2tfbWV0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC05Ni19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD0xMTE9ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzIG1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg6MTEyOmV4dGVybiBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaD0xMTQ9SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRShib29sIG1seDVlX3htaXRfeGRwX2ZyYW1lX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExNi1cdFx0XHRcdFx0XHRcdCAgaW50IGNoZWNrX3Jlc3VsdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaDoxMTc6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTE4LUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFtZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC0xMjAtXHRcdFx0XHRcdFx0ICAgIGludCBjaGVja19yZXN1bHQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg6MTIxOlx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqbWV0YSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTEyMi1JTkRJUkVDVF9DQUxMQUJMRV9ERUNMQVJFKGludCBtbHg1ZV94bWl0X3hkcF9mcmFtZV9jaGVja19tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jPTY2PWJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTY4LVx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSBzcS1cdTAwM2V4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzo2OTpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTcwLVx0dW5pb24gbWx4NWVfeGRwX2luZm8geGRwaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTE2LVx0XHRcdGlmICh4cF90eF9tZXRhZGF0YV9lbmFibGVkKHNxLVx1MDAzZXhza19wb29sKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jOjExNzpcdFx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgY29tcGw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQ5PXN0cnVjdCBzdG1tYWNfdHhfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo1MDpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgeHNrX21ldGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC01MS1cdGRtYV9hZGRyX3QgYnVmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY2MT1zdGF0aWMgdm9pZCBzdG1tYWNfeHNrX3JlcXVlc3RfbGF1bmNoX3RpbWUodTY0IGxhdW5jaF90aW1lLCB2b2lkICpfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2NzE6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHN0bW1hY194c2tfdHhfbWV0YWRhdGFfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjcyLVx0LnRtb19yZXF1ZXN0X3RpbWVzdGFtcFx0XHQ9IHN0bW1hY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjc3PXN0YXRpYyBib29sIHN0bW1hY194ZHBfeG1pdF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2OTYtXHRcdHN0cnVjdCBzdG1tYWNfbWV0YWRhdGFfcmVxdWVzdCBtZXRhX3JlcTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjY5NzpcdFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2OTgtXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTQ5PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNTYtXHRjb25zdCBzdHJ1Y3QgeGRwX21ldGFkYXRhX29wcyAqeGRwX21ldGFkYXRhX29wcztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjI1NzpcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp4c2tfdHhfbWV0YWRhdGFfb3BzO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMjU4LVx0dW5zaWduZWQgc2hvcnRcdFx0Z2ZsYWdzO1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTc5PXZvaWQgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhzdHJ1Y3QgbW1waW4gKm1tcCk7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01ODUtICovXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjU4NjpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTg3LVx0X191NjQgKnR4X3RpbWVzdGFtcDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTU5Mz1zdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTYwMy1cdFx0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzIGh3dHN0YW1wcztcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NjA0Olx0XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC02MDUtXHR9O1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaD0xODIxPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODIzLVx0XHRcdCAgICAgICB1MzIgemNfc2VncyxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODI0Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODI1LXZvaWQgbGliZXRoX3hkcF9zZXRfcmVkaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xNjc9c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94c2t0bW9fcmVxX2NzdW0odTE2IGNzdW1fc3RhcnQsIHUxNiBjc3VtX29mZnNldCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTczLS8qIE9ubHkgdG8gaW5saW5lIHRoZSBjYWxsYmFja3MgYmVsb3csIHVzZSBAbGliZXRoX3hza3RtbyBpbiBkcml2ZXJzIGluc3RlYWQgKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIF9fbGliZXRoX3hza3RtbyA9IHtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xNzUtXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cdD0gbGliZXRoX3hza3Rtb19yZXFfY3N1bSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5NC17XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk1Olx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyA9IGxpYmV0aF94ZHBfcHJpdl90b19wdHIocHJpdik7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTk2LVx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yODU9bGliZXRoX3hza194bWl0X2RvX2J1bGsoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKnhkcHNxLCB1MzIgYnVkZ2V0LFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI4NjpcdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI4Ny1cdFx0XHR1MzIgKCpwcmVwKSh2b2lkICp4ZHBzcSwgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EpLFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTExNi0gKi9cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTE3OnN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE4LVx0dm9pZFx0KCp0bW9fcmVxdWVzdF90aW1lc3RhbXApKHZvaWQgKnByaXYpO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTI5PUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUodm9pZCB4c2tfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICopKTtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTEzNC0gKiAgQG1ldGE6IHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTM1OiAqICBAY29tcGw6IHBvaW50ZXIgdG8gb3V0cHV0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfdG9fY29tcGxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTM2LSAqXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDAtICovXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE0MTpzdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE0MjpcdFx0XHRcdFx0ICAgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsKVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNDMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTU5LSAqICBAY29tcGw6IHBvaW50ZXIgdG8gY29tcGxldGlvbiBtZXRhZGF0YSBwcm9kdWNlZCBmcm9tIHhza190eF9tZXRhZGF0YV90b19jb21wbFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjA6ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTYxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhZFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY1LSAqL1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNjY6c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTY3Olx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcyxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY4LVx0XHRcdFx0XHQgICAgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE5NT1zdGF0aWMgaW5saW5lIHZvaWQgeHNrX2Rlc3RydWN0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTk5LVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDA6c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV90b19jb21wbChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDE6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbClcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMjAyLXtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTIwNC1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MjA1OnN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjIwNjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICpvcHMsXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTIwNy1cdFx0XHRcdFx0ICAgIHZvaWQgKnByaXYpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjY0PXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjY1Olx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsIHU2NCAqZmxhZ3MpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNjYte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI2OS1cdFx0aWYgKHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIFx1MDAzY1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjcwOlx0XHQgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNzEtXHRcdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3OS0gKiAgQHBtZXRhOiBwb2ludGVyIHRvIHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4MDogKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgxLSAqICBAcHJpdjogcG9pbnRlciB0byBkcml2ZXItcHJpdmF0ZSBhcmVhXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9Mjg3PXhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjg4Olx0XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4OTpcdFx0XHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLCB2b2lkICpwcml2KVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjkwLXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI5MTpcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSAqcG1ldGE7XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTItXHR1NjQgZmxhZ3M7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzIwLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIxOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjItX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMwLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzMxOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzIteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTIyPXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTIzOlx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsIHU2NCAqZmxhZ3MpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MjQte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTUyOT14c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUzMDpcdFx0XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqcG1ldGEsXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzE6XHRcdFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcywgdm9pZCAqcHJpdilcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzMi17XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM0LVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTM1OnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzYtX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTQxLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQyOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01NDMteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4tLVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oPTI1PXN0cnVjdCB4ZHBfYnVmZl94c2sge1xuLS1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0zNC0jZGVmaW5lIFhTS19DSEVDS19QUklWX1RZUEUodCkgQlVJTERfQlVHX09OKHNpemVvZih0KSBcdTAwM2Ugb2Zmc2V0b2ZlbmQoc3RydWN0IHhkcF9idWZmX3hzaywgY2IpKVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjM1OiNkZWZpbmUgWFNLX1RYX0NPTVBMX0ZJVFModCkgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsKSBcdTAwM2Ugc2l6ZW9mKHQpKVxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTM2LVxuLS1cbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaD0xNTI9c3RydWN0IHhkcF9kZXNjX2N0eCB7XG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTUzLVx0ZG1hX2FkZHJfdCBkbWE7XG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg6MTU0Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTUtfTtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg9MTAyPXN0cnVjdCB4ZHBfb3B0aW9ucyB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEyMC0vKiBSZXF1ZXN0IHRyYW5zbWl0IHRpbWVzdGFtcC4gVXBvbiBjb21wbGV0aW9uLCBwdXQgaXQgaW50byB0eF90aW1lc3RhbXBcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxMjE6ICogZmllbGQgb2Ygc3RydWN0IHhza190eF9tZXRhZGF0YS5cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjItICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEzMi0gKiB0cmFuc21pc3Npb24gYXQgYSBwcmUtZGV0ZXJtaW5lZCB0aW1lIGNhbGxlZCBsYXVuY2ggdGltZS4gVGhlIHZhbHVlIG9mXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTMzOiAqIGxhdW5jaCB0aW1lIGlzIGNvbW11bmljYXRlZCB2aWEgbGF1bmNoX3RpbWUgZmllbGQgb2Ygc3RydWN0IHhza190eF9tZXRhZGF0YS5cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzQtICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0MC0gKi9cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxNDE6c3RydWN0IHhza190eF9tZXRhZGF0YSB7XG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTQyLVx0X191NjQgZmxhZ3M7XG4tLVxubmV0L3hkcC94c2suYz05MDg9dm9pZCB4c2tfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICpza2IpXG5uZXQveGRwL3hzay5jLTkwOS17XG5uZXQveGRwL3hzay5jOjkxMDpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsID0gXHUwMDI2c2tiX3NoaW5mbyhza2IpLVx1MDAzZXhza19tZXRhO1xubmV0L3hkcC94c2suYy05MTEtXG4tLVxubmV0L3hkcC94c2suYz05NjQ9c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcbi0tXG5uZXQveGRwL3hzay5jLTk2Ny17XG5uZXQveGRwL3hzay5jOjk2ODpcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xubmV0L3hkcC94c2suYy05NjktXHR1MTYgY3N1bV9zdGFydCwgY3N1bV9vZmZzZXQ7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oPTEwMj1zdHJ1Y3QgeGRwX29wdGlvbnMge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjAtLyogUmVxdWVzdCB0cmFuc21pdCB0aW1lc3RhbXAuIFVwb24gY29tcGxldGlvbiwgcHV0IGl0IGludG8gdHhfdGltZXN0YW1wXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTIxOiAqIGZpZWxkIG9mIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEuXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTIyLSAqL1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzItICogdHJhbnNtaXNzaW9uIGF0IGEgcHJlLWRldGVybWluZWQgdGltZSBjYWxsZWQgbGF1bmNoIHRpbWUuIFRoZSB2YWx1ZSBvZlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjEzMzogKiBsYXVuY2ggdGltZSBpcyBjb21tdW5pY2F0ZWQgdmlhIGxhdW5jaF90aW1lIGZpZWxkIG9mIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEuXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTM0LSAqL1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xNDAtICovXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTQxOnN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0Mi1cdF9fdTY0IGZsYWdzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jPTU5PXN0YXRpYyBpbnQgb3Blbl94c2soaW50IGlmaW5kZXgsIHN0cnVjdCB4c2sgKnhzaylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy03Mi1cdFx0XHQgWERQX1VNRU1fVFhfTUVUQURBVEFfTEVOLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6NzM6XHRcdC50eF9tZXRhZGF0YV9sZW4gPSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy03NC1cdH07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xMzcte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6MTM4Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTEzOS1cdHN0cnVjdCB4ZHBfZGVzYyAqdHhfZGVzYztcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xNTEtXHR0eF9kZXNjID0geHNrX3JpbmdfcHJvZF9fdHhfZGVzYyhcdTAwMjZ4c2stXHUwMDNldHgsIGlkeCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxNTI6XHR0eF9kZXNjLVx1MDAzZWFkZHIgPSBpZHggJSAoVU1FTV9OVU0gLyAyKSAqIFVNRU1fRlJBTUVfU0laRSAmIzQzOyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xNTMtXHRwcmludGYoXCYjMzQ7JXA6IHR4X2Rlc2NbJXVdLVx1MDAzZWFkZHI9JWxseFxcblwmIzM0OywgeHNrLCBpZHgsIHR4X2Rlc2MtXHUwMDNlYWRkcik7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTU1LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6MTU2Olx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xNTctXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MjI3PXN0YXRpYyB2b2lkIGNvbXBsZXRlX3R4KHN0cnVjdCB4c2sgKnhzaylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTIyOC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyMjk6XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjMwLVx0X191NjQgYWRkcjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0yMzktXHRcdGRhdGEgPSB4c2tfdW1lbV9fZ2V0X2RhdGEoeHNrLVx1MDAzZXVtZW1fYXJlYSwgYWRkcik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyNDA6XHRcdG1ldGEgPSBkYXRhIC0gc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjQxLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYz05Mj1zdGF0aWMgaW50IG9wZW5feHNrKGludCBpZmluZGV4LCBzdHJ1Y3QgeHNrICp4c2ssIF9fdTMyIHF1ZXVlX2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0xMDQtXHRcdC5mbGFncyA9IFhEUF9VTUVNX1RYX01FVEFEQVRBX0xFTixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzoxMDU6XHRcdC50eF9tZXRhZGF0YV9sZW4gPSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMTA2LVx0fTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM9MzA0PXN0YXRpYyBib29sIGNvbXBsZXRlX3R4KHN0cnVjdCB4c2sgKnhzaywgY2xvY2tpZF90IGNsb2NrX2lkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMwNS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzA2Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zMDctXHRfX3U2NCBhZGRyO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zMTUtXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cdTAwM2V1bWVtX2FyZWEsIGFkZHIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jOjMxNjpcdG1ldGEgPSBkYXRhIC0gc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMxNy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM9MzUyPXN0YXRpYyB2b2lkIHBpbmdfcG9uZyhzdHJ1Y3QgeHNrICp4c2ssIHZvaWQgKnJ4X3BhY2tldCwgY2xvY2tpZF90IGNsb2NrX2lkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM1My17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzU0Olx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNTUtXHRzdHJ1Y3QgaXB2NmhkciAqaXA2aCA9IE5VTEw7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3Mi1cdHR4X2Rlc2MgPSB4c2tfcmluZ19wcm9kX190eF9kZXNjKFx1MDAyNnhzay1cdTAwM2V0eCwgaWR4KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNzM6XHR0eF9kZXNjLVx1MDAzZWFkZHIgPSBpZHggJSAoVU1FTV9OVU0gLyAyKSAqIFVNRU1fRlJBTUVfU0laRSAmIzQzOyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzc0LVx0ZGF0YSA9IHhza191bWVtX19nZXRfZGF0YSh4c2stXHUwMDNldW1lbV9hcmVhLCB0eF9kZXNjLVx1MDAzZWFkZHIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3NS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNzY6XHRtZXRhID0gZGF0YSAtIHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNzctXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjk2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFVBUEkgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBVQVBJIGNoYW5nZSBpcyBtZXNzaW5nIHdpdGggYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBgX191MzIgcmVzZXJ2ZWQ7YC4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgdGhhdCYjMzk7cyBnb2luZyB0byBjaGFuZ2UgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAuJiMzNDsgIFdoaWNoIGltbWVkaWF0ZWx5IGxlYWRzIG1lIHRvLCAmIzM0O0RvZXMgdGhpcyBpbXBhY3QgdGhlIGNvcmUga2VybmVsPyBBcmUgd2UgZ29pbmcgdG8gaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGNoYW5nZT8mIzM0OwoKTGV0IG1lIGNoZWNrIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYC4gQWgsIGhlcmUgaXQgaXM6CmBgYGMKCQlpZiAocG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuICZsdDsKCQkgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpCgkJCXJldHVybiBmYWxzZTsKYGBgCkl0JiMzOTtzIGEgY29tcGlsZS10aW1lIG9mZnNldCBjaGVjaywgd2hpY2ggaXMgZ29vZCwgYnV0IG5vdyB0aGF0IGByZXNlcnZlZGAgaXMgYWRkZWQsIGByZXF1ZXN0LmxhdW5jaF90aW1lYCYjMzk7cyBvZmZzZXQgd2lsbCBiZSBkaWZmZXJlbnQuIFRoYXQmIzM5O3MgYSBwcm9ibGVtISAKCldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIExldCBtZSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBhZ2Fpbi4KYGBgYwpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHsKCV9fdTY0IGZsYWdzOwoKCS8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovCglzdHJ1Y3QgewoJCS8qIE9mZnNldCBmcm9tIGRlc2MtJmd0O2FkZHIgd2hlcmUgY2hlY2tzdW1taW5nIHNob3VsZCBzdGFydC4gKi8KCQlfX3UxNiBjc3VtX3N0YXJ0OwoJCS8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi8KCQlfX3UxNiBjc3VtX29mZnNldDsKCQlfX3UzMiByZXNlcnZlZDsKCX0gcmVxdWVzdDsKCgkvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqLwoJc3RydWN0IHsKCQkvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqLwoJCV9fdTY0IGxhdW5jaF90aW1lOwoJfSByZXF1ZXN0Owp9OwpgYGAKSXMgdGhpcyBzdHJ1Y3QgcmVhbGx5IGRlZmluaW5nIGByZXF1ZXN0YCBtdWx0aXBsZSB0aW1lcz8gTm8sIGl0JiMzOTtzIGEgdW5pb24sIG9yIG1heWJlIGFuIGFub255bW91cyBzdHJ1Y3QuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIGRldGFpbC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGludGVycHJldGluZyB0aGlzIGNvcnJlY3RseS4gTGV0IG1lIGp1bXAgb3ZlciB0byBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCB0byBjb25maXJtIHRoZSBkZWZpbml0aW9uLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBgcmVxdWVzdGAgZmllbGQgd29ya3MgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUga2VybmVsIGltcGFjdCBhY2N1cmF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTM1Olx0I2RlZmluZSBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRVx0XHQoMSBcdTAwM2NcdTAwM2MgMilcbiAxMzY6XHRcbiAxMzc6XHQvKiBBRl9YRFAgb2ZmbG9hZHMgcmVxdWVzdC4gJiMzOTtyZXF1ZXN0JiMzOTsgdW5pb24gbWVtYmVyIGlzIGNvbnN1bWVkIGJ5IHRoZSBkcml2ZXJcbiAxMzg6XHQgKiB3aGVuIHRoZSBwYWNrZXQgaXMgYmVpbmcgdHJhbnNtaXR0ZWQuICYjMzk7Y29tcGxldGlvbiYjMzk7IHVuaW9uIG1lbWJlciBpc1xuIDEzOTpcdCAqIGZpbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIHRyYW5zbWl0IGNvbXBsZXRpb24gYXJyaXZlcy5cbiAxNDA6XHQgKi9cbiAxNDE6XHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiAxNDI6XHRcdF9fdTY0IGZsYWdzO1xuIDE0MzpcdFxuIDE0NDpcdFx0dW5pb24ge1xuIDE0NTpcdFx0XHRzdHJ1Y3Qge1xuIDE0NjpcdFx0XHRcdC8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovXG4gMTQ3Olx0XG4gMTQ4Olx0XHRcdFx0LyogT2Zmc2V0IGZyb20gZGVzYy1cdTAwM2VhZGRyIHdoZXJlIGNoZWNrc3VtbWluZyBzaG91bGQgc3RhcnQuICovXG4gMTQ5Olx0XHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiAxNTA6XHRcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gMTUxOlx0XHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4gMTUyOlx0XHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gMTUzOlx0XG4gMTU0Olx0XHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiAxNTU6XHRcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuIDE1NjpcdFx0XHRcdF9fdTY0IGxhdW5jaF90aW1lO1xuIDE1NzpcdFx0XHR9IHJlcXVlc3Q7XG4gMTU4Olx0XG4gMTU5Olx0XHRcdHN0cnVjdCB7XG4gMTYwOlx0XHRcdFx0LyogWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovXG4gMTYxOlx0XHRcdFx0X191NjQgdHhfdGltZXN0YW1wO1xuIDE2MjpcdFx0XHR9IGNvbXBsZXRpb247XG4gMTYzOlx0XHR9O1xuIDE2NDpcdH07XG4gMTY1Olx0XG4gMTY2Olx0LyogUngvVHggZGVzY3JpcHRvciAqL1xuIDE2NzpcdHN0cnVjdCB4ZHBfZGVzYyB7XG4gMTY4Olx0XHRfX3U2NCBhZGRyO1xuIDE2OTpcdFx0X191MzIgbGVuO1xuIDE3MDpcdFx0X191MzIgb3B0aW9ucztcbiAxNzE6XHR9O1xuIDE3MjpcdFxuIDE3MzpcdC8qIFVNRU0gZGVzY3JpcHRvciBpcyBfX3U2NCAqL1xuIDE3NDpcdFxuIDE3NTpcdC8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBwYWNrZXQgY29udGludWVzIHdpdGggdGhlIGJ1ZmZlciBwb2ludGVkIG91dCBieSB0aGVcbiAxNzY6XHQgKiBuZXh0IGZyYW1lIGluIHRoZSByaW5nLiBUaGUgZW5kIG9mIHRoZSBwYWNrZXQgaXMgc2lnbmFsbGVkIGJ5IHNldHRpbmcgdGhpc1xuIDE3NzpcdCAqIGJpdCB0byB6ZXJvLiBGb3Igc2luZ2xlIGJ1ZmZlciBwYWNrZXRzLCBldmVyeSBkZXNjcmlwdG9yIGhhcyAmIzM5O29wdGlvbnMmIzM5OyBzZXRcbiAxNzg6XHQgKiB0byAwIGFuZCB0aGlzIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuIDE3OTpcdCAqL1xuIDE4MDpcdCNkZWZpbmUgWERQX1BLVF9DT05URCAoMSBcdTAwM2NcdTAwM2MgMClcbiAxODE6XHRcbiAxODI6XHQvKiBUWCBwYWNrZXQgY2FycmllcyB2YWxpZCBtZXRhZGF0YS4gKi9cbiAxODM6XHQjZGVmaW5lIFhEUF9UWF9NRVRBREFUQSAoMSBcdTAwM2NcdTAwM2MgMSlcbiAxODQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA4NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFGX1hEUCBNZXRhZGF0YSBIYW5kbGluZyBhbmQgQWxpZ25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHN0cnVjdCBgcmVxdWVzdGAgbmVzdGxlZCBpbnNpZGUgYSBgdW5pb25gLiBUaGUga2V5IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBfX3UzMiByZXNlcnZlZDtgLiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBhbGlnbm1lbnQuIEkga25vdyB0aGF0IGBjc3VtX3N0YXJ0YCBhbmQgYGNzdW1fb2Zmc2V0YCBhcmUgMiBieXRlcyBlYWNoLiBCZWZvcmUsIGBsYXVuY2hfdGltZWAgKGBfX3U2NGApIHdhcyBwcm9iYWJseSBkaXJlY3RseSBhZnRlciB0aG9zZSwgbWFraW5nIGl0cyBvZmZzZXQgNCBieXRlcy4gVGhhdCYjMzk7cyBhIHByb2JsZW0gYmVjYXVzZSwgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMsIGBfX3U2NGAgbmVlZHMgOC1ieXRlIGFsaWdubWVudC4gU28sIHdpdGhvdXQgcGFkZGluZywgaXQmIzM5O3MgbWlzYWxpZ25lZC4gQWRkaW5nIGBfX3UzMiByZXNlcnZlZGAgZXhwbGljaXRseSBhbGlnbnMgYGxhdW5jaF90aW1lYCwgc2hpZnRpbmcgaXRzIG9mZnNldCB0byA4IGJ5dGVzIGFuZCBlbnN1cmluZyBwcm9wZXIgbWVtb3J5IGxheW91dCwgd2hpY2ggbWFrZXMgdGhpcyBhIFVBUEkgZml4LgoKSSB0aGVuIG1vdmUgb24gdG8gdGhlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgdGhlcmUgaW52b2x2ZXMgY2hlY2tpbmcgYG9wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBjaGFuZ2UgcmVsYXRlZCB0byBBRl9YRFAuIEJ1dCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hlcmUgdGhpcyBpcyBhY3R1YWxseSB1c2VkLCBlc3BlY2lhbGx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuCgpUaGUgY2FsbCBzaXRlcyBhcmUgd2hhdCBtYXR0ZXIuIEkgc2VlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaXMgY2FsbGVkIGJ5IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgICh1c2VkIGJ5IGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgKSBhbmQgYHhwX3Jhd19nZXRfY3R4YCAodXNlZCBieSBhIGNoYWluIG9mIGZ1bmN0aW9ucyBlbmRpbmcgd2l0aCBgaWRwZmApLiBOb25lIG9mIHRoZXNlIGRyaXZlcnMgKGBpZ2NgLCBgbWx4NWAsIGBpZHBmYCkgYXJlIHVzdWFsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gTm93LCBgc3RtbWFjYCwgdGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBjaGVjay4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MuIEkgbmVlZCB0byBnbyB2ZXJpZnkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjcxMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgZm9yIHRoZSBgU1RNTUFDX1BDSWAgRmxhZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgZHJpdmVyIGNvZGUsIGFuZCBmaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogZ290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb25maWd1cmF0aW9uIHRoYXQgYWN0dWFsbHkgdXNlcyBQQ0kgZm9yIHRoZSBTVE1NQUMgKFNUTWljcm9lbGVjdHJvbmljcyBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgZGV2aWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2Vzcz8gJiMzNDtJcyBgU1RNTUFDX1BDSWAgZXZlbiBkZWZpbmVkPyYjMzQ7IEkgbmVlZCB0byBjb25maXJtIGlmIHRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgdG8gYWNjb21tb2RhdGUgYSBQQ0ktYmFzZWQgU1RNTUFDIGluc3RhbmNlLiBUaGlzIGNoZWNrIGlzIGNydWNpYWw7IGl0IGRpY3RhdGVzIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgc3Vic2VxdWVudCBhY3Rpb25zIHRoZSBkcml2ZXIgd2lsbCB0YWtlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0aGUgZ2F0ZWtlZXBlciBmb3IgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLCBzbyBjb25maXJtaW5nIHRoaXMgaXMgZXNzZW50aWFsIGJlZm9yZSBtb3ZpbmcgYW55IGZ1cnRoZXIuIElmIGl0JiMzOTtzICpub3QqIGRlZmluZWQsIEkmIzM5O2xsIG5lZWQgdG8gYWRhcHQgbXkgYW5hbHlzaXMgYWNjb3JkaW5nbHksIGFzIEkmIzM5O20gbGlrZWx5IGxvb2tpbmcgYXQgYSBkaWZmZXJlbnQgaGFyZHdhcmUgc2V0dXAgb3IgY29uZmlndXJhdGlvbiBhbHRvZ2V0aGVyLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRldmljZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDg0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5ldHdvcmsgRHJpdmVyIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEkga25vdyBpdCBleGlzdHMsIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgaGFuZGxlZCB3aXRoaW4gUUVNVS4gRG9lcyBRRU1VIGVtdWxhdGUgaXQgZGlyZWN0bHk/IE5vcGUsIGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdC4gSSBrbm93IFFFTVUgZW11bGF0ZXMgb3RoZXIgbmV0d29yayBpbnRlcmZhY2VzIC0gYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYW5kIGB2aXJ0aW8tbmV0LXBjaWAgYXJlIGZhbWlsaWFyIG9uZXMuIEJ1dCBgU1RNTUFDX1BDSWAgaXNuJiMzOTt0IG9uIHRoZSBsaXN0LgoKTm93LCBteSBtaW5kIHNoaWZ0cyB0byBgdmV0aGAuIEl0JiMzOTtzIGEga2V5IHZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLiBJJiMzOTttIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGN1cmlvdXMgd2hldGhlciBgdmV0aGAgbWFrZXMgdXNlIG9mIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGluIGl0cyBvcGVyYXRpb24uIFRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzbyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvdmV0aC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBhbnN3ZXJzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUwOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIGVCUEYgRGF0YSBBY2Nlc3MqKgoKSG1tLCBzbyB0aGUgcXVlc3Rpb24gb2Ygd2hldGhlciBgdmV0aGAgdXNlcyBzb21ldGhpbmcgbGlrZSBhIHNoYXJlZCByaW5nIGJ1ZmZlciBvciBtZXRhZGF0YSBhY2Nlc3MgaW4gdGhlIFhEUCBjb250ZXh0IGlzIHN0aWxsIGhhbmdpbmcuIEl0IGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdCBkb2VzIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZSwgYnV0IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgcXVpY2tseSBydWxlIG91dCBgdmV0aGAmIzM5O3MgZGlyZWN0IGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gTXkgdGhvdWdodHMgaW1tZWRpYXRlbHkganVtcCB0byBgbmV0L3hkcC94c2suY2AuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBYRFAgc29ja2V0IGltcGxlbWVudGF0aW9uIGxpdmVzIGFuZCBpcyB0aGVyZWZvcmUgd2hlcmUgYW55IFhEUC1yZWxhdGVkIG1ldGFkYXRhIGhhbmRsaW5nIGlzIGxpa2VseSBsb2NhdGVkLiBUaGUgY3JpdGljYWwgcGllY2Ugb2YgaW5mbyBJIG5lZWQgdG8gZGV0ZXJtaW5lIG5vdyBpcyB3aGV0aGVyIHRoaXMgYHhza19idWZmX2dldF9tZXRhZGF0YWAgZnVuY3Rpb24gaXMgdXNlZC4gSWYgaXQgaXMsIHRoZW4gdGhlIG1lY2hhbmlzbSBpcyB0aGVyZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyB1c2FnZS4gSWYgbm90LCBJIGNhbiBjb250aW51ZSB0byBpbnZlc3RpZ2F0ZSBvdGhlciBsb2NhdGlvbnMgb2YgcG90ZW50aWFsIGFjY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4MTgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgWERQIERhdGEgUGF0aCoqCgpPa2F5LCBuby4gTGV0JiMzOTtzIHJlLWV2YWx1YXRlIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgbWV0YWRhdGEgZ2V0cyBoYW5kbGVkLiBJIHJlY2FsbCBzZWVpbmcgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIHdpdGhpbiBgeHBfcmF3X2dldF9jdHhgLiBOb3csIGlzIGB4cF9yYXdfZ2V0X2N0eGAgdXNlZCBhbnl3aGVyZSBlbHNlPyBUaW1lIHRvIGRvdWJsZS1jaGVjay4gSSBkaWQgYSBxdWljayBncmVwIGFscmVhZHksIGFuZCBpdCBsb29rcyBsaWtlIGB4cF9yYXdfZ2V0X2N0eGAgaXMgKm9ubHkqIHVzZWQgaW4gYHhza19idWZmX3Jhd19nZXRfY3R4YCB3aXRoaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgd2hpY2ggaW4gdHVybiwgaXMgb25seSB1c2VkIGJ5IGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEkgdGhpbmsgSSBmb3VuZCBpdC4KCkFuZCwgb2YgY291cnNlLCBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGlzICpzb2xlbHkqIHVzZWQgaW4gYGlkcGZgLiBJIGtuZXcgaXQhCgpIb2xkIG9uLCBJIGFsbW9zdCBtaXNzZWQgc29tZXRoaW5nLiBXaGF0IGFib3V0IHRoYXQgY2hhbmdlIGluIGBzdG1tYWNfeGRwX3htaXRfemNgPyBUaGF0IHNuaXBwZXQuLi4KCmBgYGMKLQkJaWYgKHByaXYtJmd0O2VzdCAmYW1wOyZhbXA7IHByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlICZhbXA7JmFtcDsKLQkJICAgIHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0gJmFtcDsmYW1wOwotCQkgICAgeGRwX2Rlc2MubGVuICZndDsgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSkgewotCQkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOzsKLQkJCWNvbnRpbnVlOwotCQl9CmBgYAoKLi4ucmVtb3ZlcyB0aGUgY2hlY2sgZm9yIGBtYXhfc2R1YCBpbiBgc3RtbWFjX3hkcF94bWl0X3pjYC4gIEJ1dCwgdGhlIGBzdG1tYWNgIGRyaXZlciBpc24mIzM5O3QgZXZlbiByZWFjaGFibGUgaW4gUUVNVS4gVGhhdCYjMzk7cyBhIGRlYWQgZW5kLCB0aGVuLgoKTGV0JiMzOTtzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gSXMgdGhlcmUgKmFueSogb3RoZXIgZHJpdmVyIEkgaGF2ZW4mIzM5O3QgY29uc2lkZXJlZD8gSSBuZWVkIHRvIGxvb2sgZm9yIGBYRFBfVFhfTUVUQURBVEFgIGRpcmVjdGx5IHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaW52b2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1hEUF9UWF9NRVRBREFUQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD00MT10aGUgYGB4c2tfdHhfbWV0YWRhdGFgYCkuIEZvciB0aGUgZnJhbWVzIHRoYXQgc2hvdWxkbiYjMzk7dCBjYXJyeVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6NDI6YW55IG1ldGFkYXRhIChpLmUuLCB0aGUgb25lcyB0aGF0IGRvbiYjMzk7dCBoYXZlIGBgWERQX1RYX01FVEFEQVRBYGAgb3B0aW9uKSxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTQzLXRoZSBtZXRhZGF0YSBhcmVhIGlzIGlnbm9yZWQgYnkgdGhlIGtlcm5lbCBhcyB3ZWxsLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTU5PUJlc2lkZXMgdGhlIGZsYWdzIGFib3ZlLCBpbiBvcmRlciB0byB0cmlnZ2VyIHRoZSBvZmZsb2FkcywgdGhlIGZpcnN0XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo2MDpwYWNrZXQmIzM5O3MgYGBzdHJ1Y3QgeGRwX2Rlc2NgYCBkZXNjcmlwdG9yIHNob3VsZCBzZXQgYGBYRFBfVFhfTUVUQURBVEFgYFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNjEtYml0IGluIHRoZSBgYG9wdGlvbnNgYCBmaWVsZC4gQWxzbyBub3RlIHRoYXQgaW4gYSBtdWx0aS1idWZmZXIgcGFja2V0XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIyPV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyNC17XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMjU6XHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyNi1cdFx0cmV0dXJuIE5VTEw7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oPTE2Nz1zdHJ1Y3QgeGRwX2Rlc2Mge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODItLyogVFggcGFja2V0IGNhcnJpZXMgdmFsaWQgbWV0YWRhdGEuICovXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTgzOiNkZWZpbmUgWERQX1RYX01FVEFEQVRBICgxIFx1MDAzY1x1MDAzYyAxKVxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE4NC1cbi0tXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXG4tLVxubmV0L3hkcC94c2suYy0xMDMwLVx0XHRza2JfcmVzZXJ2ZShza2IsIGhyKTtcbm5ldC94ZHAveHNrLmM6MTAzMTpcdFx0aWYgKGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XG5uZXQveGRwL3hzay5jLTEwMzItXHRcdFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYywgcG9vbCwgaHIpO1xuLS1cbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTExMTktXG5uZXQveGRwL3hzay5jOjExMjA6XHRcdFx0aWYgKGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XG5uZXQveGRwL3hzay5jLTExMjEtXHRcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLFxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmg9MTU0PXN0YXRpYyBpbmxpbmUgYm9vbCB4cF91bnVzZWRfb3B0aW9uc19zZXQodTMyIG9wdGlvbnMpXG5uZXQveGRwL3hza19xdWV1ZS5oLTE1NS17XG5uZXQveGRwL3hza19xdWV1ZS5oOjE1NjpcdHJldHVybiBvcHRpb25zIFx1MDAyNiB+KFhEUF9QS1RfQ09OVEQgfCBYRFBfVFhfTUVUQURBVEEpO1xubmV0L3hkcC94c2tfcXVldWUuaC0xNTctfVxuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaD0xNjc9c3RydWN0IHhkcF9kZXNjIHtcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTgyLS8qIFRYIHBhY2tldCBjYXJyaWVzIHZhbGlkIG1ldGFkYXRhLiAqL1xudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjE4MzojZGVmaW5lIFhEUF9UWF9NRVRBREFUQSAoMSBcdTAwM2NcdTAwM2MgMSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODQtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTkyLVx0dHhfZGVzYy1cdTAwM2VsZW4gPSBzaXplb2YoKmV0aCkgJiM0Mzsgc2l6ZW9mKCppcGgpICYjNDM7IHNpemVvZigqdWRwaCkgJiM0MzsgVURQX1BBWUxPQURfQllURVM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxOTM6XHR0eF9kZXNjLVx1MDAzZW9wdGlvbnMgfD0gWERQX1RYX01FVEFEQVRBO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTk0LVx0eHNrX3JpbmdfcHJvZF9fc3VibWl0KFx1MDAyNnhzay1cdTAwM2V0eCwgMSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jPTM1Mj1zdGF0aWMgdm9pZCBwaW5nX3Bvbmcoc3RydWN0IHhzayAqeHNrLCB2b2lkICpyeF9wYWNrZXQsIGNsb2NraWRfdCBjbG9ja19pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtNDM3LVx0bWVtY3B5KGRhdGEsIHJ4X3BhY2tldCwgbGVuKTsgLyogZG9uJiMzOTt0IHNoYXJlIHVtZW0gY2h1bmsgZm9yIHNpbXBsaWNpdHkgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzo0Mzg6XHR0eF9kZXNjLVx1MDAzZW9wdGlvbnMgfD0gWERQX1RYX01FVEFEQVRBO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTQzOS1cdHR4X2Rlc2MtXHUwMDNlbGVuID0gbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFBfVFhfTUVUQURBVEEgYW5kIHRoZSBJbXBsaWNhdGlvbnMgb2YgVGhpcyBQYXRjaCoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIGp1c3Qgc2F3IHRoYXQgYG5ldC94ZHAveHNrLmNgIG1ha2VzIHVzZSBvZiBgWERQX1RYX01FVEFEQVRBYC4gVGhhdCYjMzk7cyBhdCBsaW5lIDEwMzEsIHNwZWNpZmljYWxseToKCmBgYGMKaWYgKGRlc2MtJmd0O29wdGlvbnMgJmFtcDsgWERQX1RYX01FVEFEQVRBKSB7CgllcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7Cn0KYGBgCgpCdXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCAqZGlyZWN0bHkqIHRvdWNoIGBuZXQveGRwL3hzay5jYC4gVGhlIGNoYW5nZXMgYXJlIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGBpbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhgLCBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgLCBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCwgYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAsIGFuZCBhIGZldyBkcml2ZXJzOiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGluZGlyZWN0IGltcGFjdD8KClRoZSBVQVBJIGNoYW5nZSBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBpcyB3aGVyZSB0aGUgcG90ZW50aWFsIGdvdGNoYSBpcy4gVGhlcmUmIzM5O3MgYSBuZXcgYF9fdTMyIHJlc2VydmVkO2AgZmllbGQgYmVpbmcgYWRkZWQuIE5vdywgZG9lcyAqdGhhdCogaW1wYWN0IHRoZSBgeHNrX3NrYl9tZXRhZGF0YWAgZnVuY3Rpb24/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGB4c2tfc2tiX21ldGFkYXRhYCBpbiBgbmV0L3hkcC94c2suY2AgdG8gc2VlIGlmIGl0IHJlbGllcyBvbiBhbnkgb2YgdGhlIHN0cnVjdHVyZSBvciBkYXRhIHRoYXQgYXJlIGluIHRoZSBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfc2tiX21ldGFkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTk1NT1zdGF0aWMgdm9pZCB4c2tfZHJvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGRwL3hzay5jLTk2My1cbm5ldC94ZHAveHNrLmM6OTY0OnN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG5uZXQveGRwL3hzay5jLTk2NS1cdFx0XHQgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXG4tLVxubmV0L3hkcC94c2suYy0xMDMxLVx0XHRpZiAoZGVzYy1cdTAwM2VvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpIHtcbm5ldC94ZHAveHNrLmM6MTAzMjpcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7XG5uZXQveGRwL3hzay5jLTEwMzMtXHRcdFx0aWYgKHVubGlrZWx5KGVycikpIHtcbi0tXG5uZXQveGRwL3hzay5jPTEwODU9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiKHN0cnVjdCB4ZHBfc29jayAqeHMsXG4tLVxubmV0L3hkcC94c2suYy0xMTIwLVx0XHRcdGlmIChkZXNjLVx1MDAzZW9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xubmV0L3hkcC94c2suYzoxMTIxOlx0XHRcdFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYyxcbm5ldC94ZHAveHNrLmMtMTEyMi1cdFx0XHRcdFx0XHQgICAgICAgeHMtXHUwMDNlcG9vbCwgaHIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTA0MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gdGhlIHdlZWRzIG9mIG5ldHdvcmsgcHJvZ3JhbW1pbmcsIHBvc3NpYmx5IHdvcmtpbmcgd2l0aCBYRFA6CgoqKkFuYWx5emluZyBgeHNrX3NrYl9tZXRhZGF0YWAqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gYHhza19za2JfbWV0YWRhdGFgLiBUaGF0IG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIGNydWNpYWwgdG8gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIFhEUCBzb2NrZXQgKFhTSykgYW5kIHRoZSBrZXJuZWwmIzM5O3MgU0tCIChTb2NrZXQgQnVmZmVyKS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIFhEUCBwcm9ncmFtIGdyYWJzIG9yIGhhbmRzIG9mZiBjb250cm9sIG9mIHBhY2tldHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3RydWN0dXJlIGludGltYXRlbHkuIEkgc3VzcGVjdCBpdCYjMzk7cyB0aGUgZ2x1ZSBob2xkaW5nIHRvZ2V0aGVyIHRoZSBYU0smIzM5O3MgZWZmaWNpZW50IHplcm8tY29weSBtZWNoYW5pc20gd2l0aCB0aGUgbW9yZSB0cmFkaXRpb25hbCBTS0Igd29ybGQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbWVtYmVycyB3aXRoaW4gaXQuIFByb2JhYmx5IGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgcG9pbnRlcnMgdG8gdGhlIHBhY2tldCBkYXRhLCB0aGUgbWV0YWRhdGEgZmxhZ3MsIG1heWJlIHNvbWUgc29ydCBvZiBpbmRleCBpbnRvIHRoZSBBRl9YRFAgc2hhcmVkIG1lbW9yeSByaW5nLiBJcyB0aGVyZSBhIGRlc2NyaXB0b3I/IEhvdyBpcyByZWZlcmVuY2UgY291bnRpbmcgaGFuZGxlZCBiZXR3ZWVuIFhEUCBwcm9ncmFtIGFuZCB0aGUgU0tCPyBJcyB0aGlzIHN0cnVjdHVyZSB1c2VkIGluIGJvdGggdGhlIFRYIGFuZCBSWCBwYXRocywgb3IgaXMgaXQgc3BlY2lmaWMgdG8gb25lIGRpcmVjdGlvbj8gSSBiZXQgdGhlcmUgYXJlIG51YW5jZXMgaGVyZSBhcm91bmQgbWVtb3J5IG1hbmFnZW1lbnQsIGNvbmN1cnJlbmN5LCBhbmQgZXJyb3IgaGFuZGxpbmcuIEdvdCB0byBzdGFydCBleGFtaW5pbmcgdGhlIGFjdHVhbCBzdHJ1Y3QgZGVmaW5pdGlvbiBhbmQgc2VlIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgdmFyaW91cyBrZXJuZWwgZnVuY3Rpb25zLi4uIFRoaXMgd2lsbCB0ZWxsIG1lIG1vcmUgYWJvdXQgaXRzIHB1cnBvc2UuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIGluIGJvdGggdGhlIFJYIGFuZCBUWCBwYXRocyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBPa2F5LCBsZXQmIzM5O3MgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk2NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTY0Olx0c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcbiA5NjU6XHRcdFx0XHQgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiA5NjY6XHRcdFx0XHQgICAgdTMyIGhyKVxuIDk2NzpcdHtcbiA5Njg6XHRcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xuIDk2OTpcdFx0dTE2IGNzdW1fc3RhcnQsIGNzdW1fb2Zmc2V0O1xuIDk3MDpcdFx0dTY0IGZsYWdzO1xuIDk3MTpcdFxuIDk3MjpcdFx0aWYgKHVubGlrZWx5KHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuID09IDApKVxuIDk3MzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA5NzQ6XHRcbiA5NzU6XHRcdG1ldGEgPSBidWZmZXIgLSBwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbjtcbiA5NzY6XHRcdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEocG9vbCwgbWV0YSwgXHUwMDI2ZmxhZ3MpKSlcbiA5Nzc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gOTc4Olx0XG4gOTc5Olx0XHRpZiAoZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XG4gOTgwOlx0XHRcdGNzdW1fc3RhcnQgPSBSRUFEX09OQ0UobWV0YS1cdTAwM2VyZXF1ZXN0LmNzdW1fc3RhcnQpO1xuIDk4MTpcdFx0XHRjc3VtX29mZnNldCA9IFJFQURfT05DRShtZXRhLVx1MDAzZXJlcXVlc3QuY3N1bV9vZmZzZXQpO1xuIDk4MjpcdFxuIDk4MzpcdFx0XHRpZiAodW5saWtlbHkoY3N1bV9zdGFydCAmIzQzOyBjc3VtX29mZnNldCAmIzQzO1xuIDk4NDpcdFx0XHRcdCAgICAgc2l6ZW9mKF9fc3VtMTYpIFx1MDAzZSBkZXNjLVx1MDAzZWxlbikpXG4gOTg1Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gOTg2Olx0XG4gOTg3Olx0XHRcdHNrYi1cdTAwM2Vjc3VtX3N0YXJ0ID0gaHIgJiM0MzsgY3N1bV9zdGFydDtcbiA5ODg6XHRcdFx0c2tiLVx1MDAzZWNzdW1fb2Zmc2V0ID0gY3N1bV9vZmZzZXQ7XG4gOTg5Olx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9QQVJUSUFMO1xuIDk5MDpcdFxuIDk5MTpcdFx0XHRpZiAodW5saWtlbHkocG9vbC1cdTAwM2V0eF9zd19jc3VtKSkge1xuIDk5MjpcdFx0XHRcdGludCBlcnI7XG4gOTkzOlx0XG4gOTk0Olx0XHRcdFx0ZXJyID0gc2tiX2NoZWNrc3VtX2hlbHAoc2tiKTtcbiA5OTU6XHRcdFx0XHRpZiAoZXJyKVxuIDk5NjpcdFx0XHRcdFx0cmV0dXJuIGVycjtcbiA5OTc6XHRcdFx0fVxuIDk5ODpcdFx0fVxuIDk5OTpcdFxuMTAwMDpcdFx0aWYgKGZsYWdzIFx1MDAyNiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSlcbjEwMDE6XHRcdFx0c2tiLVx1MDAzZXNrYl9tc3RhbXBfbnMgPSBSRUFEX09OQ0UobWV0YS1cdTAwM2VyZXF1ZXN0LmxhdW5jaF90aW1lKTtcbjEwMDI6XHRcdGlmICghKGZsYWdzIFx1MDAyNiBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVApKVxuMTAwMzpcdFx0XHRtZXRhID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwNTgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGp1c3Qgb2NjdXJyZWQgdG8gbWUgd2hpbGUgYW5hbHl6aW5nIHRoaXMgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YSoqCgpPa2F5LCBzbyBJIHNlZSBgeHNrX3NrYl9tZXRhZGF0YWAgY2FsbHMgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gIE15IHNwaWRlciBzZW5zZXMgYXJlIHRpbmdsaW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgdmFsaWRhdGlvbiBlbnRhaWxzLiBOb3csIEkgdmFndWVseSByZWNhbGwgc2VlaW5nIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgdGhhdCByaW5ncyBhIGJlbGwuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gdGhhdCBpbmNsdWRlIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHBvb2xgLCBgbWV0YWAsIGFuZCBgZmxhZ3NgIGFyZSBhbGwgYWJvdXQgaW4gdGhpcyBjb250ZXh0IGFuZCBob3cgdGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdvcmtzLiBIb3BlZnVsbHksIHRoaXMgc2hlZHMgc29tZSBsaWdodCBvbiB0aGUgb3ZlcmFsbCBmbG93LCBzcGVjaWZpY2FsbHkgaG93IHRoZSBTS0IgbWV0YWRhdGEgaXMgYmVpbmcgdHJlYXRlZCBhbmQgaXRzIHJvbGUgaW4gdHJhbnNtaXNzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjY0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNjQ6XHR4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiAyNjU6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLCB1NjQgKmZsYWdzKVxuIDI2NjpcdHtcbiAyNjc6XHRcdCpmbGFncyA9IFJFQURfT05DRShtZXRhLVx1MDAzZWZsYWdzKTtcbiAyNjg6XHRcdGlmICgqZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxuIDI2OTpcdFx0XHRpZiAocG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4gXHUwMDNjXG4gMjcwOlx0XHRcdCAgICBvZmZzZXRvZmVuZChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLCByZXF1ZXN0LmxhdW5jaF90aW1lKSlcbiAyNzE6XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMjcyOlx0XHRyZXR1cm4gISgqZmxhZ3MgXHUwMDI2IH5YRFBfVFhNRF9GTEFHU19WQUxJRCk7XG4gMjczOlx0fVxuIDI3NDpcdFxuIDI3NTpcdC8qKlxuIDI3NjpcdCAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXG4gMjc3Olx0ICogIGFuZCBjYWxsIGFwcHJvcHJpYXRlIHhza190eF9tZXRhZGF0YV9vcHMgb3BlcmF0aW9uLlxuIDI3ODpcdCAqICBAcG9vbDogcG9pbnRlciB0byBBRl9YRFAgYnVmZmVyIHBvb2wsIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG1ldGFkYXRhXG4gMjc5Olx0ICogIEBwbWV0YTogcG9pbnRlciB0byBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXG4gMjgwOlx0ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcbiAyODE6XHQgKiAgQHByaXY6IHBvaW50ZXIgdG8gZHJpdmVyLXByaXZhdGUgYXJlYVxuIDI4MjpcdCAqXG4gMjgzOlx0ICogIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgbmV0d29ya2luZyBkZXZpY2Ugd2hlblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc0NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYU0sgVFggTWV0YWRhdGEgQ2hhbmdlIGFuZCBQb3RlbnRpYWwgSW1wYWN0KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgWFNLIGNoYW5nZSByZWxhdGVkIHRvIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSB0aGF0IHRoZXkmIzM5O3ZlIGFkZGVkIGEgYHJlc2VydmVkYCBmaWVsZCB0byB0aGUgYHhza190eF9tZXRhZGF0YWAgc3RydWN0dXJlLCB3aGljaCBzaGlmdHMgdGhlIG9mZnNldCBvZiBgcmVxdWVzdC5sYXVuY2hfdGltZWAuICBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgY291bGQgYnJlYWsgY29tcGF0aWJpbGl0eSBpZiB1c2Vyc3BhY2UgY29kZSB3YXMgY29tcGlsZWQgd2l0aCB0aGUgKm9sZCogc3RydWN0dXJlIGRlZmluaXRpb24uIFNwZWNpZmljYWxseSwgaWYgdGhlIHVzZXItc3BhY2UgcHJvZ3JhbSByZWxpZXMgb24gYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgWFNLIGhlYWRlcnMsIHdoZXJlIHRoZSBgdHhfbWV0YWRhdGFfbGVuYCBpdCBzZXRzIGluIGBzdHJ1Y3QgeGRwX3VtZW1fcmVnYCB3b3VsZCBiZSBzbWFsbGVyIHRoYW4gdGhlIGFjdHVhbCBuZXcgc3RydWN0dXJlIHNpemUuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0LiAgSSYjMzk7bSB0aGlua2luZywgaWYgdGhleSBwYXNzZWQgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAgZnJvbSB0aGUgb2xkIGhlYWRlciwgdGhhdCBzaXplIHdvdWxkIGhhdmUgYmVlbiAxMiBieXRlcyBpbml0aWFsbHkgKG9yIHBvdGVudGlhbGx5IDE2IGJ5dGVzIGR1ZSB0byBwYWRkaW5nKS4gIE5vdywgd2l0aCB0aGUgcmVzZXJ2ZWQgZmllbGQsIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBzaXplIGZvciBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGFyY2hpdGVjdHVyZXMuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsYXlvdXQgb2YgdGhlIG9sZCBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgc3RydWN0OgoKYGBgYwpzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHsKCV9fdTY0IGZsYWdzOyAvLyA4IGJ5dGVzCgoJdW5pb24gewoJCXN0cnVjdCB7CgkJCS8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovCgoJCQkvKiBPZmZzZXQgZnJvbSBkZXNjLSZndDthZGRyIHdoZXJlIGNoZWNrc3VtbWluZyBzaG91bGQgc3RhcnQuICovCgkJCV9fdTE2IGNzdW1fc3RhcnQ7IC8vIDIgYnl0ZXMKCQkJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwoJCQlfX3UxNiBjc3VtX29mZnNldDsgLy8gMiBieXRlcwoKCQkJLyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi8KCQkJLyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi8KCQkJX191NjQgbGF1bmNoX3RpbWU7IC8vIDggYnl0ZXMKCQl9IHJlcXVlc3Q7IC8vIDEyIGJ5dGVzLCBidXQgd2l0aCA4LWJ5dGUgYWxpZ25tZW50IGl0IGlzIHBhZGRlZCB0byAxNiBieXRlcz8KYGBgCgpJIHJlYWxpemUgYF9fdTY0IGxhdW5jaF90aW1lYCByZXF1aXJlcyA4LWJ5dGUgYWxpZ25tZW50IG9uIDY0LWJpdCBhcmNoaXRlY3R1cmVzLiBUaGlzIG1lYW5zIHRoYXQgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMgdGhlIGNvbXBpbGVyIGluc2VydHMgcGFkZGluZy4gU28gaW4gdGhlIG9sZCBzdHJ1Y3QsIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGZpZWxkIHdhcyBhY3R1YWxseSAxNiBieXRlcyAocGFkZGluZyBhZnRlciBgY3N1bV9vZmZzZXRgKS4gVGhlIGVudGlyZSBzdHJ1Y3R1cmUmIzM5O3Mgc2l6ZSB3b3VsZCB0aGVuIGJlIDggKGZsYWdzKSAmIzQzOyAxNiAocmVxdWVzdCkgPSAyNCBieXRlcy4gIEhvd2V2ZXIsIG9uIDMyLWJpdCBtYWNoaW5lcywgYF9fdTY0YCBvbmx5IHJlcXVpcmVzIDQtYnl0ZSBhbGlnbm1lbnQsIHNvIHRoZSBgcmVxdWVzdGAgc3RydWN0dXJlIGlzIG9ubHkgMTIgYnl0ZXMsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBhIHRvdGFsIHN0cnVjdCBzaXplIG9mIDggJiM0MzsgMTIgPSAyMCBieXRlcy4KCk5vdywgd2l0aCB0aGUgYWRkaXRpb24gb2YgYF9fdTMyIHJlc2VydmVkYCwgdGhlIGByZXF1ZXN0YCBzdHJ1Y3R1cmUgYmVjb21lczoKCmBgYGMKc3RydWN0IHsKCS8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovCgoJLyogT2Zmc2V0IGZyb20gZGVzYy0mZ3Q7YWRkciB3aGVyZSBjaGVja3N1bW1pbmcgc2hvdWxkIHN0YXJ0LiAqLwoJX191MTYgY3N1bV9zdGFydDsgLy8gMiBieXRlcwoJLyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqLwoJX191MTYgY3N1bV9vZmZzZXQ7IC8vIDIgYnl0ZXMKCV9fdTMyIHJlc2VydmVkOyAvLyA0IGJ5dGVzCgoJLyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi8KCS8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovCglfX3U2NCBsYXVuY2hfdGltZTsgLy8gOCBieXRlcwp9IHJlcXVlc3Q7IC8vIDE2IGJ5dGVzCmBgYAoKVGhlIGByZXF1ZXN0YCBzdHJ1Y3R1cmUgd291bGQgYmUgMiAmIzQzOyAyICYjNDM7IDQgJiM0MzsgOCA9IDE2IGJ5dGVzIG9uIGJvdGggMzIgYW5kIDY0IGJpdCBhcmNoaXRlY3R1cmVzLiBUb3RhbCBzaXplIHdvdWxkIGJlIDggKGZsYWdzKSAmIzQzOyAxNiAocmVxdWVzdCkgPSAyNCBieXRlcy4KClNvLCB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5IGZpeGVzIGEgMzItYml0LzY0LWJpdCBBQkkgbWlzbWF0Y2gsIGNvb2whCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIFVBUEkgY2hhbmdlIGludHJvZHVjZXMgYW55IG5ldyBleGVjdXRpb24gcGF0aHMgdGhhdCBuZWVkIHRvIGJlIGZ1enplZC4gIFRoZSBjaGFuZ2VkIGxheW91dCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYW5kIGV4cGxpY2l0IHBhZGRpbmcgb24gNjQtYml0IG1hY2hpbmVzIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiAgQWxzbywgSSBub3RpY2VkIHRoZSBwYXRjaCBtb2RpZmllcyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIHRvIGNoZWNrIGBvcHRpb25zICZhbXA7IFhEUF9UWF9NRVRBREFUQWAsIHdoaWNoIGNvdWxkIGJlIGEgY2hhbmdlIHBvaW50LgoKSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGNhbGwgY2hhaW46IGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaXMgdXNlZCBpbiBgeHBfcmF3X2dldF9jdHhgLCB3aGljaCBpcyBpbiB0dXJuIHVzZWQgYnkgYHhza19idWZmX3Jhd19nZXRfY3R4YCBhbmQgZmluYWxseSBpbiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiAgSSBjaGVja2VkIGJlZm9yZSBpZiBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyB1c2VkCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfcG9vbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTgwPXN0cnVjdCB0c25lcF90eCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cdGludCBpbmNyZW1lbnRfb3duZXJfY291bnRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6OTM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC0xMzAtXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoxMzE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9iYXRjaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oOjIzMjpcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTIzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTI2MD11MzIgdHNuZXBfZ2V0X2lycV9jb2FsZXNjZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MjYxOmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTIwNzQ9c3RhdGljIGludCB0c25lcF9uZXRkZXZfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjA5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDk2OmludCB0c25lcF9lbmFibGVfeHNrKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jPTIxPXN0YXRpYyBpbnQgdHNuZXBfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XHRcdFx0XHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz01OD1zdGF0aWMgaW50IHRzbmVwX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTU5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy02MS1cdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9ODA9aW50IHRzbmVwX3hkcF9zZXR1cF9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XHRcdFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYy04Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaC01MDYtXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo1MDc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVx0c3RydWN0IGRwYWEyX2V0aF9icCAqYnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oOjg0NzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTg0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MTczPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2Rpc2FibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQoZGV2LCBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTE3Ni1cdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTIyMD1zdGF0aWMgaW50IGRwYWEyX3hza19lbmFibGVfcG9vbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcdFx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0yMjItXHRcdFx0XHQgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NDQtXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaDo1NDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaD01NjE9c3RydWN0IGZlY19lbmV0X3ByaXZfcnhfcSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2My1cdHVuaW9uIGZlY19yeF9idWZmZXIgcnhfYnVmW1JYX1JJTkdfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNDgyPXN0YXRpYyBib29sIGZlY19lbmV0X3hza194bWl0KHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNDgzOlx0XHRcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cdFx0XHQgICAgICB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTU2NT1zdGF0aWMgaW50IGZlY19lbmV0X3R4X3F1ZXVlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcxOS1cdGlmICh0eHEtXHUwMDNleHNrX3Bvb2wpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE3MjA6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTcyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NDIwPWZlY19hbGxvY19uZXdfcnhxX3hzayhzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLCBpbnQgcXVldWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NDIxOlx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ0MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ1MjI9c3RhdGljIGludCBmZWNfeHNrX3Jlc3RhcnRfbmFwaShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDUyMzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDUyNC1cdFx0XHRcdHUxNiBxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTYxPXN0YXRpYyBpbnQgZmVjX2VuYWJsZV94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU2MjpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVx0XHRcdCAgICAgICB1MTYgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU5Mj1zdGF0aWMgaW50IGZlY19kaXNhYmxlX3hza19wb29sKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5NS1cdHN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3EgKnR4cSA9IGZlcC1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTk2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKm9sZF9wb29sID0gdHhxLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDU5Ny1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDYxOD1zdGF0aWMgaW50IGZlY19zZXR1cF94c2tfcG9vbChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDYxOTpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXHRcdFx0ICAgICAgdTE2IHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MjQyPXN0cnVjdCBndmVfcnhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDMtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQ1LVx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oPTQ3Mz1zdHJ1Y3QgZ3ZlX3R4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtNjU5LVx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC02NjEtXHR1NjQgeGRwX3hza19zZW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xMjI3PXN0YXRpYyBpbnQgZ3ZlX3JlZ194c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcdFx0XHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTIyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTI4NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcnhfY2ZnLm51bV9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTI4NjpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTYzMDpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTYzMS1cdFx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTY3OT1zdGF0aWMgaW50IGd2ZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGlfdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTY4NTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODYtXHRpbnQgdHhfcWlkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jPTEwODQ9c3RhdGljIGJvb2wgZ3ZlX3hza190eF9kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3R4X3JpbmcgKnR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmM6MTA4NzpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHgtXHUwMDNleHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYy0xMDg4LVx0c3RydWN0IHhkcF9kZXNjIGRlc2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0zNDAyPXN0YXRpYyB2b2lkIGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MzQyNDpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmk0MGVfeHNrX3Bvb2woc3RydWN0IGk0MGVfcmluZyAqcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMzQyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaD0zMjc9c3RydWN0IGk0MGVfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oOjQwMjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgtNDAzLX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo4MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVx0XHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xNDItXHRib29sIGlmX3J1bm5pbmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE4Mi0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6MTgzOmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXHRcdFx0dTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9NjMwPWJvb2wgaTQwZV9jbGVhbl94ZHBfdHhfaXJxKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NjMyOlx0c3RydWN0IHhza19idWZmX3Bvb2wgKmJwID0gdHhfcmluZy1cdTAwM2V4c2tfcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy02MzMtXHR1MzIgaSwgY29tcGxldGVkX2ZyYW1lcywgeHNrX2ZyYW1lcyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jPTc0Nj12b2lkIGk0MGVfeHNrX2NsZWFuX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVx0dTE2IG50YyA9IHR4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiwgbnR1ID0gdHhfcmluZy1cdTAwM2VuZXh0X3RvX3VzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzo3NDk6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTc1MC1cdHN0cnVjdCBpNDBlX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTE5PXN0cnVjdCBuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjIwOnN0cnVjdCB4c2tfYnVmZl9wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0yMz1pbnQgaTQwZV9xdWV1ZV9wYWlyX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSwgaW50IHF1ZXVlX3BhaXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaC0yNS1cdFx0XHR1MTYgcWlkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkzLSAqIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkIGFzIHplcm8tY29weSwgTlVMTCBvdGhlcndpc2UuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk2LVx0XHRcdFx0XHRcdFx0dTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5ODpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHZzaS1cdTAwM2VuZXRkZXYsIHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyODAtXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTI4MTpcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sID0gUkVBRF9PTkNFKHR4X3JpbmctXHUwMDNleHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cdFx0Ym9vbCB3ZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMzEwLVx0aWNlX2Zvcl9lYWNoX3J4X3JpbmcocnhfcmluZywgcV92ZWN0b3ItXHUwMDNlcngpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMTE6XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVx1MDAzZXhza19wb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMTItXHRcdGludCBjbGVhbmVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMwNC1cdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMDU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg9MzQ5PXN0cnVjdCBpY2VfdHhfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzY1Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTI2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVx1MDAzZW5ldGRldiwgcWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMTI3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTQ0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTQ1OmljZV94c2tfcG9vbF9lbmFibGUoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0xNzQ9aWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6MTk3OmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI2MS1cdFx0XHQgICAgIHVuaW9uIGljZV8zMmJfcnhfZmxleF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI5MzpcdFx0XHRcdCAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MzQyPWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XHRcdFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjM2MzpcdFx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTQzMj1zdGF0aWMgaW50IGljZV94bWl0X3hkcF90eF96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVx0XHRcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQzNDpcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy00NzMtXHRcdHR4X2Rlc2MtXHUwMDNlY21kX3R5cGVfb2Zmc2V0X2JzeiA9IGljZV9idWlsZF9jdG9iKDAsIDAsIHNpemUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0NzQ6XHRcdC8qIGFjY291bnQgZm9yIGVhY2ggeGRwX2J1ZmYgZnJvbSB4c2tfYnVmZl9wb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTQ3NS1cdFx0eGRwX3JpbmctXHUwMDNleGRwX3R4X2FjdGl2ZSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01MTU9aWNlX3J1bl94ZHBfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVx0ICAgICAgIHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2csIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjUxNzpcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTUxOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo1Njg6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01NjktXHRcdFx0aW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTcwOT1zdGF0aWMgdm9pZCBpY2VfeG1pdF9wa3Qoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzEwOlx0XHRcdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVx0XHRcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzM0PXN0YXRpYyB2b2lkIGljZV94bWl0X3BrdF9iYXRjaChzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XHRcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzM2LVx0XHRcdCAgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzcwOlx0XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXHRcdFx0XHRzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2NzLCB1MzIgbmJfcGt0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NzkxOmJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03OTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTA9c3RydWN0IGljZV92c2k7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjEzOmludCBpY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgKnZzaSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTE0LVx0XHQgICAgICAgdTE2IHFpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE1PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xNy1cdFx0XHRpbnQgYnVkZ2V0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyMDpcdFx0XHQgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMjEtYm9vbCBpY2VfeHNrX2FueV9yeF9yaW5nX2VuYShzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTIzPXZvaWQgaWNlX3hza19jbGVhbl94ZHBfcmluZyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjQ6Ym9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0zND1zdGF0aWMgaW5saW5lIGJvb2wgaWNlX3htaXRfemMoc3RydWN0IGljZV90eF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqeGRwX3JpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0zNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjQyOlx0XHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oLTQzLVx0XHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTQ5PWljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XHRcdCAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cdFx0ICAgIGludCBfX2Fsd2F5c191bnVzZWQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NTc9aWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nIF9fYWx3YXlzX3VudXNlZCAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTg6XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgX19hbHdheXNfdW51c2VkICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtNTktXHRcdCAgICAgdTE2IF9fYWx3YXlzX3VudXNlZCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjMtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeHNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XHRcdFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2NS1cdFx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTY0Mz1zdHJ1Y3QgaWRwZl90eF9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC02NTktXHRcdHN0cnVjdCBkZXZpY2UgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NjYwOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjYxLVx0fTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTcyMD1saWJldGhfY2FjaGVsaW5lX3NldF9hc3NlcnQoc3RydWN0IGlkcGZfdHhfcXVldWUsIDY0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcdTAwMjZ4ZHBfYnVmZiBmb3IgWFNrIFJ4IGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg6NzM0OiAqIEBwb29sOiBcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzM1LSAqIEBoZHJfYnVmOiBcdTAwMjZsaWJldGhfZnFlIGZvciBoZWFkZXIgYnVmZmVyc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NzU1PXN0cnVjdCBpZHBmX2J1Zl9xdWV1ZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXHRcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjc2NTpcdFx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzY2LVx0XHR9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz0yNj1zdGF0aWMgdm9pZCBpZHBmX3hza19zZXR1cF9idWZxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVx0Y29uc3Qgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyA9IFx1MDAyNnZwb3J0LVx1MDAzZWRmbHRfcXZfcnNyYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MzA6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXHR1MzIgcWlkID0gVTMyX01BWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU4LVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTc5PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX2NvbXBscShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjgyOlx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTgzLVx0dTMyIHFpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU1ND1pbnQgaWRwZl94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gYnBmLVx1MDAzZXhzay5wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXHR1MzIgcWlkID0gYnBmLVx1MDAzZXhzay5xdWV1ZV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9MzE5PXN0cnVjdCBpZ2JfcmluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDozNjU6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtMzY2LX0gX19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU2PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODU5OnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2MC1cdFx0XHRcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODYxPWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2MjpcdFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg2My1cdFx0ICAgICAgIHUxNiBxaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTg2ND1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NjU6XHRcdFx0ICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY2LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04Njc9aW50IGlnYl9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODY4Olx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODY5OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg3MC1pbnQgaWdiX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHFpZCwgdTMyIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODItXHRcdFx0XHRcdFx0ICAgICBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04Mjg0LVx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9ODMyNz1zdGF0aWMgYm9vbCBpZ2JfY2xlYW5fdHhfaXJxKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBpbnQgbmFwaV9idWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNS1cdHN0cnVjdCBpZ2JfdHhfYnVmZmVyICp0eF9idWZmZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODMzNy1cdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz01Nz1zdGF0aWMgdm9pZCBpZ2JfdHhyeF9yaW5nX2VuYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODM6c3RydWN0IHhza19idWZmX3Bvb2wgKmlnYl94c2tfcG9vbChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVx0XHRcdFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXHRpbnQgcWlkID0gcmluZy1cdTAwM2VxdWV1ZV9pbmRleDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz05Nz1zdGF0aWMgaW50IGlnYl94c2tfcG9vbF9lbmFibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo5ODpcdFx0XHQgICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVx0XHRcdCAgICAgICB1MTYgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTM5PXN0YXRpYyBpbnQgaWdiX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCB1MTYgcWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNDE6XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVx0c3RydWN0IGlnYl9yaW5nICpyeF9yaW5nO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoxNjk6XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTcwLVx0XHQgICAgICAgdTE2IHFpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc3LVx0XHRcdCAgICAgdW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsIHUxNiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MjAxOlx0XHRcdCAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTIwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0yOTQ9c3RhdGljIGludCBpZ2JfcnVuX3hkcF96YyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6Mjk1Olx0XHRcdCAgc3RydWN0IHhkcF9idWZmICp4ZHAsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVx0XHRcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTM0MT1pbnQgaWdiX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWdiX3FfdmVjdG9yICpxX3ZlY3RvcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlx0XHRcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6NDY1OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTE0Nz1zdHJ1Y3QgaWdjX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDMtXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg6MjA0Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTIwNS19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE2LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDM5Olx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSByaW5nLVx1MDAzZXhza19wb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA0MC1cdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5xID0gdHhyaW5nX3R4cShyaW5nKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jPTc0OT1zdGF0aWMgdm9pZCBpZ2NfcHRwX3R4X3JlZ190b19zdGFtcChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXHRpZiAodHN0YW1wLVx1MDAzZWJ1ZmZlcl90eXBlID09IElHQ19UWF9CVUZGRVJfVFlQRV9YU0spIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlx0XHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jPTU2PXN0YXRpYyBpbnQgaWdjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3Olx0XHRcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy01OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTEyMC1cdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjEyMTpcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjE1OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jLTE2MC1cdFx0ICAgICAgIHUxNiBxdWV1ZV9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTgtXHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmg6OTppbnQgaWdjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oLTEwLVx0XHQgICAgICAgdTE2IHF1ZXVlX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkxMzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQUZfWERQIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZHJpdmVycyB0aGF0IGN1cnJlbnRseSBzdXBwb3J0IEFGX1hEUCB6ZXJvLWNvcHkuIExldCBtZSBzZWUuLi4gSSYjMzk7dmUgZ290IGEgbWVudGFsIGxpc3Qgc3RhcnRpbmcgdG8gZm9ybS4gVGhlcmUmIzM5O3MgYHRzbmVwYCAtIHRoZSBFbmdsZWRlciBUU04gZW5kcG9pbnQuIFRoZW4gdGhlcmUmIzM5O3MgdGhlIEZyZWVzY2FsZSBEUEFBMiwgdGhhdCYjMzk7cyBgZHBhYTJgLiBJIHJlbWVtYmVyIGBmZWNgIGZyb20gRnJlZXNjYWxlLCB0b28uIEFuZCBvZiBjb3Vyc2UsIGBndmVgLCB0aGUgR29vZ2xlIFZpcnR1YWwgTklDLCBpdCYjMzk7cyBwcmV0dHkgY3J1Y2lhbC4gVGhlIHVzdWFsIHN1c3BlY3RzIGZyb20gSW50ZWwgYXJlIGluIHRoZSBtaXg6IGBpNDBlYCwgYGljZWAsIGBpZHBmYCwgYGlnYmAsIGBpZ2NgLCBhbmQgYGl4Z2JlYC4gVGhlbiwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IE1lbGxhbm94IGBtbHg1YC4gQW5kLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGBzdG1tYWNgIGRyaXZlciBmcm9tIFNUTWljcm9lbGVjdHJvbmljcy4KCldhaXQgYSBzZWNvbmTigKYgYHZldGhgPyBWaXJ0dWFsIEV0aGVybmV0PyBJIGNvdWxkIGhhdmUgc3dvcm4gdGhhdCBJIGRpZG4mIzM5O3QgdGhpbmsgYHZldGhgIHN1cHBvcnRlZCBBRl9YRFAgemVyby1jb3B5LiBJIGNvdWxkIGJlIG1pc3Rha2VuLCB0aG91Z2guIE1heWJlIHRoaW5ncyBoYXZlIGNoYW5nZWQsIG9yIG15IG1lbW9yeSYjMzk7cyBzbGlwcGluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIExldCYjMzk7cyBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC92ZXRoLmNgIGFuZCBjb25maXJtIHRoYXQgaXQgcmVhbGx5IHN1cHBvcnRzIEFGX1hEUC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9wb29sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2ODQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgdmV0aCBhbmQgWFNLIEludGVncmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIFZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLCBgdmV0aGAsIHdvdWxkIGxldmVyYWdlIHRoZSBgeHNrX2J1ZmZfcG9vbGAgZm9yIGl0cyB6ZXJvLWNvcHkgY2FwYWJpbGl0aWVzLiBCdXQgc29tZXRoaW5nJiMzOTtzIG5pZ2dsaW5nIGF0IG1lLi4uIGlzIHRoYXQgYWN0dWFsbHkgKnRydWUqPyBMZXQgbWUgY2xhcmlmeSB0aGF0IG1lbnRhbCBtb2RlbC4gRG9lcyBgdmV0aGAgYWN0dWFsbHkgKnVzZSogYHhza19idWZmX3Bvb2xgIGRpcmVjdGx5PyBPciBwZXJoYXBzLCBjb3VsZCBpdCBiZSBhIG1vcmUgaW5kaXJlY3QgY29ubmVjdGlvbiwgb3IgcG9zc2libHksIHplcm8tY29weSBpcyBhY2hpZXZlZCBpbiBhIGRpZmZlcmVudCB3YXkgZW50aXJlbHk/IEhtbW0uCgpSaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSB0byBjbGFyaWZ5IHRoaXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdmV0aC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIgYW5kIHNoZWQgc29tZSBsaWdodCBvbiBob3cgYHZldGhgIGhhbmRsZXMgWERQIHNvY2tldHMgYW5kIHplcm8tY29weSBpZiBpdCAqaXMqIHVzaW5nIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDAwMQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgWERQL3ZldGggUmVsYXRpb25zaGlwKioKCkhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgdmlydHVhbCBFdGhlcm5ldCBkZXZpY2UsIGB2ZXRoYCwgaGFkIHNvbWUgaW50ZWdyYXRpb24gd2l0aCBYRFAsIHBlcmhhcHMgdGhyb3VnaCBgeHNrYCBzb2NrZXRzLCBidXQgbm93IHRoYXQgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdCwgdGhhdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIHZldGggZHJpdmVyLiBSaWdodCwgaXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC92ZXRoLmNgIHRvIHNlZSBob3cgYHZldGhgIGFjdHVhbGx5IGludGVyYWN0cywgaWYgYXQgYWxsLCB3aXRoIFhEUCYjMzk7cyBjYXBhYmlsaXRpZXMuIFRoZXJlIG11c3QgYmUgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIHRoZSBzb3VyY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC92ZXRoLmMtMjEtI2luY2x1ZGUgXHUwMDNjbmV0L3hmcm0uaFx1MDAzZVxuZHJpdmVycy9uZXQvdmV0aC5jOjIyOiNpbmNsdWRlIFx1MDAzY25ldC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvdmV0aC5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZldGguaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz00Mz1zdHJ1Y3QgdmV0aF9zdGF0cyB7XG5kcml2ZXJzL25ldC92ZXRoLmMtNDQtXHR1NjRcdHJ4X2Ryb3BzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ1Olx0LyogeGRwICovXG5kcml2ZXJzL25ldC92ZXRoLmM6NDY6XHR1NjRcdHhkcF9wYWNrZXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ3Olx0dTY0XHR4ZHBfYnl0ZXM7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDg6XHR1NjRcdHhkcF9yZWRpcmVjdDtcbmRyaXZlcnMvbmV0L3ZldGguYzo0OTpcdHU2NFx0eGRwX2Ryb3BzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjUwOlx0dTY0XHR4ZHBfdHg7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTE6XHR1NjRcdHhkcF90eF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTI6XHR1NjRcdHBlZXJfdHFfeGRwX3htaXQ7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTM6XHR1NjRcdHBlZXJfdHFfeGRwX3htaXRfZXJyO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU0LX07XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTYxPXN0cnVjdCB2ZXRoX3JxIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjpcdHN0cnVjdCBuYXBpX3N0cnVjdFx0eGRwX25hcGk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjM6XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgX19yY3UgKm5hcGk7IC8qIHBvaW50cyB0byB4ZHBfbmFwaSB3aGVuIHRoZSBsYXR0ZXIgaXMgaW5pdGlhbGl6ZWQgKi9cbmRyaXZlcnMvbmV0L3ZldGguYy02NC1cdHN0cnVjdCBuZXRfZGV2aWNlXHQqZGV2O1xuZHJpdmVycy9uZXQvdmV0aC5jOjY1Olx0c3RydWN0IGJwZl9wcm9nIF9fcmN1XHQqeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjY6XHRzdHJ1Y3QgeGRwX21lbV9pbmZvXHR4ZHBfbWVtO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY3LVx0c3RydWN0IHZldGhfcnFfc3RhdHNcdHN0YXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY4LVx0Ym9vbFx0XHRcdHJ4X25vdGlmeV9tYXNrZWQ7XG5kcml2ZXJzL25ldC92ZXRoLmM6Njk6XHRzdHJ1Y3QgcHRyX3JpbmdcdFx0eGRwX3Jpbmc7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzA6XHRzdHJ1Y3QgeGRwX3J4cV9pbmZvXHR4ZHBfcnhxO1xuZHJpdmVycy9uZXQvdmV0aC5jLTcxLVx0c3RydWN0IHBhZ2VfcG9vbFx0KnBhZ2VfcG9vbDtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NzQ9c3RydWN0IHZldGhfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTc2LVx0YXRvbWljNjRfdFx0XHRkcm9wcGVkO1xuZHJpdmVycy9uZXQvdmV0aC5jOjc3Olx0c3RydWN0IGJwZl9wcm9nXHRcdCpfeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzgtXHRzdHJ1Y3QgdmV0aF9ycVx0XHQqcnE7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTgxLVxuZHJpdmVycy9uZXQvdmV0aC5jOjgyOnN0cnVjdCB2ZXRoX3hkcF90eF9icSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6ODM6XHRzdHJ1Y3QgeGRwX2ZyYW1lICpxW1ZFVEhfWERQX1RYX0JVTEtfU0laRV07XG5kcml2ZXJzL25ldC92ZXRoLmMtODQtXHR1bnNpZ25lZCBpbnQgY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTk4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3JxX3N0YXRzX2Rlc2NbXSA9IHtcbmRyaXZlcnMvbmV0L3ZldGguYzo5OTpcdHsgXCYjMzQ7eGRwX3BhY2tldHNcJiMzNDssXHRWRVRIX1JRX1NUQVQoeGRwX3BhY2tldHMpIH0sXG5kcml2ZXJzL25ldC92ZXRoLmM6MTAwOlx0eyBcJiMzNDt4ZHBfYnl0ZXNcJiMzNDssXHRcdFZFVEhfUlFfU1RBVCh4ZHBfYnl0ZXMpIH0sXG5kcml2ZXJzL25ldC92ZXRoLmMtMTAxLVx0eyBcJiMzNDtkcm9wc1wmIzM0OyxcdFx0VkVUSF9SUV9TVEFUKHJ4X2Ryb3BzKSB9LFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwMjpcdHsgXCYjMzQ7eGRwX3JlZGlyZWN0XCYjMzQ7LFx0VkVUSF9SUV9TVEFUKHhkcF9yZWRpcmVjdCkgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMDM6XHR7IFwmIzM0O3hkcF9kcm9wc1wmIzM0OyxcdFx0VkVUSF9SUV9TVEFUKHhkcF9kcm9wcykgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMDQ6XHR7IFwmIzM0O3hkcF90eFwmIzM0OyxcdFx0VkVUSF9SUV9TVEFUKHhkcF90eCkgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMDU6XHR7IFwmIzM0O3hkcF90eF9lcnJvcnNcJiMzNDssXHRWRVRIX1JRX1NUQVQoeGRwX3R4X2VycikgfSxcbmRyaXZlcnMvbmV0L3ZldGguYy0xMDYtfTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3RxX3N0YXRzX2Rlc2NbXSA9IHtcbmRyaXZlcnMvbmV0L3ZldGguYzoxMTE6XHR7IFwmIzM0O3hkcF94bWl0XCYjMzQ7LFx0XHRWRVRIX1JRX1NUQVQocGVlcl90cV94ZHBfeG1pdCkgfSxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMTI6XHR7IFwmIzM0O3hkcF94bWl0X2Vycm9yc1wmIzM0OyxcdFZFVEhfUlFfU1RBVChwZWVyX3RxX3hkcF94bWl0X2VycikgfSxcbmRyaXZlcnMvbmV0L3ZldGguYy0xMTMtfTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MTE3PXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0xMjItXG5kcml2ZXJzL25ldC92ZXRoLmM6MTIzOnN0cnVjdCB2ZXRoX3hkcF9idWZmIHtcbmRyaXZlcnMvbmV0L3ZldGguYzoxMjQ6XHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTEyNS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jPTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHZldGhfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTI3Ny1cbmRyaXZlcnMvbmV0L3ZldGguYzoyNzg6c3RhdGljIGJvb2wgdmV0aF9pc194ZHBfZnJhbWUodm9pZCAqcHRyKVxuZHJpdmVycy9uZXQvdmV0aC5jLTI3OS17XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTI4Mi1cbmRyaXZlcnMvbmV0L3ZldGguYzoyODM6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfcHRyX3RvX3hkcCh2b2lkICpwdHIpXG5kcml2ZXJzL25ldC92ZXRoLmMtMjg0LXtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtMjg3LVxuZHJpdmVycy9uZXQvdmV0aC5jOjI4ODpzdGF0aWMgdm9pZCAqdmV0aF94ZHBfdG9fcHRyKHN0cnVjdCB4ZHBfZnJhbWUgKnhkcClcbmRyaXZlcnMvbmV0L3ZldGguYy0yODkte1xuZHJpdmVycy9uZXQvdmV0aC5jOjI5MDpcdHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZyl4ZHAgfCBWRVRIX1hEUF9GTEFHKTtcbmRyaXZlcnMvbmV0L3ZldGguYy0yOTEtfVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz0yOTM9c3RhdGljIHZvaWQgdmV0aF9wdHJfZnJlZSh2b2lkICpwdHIpXG5kcml2ZXJzL25ldC92ZXRoLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3ZldGguYzoyOTU6XHRpZiAodmV0aF9pc194ZHBfZnJhbWUocHRyKSlcbmRyaXZlcnMvbmV0L3ZldGguYzoyOTY6XHRcdHhkcF9yZXR1cm5fZnJhbWUodmV0aF9wdHJfdG9feGRwKHB0cikpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTI5Ny1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtMzAwLVxuZHJpdmVycy9uZXQvdmV0aC5jOjMwMTpzdGF0aWMgdm9pZCBfX3ZldGhfeGRwX2ZsdXNoKHN0cnVjdCB2ZXRoX3JxICpycSlcbmRyaXZlcnMvbmV0L3ZldGguYy0zMDIte1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0zMDUtXHRpZiAoIVJFQURfT05DRShycS1cdTAwM2VyeF9ub3RpZnlfbWFza2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3ZldGguYzozMDY6XHQgICAgbmFwaV9zY2hlZHVsZV9wcmVwKFx1MDAyNnJxLVx1MDAzZXhkcF9uYXBpKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTMwNy1cdFx0V1JJVEVfT05DRShycS1cdTAwM2VyeF9ub3RpZnlfbWFza2VkLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3ZldGguYzozMDg6XHRcdF9fbmFwaV9zY2hlZHVsZShcdTAwMjZycS1cdTAwM2V4ZHBfbmFwaSk7XG5kcml2ZXJzL25ldC92ZXRoLmMtMzA5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0zMTEtXG5kcml2ZXJzL25ldC92ZXRoLmM6MzEyOnN0YXRpYyBpbnQgdmV0aF94ZHBfcngoc3RydWN0IHZldGhfcnEgKnJxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdmV0aC5jLTMxMy17XG5kcml2ZXJzL25ldC92ZXRoLmM6MzE0Olx0aWYgKHVubGlrZWx5KHB0cl9yaW5nX3Byb2R1Y2UoXHUwMDI2cnEtXHUwMDNleGRwX3JpbmcsIHNrYikpKVxuZHJpdmVycy9uZXQvdmV0aC5jLTMxNS1cdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZOyAvKiBzaWduYWwgcWRpc2MgbGF5ZXIgKi9cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MzIwPXN0YXRpYyBpbnQgdmV0aF9mb3J3YXJkX3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdmV0aC5jOjMyMTpcdFx0XHQgICAgc3RydWN0IHZldGhfcnEgKnJxLCBib29sIHhkcClcbmRyaXZlcnMvbmV0L3ZldGguYy0zMjIte1xuZHJpdmVycy9uZXQvdmV0aC5jOjMyMzpcdHJldHVybiBfX2Rldl9mb3J3YXJkX3NrYihkZXYsIHNrYikgPzogeGRwID9cbmRyaXZlcnMvbmV0L3ZldGguYzozMjQ6XHRcdHZldGhfeGRwX3J4KHJxLCBza2IpIDpcbmRyaXZlcnMvbmV0L3ZldGguYy0zMjUtXHRcdF9fbmV0aWZfcngoc2tiKTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9MzQ3PXN0YXRpYyBuZXRkZXZfdHhfdCB2ZXRoX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtMzg0LVx0XHRlbHNlXG5kcml2ZXJzL25ldC92ZXRoLmM6Mzg1Olx0XHRcdF9fdmV0aF94ZHBfZmx1c2gocnEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTM4Ni1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTQwMy1cdFx0ICovXG5kcml2ZXJzL25ldC92ZXRoLmM6NDA0Olx0XHRfX3ZldGhfeGRwX2ZsdXNoKHJxKTtcbmRyaXZlcnMvbmV0L3ZldGguYy00MDUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz00MjA9c3RhdGljIHZvaWQgdmV0aF9zdGF0c19yeChzdHJ1Y3QgdmV0aF9zdGF0cyAqcmVzdWx0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy00MjQtXG5kcml2ZXJzL25ldC92ZXRoLmM6NDI1Olx0cmVzdWx0LVx1MDAzZXBlZXJfdHFfeGRwX3htaXRfZXJyID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYzo0MjY6XHRyZXN1bHQtXHUwMDNleGRwX3BhY2tldHMgPSAwO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQyNzpcdHJlc3VsdC1cdTAwM2V4ZHBfdHhfZXJyID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYzo0Mjg6XHRyZXN1bHQtXHUwMDNleGRwX2J5dGVzID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYy00MjktXHRyZXN1bHQtXHUwMDNlcnhfZHJvcHMgPSAwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTQzMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdmV0aC5jOjQzMTpcdFx0dTY0IHBhY2tldHMsIGJ5dGVzLCBkcm9wcywgeGRwX3R4X2VyciwgcGVlcl90cV94ZHBfeG1pdF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmMtNDMyLVx0XHRzdHJ1Y3QgdmV0aF9ycV9zdGF0cyAqc3RhdHMgPSBcdTAwMjZwcml2LVx1MDAzZXJxW2ldLnN0YXRzO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy00MzYtXHRcdFx0c3RhcnQgPSB1NjRfc3RhdHNfZmV0Y2hfYmVnaW4oXHUwMDI2c3RhdHMtXHUwMDNlc3luY3ApO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQzNzpcdFx0XHRwZWVyX3RxX3hkcF94bWl0X2VyciA9IHN0YXRzLVx1MDAzZXZzLnBlZXJfdHFfeGRwX3htaXRfZXJyO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQzODpcdFx0XHR4ZHBfdHhfZXJyID0gc3RhdHMtXHUwMDNldnMueGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0Mzk6XHRcdFx0cGFja2V0cyA9IHN0YXRzLVx1MDAzZXZzLnhkcF9wYWNrZXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ0MDpcdFx0XHRieXRlcyA9IHN0YXRzLVx1MDAzZXZzLnhkcF9ieXRlcztcbmRyaXZlcnMvbmV0L3ZldGguYy00NDEtXHRcdFx0ZHJvcHMgPSBzdGF0cy1cdTAwM2V2cy5yeF9kcm9wcztcbmRyaXZlcnMvbmV0L3ZldGguYy00NDItXHRcdH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeShcdTAwMjZzdGF0cy1cdTAwM2VzeW5jcCwgc3RhcnQpKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDM6XHRcdHJlc3VsdC1cdTAwM2VwZWVyX3RxX3hkcF94bWl0X2VyciAmIzQzOz0gcGVlcl90cV94ZHBfeG1pdF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDQ0Olx0XHRyZXN1bHQtXHUwMDNleGRwX3R4X2VyciAmIzQzOz0geGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDU6XHRcdHJlc3VsdC1cdTAwM2V4ZHBfcGFja2V0cyAmIzQzOz0gcGFja2V0cztcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDY6XHRcdHJlc3VsdC1cdTAwM2V4ZHBfYnl0ZXMgJiM0Mzs9IGJ5dGVzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTQ0Ny1cdFx0cmVzdWx0LVx1MDAzZXJ4X2Ryb3BzICYjNDM7PSBkcm9wcztcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NDUxPXN0YXRpYyB2b2lkIHZldGhfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNDYxLVx0dmV0aF9zdGF0c19yeChcdTAwMjZyeCwgZGV2KTtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjI6XHR0b3QtXHUwMDNldHhfZHJvcHBlZCAmIzQzOz0gcngueGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjM6XHR0b3QtXHUwMDNlcnhfZHJvcHBlZCA9IHJ4LnJ4X2Ryb3BzICYjNDM7IHJ4LnBlZXJfdHFfeGRwX3htaXRfZXJyO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ2NDpcdHRvdC1cdTAwM2VyeF9ieXRlcyAmIzQzOz0gcngueGRwX2J5dGVzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ2NTpcdHRvdC1cdTAwM2VyeF9wYWNrZXRzICYjNDM7PSByeC54ZHBfcGFja2V0cztcbmRyaXZlcnMvbmV0L3ZldGguYy00NjYtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTQ3Ni1cdFx0dmV0aF9zdGF0c19yeChcdTAwMjZyeCwgcGVlcik7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDc3Olx0XHR0b3QtXHUwMDNldHhfZHJvcHBlZCAmIzQzOz0gcngucGVlcl90cV94ZHBfeG1pdF9lcnI7XG5kcml2ZXJzL25ldC92ZXRoLmM6NDc4Olx0XHR0b3QtXHUwMDNlcnhfZHJvcHBlZCAmIzQzOz0gcngueGRwX3R4X2VycjtcbmRyaXZlcnMvbmV0L3ZldGguYzo0Nzk6XHRcdHRvdC1cdTAwM2V0eF9ieXRlcyAmIzQzOz0gcngueGRwX2J5dGVzO1xuZHJpdmVycy9uZXQvdmV0aC5jOjQ4MDpcdFx0dG90LVx1MDAzZXR4X3BhY2tldHMgJiM0Mzs9IHJ4LnhkcF9wYWNrZXRzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTQ4MS1cdH1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmM9NDk1PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqdmV0aF9wZWVyX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01MDItXG5kcml2ZXJzL25ldC92ZXRoLmM6NTAzOnN0YXRpYyBpbnQgdmV0aF94ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbixcbmRyaXZlcnMvbmV0L3ZldGguYzo1MDQ6XHRcdFx0IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsXG5kcml2ZXJzL25ldC92ZXRoLmMtNTA1LVx0XHRcdCB1MzIgZmxhZ3MsIGJvb2wgbmRvX3htaXQpXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTUyMy1cdC8qIFRoZSBuYXBpIHBvaW50ZXIgaXMgc2V0IGlmIE5BUEkgaXMgZW5hYmxlZCwgd2hpY2ggZW5zdXJlcyB0aGF0XG5kcml2ZXJzL25ldC92ZXRoLmM6NTI0Olx0ICogeGRwX3JpbmcgaXMgaW5pdGlhbGl6ZWQgb24gcmVjZWl2ZSBzaWRlIGFuZCB0aGUgcGVlciBkZXZpY2UgaXMgdXAuXG5kcml2ZXJzL25ldC92ZXRoLmMtNTI1LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTUzMC1cbmRyaXZlcnMvbmV0L3ZldGguYzo1MzE6XHRzcGluX2xvY2soXHUwMDI2cnEtXHUwMDNleGRwX3JpbmcucHJvZHVjZXJfbG9jayk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNTMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzM6XHRcdHN0cnVjdCB4ZHBfZnJhbWUgKmZyYW1lID0gZnJhbWVzW2ldO1xuZHJpdmVycy9uZXQvdmV0aC5jOjUzNDpcdFx0dm9pZCAqcHRyID0gdmV0aF94ZHBfdG9fcHRyKGZyYW1lKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01MzUtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTM2Olx0XHRpZiAodW5saWtlbHkoeGRwX2dldF9mcmFtZV9sZW4oZnJhbWUpIFx1MDAzZSBtYXhfbGVuIHx8XG5kcml2ZXJzL25ldC92ZXRoLmM6NTM3Olx0XHRcdCAgICAgX19wdHJfcmluZ19wcm9kdWNlKFx1MDAyNnJxLVx1MDAzZXhkcF9yaW5nLCBwdHIpKSlcbmRyaXZlcnMvbmV0L3ZldGguYy01MzgtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTU0MC1cdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo1NDE6XHRzcGluX3VubG9jayhcdTAwMjZycS1cdTAwM2V4ZHBfcmluZy5wcm9kdWNlcl9sb2NrKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01NDItXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQzLVx0aWYgKGZsYWdzIFx1MDAyNiBYRFBfWE1JVF9GTFVTSClcbmRyaXZlcnMvbmV0L3ZldGguYzo1NDQ6XHRcdF9fdmV0aF94ZHBfZmx1c2gocnEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU0NS1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQ4LVx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo1NDk6XHRcdHJxLVx1MDAzZXN0YXRzLnZzLnBlZXJfdHFfeGRwX3htaXQgJiM0Mzs9IG54bWl0O1xuZHJpdmVycy9uZXQvdmV0aC5jOjU1MDpcdFx0cnEtXHUwMDNlc3RhdHMudnMucGVlcl90cV94ZHBfeG1pdF9lcnIgJiM0Mzs9IG4gLSBueG1pdDtcbmRyaXZlcnMvbmV0L3ZldGguYy01NTEtXHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTU5LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU2MDpzdGF0aWMgaW50IHZldGhfbmRvX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuLFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2MTpcdFx0XHQgICAgIHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsIHUzMiBmbGFncylcbmRyaXZlcnMvbmV0L3ZldGguYy01NjIte1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01NjQtXG5kcml2ZXJzL25ldC92ZXRoLmM6NTY1Olx0ZXJyID0gdmV0aF94ZHBfeG1pdChkZXYsIG4sIGZyYW1lcywgZmxhZ3MsIHRydWUpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ni1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc0LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU3NTpzdGF0aWMgdm9pZCB2ZXRoX3hkcF9mbHVzaF9icShzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc2LXtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU3OTpcdHNlbnQgPSB2ZXRoX3hkcF94bWl0KHJxLVx1MDAzZWRldiwgYnEtXHUwMDNlY291bnQsIGJxLVx1MDAzZXEsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01ODAtXHRpZiAoc2VudCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy01ODUtXHRmb3IgKGkgPSBzZW50OyB1bmxpa2VseShpIFx1MDAzYyBicS1cdTAwM2Vjb3VudCk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvdmV0aC5jOjU4NjpcdFx0eGRwX3JldHVybl9mcmFtZShicS1cdTAwM2VxW2ldKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01ODctXG5kcml2ZXJzL25ldC92ZXRoLmMtNTg4LVx0ZHJvcHMgPSBicS1cdTAwM2Vjb3VudCAtIHNlbnQ7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTg5Olx0dHJhY2VfeGRwX2J1bGtfdHgocnEtXHUwMDNlZGV2LCBzZW50LCBkcm9wcywgZXJyKTtcbmRyaXZlcnMvbmV0L3ZldGguYy01OTAtXG5kcml2ZXJzL25ldC92ZXRoLmMtNTkxLVx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZycS1cdTAwM2VzdGF0cy5zeW5jcCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NTkyOlx0cnEtXHUwMDNlc3RhdHMudnMueGRwX3R4ICYjNDM7PSBzZW50O1xuZHJpdmVycy9uZXQvdmV0aC5jOjU5MzpcdHJxLVx1MDAzZXN0YXRzLnZzLnhkcF90eF9lcnIgJiM0Mzs9IGRyb3BzO1xuZHJpdmVycy9uZXQvdmV0aC5jLTU5NC1cdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNTk4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjU5OTpzdGF0aWMgdm9pZCB2ZXRoX3hkcF9mbHVzaChzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXG5kcml2ZXJzL25ldC92ZXRoLmMtNjAwLXtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNjA1LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjYwNjpcdHZldGhfeGRwX2ZsdXNoX2JxKHJxLCBicSk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjA3LVx0cmN2ID0gcmN1X2RlcmVmZXJlbmNlKHByaXYtXHUwMDNlcGVlcik7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYxMi1cdHJjdl9ycSA9IFx1MDAyNnJjdl9wcml2LVx1MDAzZXJxW3ZldGhfc2VsZWN0X3J4cShyY3YpXTtcbmRyaXZlcnMvbmV0L3ZldGguYzo2MTM6XHQvKiB4ZHBfcmluZyBpcyBpbml0aWFsaXplZCBvbiByZWNlaXZlIHNpZGU/ICovXG5kcml2ZXJzL25ldC92ZXRoLmM6NjE0Olx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIocmN2X3JxLVx1MDAzZXhkcF9wcm9nKSkpXG5kcml2ZXJzL25ldC92ZXRoLmMtNjE1LVx0XHRnb3RvIG91dDtcbmRyaXZlcnMvbmV0L3ZldGguYy02MTYtXG5kcml2ZXJzL25ldC92ZXRoLmM6NjE3Olx0X192ZXRoX3hkcF9mbHVzaChyY3ZfcnEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTYxOC1vdXQ6XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYyMS1cbmRyaXZlcnMvbmV0L3ZldGguYzo2MjI6c3RhdGljIGludCB2ZXRoX3hkcF90eChzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxuZHJpdmVycy9uZXQvdmV0aC5jOjYyMzpcdFx0ICAgICAgIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXG5kcml2ZXJzL25ldC92ZXRoLmMtNjI0LXtcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjU6XHRzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSA9IHhkcF9jb252ZXJ0X2J1ZmZfdG9fZnJhbWUoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYzMC1cdGlmICh1bmxpa2VseShicS1cdTAwM2Vjb3VudCA9PSBWRVRIX1hEUF9UWF9CVUxLX1NJWkUpKVxuZHJpdmVycy9uZXQvdmV0aC5jOjYzMTpcdFx0dmV0aF94ZHBfZmx1c2hfYnEocnEsIGJxKTtcbmRyaXZlcnMvbmV0L3ZldGguYy02MzItXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTYzNy1cbmRyaXZlcnMvbmV0L3ZldGguYzo2Mzg6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfeGRwX3Jjdl9vbmUoc3RydWN0IHZldGhfcnEgKnJxLFxuZHJpdmVycy9uZXQvdmV0aC5jOjYzOTpcdFx0XHRcdFx0ICBzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSxcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDA6XHRcdFx0XHRcdCAgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSxcbmRyaXZlcnMvbmV0L3ZldGguYy02NDEtXHRcdFx0XHRcdCAgc3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxuZHJpdmVycy9uZXQvdmV0aC5jLTY0Mi17XG5kcml2ZXJzL25ldC92ZXRoLmM6NjQzOlx0c3RydWN0IHhkcF9mcmFtZSBvcmlnX2ZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY0NDpcdHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjQ1LVxuZHJpdmVycy9uZXQvdmV0aC5jLTY0Ni1cdHJjdV9yZWFkX2xvY2soKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDc6XHR4ZHBfcHJvZyA9IHJjdV9kZXJlZmVyZW5jZShycS1cdTAwM2V4ZHBfcHJvZyk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjQ4Olx0aWYgKGxpa2VseSh4ZHBfcHJvZykpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDk6XHRcdHN0cnVjdCB2ZXRoX3hkcF9idWZmIHZ4YnVmO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY1MDpcdFx0c3RydWN0IHhkcF9idWZmICp4ZHAgPSBcdTAwMjZ2eGJ1Zi54ZHA7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjUxLVx0XHR1MzIgYWN0O1xuZHJpdmVycy9uZXQvdmV0aC5jLTY1Mi1cbmRyaXZlcnMvbmV0L3ZldGguYzo2NTM6XHRcdHhkcF9jb252ZXJ0X2ZyYW1lX3RvX2J1ZmYoZnJhbWUsIHhkcCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjU0Olx0XHR4ZHAtXHUwMDNlcnhxID0gXHUwMDI2cnEtXHUwMDNleGRwX3J4cTtcbmRyaXZlcnMvbmV0L3ZldGguYy02NTUtXHRcdHZ4YnVmLnNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjU2LVxuZHJpdmVycy9uZXQvdmV0aC5jOjY1NzpcdFx0YWN0ID0gYnBmX3Byb2dfcnVuX3hkcCh4ZHBfcHJvZywgeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTY2MC1cdFx0Y2FzZSBYRFBfUEFTUzpcbmRyaXZlcnMvbmV0L3ZldGguYzo2NjE6XHRcdFx0aWYgKHhkcF91cGRhdGVfZnJhbWVfZnJvbV9idWZmKHhkcCwgZnJhbWUpKVxuZHJpdmVycy9uZXQvdmV0aC5jOjY2MjpcdFx0XHRcdGdvdG8gZXJyX3hkcDtcbmRyaXZlcnMvbmV0L3ZldGguYy02NjMtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTY2NS1cdFx0XHRvcmlnX2ZyYW1lID0gKmZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY2NjpcdFx0XHR4ZHAtXHUwMDNlcnhxLVx1MDAzZW1lbS50eXBlID0gZnJhbWUtXHUwMDNlbWVtX3R5cGU7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjY3Olx0XHRcdGlmICh1bmxpa2VseSh2ZXRoX3hkcF90eChycSwgeGRwLCBicSkgXHUwMDNjIDApKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjY4Olx0XHRcdFx0dHJhY2VfeGRwX2V4Y2VwdGlvbihycS1cdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY2OS1cdFx0XHRcdGZyYW1lID0gXHUwMDI2b3JpZ19mcmFtZTtcbmRyaXZlcnMvbmV0L3ZldGguYy02NzAtXHRcdFx0XHRzdGF0cy1cdTAwM2VyeF9kcm9wcyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmM6NjcxOlx0XHRcdFx0Z290byBlcnJfeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY3Mi1cdFx0XHR9XG5kcml2ZXJzL25ldC92ZXRoLmM6NjczOlx0XHRcdHN0YXRzLVx1MDAzZXhkcF90eCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjc0LVx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjY3NTpcdFx0XHRnb3RvIHhkcF94bWl0O1xuZHJpdmVycy9uZXQvdmV0aC5jLTY3Ni1cdFx0Y2FzZSBYRFBfUkVESVJFQ1Q6XG5kcml2ZXJzL25ldC92ZXRoLmMtNjc3LVx0XHRcdG9yaWdfZnJhbWUgPSAqZnJhbWU7XG5kcml2ZXJzL25ldC92ZXRoLmM6Njc4Olx0XHRcdHhkcC1cdTAwM2VyeHEtXHUwMDNlbWVtLnR5cGUgPSBmcmFtZS1cdTAwM2VtZW1fdHlwZTtcbmRyaXZlcnMvbmV0L3ZldGguYzo2Nzk6XHRcdFx0aWYgKHhkcF9kb19yZWRpcmVjdChycS1cdTAwM2VkZXYsIHhkcCwgeGRwX3Byb2cpKSB7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjgwLVx0XHRcdFx0ZnJhbWUgPSBcdTAwMjZvcmlnX2ZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY4MS1cdFx0XHRcdHN0YXRzLVx1MDAzZXJ4X2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo2ODI6XHRcdFx0XHRnb3RvIGVycl94ZHA7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjgzLVx0XHRcdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo2ODQ6XHRcdFx0c3RhdHMtXHUwMDNleGRwX3JlZGlyZWN0JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYy02ODUtXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6Njg2Olx0XHRcdGdvdG8geGRwX3htaXQ7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjg3LVx0XHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvdmV0aC5jOjY4ODpcdFx0XHRicGZfd2Fybl9pbnZhbGlkX3hkcF9hY3Rpb24ocnEtXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcbmRyaXZlcnMvbmV0L3ZldGguYy02ODktXHRcdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjkwLVx0XHRjYXNlIFhEUF9BQk9SVEVEOlxuZHJpdmVycy9uZXQvdmV0aC5jOjY5MTpcdFx0XHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNjkyLVx0XHRcdGZhbGx0aHJvdWdoO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY5My1cdFx0Y2FzZSBYRFBfRFJPUDpcbmRyaXZlcnMvbmV0L3ZldGguYzo2OTQ6XHRcdFx0c3RhdHMtXHUwMDNleGRwX2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo2OTU6XHRcdFx0Z290byBlcnJfeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTY5Ni1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MDAtXHRyZXR1cm4gZnJhbWU7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzAxOmVycl94ZHA6XG5kcml2ZXJzL25ldC92ZXRoLmMtNzAyLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzAzOlx0eGRwX3JldHVybl9mcmFtZShmcmFtZSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzA0OnhkcF94bWl0OlxuZHJpdmVycy9uZXQvdmV0aC5jLTcwNS1cdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MDgtLyogZnJhbWVzIGFycmF5IGNvbnRhaW5zIFZFVEhfWERQX0JBVENIIGF0IG1vc3QgKi9cbmRyaXZlcnMvbmV0L3ZldGguYzo3MDk6c3RhdGljIHZvaWQgdmV0aF94ZHBfcmN2X2J1bGtfc2tiKHN0cnVjdCB2ZXRoX3JxICpycSwgdm9pZCAqKmZyYW1lcyxcbmRyaXZlcnMvbmV0L3ZldGguYzo3MTA6XHRcdFx0XHQgIGludCBuX3hkcGYsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXG5kcml2ZXJzL25ldC92ZXRoLmMtNzExLVx0XHRcdFx0ICBzdHJ1Y3QgdmV0aF9zdGF0cyAqc3RhdHMpXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTcxNS1cbmRyaXZlcnMvbmV0L3ZldGguYzo3MTY6XHRpZiAodW5saWtlbHkoIW5hcGlfc2tiX2NhY2hlX2dldF9idWxrKHNrYnMsIG5feGRwZikpKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzE3Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX3hkcGY7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvdmV0aC5jOjcxODpcdFx0XHR4ZHBfcmV0dXJuX2ZyYW1lKGZyYW1lc1tpXSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzE5Olx0XHRzdGF0cy1cdTAwM2VyeF9kcm9wcyAmIzQzOz0gbl94ZHBmO1xuZHJpdmVycy9uZXQvdmV0aC5jLTcyMC1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNzIzLVxuZHJpdmVycy9uZXQvdmV0aC5jOjcyNDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5feGRwZjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3ZldGguYy03MjUtXHRcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JzW2ldO1xuZHJpdmVycy9uZXQvdmV0aC5jLTcyNi1cbmRyaXZlcnMvbmV0L3ZldGguYzo3Mjc6XHRcdHNrYiA9IF9feGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKGZyYW1lc1tpXSwgc2tiLFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOC1cdFx0XHRcdFx0XHQgcnEtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3ZldGguYy03MjktXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzMwOlx0XHRcdHhkcF9yZXR1cm5fZnJhbWUoZnJhbWVzW2ldKTtcbmRyaXZlcnMvbmV0L3ZldGguYy03MzEtXHRcdFx0c3RhdHMtXHUwMDNlcnhfZHJvcHMmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MzMtXHRcdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo3MzQ6XHRcdG5hcGlfZ3JvX3JlY2VpdmUoXHUwMDI2cnEtXHUwMDNleGRwX25hcGksIHNrYik7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzM1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03MzctXG5kcml2ZXJzL25ldC92ZXRoLmM6NzM4OnN0YXRpYyB2b2lkIHZldGhfeGRwX2dldChzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbmRyaXZlcnMvbmV0L3ZldGguYy03Mzkte1xuZHJpdmVycy9uZXQvdmV0aC5jOjc0MDpcdHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKnNpbmZvID0geGRwX2dldF9zaGFyZWRfaW5mb19mcm9tX2J1ZmYoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy03NDEtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3ZldGguYy03NDItXG5kcml2ZXJzL25ldC92ZXRoLmM6NzQzOlx0Z2V0X3BhZ2UodmlydF90b19wYWdlKHhkcC1cdTAwM2VkYXRhKSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzQ0Olx0aWYgKGxpa2VseSgheGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpKVxuZHJpdmVycy9uZXQvdmV0aC5jLTc0NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03NTAtXG5kcml2ZXJzL25ldC92ZXRoLmM6NzUxOnN0YXRpYyBpbnQgdmV0aF9jb252ZXJ0X3NrYl90b194ZHBfYnVmZihzdHJ1Y3QgdmV0aF9ycSAqcnEsXG5kcml2ZXJzL25ldC92ZXRoLmM6NzUyOlx0XHRcdFx0XHRzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L3ZldGguYy03NTMtXHRcdFx0XHRcdHN0cnVjdCBza19idWZmICoqcHNrYilcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtNzY5LVx0ZnJhbWVfc3ogJiM0Mzs9IFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6NzcwOlx0eGRwX2luaXRfYnVmZih4ZHAsIGZyYW1lX3N6LCBcdTAwMjZycS1cdTAwM2V4ZHBfcnhxKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzE6XHR4ZHBfcHJlcGFyZV9idWZmKHhkcCwgc2tiLVx1MDAzZWhlYWQsIHNrYl9oZWFkcm9vbShza2IpLFxuZHJpdmVycy9uZXQvdmV0aC5jLTc3Mi1cdFx0XHQgc2tiX2hlYWRsZW4oc2tiKSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTc3NC1cdGlmIChza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3MpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzU6XHRcdHNrYl9zaGluZm8oc2tiKS1cdTAwM2V4ZHBfZnJhZ3Nfc2l6ZSA9IHNrYi1cdTAwM2VkYXRhX2xlbjtcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzY6XHRcdHhkcF9idWZmX3NldF9mcmFnc19mbGFnKHhkcCk7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzc3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo3Nzg6XHRcdHhkcF9idWZmX2NsZWFyX2ZyYWdzX2ZsYWcoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy03NzktXHR9XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTc4OS1cbmRyaXZlcnMvbmV0L3ZldGguYzo3OTA6c3RhdGljIHN0cnVjdCBza19idWZmICp2ZXRoX3hkcF9yY3Zfc2tiKHN0cnVjdCB2ZXRoX3JxICpycSxcbmRyaXZlcnMvbmV0L3ZldGguYy03OTEtXHRcdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC92ZXRoLmM6NzkyOlx0XHRcdFx0XHRzdHJ1Y3QgdmV0aF94ZHBfdHhfYnEgKmJxLFxuZHJpdmVycy9uZXQvdmV0aC5jLTc5My1cdFx0XHRcdFx0c3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy03OTUtXHR2b2lkICpvcmlnX2RhdGEsICpvcmlnX2RhdGFfZW5kO1xuZHJpdmVycy9uZXQvdmV0aC5jOjc5NjpcdHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2c7XG5kcml2ZXJzL25ldC92ZXRoLmM6Nzk3Olx0c3RydWN0IHZldGhfeGRwX2J1ZmYgdnhidWY7XG5kcml2ZXJzL25ldC92ZXRoLmM6Nzk4Olx0c3RydWN0IHhkcF9idWZmICp4ZHAgPSBcdTAwMjZ2eGJ1Zi54ZHA7XG5kcml2ZXJzL25ldC92ZXRoLmMtNzk5LVx0dTMyIGFjdCwgbWV0YWxlbjtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODA0LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjgwNTpcdHhkcF9wcm9nID0gcmN1X2RlcmVmZXJlbmNlKHJxLVx1MDAzZXhkcF9wcm9nKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4MDY6XHRpZiAodW5saWtlbHkoIXhkcF9wcm9nKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTgwNy1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTgxMS1cdF9fc2tiX3B1c2goc2tiLCBza2ItXHUwMDNlZGF0YSAtIHNrYl9tYWNfaGVhZGVyKHNrYikpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjgxMjpcdGlmICh2ZXRoX2NvbnZlcnRfc2tiX3RvX3hkcF9idWZmKHJxLCB4ZHAsIFx1MDAyNnNrYikpXG5kcml2ZXJzL25ldC92ZXRoLmMtODEzLVx0XHRnb3RvIGRyb3A7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTgxNS1cbmRyaXZlcnMvbmV0L3ZldGguYzo4MTY6XHRvcmlnX2RhdGEgPSB4ZHAtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4MTc6XHRvcmlnX2RhdGFfZW5kID0geGRwLVx1MDAzZWRhdGFfZW5kO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgxOC1cbmRyaXZlcnMvbmV0L3ZldGguYzo4MTk6XHRhY3QgPSBicGZfcHJvZ19ydW5feGRwKHhkcF9wcm9nLCB4ZHApO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgyMC1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODI0LVx0Y2FzZSBYRFBfVFg6XG5kcml2ZXJzL25ldC92ZXRoLmM6ODI1Olx0XHR2ZXRoX3hkcF9nZXQoeGRwKTtcbmRyaXZlcnMvbmV0L3ZldGguYy04MjYtXHRcdGNvbnN1bWVfc2tiKHNrYik7XG5kcml2ZXJzL25ldC92ZXRoLmM6ODI3Olx0XHR4ZHAtXHUwMDNlcnhxLVx1MDAzZW1lbSA9IHJxLVx1MDAzZXhkcF9tZW07XG5kcml2ZXJzL25ldC92ZXRoLmM6ODI4Olx0XHRpZiAodW5saWtlbHkodmV0aF94ZHBfdHgocnEsIHhkcCwgYnEpIFx1MDAzYyAwKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jOjgyOTpcdFx0XHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XG5kcml2ZXJzL25ldC92ZXRoLmMtODMwLVx0XHRcdHN0YXRzLVx1MDAzZXJ4X2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo4MzE6XHRcdFx0Z290byBlcnJfeGRwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgzMi1cdFx0fVxuZHJpdmVycy9uZXQvdmV0aC5jOjgzMzpcdFx0c3RhdHMtXHUwMDNleGRwX3R4JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYy04MzQtXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjgzNTpcdFx0Z290byB4ZHBfeG1pdDtcbmRyaXZlcnMvbmV0L3ZldGguYy04MzYtXHRjYXNlIFhEUF9SRURJUkVDVDpcbmRyaXZlcnMvbmV0L3ZldGguYzo4Mzc6XHRcdHZldGhfeGRwX2dldCh4ZHApO1xuZHJpdmVycy9uZXQvdmV0aC5jLTgzOC1cdFx0Y29uc3VtZV9za2Ioc2tiKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4Mzk6XHRcdHhkcC1cdTAwM2VyeHEtXHUwMDNlbWVtID0gcnEtXHUwMDNleGRwX21lbTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDA6XHRcdGlmICh4ZHBfZG9fcmVkaXJlY3QocnEtXHUwMDNlZGV2LCB4ZHAsIHhkcF9wcm9nKSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTg0MS1cdFx0XHRzdGF0cy1cdTAwM2VyeF9kcm9wcyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmM6ODQyOlx0XHRcdGdvdG8gZXJyX3hkcDtcbmRyaXZlcnMvbmV0L3ZldGguYy04NDMtXHRcdH1cbmRyaXZlcnMvbmV0L3ZldGguYzo4NDQ6XHRcdHN0YXRzLVx1MDAzZXhkcF9yZWRpcmVjdCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC92ZXRoLmMtODQ1LVx0XHRyY3VfcmVhZF91bmxvY2soKTtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDY6XHRcdGdvdG8geGRwX3htaXQ7XG5kcml2ZXJzL25ldC92ZXRoLmMtODQ3LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDg6XHRcdGJwZl93YXJuX2ludmFsaWRfeGRwX2FjdGlvbihycS1cdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTg0OS1cdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC92ZXRoLmMtODUwLVx0Y2FzZSBYRFBfQUJPUlRFRDpcbmRyaXZlcnMvbmV0L3ZldGguYzo4NTE6XHRcdHRyYWNlX3hkcF9leGNlcHRpb24ocnEtXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcbmRyaXZlcnMvbmV0L3ZldGguYy04NTItXHRcdGZhbGx0aHJvdWdoO1xuZHJpdmVycy9uZXQvdmV0aC5jLTg1My1cdGNhc2UgWERQX0RST1A6XG5kcml2ZXJzL25ldC92ZXRoLmM6ODU0Olx0XHRzdGF0cy1cdTAwM2V4ZHBfZHJvcHMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdmV0aC5jOjg1NTpcdFx0Z290byB4ZHBfZHJvcDtcbmRyaXZlcnMvbmV0L3ZldGguYy04NTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTg1OC1cbmRyaXZlcnMvbmV0L3ZldGguYzo4NTk6XHQvKiBjaGVjayBpZiBicGZfeGRwX2FkanVzdF9oZWFkIHdhcyB1c2VkICovXG5kcml2ZXJzL25ldC92ZXRoLmM6ODYwOlx0b2ZmID0gb3JpZ19kYXRhIC0geGRwLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC92ZXRoLmMtODYxLVx0aWYgKG9mZiBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODY4LVx0LyogWERQIGZyYWcgbWV0YWRhdGEgKGUuZy4gbnJfZnJhZ3MpIGFyZSB1cGRhdGVkIGluIGVCUEYgaGVscGVyc1xuZHJpdmVycy9uZXQvdmV0aC5jOjg2OTpcdCAqIChlLmcuIGJwZl94ZHBfYWRqdXN0X3RhaWwpLiBSZW1vdmUgdGhlIG9sZCBmcmFnbWVudCBjb250cmlidXRpb25cbmRyaXZlcnMvbmV0L3ZldGguYy04NzAtXHQgKiBmcm9tIHNrYi1cdTAwM2VsZW4gYmVmb3JlIHVwZGF0aW5nIGRhdGFfbGVuLCB0aGVuIGFkZCB0aGUgbmV3IG9uZSBiYWNrLlxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy04NzItXHRza2ItXHUwMDNlbGVuIC09IHNrYi1cdTAwM2VkYXRhX2xlbjtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NzM6XHRpZiAoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo4NzQ6XHRcdHNrYi1cdTAwM2VkYXRhX2xlbiA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2V4ZHBfZnJhZ3Nfc2l6ZTtcbmRyaXZlcnMvbmV0L3ZldGguYy04NzUtXHRcdHNrYi1cdTAwM2VsZW4gJiM0Mzs9IHNrYi1cdTAwM2VkYXRhX2xlbjtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODgwLVx0LyogU3luY2hyb25pemUgdGhlIHNrYiB0YWlsIHdpdGggWERQJiMzOTtzIHVwZGF0ZWQgbGluZWFyIGFyZWEuICovXG5kcml2ZXJzL25ldC92ZXRoLmM6ODgxOlx0b2ZmID0geGRwLVx1MDAzZWRhdGFfZW5kIC0gb3JpZ19kYXRhX2VuZDtcbmRyaXZlcnMvbmV0L3ZldGguYy04ODItXHRpZiAob2ZmICE9IDApIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo4ODM6XHRcdHNrYl9zZXRfdGFpbF9wb2ludGVyKHNrYiwgeGRwLVx1MDAzZWRhdGFfZW5kIC0geGRwLVx1MDAzZWRhdGEpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTg4NC1cdFx0c2tiLVx1MDAzZWxlbiAmIzQzOz0gb2ZmOyAvKiBwb3NpdGl2ZSBvbiBncm93LCBuZWdhdGl2ZSBvbiBzaHJpbmsgKi9cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtODg4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjg4OTpcdG1ldGFsZW4gPSB4ZHAtXHUwMDNlZGF0YSAtIHhkcC1cdTAwM2VkYXRhX21ldGE7XG5kcml2ZXJzL25ldC92ZXRoLmMtODkwLVx0aWYgKG1ldGFsZW4pXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTg5NS1cdHN0YXRzLVx1MDAzZXJ4X2Ryb3BzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3ZldGguYzo4OTY6eGRwX2Ryb3A6XG5kcml2ZXJzL25ldC92ZXRoLmMtODk3LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTg5OS1cdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkwMDplcnJfeGRwOlxuZHJpdmVycy9uZXQvdmV0aC5jLTkwMS1cdHJjdV9yZWFkX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkwMjpcdHhkcF9yZXR1cm5fYnVmZih4ZHApO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkwMzp4ZHBfeG1pdDpcbmRyaXZlcnMvbmV0L3ZldGguYy05MDQtXHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtOTA2LVxuZHJpdmVycy9uZXQvdmV0aC5jOjkwNzpzdGF0aWMgaW50IHZldGhfeGRwX3JjdihzdHJ1Y3QgdmV0aF9ycSAqcnEsIGludCBidWRnZXQsXG5kcml2ZXJzL25ldC92ZXRoLmM6OTA4Olx0XHRcdHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXG5kcml2ZXJzL25ldC92ZXRoLmMtOTA5LVx0XHRcdHN0cnVjdCB2ZXRoX3N0YXRzICpzdGF0cylcbmRyaXZlcnMvbmV0L3ZldGguYy05MTAte1xuZHJpdmVycy9uZXQvdmV0aC5jOjkxMTpcdGludCBpLCBkb25lID0gMCwgbl94ZHBmID0gMDtcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTI6XHR2b2lkICp4ZHBmW1ZFVEhfWERQX0JBVENIXTtcbmRyaXZlcnMvbmV0L3ZldGguYy05MTMtXG5kcml2ZXJzL25ldC92ZXRoLmMtOTE0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnVkZ2V0OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdmV0aC5jOjkxNTpcdFx0dm9pZCAqcHRyID0gX19wdHJfcmluZ19jb25zdW1lKFx1MDAyNnJxLVx1MDAzZXhkcF9yaW5nKTtcbmRyaXZlcnMvbmV0L3ZldGguYy05MTYtXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTkxOS1cbmRyaXZlcnMvbmV0L3ZldGguYzo5MjA6XHRcdGlmICh2ZXRoX2lzX3hkcF9mcmFtZShwdHIpKSB7XG5kcml2ZXJzL25ldC92ZXRoLmM6OTIxOlx0XHRcdC8qIG5kb194ZHBfeG1pdCAqL1xuZHJpdmVycy9uZXQvdmV0aC5jOjkyMjpcdFx0XHRzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSA9IHZldGhfcHRyX3RvX3hkcChwdHIpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTkyMy1cbmRyaXZlcnMvbmV0L3ZldGguYzo5MjQ6XHRcdFx0c3RhdHMtXHUwMDNleGRwX2J5dGVzICYjNDM7PSB4ZHBfZ2V0X2ZyYW1lX2xlbihmcmFtZSk7XG5kcml2ZXJzL25ldC92ZXRoLmM6OTI1Olx0XHRcdGZyYW1lID0gdmV0aF94ZHBfcmN2X29uZShycSwgZnJhbWUsIGJxLCBzdGF0cyk7XG5kcml2ZXJzL25ldC92ZXRoLmMtOTI2LVx0XHRcdGlmIChmcmFtZSkge1xuZHJpdmVycy9uZXQvdmV0aC5jLTkyNy1cdFx0XHRcdC8qIFhEUF9QQVNTICovXG5kcml2ZXJzL25ldC92ZXRoLmM6OTI4Olx0XHRcdFx0eGRwZltuX3hkcGYmIzQzOyYjNDM7XSA9IGZyYW1lO1xuZHJpdmVycy9uZXQvdmV0aC5jOjkyOTpcdFx0XHRcdGlmIChuX3hkcGYgPT0gVkVUSF9YRFBfQkFUQ0gpIHtcbmRyaXZlcnMvbmV0L3ZldGguYzo5MzA6XHRcdFx0XHRcdHZldGhfeGRwX3Jjdl9idWxrX3NrYihycSwgeGRwZiwgbl94ZHBmLFxuZHJpdmVycy9uZXQvdmV0aC5jLTkzMS1cdFx0XHRcdFx0XHRcdCAgICAgIGJxLCBzdGF0cyk7XG5kcml2ZXJzL25ldC92ZXRoLmM6OTMyOlx0XHRcdFx0XHRuX3hkcGYgPSAwO1xuZHJpdmVycy9uZXQvdmV0aC5jLTkzMy1cdFx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC92ZXRoLmMtOTM4LVxuZHJpdmVycy9uZXQvdmV0aC5jOjkzOTpcdFx0XHRzdGF0cy1cdTAwM2V4ZHBfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC92ZXRoLmM6OTQwOlx0XHRcdHNrYiA9IHZldGhfeGRwX3Jjdl9za2IocnEsIHNrYiwgYnEsIHN0YXRzKTtcbmRyaXZlcnMvbmV0L3ZldGguYy05NDEtXHRcdFx0aWYgKHNrYikge1xuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy05NDQtXHRcdFx0XHRlbHNlXG5kcml2ZXJzL25ldC92ZXRoLmM6OTQ1Olx0XHRcdFx0XHRuYXBpX2dyb19yZWNlaXZlKFx1MDAyNnJxLVx1MDAzZXhkcF9uYXBpLCBza2IpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTk0Ni1cdFx0XHR9XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyODcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQUZfWERQIFplcm8tQ29weSBJbXBhY3QqKgoKT2theSwgc28gdGhlIGB2ZXRoYCBpbnRlcmZhY2UsIHdoaWxlIFhEUC1jYXBhYmxlLCBkb2VzbiYjMzk7dCB1dGlsaXplIHRoZSBgeHNrX2J1ZmZfcG9vbGAsIGluc3RlYWQgcmVseWluZyBvbiBgeGRwX2ZyYW1lYCBhbmQgYHhkcF9idWZmYC4gVGhhdCBtZWFucyB0aGUgcmVjZW50IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGNoYW5nZSB3b24mIzM5O3QgYWZmZWN0IGl0LiBHb29kLgoKTGV0JiMzOTtzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIG90aGVyIGNhbmRpZGF0ZXM6IGBtYWN2bGFuYD8gTm9wZS4gWmVyby1jb3B5IEFGX1hEUCBpcyBhIG5vLWdvIHRoZXJlLiBgdmlydGlvX25ldGA/IFN0aWxsIG5vLiBgdHVuYC9gdGFwYD8gTmVnYXRpdmUuCgpTbywgaXQgbG9va3MgbGlrZSwgYXQgbGVhc3QgaW5pdGlhbGx5LCB0aGUgb25seSBkcml2ZXJzIHRoYXQgKmRvKiBzdXBwb3J0IHRoaXMgemVyby1jb3B5IEFGX1hEUCBtZWNoYW5pc20gYXJlIHBoeXNpY2FsIE5JQ3MgYW5kIGEgZmV3IHNwZWNpYWxpemVkIHZpcnR1YWwgb25lczogYHRzbmVwYCAoRlBHQSBlbmRwb2ludCkgYW5kIGBndmVgLCB0aGUgR29vZ2xlIFZpcnR1YWwgTklDLiBIYW5nIG9u4oCmIGBndmVg4oCmIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuCgpDYW4gSSBldmVuIHJlYWNoIGBndmVgIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFByb2JhYmx5IG5vdCBuYXRpdmVseS4gSG93ZXZlciwgc3l6a2FsbGVyICptaWdodCogYmUgcnVubmluZyBvbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHdoZXJlIGBndmVgIGlzIHRoZSBhY3R1YWwgbmV0d29yayBpbnRlcmZhY2UhIEJ1dCwgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIHRlc3RzICppbnNpZGUqIGEgVk0uIElmIHRoZSBWTSBpcyBvbiBHQ0UsIGl0IGNvdWxkIHRoZW9yZXRpY2FsbHkgaGF2ZSBhIGBndmVgIGludGVyZmFjZSwgYnV0IHN5emthbGxlciB1c3VhbGx5IGlzb2xhdGVzIHdpdGggbmVzdGVkIFZNcyAoUUVNVSkgb3IgbmV0d29yayBuYW1lc3BhY2VzIHdpdGggYHZldGhgIG9yIGB0dW5gIGRldmljZXMuIEl0JiMzOTtzIG5vdCB1c3VhbGx5IGZ1enppbmcgdGhlIGhvc3QmIzM5O3MgYGd2ZWAgZGV2aWNlIGRpcmVjdGx5IGJlY2F1c2UgdGhhdCB3b3VsZCB0ZWFyIGRvd24gdGhlIG5ldHdvcmsgY29ubmVjdGlvbiB0byB0aGUgVk0uCgpFdmVuIGlmIGl0IGRpZCwgdGhlIGNydWNpYWwgcG9pbnQgaXM6IGRvZXMgYGd2ZWAgKnVzZSogYHhza19idWZmX2dldF9tZXRhZGF0YWA/IFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIERlcGVuZGVuY3kgVXNhZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgdGhlIGBndmVgIGxpYnJhcnkgbm90IHV0aWxpemluZyB0aGUgZGVwZW5kZW5jeSBpbiBxdWVzdGlvbiwgYnV0IGl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gQmVmb3JlIEkgbW92ZSBvbiB3aXRoIG15IG93biB3b3JrLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3MgKm5vdCogYSBmYWN0b3IgaW4gYGd2ZWAmIzM5O3Mgb3BlcmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY29kZS4KCk5vdywgaWYgYGd2ZWAgZG9lc24mIzM5O3QgdXNlIGl0LCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdHNuZXBgLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoYXQgbGlicmFyeSwgd2hpY2ggaXMgcmVsYXRlZCBpbiBmdW5jdGlvbmFsaXR5LCBhY3R1YWxseSBkZXBlbmRzIG9uIGl0LiBBIHF1aWNrIHNlYXJjaCB0aHJvdWdoIHRoZSBgdHNuZXBgIGNvZGViYXNlIGlzIGluIG9yZGVyLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8ga25vdyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGFsbCB0aGVzZSB0b29scy4gSWYgZWl0aGVyIG9mIHRob3NlIHBhY2thZ2VzIHVzZSBpdCwgdGhhdCB3aWxsIGRyYXN0aWNhbGx5IGNoYW5nZSB3aGF0IGlzIG5lY2Vzc2FyeSBpbiBteSBjdXJyZW50IGRldmVsb3BtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMzY5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIExhbmRzY2FwZSoqCgpOb3BlLiBOb3QgaGFwcGVuaW5nLiBNeSBndXQgcmVhY3Rpb24gaXMgYSBoYXJkICYjMzQ7bm8mIzM0OyBvbiB0aGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgZGlzbWlzc2luZyB0aGlzIHBvaW50IHRob3VnaC4gTGV0JiMzOTtzIG5vdCBqdXN0IGlnbm9yZSB0aGlzLCBsZXQmIzM5O3MgZ28gZGVlcGVyIGFuZCBjaGVjayBpZiB0aGlzIGFjdHVhbGx5IGlzIGJlaW5nIHVzZWQgYnkgdGhlIGBkcGFhMmAgc3lzdGVtLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWZmX2dldF9tZXRhZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjUzOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIGRpcmVjdCB0aG91Z2h0IHByb2Nlc3M6CgoqKk5vLiBMZXQmIzM5O3MgVmVyaWZ5IFRoaXMgQ2xhaW0uKioKCkFscmlnaHQsIHRoYXQmIzM5O3MgYSBmbGF0ICYjMzQ7bm8uJiMzNDsgQnV0LCBsZXQmIzM5O3Mgbm90IGp1c3QgdGFrZSB0aGF0IGFzIHRoZSBmaW5hbCBhbnN3ZXIsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggW2ltcGxpZWQgZmllbGQgLSB1c2VyJiMzOTtzIGFyZWEgb2YgZXhwZXJ0aXNlLCBlLmcuLCBjb21wbGV4IHN5c3RlbXMsIGRhdGEgYW5hbHlzaXMsIHRoZW9yZXRpY2FsIHBoeXNpY3NdLiBNeSBndXQgc2F5cyAmIzM0O25vLCYjMzQ7IGJ1dCBndXQgZmVlbGluZ3MgYXJlbiYjMzk7dCBlbm91Z2guIEkgbmVlZCB0byBiZSAqc3VyZSouIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgdGhpcyBpcyBiZWluZyBpbXBsZW1lbnRlZCBhbnl3aGVyZSwgZXZlbiBpbiBhIHNtYWxsIHdheS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgaWYgYGZlY2AgaXMgdXRpbGl6aW5nIHdoYXRldmVyIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LiBJcyB0aGVyZSBhbnkgZXhpc3RpbmcgY29kZWJhc2Ugb3IgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiB0aGF0IHdvdWxkIHByb3ZpZGUgYW4gYW5zd2VyIGhlcmU/IFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IHNlYXJjaC4gQSBxdWljayBjaGVjayBvZiBgZmVjYCB3aWxsIGVpdGhlciBjb25maXJtIHRoaXMgbmVnYXRpdmUgb3IgZ2l2ZSBtZSBhbiBpbW1lZGlhdGUganVtcGluZy1vZmYgcG9pbnQgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI4MDIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEFCSSBNaXNtYXRjaCBpbiBYRFAgYW5kIEFGX1hEUCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgY29kZSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyByZWNlbnQgY2hhbmdlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYCAodGhyb3VnaCBgbGliZXRoYCkgYXJlIHRoZSBvbmx5IGRyaXZlcnMgdGhhdCB1c2UgdGhvc2UgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMuIEJ1dCwgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBmdXp6IHRob3NlIGluIGEgd2F5IHRoYXQgd291bGQgaGl0IHRoaXMgcGFydGljdWxhciBhcmVhIGJlY2F1c2UgaXQgcHJlZmVycyB0aGluZ3MgbGlrZSBgdmV0aGAsIGB0dW5gLCBgbWFjdmxhbmAsIGB2Y2FuYCwgYW5kIGB2eGxhbmAuCgpUaGVuLCB3YWl0IGEgbWludXRlLCB0aGVyZSYjMzk7cyB0aGF0IFVBUEkgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBzcGVjaWZpY2FsbHkgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gTXkgY29uY2VybiBub3cgY2VudGVycyBhcm91bmQgYG5ldC94ZHAveHNrLmNgLCB0aGUgY29yZSBBRl9YRFAgc29ja2V0IGltcGxlbWVudGF0aW9uLgoKQSB1c2VyIGNhbiBzZXQgYHR4X21ldGFkYXRhX2xlbmAgaW4gYHN0cnVjdCB4ZHBfdW1lbV9yZWdgIHdoZW4gY3JlYXRpbmcgYW4gQUZfWERQIHNvY2tldC4gIFRoZW4sIGluIGB4c2tfc2tiX21ldGFkYXRhYCBpdCBjYWxscyBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLiAgVGhlIGNydWNpYWwgY2hlY2sgaGVyZSB1c2VzIGBvZmZzZXRvZmVuZGAgdG8gZGV0ZXJtaW5lIGlmIGVub3VnaCBzcGFjZSBpcyBhdmFpbGFibGUuIEEgMzItYml0IHVzZXJzcGFjZSBwcm9ncmFtIGNvbXBpbGVkIHdpdGggdGhlICpvbGQqIGhlYWRlciB3b3VsZCBzZXQgYHR4X21ldGFkYXRhX2xlbmAgdG8gMjAsIGJ1dCB0aGUgKm5ldyogaGVhZGVyIG1ha2VzIGBvZmZzZXRvZmVuZGAgZXF1YWwgMjQuIENvbnNlcXVlbnRseSwgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCB3aWxsIHJldHVybiBgZmFsc2VgLCB3aGljaCBsZWFkcyB0byBhbiBgLUVJTlZBTGAgZnJvbSBgeHNrX3NrYl9tZXRhZGF0YWAuCgpTbywgdGhlIHBhdGNoIGlzIGZpeGluZyBhIDMyLWJpdC82NC1iaXQgQUJJIG1pc21hdGNoLCBidXQgaXQgYWxzbyBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgYW55IDMyLWJpdCBwcm9ncmFtcyB1c2luZyB0aGUgb2xkIHN0cnVjdCBzaXplLiBUaGlzIGlzIGltcG9ydGFudCB0byByZW1lbWJlciBiZWNhdXNlIHN1Y2ggYSBjaGFuZ2UgY2FuIGJyZWFrIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2UsIGlmIGl0IGlzIG5vdCwgdGhpcyBtYXkgbm90IGJlIGEgdmFsaWQgY29uY2Vybi4gQUZfWERQIHNvY2tldHMgKGBBRl9YRFBgKSAqY2FuKiBiZSBjcmVhdGVkIG9uIGFueSBuZXR3b3JrIGludGVyZmFjZSwgaW5jbHVkaW5nIGB2ZXRoYC4gT2theSwgYHZldGhgIGNvdWxkIGJlIHVzZWQuIFdhaXQuLi4gZG9lcyBgdmV0aGAgZXZlbiBzdXBwb3J0IGBYRFBfVFhfTUVUQURBVEFgPyBUaGlzIG5lZWRzIHZlcmlmaWNhdGlvbi4KCk9rYXksIGxldCYjMzk7cyBzZWUuIExvb2tpbmcgYXQgYG5ldC94ZHAveHNrLmNgLCBgeHNrX2J1aWxkX3NrYmAgYW5kIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCBjaGVjayBgZGVzYy0mZ3Q7b3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cyB2aWEgQUZfWERQIHNvY2tldHMuIElmIHRoZSBzb2NrZXQgaXMgYm91bmQgdG8gYHZldGhgLCBpdCYjMzk7bGwgdXNlIGB4c2tfYnVpbGRfc2tiYCBzaW5jZSBgdmV0aGAgZG9lcyBub3Qgc3VwcG9ydCB6ZXJvLWNvcHkgQUZfWERQLiBJIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19idWlsZF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4tLVxubmV0L3hkcC94c2suYy0xMDA4LVxubmV0L3hkcC94c2suYzoxMDA5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxubmV0L3hkcC94c2suYy0xMDEwLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy0xMDg0LVxubmV0L3hkcC94c2suYzoxMDg1OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxubmV0L3hkcC94c2suYy0xMDg2LVx0XHRcdFx0ICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy0xMDkyLVx0aWYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfVFhfU0tCX05PX0xJTkVBUikge1xubmV0L3hkcC94c2suYzoxMDkzOlx0XHRza2IgPSB4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHhzLCBkZXNjKTtcbm5ldC94ZHAveHNrLmMtMTA5NC1cdFx0aWYgKElTX0VSUihza2IpKSB7XG4tLVxubmV0L3hkcC94c2suYz0xMTkxPXN0YXRpYyBpbnQgX194c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGRwL3hzay5jLTEyMzctXG5uZXQveGRwL3hzay5jOjEyMzg6XHRcdHNrYiA9IHhza19idWlsZF9za2IoeHMsIFx1MDAyNmRlc2MpO1xubmV0L3hkcC94c2suYy0xMjM5LVx0XHRpZiAoSVNfRVJSKHNrYikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2NjgKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMzE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBYRFAgWmVyby1Db3B5IFRYIE1ldGFkYXRhIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgZm9jdXNlZCBvbiBlbmhhbmNpbmcgWERQIHplcm8tY29weSB0cmFuc21pc3Npb24sIHBhcnRpY3VsYXJseSB0aGUgbWV0YWRhdGEgaGFuZGxpbmcuIEluaXRpYWxseSwgSSBzYXcgdGhhdCBgX194c2tfZ2VuZXJpY194bWl0YCBpcyB0aGUga2V5LCBjYWxsaW5nIGB4c2tfYnVpbGRfc2tiYCwgYW5kIGNydWNpYWxseSwgYHhza19za2JfbWV0YWRhdGFgLCB3aGljaCBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBldmVuIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGlzIHRoZW4gZ29lcyB0byBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLiAgTXkgbWFpbiBxdWVzdGlvbiBpcyB3aGV0aGVyIGFueSBvZiB0aGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKSSBzZWUgYSBtb2RpZmljYXRpb24gdG8gdGhlIGB4c2tfdHhfbWV0YWRhdGFgIHN0cnVjdCBhbmQsIGNvbnNlcXVlbnRseSwgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCB3aXRoaW4gYG5ldC94ZHAveHNrLmNgICh0aHJvdWdoIGlubGluZSkuIFRoaXMgYWZmZWN0cyB0aGUgYHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbmAgcmVxdWlyZW1lbnQgLSBub3cgMjQgYnl0ZXMgbWluaW11bSBpbnN0ZWFkIG9mIDIwIG9uIDMyLWJpdCBzeXN0ZW1zLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHN0cnVjdCBsYXlvdXQgY2hhbmdlIGlzIGEgbWVhbmluZ2Z1bCBlbm91Z2ggZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYmUgd29ydGggZnV6emluZy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IGFmZmVjdHMgZXhlY3V0aW9uIGZsb3cgb3IgaXMganVzdCBhIHN0cnVjdHVyYWwgYWRqdXN0bWVudC4gTXkgaW5jbGluYXRpb24gaXMgdGhhdCBpdOKAmXMgbW9yZSBvZiB0aGUgbGF0dGVyLCBidXQgSSBuZWVkIHRvIGJlIHByZWNpc2UuCgpJIGFsc28gbm90aWNlIHRoYXQgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBoYXMgY2hhbmdlZCBpbiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBidXQgaXQgaXMgb25seSBjYWxsZWQgYnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyAtIGBpZ2NgLCBgbWx4NWAsIGBzdG1tYWNgLCBhbmQgYGlkcGZgLiAgVGhlc2UgYXJlIG5vdCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwIHdoaWNoIGlzIHdoYXQgc3l6a2FsbGVyIGlzIHVzZWQgd2l0aC4gU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgaXMgYSBub24taXNzdWUgZnJvbSBteSBwZXJzcGVjdGl2ZS4gIFRoZSBzdG1tYWMgY2hhbmdlcyBhcmUgYWxzbyBub3QgcmVsZXZhbnQuCgpUaGUgY29yZSBsb2dpYyBjaGFuZ2UgbG9va3MgbGlrZSBpdCBpcyB0byBtYWtlIHRoZSBgb3B0aW9uc2AgYXJndW1lbnQgYmUgcGFzc2VkIHRvIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBpbmNsdWRlcyBhIGNoZWNrIGZvciBgb3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1ldGFkYXRhIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgdGhlIHVzYWdlIG9mIGludmFsaWQgbWV0YWRhdGEgaWYgdGhlIG9wdGlvbiBpc24mIzM5O3Qgc2V0LiAgVGhpcyBhZmZlY3RzIHRoZSB6ZXJvLWNvcHkgVFggcGF0aCBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBub25lIG9mIHdoaWNoIGFyZSByZWFjaGFibGUgZm9yIGZ1enppbmcuCgpOb3csIHRoYXQgc3RydWN0IGxheW91dCBjaGFuZ2UsIHRoZSBvbmx5IHJlYWNoYWJsZSBhbHRlcmF0aW9uLCBvbmx5IGNoYW5nZXMgYSBudW1lcmljIGNvbnN0YW50IHVzZWQgaW4gYSBzaXplIGNoZWNrLiBJZiB0aGUgbGVuZ3RoIGlzIGxlc3MgdGhhbiAyNCwgd2UgcmV0dXJuIGAtRUlOVkFMYCwgYW5kIHRoZSBwYWNrZXQgaXMgZHJvcHBlZC4gSXQgaXMgYSBib3VuZCBjaGVjaywgbm90IGxvZ2ljIGNoYW5nZS4gSXMgdGhpcyBhIG5ldyBzdGF0ZSBtYWNoaW5lIG9yIGNvbXBsZXggbG9naWMgdG8gZnV6ej8gTm8sIEkgd291bGRu4oCZdCBjb25zaWRlciB0aGlzIHNpZ25pZmljYW50LiBJdOKAmXMganVzdCB0aGUgYWRkaXRpb24gb2YgcGFkZGluZy4gTXkgcHJldmlvdXMgZXhwZXJpZW5jZSBpbmRpY2F0ZXMgdGhlc2Ugc3RydWN0IHBhZGRpbmcgZml4ZXMgYXJlbuKAmXQgZ2VuZXJhbGx5IGEgZnV6emluZyB0YXJnZXQgYmVjYXVzZSB0aGV5JiMzOTtyZSBlc3NlbnRpYWxseSBqdXN0IGNvbnN0YW50IHVwZGF0ZXMuCgpOb3csIGxldCYjMzk7cyByZXZpc2l0IGBzdG1tYWNgIGFnYWluLiBJIGtub3cgUUVNVSB1c2VzIGBkZXNpZ253YXJlYCwgYnV0IGlzIGl0IHRoZSBzYW1lPyBUdXJucyBvdXQgdGhlIGRyaXZlciBpcyB0aGUgRGVzaWduV2FyZSBNQUMuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGF0IGhhcmR3YXJlIGlzIGFjY2Vzc2libGUsIGFuZCBhbHNvIGlmIHplcm8tY29weSBpcyBzdXBwb3J0ZWQuIEl04oCZcyBhIFN5c0J1cyBkZXZpY2UsIHdoaWNoIGRvZXNuJiMzOTt0IGZpdCB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24uCgpBZnRlciBsb29raW5nIGF0IHRoZSBsb2NhdGlvbnMgZm9yIHRoZSBtZXRhZGF0YToKMS4gYGlnY19tYWluLmNgOiBgbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLCB4ZHBfZGVzYy5vcHRpb25zKTtgCjIuIGBtbHg1L2NvcmUvZW4veHNrL3R4LmNgOiBgbWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7YAozLiBgc3RtbWFjX21haW4uY2A6IGBtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsIHhkcF9kZXNjLm9wdGlvbnMpO2AgYW5kIHJlbW92ZWQgYG1heF9zZHVgIGNoZWNrLgo0LiBgaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oYDogYGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLSZndDtwb29sLCB4ZGVzYy0mZ3Q7YWRkciwgeGRlc2MtJmd0O29wdGlvbnMpO2AKNS4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYDogQWRkZWQgYG9wdGlvbnNgIGFyZ3VtZW50IHRvIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAsIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAsIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLiBBZGRlZCBgb3B0aW9ucyAmYW1wOyBYRFBfVFhfTUVUQURBVEFgIGNoZWNrLgo2LiBgaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oYDogQWRkZWQgYG9wdGlvbnNgIGFyZ3VtZW50IHRvIGB4cF9yYXdfZ2V0X2N0eGAuCjcuIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgOiBBZGRlZCBgX191MzIgcmVzZXJ2ZWQ7YCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAuCjguIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2A6IEFkZGVkIGBvcHRpb25zYCBhcmd1bWVudCB0byBgeHBfcmF3X2dldF9jdHhgLgo5LiBgdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmXwoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgemVyby1jb3B5IFRYIG1ldGFkYXRhIHBhdGggdG8gY2hlY2sgdGhlIFhEUF9UWF9NRVRBREFUQSBvcHRpb24gYmVmb3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhpcyBsb2dpYyBpcyBvbmx5IGltcGxlbWVudGVkIGFuZCByZWFjaGFibGUgaW4gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyAoaWdjLCBtbHg1LCBzdG1tYWMsIGlkcGYpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIHBhdGNoIGFsc28gYWRkcyBhIHJlc2VydmVkIHBhZGRpbmcgZmllbGQgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGluIHRoZSBVQVBJLCB3aGljaCBvbmx5IGFsdGVycyBhIG51bWVyaWMgY29uc3RhbnQgKHN0cnVjdCBzaXplKSB1c2VkIGluIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBnZW5lcmljIFhEUCBUWCBwYXRoLCB3aXRob3V0IGludHJvZHVjaW5nIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMDoyMjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MTk6MDYuMjU2NjQ3NjU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTMwNjQ0MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjA2LjI1NjY1Mzk5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5NzY0Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmNhYjE0OTk3ZjJkYzhlZjRmY2MzMTE3YWViYTNlNGZiNmFiMjE3MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMDoxOTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXFxuaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXFxuQEAgLTMwNzQsNyArMzA3NCw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuIFxcdFxcdG9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gXFx1MDAzY1xcdTAwM2MgSUdDX0FEVlRYRF9QQVlMRU5fU0hJRlQ7XFxuIFxcbiBcXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4tXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4rXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbiBcXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XFxuIFxcdFxcdGJpID0gXFx1MDAyNnJpbmctXFx1MDAzZXR4X2J1ZmZlcl9pbmZvW250dV07XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmNcXG5pbmRleCAzZDE5ZGFkOGY4Njg4Li5kMTk0ZWVkZGQ3YjU1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xcbkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXFxuIFxcdFxcdHhkcHR4ZC5kbWFfYWRkciA9IHhza19idWZmX3Jhd19nZXRfZG1hKHBvb2wsIGRlc2MuYWRkcik7XFxuIFxcdFxcdHhkcHR4ZC5kYXRhID0geHNrX2J1ZmZfcmF3X2dldF9kYXRhKHBvb2wsIGRlc2MuYWRkcik7XFxuIFxcdFxcdHhkcHR4ZC5sZW4gPSBkZXNjLmxlbjtcXG4tXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xcbitcXHRcXHRtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtcXG4gXFxuIFxcdFxcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjRhODJmNDM1MTMwM2EgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMjcxMCwxNiArMjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuIFxcdFxcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcXHUwMDI2eGRwX2Rlc2MpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuLVxcdFxcdGlmIChwcml2LVxcdTAwM2Vlc3QgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VlbmFibGUgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHhkcF9kZXNjLmxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0pIHtcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdKys7XFxuLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHR9XFxuLVxcbiBcXHRcXHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcXG4gXFx0XFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4tXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG4rXFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbiBcXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTtcXG4gXFxuIFxcdFxcdC8qIFRvIHJldHVybiBYRFAgYnVmZmVyIHRvIFhTSyBwb29sLCB3ZSBzaW1wbGUgY2FsbFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgveHNrLmggYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcXG5pbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxcbisrKyBiL2luY2x1ZGUvbmV0L2xpYmV0aC94c2suaFxcbkBAIC0xOTYsNyArMTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG4gXFx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xcbiBcXHRzdHJ1Y3QgeGRwX2Rlc2NfY3R4IGN0eDtcXG4gXFxuLVxcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkcik7XFxuK1xcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkciwgeGRlc2MtXFx1MDAzZW9wdGlvbnMpO1xcbiBcXHRkZXNjID0gKHR5cGVvZihkZXNjKSl7XFxuIFxcdFxcdC5hZGRyXFx0PSBjdHguZG1hLFxcbiBcXHRcXHRfX2xpYmV0aF94ZHBfdHhfbGVuKHhkZXNjLVxcdTAwM2VsZW4pLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuaW5kZXggYjM0NDc4OWY1ZGY4My4uZDk0YWViNTA2Mzc5YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxcbisrKyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuQEAgLTI0MCw2ICsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0IFxcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXFxuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxcbisgKiBAb3B0aW9uczogZGVzYyBvcHRpb25zIChmcm9tIHVzZXJzcGFjZSlcXG4gICpcXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcXG4gICogZGV0YWlscy5cXG5AQCAtMjQ4LDkgKzI0OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuK3hza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuIHtcXG4tXFx0cmV0dXJuIHhwX3Jhd19nZXRfY3R4KHBvb2wsIGFkZHIpO1xcbitcXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XFxuIH1cXG4gXFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxcXFxuQEAgLTMxOCwxOCArMzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcXG4rX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuK1xcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbiB7XFxuLVxcdGlmICghcG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuKVxcbitcXHRpZiAoIXBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHJldHVybiBkYXRhIC0gcG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbit4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG4ge1xcbi1cXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG4rXFx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIG9wdGlvbnMpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5AQCAtNTEwLDcgKzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGRwX2Rlc2NfY3R4XFxuLXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG4ge1xcbiBcXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xcbiB9XFxuQEAgLTUzMCwxMyArNTMzLDE0IEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcXG4rX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuK1xcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbiB7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbit4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG4ge1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcXG5pbmRleCAyYmIxZDEyMmIxYmM2Li5hN2RmNTczNzg0ZmQ2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxcbisrKyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxcbkBAIC0xNTQsNyArMTU0LDggQEAgc3RydWN0IHhkcF9kZXNjX2N0eCB7XFxuIFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XFxuIH07XFxuIFxcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcik7XFxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbitcXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucyk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgeHBfZ2V0X2RtYShzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcXG4gXFx0XFx0XFx0X191MTYgY3N1bV9zdGFydDtcXG4gXFx0XFx0XFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xcbiBcXHRcXHRcXHRfX3UxNiBjc3VtX29mZnNldDtcXG4rXFx0XFx0XFx0X191MzIgcmVzZXJ2ZWQ7XFxuIFxcbiBcXHRcXHRcXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xcbiBcXHRcXHRcXHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19idWZmX3Bvb2wuYyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jXFxuaW5kZXggNzhjMTRmMTA2Mzk1Ny4uOWQyZDk0ZjFmYjc1OSAxMDA2NDRcXG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xcbisrKyBiL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jXFxuQEAgLTc2Myw2ICs3NjMsNyBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTtcXG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcXG4gICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXFxuKyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxcbiAgKlxcbiAgKiBIZWxwZXIgZm9yIGdldHRpbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxcbiAgKiBTYXZlcyBvbmUgY2FsbCBvbiBob3RwYXRoIGFuZCBkb3VibGUgY2FsY3VsYXRpb24gb2YgdGhlIGFjdHVhbCBhZGRyZXNzLlxcbkBAIC03NzEsMTQgKzc3MiwxNiBAQCBFWFBPUlRfU1lNQk9MKHhwX3Jhd19nZXRfZG1hKTtcXG4gICogUmV0dXJuOiBuZXcgXFx1MDAyNnhkcF9kZXNjX2N0eCBzdHJ1Y3QgY29udGFpbmluZyBkZXNjJ3MgRE1BIGFkZHJlc3MgYW5kIG1ldGFkYXRhXFxuICAqIHBvaW50ZXIsIGlmIGl0IGlzIHByZXNlbnQgKGluaXRpYWxpemVkIHRvICVOVUxMIG90aGVyd2lzZSkuXFxuICAqL1xcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4rc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuK1xcdFxcdFxcdFxcdCAgIHUzMiBvcHRpb25zKVxcbiB7XFxuIFxcdHN0cnVjdCB4ZHBfZGVzY19jdHggcmV0O1xcbiBcXG4gXFx0YWRkciA9IF9feHBfcmF3X2dldF9hZGRyKHBvb2wsIGFkZHIpO1xcbiBcXG4gXFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XFxuLVxcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xcbitcXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxcbitcXHRcXHRcXHRcXHRcXHQgICBvcHRpb25zKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXFxuaW5kZXggMjNhMDYyNzgxNDY4Ny4uNTBkNjdkZjc4OTExZiAxMDA2NDRcXG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcXG4rKysgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcXG5AQCAtMTQ5LDYgKzE0OSw3IEBAIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xcbiBcXHRcXHRcXHRfX3UxNiBjc3VtX3N0YXJ0O1xcbiBcXHRcXHRcXHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXFxuIFxcdFxcdFxcdF9fdTE2IGNzdW1fb2Zmc2V0O1xcbitcXHRcXHRcXHRfX3UzMiByZXNlcnZlZDtcXG4gXFxuIFxcdFxcdFxcdC8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovXFxuIFxcdFxcdFxcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjA2LjgwNzE5NTMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjA1OTgwMDc5NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfWERQIHplcm8tY29weSBUWCBtZXRhZGF0YSBwYXRoIHRvIGNoZWNrIHRoZSBYRFBfVFhfTUVUQURBVEEgb3B0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgbWV0YWRhdGEuIFRoaXMgbG9naWMgaXMgb25seSBpbXBsZW1lbnRlZCBhbmQgcmVhY2hhYmxlIGluIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgKGlnYywgbWx4NSwgc3RtbWFjLCBpZHBmKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSByZXNlcnZlZCBwYWRkaW5nIGZpZWxkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiB0aGUgVUFQSSwgd2hpY2ggb25seSBhbHRlcnMgYSBudW1lcmljIGNvbnN0YW50IChzdHJ1Y3Qgc2l6ZSkgdXNlZCBpbiBhIGxlbmd0aCBjaGVjayBpbiB0aGUgZ2VuZXJpYyBYRFAgVFggcGF0aCwgd2l0aG91dCBpbnRyb2R1Y2luZyBuZXcgZnVuY3Rpb25hbCBsb2dpYyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmNhYjE0OTk3ZjJkYzhlZjRmY2MzMTE3YWViYTNlNGZiNmFiMjE3MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDIwOjE5OjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuaW5kZXggMzkwNDNkOGNhMWJmNC4uNTkwNjc5MzlhNTg2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuQEAgLTMwNzQsNyArMzA3NCw4IEBAIHN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXG4gXHRcdG9saW5mb19zdGF0dXMgPSB4ZHBfZGVzYy5sZW4gXHUwMDNjXHUwMDNjIElHQ19BRFZUWERfUEFZTEVOX1NISUZUO1xuIFxuIFx0XHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4gXHRcdGJpID0gXHUwMDI2cmluZy1cdTAwM2V0eF9idWZmZXJfaW5mb1tudHVdO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuaW5kZXggM2QxOWRhZDhmODY4OC4uZDE5NGVlZGRkN2I1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jXG5AQCAtOTksNyArOTksNyBAQCBib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxuIFx0XHR4ZHB0eGQuZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQuZGF0YSA9IHhza19idWZmX3Jhd19nZXRfZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuIFx0XHR4ZHB0eGQubGVuID0gZGVzYy5sZW47XG4tXHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XG4gXG4gXHRcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIHhkcHR4ZC5kbWFfYWRkciwgeGRwdHhkLmxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjRhODJmNDM1MTMwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjcxMCwxNiArMjcxMCwxMCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHR0eF9kZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGVudHJ5KTtcbiBcdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbi1cdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbitcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxuK1x0XHRcdFx0XHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xuIFx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWFfYWRkciwgeGRwX2Rlc2MubGVuKTtcbiBcbiBcdFx0LyogVG8gcmV0dXJuIFhEUCBidWZmZXIgdG8gWFNLIHBvb2wsIHdlIHNpbXBsZSBjYWxsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG5pbmRleCA1ZGNjMGQ3ZjY1Yjc2Li5hNDUyYjc4MjhjZTRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgveHNrLmhcbkBAIC0xOTYsNyArMTk2LDcgQEAgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcbiBcdHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2MgZGVzYztcbiBcdHN0cnVjdCB4ZHBfZGVzY19jdHggY3R4O1xuIFxuLVx0Y3R4ID0geHNrX2J1ZmZfcmF3X2dldF9jdHgoc3EtXHUwMDNlcG9vbCwgeGRlc2MtXHUwMDNlYWRkcik7XG4rXHRjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtcbiBcdGRlc2MgPSAodHlwZW9mKGRlc2MpKXtcbiBcdFx0LmFkZHJcdD0gY3R4LmRtYSxcbiBcdFx0X19saWJldGhfeGRwX3R4X2xlbih4ZGVzYy1cdTAwM2VsZW4pLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IGIzNDQ3ODlmNWRmODMuLmQ5NGFlYjUwNjM3OWMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbkBAIC0yNDAsNiArMjQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuICAqIHhza19idWZmX3Jhd19nZXRfY3R4IC0gZ2V0IFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcbiAgKiBAcG9vbDogWFNrIGJ1ZmYgcG9vbCBkZXNjIGFkZHJlc3MgYmVsb25ncyB0b1xuICAqIEBhZGRyOiBkZXNjIGFkZHJlc3MgKGZyb20gdXNlcnNwYWNlKVxuKyAqIEBvcHRpb25zOiBkZXNjIG9wdGlvbnMgKGZyb20gdXNlcnNwYWNlKVxuICAqXG4gICogV3JhcHBlciBmb3IgeHBfcmF3X2dldF9jdHgoKSB0byBiZSB1c2VkIGluIGRyaXZlcnMsIHNlZSBpdHMga2RvYyBmb3JcbiAgKiBkZXRhaWxzLlxuQEAgLTI0OCw5ICsyNDksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKnhza19idWZmX3Jhd19nZXRfZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4gICogcG9pbnRlciwgaWYgaXQgaXMgcHJlc2VudCAoaW5pdGlhbGl6ZWQgdG8gJU5VTEwgb3RoZXJ3aXNlKS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4tXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkcik7XG4rXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XG4gfVxuIFxuICNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuQEAgLTMxOCwxOCArMzE5LDIwIEBAIHhza190eF9tZXRhZGF0YV9yZXF1ZXN0KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLV9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuK19feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxuK1x0XHRcdHVuc2lnbmVkIGludCBvcHRpb25zKVxuIHtcbi1cdGlmICghcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4pXG4rXHRpZiAoIXBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIHx8ICEob3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZGF0YSAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXG4ge1xuLVx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG4rXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxuK1x0XHRcdFx0ICAgICAgIG9wdGlvbnMpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbkBAIC01MTAsNyArNTEzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcbi14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4reHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9O1xuIH1cbkBAIC01MzAsMTMgKzUzMywxNCBAQCB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbitfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcbitcdFx0XHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbi14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3hza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxuIHtcbiBcdHJldHVybiBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbmluZGV4IDJiYjFkMTIyYjFiYzYuLmE3ZGY1NzM3ODRmZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhcbisrKyBiL2luY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaFxuQEAgLTE1NCw3ICsxNTQsOCBAQCBzdHJ1Y3QgeGRwX2Rlc2NfY3R4IHtcbiBcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XG4gfTtcbiBcbi1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcik7XG4rc3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXG4rXHRcdFx0XHQgICB1MzIgb3B0aW9ucyk7XG4gXG4gc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHhwX2dldF9kbWEoc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG5pbmRleCAyM2EwNjI3ODE0Njg3Li41MGQ2N2RmNzg5MTFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbkBAIC0xNDksNiArMTQ5LDcgQEAgc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG4gXHRcdFx0X191MTYgY3N1bV9zdGFydDtcbiBcdFx0XHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXG4gXHRcdFx0X191MTYgY3N1bV9vZmZzZXQ7XG4rXHRcdFx0X191MzIgcmVzZXJ2ZWQ7XG4gXG4gXHRcdFx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cbiBcdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX2J1ZmZfcG9vbC5jIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbmluZGV4IDc4YzE0ZjEwNjM5NTcuLjlkMmQ5NGYxZmI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19idWZmX3Bvb2wuY1xuKysrIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmNcbkBAIC03NjMsNiArNzYzLDcgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogeHBfcmF3X2dldF9jdHggLSBnZXQgXHUwMDI2eGRwX2Rlc2MgY29udGV4dFxuICAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXG4gICogQGFkZHI6IGRlc2MgYWRkcmVzcyAoZnJvbSB1c2Vyc3BhY2UpXG4rICogQG9wdGlvbnM6IGRlc2Mgb3B0aW9ucyAoZnJvbSB1c2Vyc3BhY2UpXG4gICpcbiAgKiBIZWxwZXIgZm9yIGdldHRpbmcgZGVzYydzIERNQSBhZGRyZXNzIGFuZCBtZXRhZGF0YSBwb2ludGVyLCBpZiBwcmVzZW50LlxuICAqIFNhdmVzIG9uZSBjYWxsIG9uIGhvdHBhdGggYW5kIGRvdWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgYWN0dWFsIGFkZHJlc3MuXG5AQCAtNzcxLDE0ICs3NzIsMTYgQEAgRVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XG4gICogUmV0dXJuOiBuZXcgXHUwMDI2eGRwX2Rlc2NfY3R4IHN0cnVjdCBjb250YWluaW5nIGRlc2MncyBETUEgYWRkcmVzcyBhbmQgbWV0YWRhdGFcbiAgKiBwb2ludGVyLCBpZiBpdCBpcyBwcmVzZW50IChpbml0aWFsaXplZCB0byAlTlVMTCBvdGhlcndpc2UpLlxuICAqL1xuLXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuK3N0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxuK1x0XHRcdFx0ICAgdTMyIG9wdGlvbnMpXG4ge1xuIFx0c3RydWN0IHhkcF9kZXNjX2N0eCByZXQ7XG4gXG4gXHRhZGRyID0gX194cF9yYXdfZ2V0X2FkZHIocG9vbCwgYWRkcik7XG4gXG4gXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcbi1cdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuK1x0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSxcbitcdFx0XHRcdFx0ICAgb3B0aW9ucyk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbmluZGV4IDIzYTA2Mjc4MTQ2ODcuLjUwZDY3ZGY3ODkxMWYgMTAwNjQ0XG4tLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcbisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaFxuQEAgLTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhIHtcbiBcdFx0XHRfX3UxNiBjc3VtX3N0YXJ0O1xuIFx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cbiBcdFx0XHRfX3UxNiBjc3VtX29mZnNldDtcbitcdFx0XHRfX3UzMiByZXNlcnZlZDtcbiBcbiBcdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuIFx0XHRcdC8qIExhdW5jaCB0aW1lIGluIG5hbm9zZWNvbmQgYWdhaW5zdCB0aGUgUFRQIEhXIENsb2NrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTowNi44MDcxOTc2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczOTU1MTYzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgWERQL0FGX1hEUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyB0byB0aGUgWERQIGFuZCBBRl9YRFAgc29ja2V0IGNvZGUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgdHdlYWtpbmcgaG93IHdlJ3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhleSdyZSBhZGRpbmcgY2hlY2tzIHVzaW5nIHRoZSBgb3B0aW9uc2AgZmllbGQgZnJvbSB0aGUgWERQIGRlc2NyaXB0b3IgdG8gc2VlIGlmIGBYRFBfVFhfTUVUQURBVEFgIGlzIHByZXNlbnQgYmVmb3JlIGNhbGxpbmcgYHhza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHBvdGVudGlhbCBlZGdlIGNhc2VzIGFyb3VuZCBtZXRhZGF0YSBhdmFpbGFiaWxpdHkgaXMgYWx3YXlzIGdvb2QuIFRoZSBhZGRpdGlvbiBvZiBgX191MzIgcmVzZXJ2ZWQ7YCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgbG9va3MgbGlrZSBhIGZvcndhcmQtY29tcGF0aWJpbGl0eSBtb3ZlLCBwcm9iYWJseSBwcmVwYXJpbmcgZm9yIGZ1dHVyZSBmZWF0dXJlcy4gVGhlbiwgdGhlcmUncyBzb21lIGNvZGUgYmVpbmcgcmVtb3ZlZCBmcm9tIGBzdG1tYWNfeGRwX3htaXRfemNgIHJlbGF0ZWQgdG8gYHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdYC4gTm90IHN1cmUgd2h5IHRoYXQncyBiZWluZyByZW1vdmVkLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhhdCBhIGJpdCBtb3JlLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgY29kZSBhY3R1YWxseSBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQUZfWERQIGlzIGEgY29yZSBuZXR3b3JraW5nIGZlYXR1cmUsIHNvIGl0IHNob3VsZCBiZSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGRyaXZlcnMgYmVpbmcgdG91Y2hlZCBhcmUgYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgLiBJIGtub3cgYGlnY2AgYW5kIGBtbHg1YCBhcmUgY29tbW9uIGluIHZpcnR1YWxpemVkIHNjZW5hcmlvcywgYnV0IGBzdG1tYWNgIGlzIGxlc3MgdHlwaWNhbC4gQnV0IGhhbmcgb24sIHRoZSBjb3JlIEFGX1hEUCBjb2RlIGxpdmVzIGluIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2AgYW5kIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGFuZCBgc3RtbWFjYCBpc24ndCBuZWNlc3NhcmlseSBkaXJlY3RseSBpbiB0aGUgY3JpdGljYWwgcGF0aCwgYnV0IGB2ZXRoYCBhbHNvIHVzZXMgQUZfWERQISBUaGUgcHJvYmxlbSBoZXJlIGlzIGB2ZXRoYCBpc24ndCBsaXN0ZWQgaGVyZSBhcyBiZWluZyBtb2RpZmllZCEgTmVlZCB0byBjaGVjayB0aGF0LlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCouIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNhbGxlZCBpbiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuIEkgc2VlIHRoZXNlIGRyaXZlcnMgYmVpbmcgdG91Y2hlZCwgYnV0IGlzIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgdXNlZCAqYW55d2hlcmUqIGVsc2U/IEkgbmVlZCB0byBjaGVjayB0byBtYWtlIHN1cmUgaXQncyBub3QgYmVpbmcgdXNlZCBpbiBgdmV0aGAsIG9yIGFub3RoZXIgZHJpdmVyLiBJJ2xsIG5lZWQgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIGZvciBib3RoIGB4cF9yYXdfZ2V0X2N0eGAgYW5kIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHZhbGlkIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBhY2NvdW50aW5nIGZvciAqYWxsKiB0aGUgdXNlcyBvZiB0aGVzZSBmdW5jdGlvbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToxNC4yMDI3MTcxNzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMjcwMzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3Ni1cXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc3OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc4LVxcdFxcdFxcdFxcdFxcdCAgICAgeGRwX2Rlc2Mub3B0aW9ucyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXFx0XFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIsIGRlc2Mub3B0aW9ucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjY3Nz1zdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI3MTQtXFx0XFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI3MTU6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjcxNi1cXHRcXHRcXHRcXHRcXHQgICAgIHhkcF9kZXNjLm9wdGlvbnMpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MzIxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzIyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMy1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgb3B0aW9ucylcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTMzMT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzMjp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzMte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMzNDpcXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMzNS1cXHRcXHRcXHRcXHQgICAgICAgb3B0aW9ucyk7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01MzU9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzY6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM3LVxcdFxcdFxcdHVuc2lnbmVkIGludCBvcHRpb25zKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTQzOnhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTU0NC17XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NzU9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03ODItXFx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzgzOlxcdHJldC5tZXRhID0gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgX194cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkciksXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgIG9wdGlvbnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToxNS45MjU0MjUzOTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDA0OTQ0NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqQW5hbHl6aW5nIHRoZSBYRFAgU29ja2V0IE1ldGFkYXRhIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIFhEUCBzb2NrZXQgbWV0YWRhdGEgaGFuZGxpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgZnVuY3Rpb24uIEkgc2VlIGl0J3MgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYW5kIHRoZSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGNoZWNraW5nIHRoZSBgb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYCBiaXQuIFRoYXQncyBpbnRlcmVzdGluZywgaXQncyBhYm91dCB3aGV0aGVyIHdlJ3JlIGdvaW5nIHRvIHRyYW5zbWl0IG1ldGFkYXRhIHdpdGggdGhlIFhEUCBwYWNrZXQuXG5cbk5vdywgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhbiAqaW5saW5lKiBmdW5jdGlvbiwgc28gaXQncyBwcm9iYWJseSBwZXJmb3JtYW5jZS1jcml0aWNhbC4gSXQncyB1c2VkIGJ5IHR3byBvdGhlciBmdW5jdGlvbnMsIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIChtYWtlcyBzZW5zZSwgdGhhdCdzIHRoZSBvYnZpb3VzIGNhbGwpIGFuZCBgeHBfcmF3X2dldF9jdHhgLiBBbHJpZ2h0LCBsZXQncyBrZWVwIGFuIGV5ZSBvbiBgeHBfcmF3X2dldF9jdHhgIOKAkyB0aGF0IGNvdWxkIGJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3QuXG5cbkFoLCB0aGVyZSBpdCBpcyEgYHhwX3Jhd19nZXRfY3R4YCBpcywgaW4gdHVybiwgdXNlZCBieSBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGluIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBUaGF0IG1ha2VzIHNlbnNlLCBgbGliZXRoYCBpcyBoYW5kbGluZyBldGhlcm5ldCBmcmFtZXMgaW4gWERQLiBTbyBub3csIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCBpcyBiZWluZyAqY2FsbGVkKi4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBjaGFuZ2UgdG8gdGhlIGNvcmUgWERQIGxvZ2ljLCBvciBpcyBpdCBtb3JlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB1c2UgY2FzZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NzYxOCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToyMi4zMzAzNzMzMTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MTU0NjQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTc4LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxNzk6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWQgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L21ldGFcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTgwLSAqIEB4ZGVzYzogXFx1MDAyNnhkcF9kZXNjIGZyb20gdGhlIFhTayBidWZmZXIgcG9vbFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBsaWJldGhfeGRwX3R4X2Rlc2NcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTkxOl9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5Mi1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcHNxICpzcSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDc9bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjUyLVxcdGlmIChwcml2KVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNTM6XFx0XFx0ZGVzYyA9IF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKFxcdTAwMjZmcm0uZGVzYywgc3EsIHByaXYpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNTQtXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOToyNC4xODE5MjUwNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzk0NDc2NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2FnZSBvZiBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYCoqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYGxpYmV0aGAgYW5kLCBzcGVjaWZpY2FsbHksIEkndmUgZ290IHRvIHVuZGVyc3RhbmQgaG93IGBsaWJldGhfeHNrX3htaXRfZmlsbF9idWZgIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoYXQgbGlicmFyeS4gIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHkuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGluc3RhbmNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uLCBgbGliZXRoX3hza194bWl0X2ZpbGxfYnVmYCwgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgYGxpYmV0aGAgY29kZS4gVGhlbiBJIGNhbiB1bmRlcnN0YW5kIGl0cyByb2xlIGluIFhTSyB0cmFuc21pc3Npb24uIE5vdGhpbmcgY29tcGxpY2F0ZWQgc28gZmFyLCBqdXN0IHN0YW5kYXJkIGNvZGUgYW5hbHlzaXMgcHJvY2VkdXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTM3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MTk6MjguNTc2NDA0MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0Mjg0ODg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaWJldGhfeHNrX3htaXRfZmlsbF9idWZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgX19saWJldGhfeHNrdG1vID0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3OC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc5OiAqIF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kIC0gaW50ZXJuYWwgaGVscGVyIHRvIHByZXBhcmUgWFNrIHhtaXQgdy9tZXRhXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4MC0gKiBAeGRlc2M6IFxcdTAwMjZ4ZHBfZGVzYyBmcm9tIHRoZSBYU2sgYnVmZmVyIHBvb2xcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xODMtICpcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTg0OiAqIFNhbWUgYXMgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoKSwgYnV0IHJlcXVlc3RzIG1ldGFkYXRhIHBvaW50ZXIgYW5kXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE4NS0gKiBmaWxscyBhZGRpdGlvbmFsIGZpZWxkcyBpbiBcXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIHRvIGFzayBmb3IgbWV0YWRhdGEgb2ZmbG9hZC5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0xOTA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3QgbGliZXRoX3hkcF90eF9kZXNjXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjE5MTpfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTItXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjE1LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMTY6ICogX19saWJldGhfeHNrX3htaXRfZmlsbF9idWYgLSBpbnRlcm5hbCBoZWxwZXIgdG8gcHJlcGFyZSBYU2sgeG1pdCB3L28gbWV0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMTctICogQHhkZXNjOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjIzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyMjQ6X19saWJldGhfeHNrX3htaXRfZmlsbF9idWYoY29uc3Qgc3RydWN0IHhkcF9kZXNjICp4ZGVzYyxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjI1LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzMy0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjM0OiAqIGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiAtIGludGVybmFsIGhlbHBlciB0byBwcmVwYXJlIGFuIFhTayB4bWl0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTIzNS0gKiBAZnJtOiBcXHUwMDI2eGRwX2Rlc2MgZnJvbSB0aGUgWFNrIGJ1ZmZlciBwb29sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MjQ2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzY1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNDc6bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI0OC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGxpYmV0aF94ZHBzcSAqc3EsIHU2NCBwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTI1Mi1cXHRpZiAocHJpdilcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjUzOlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChcXHUwMDI2ZnJtLmRlc2MsIHNxLCBwcml2KTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU0LVxcdGVsc2VcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MjU1OlxcdFxcdGRlc2MgPSBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1ZihcXHUwMDI2ZnJtLmRlc2MsIHNxKTtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjU2LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMzA0LVxcdFxcdFxcdFxcdGxpYmV0aF94ZHBfcHRyX3RvX3ByaXYodG1vKSwgcHJlcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MzA1OlxcdFxcdFxcdFxcdGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZiwgeG1pdCk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTMwNi1cXHRmaW5hbGl6ZSh4ZHBzcSwgbiwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjMwLjIxOTI1NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzc0NDg5MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBzbyBgbGliZXRoX3hza194bWl0X2RvX2J1bGtgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBJdCdzIHBvcHBpbmcgdXAgaW4gYSBmZXcgZHJpdmVycywgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGxldCdzIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlLlwiIEkgbmVlZCB0byBpZGVudGlmeSAqcHJlY2lzZWx5KiB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoaXMuIEknbSB0aGlua2luZyB0aGlzIG1pZ2h0IGJlIGEga2V5IGluZGljYXRvciBmb3IgWERQIGFjY2VsZXJhdGlvbiBvciBzb21lIG90aGVyIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGguIEtub3dpbmcgd2hpY2ggTklDcyBvciB2aXJ0dWFsIGRldmljZXMgdXRpbGl6ZSB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGltcGFjdHMgbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIG9wdGltaXphdGlvbnMuIEnigJlsbCBuZWVkIHRvIGRvIGEgY29kZSBzZWFyY2ggYWNyb3NzIHRoZSByZWxldmFudCB0cmVlcy4gSG9wZWZ1bGx5LCB0aGlzIGlzIHdlbGwtZGVmaW5lZCwgYW5kIHRoZSB1c2FnZSBpcyBjb25zaXN0ZW50IGFjcm9zcyB0aGUgaW1wbGVtZW50YXRpb24uIEFmdGVyIGlkZW50aWZ5aW5nIGFsbCB1c2VycyBvZiB0aGUgZnVuY3Rpb24sIEkgY2FuIGJlZ2luIHRvIGRyYXcgc29tZSBjb25jbHVzaW9ucywgc28gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTozMy41OTM3NDk1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MzA5OTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaWJldGhfeHNrX3htaXRfZG9fYnVsa1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTMxNj1ib29sIGlkcGZfeHNrX3htaXQoc3RydWN0IGlkcGZfdHhfcXVldWUgKnhza3NxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0zMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYzozMjY6XFx0cmV0dXJuIGxpYmV0aF94c2tfeG1pdF9kb19idWxrKHhza3NxLVxcdTAwM2Vwb29sLCB4c2tzcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICAgbWluKGZyZWUgLSAxLCB4c2tzcS1cXHUwMDNldGhyZXNoKSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0yNDc9bGliZXRoX3hza194bWl0X2ZpbGxfYnVmKHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lIGZybSwgdTMyIGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjY0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoyNjU6ICogbGliZXRoX3hza194bWl0X2RvX2J1bGsgLSBzZW5kIFhTayB4bWl0IGZyYW1lc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yNjYtICogQHBvb2w6IFhTayBidWZmZXIgcG9vbCBjb250YWluaW5nIHRoZSBmcmFtZXMgdG8gc2VuZFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6Mjg1OmxpYmV0aF94c2tfeG1pdF9kb19idWxrKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICp4ZHBzcSwgdTMyIGJ1ZGdldCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMjg2LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjM1LjIzNjg1NzY3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjQzMzA4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgdGhlIFhEUCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggdXNlcyBgaWRwZmAsIGludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgYHN0bW1hY194ZHBfeG1pdF96Y2AgaW4gYHN0bW1hY19tYWluLmNgLiBSaWdodCwgYHN0bW1hY2AuLi4gU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgdGhpbmcgaW4gUUVNVT8gSSBrbm93IHRoZXJlJ3MgYSBmaWxlIGZvciBpLk1YIEZFQywgYnV0IGBzdG1tYWNgIGlzIHR5cGljYWxseSBBUk0uIEhvd2V2ZXIsIHdhaXQsIGl0ICpkb2VzKiBoYXZlIFBDSSBiaW5kaW5ncywgYHN0bW1hY19wY2kuY2AuIFFFTVUgbWlnaHQgbm90IGV2ZW4gZW11bGF0ZSB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCB0aG91Z2guLi5cblxuTGV0J3Mgc3RlcCBiYWNrLiBEb2VzIGB2ZXRoYCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggYHhza19idWZmX2dldF9tZXRhZGF0YWA/IE5vLCBpdCBkb2Vzbid0IHN1cHBvcnQgWERQIFRYIG1ldGFkYXRhLiBPa2F5LCB0aGUgcGxvdCB0aGlja2Vucy4gVGhpcyBwYXRjaCBpcyBhbHNvIG1vZGlmeWluZyBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBTbywgaXQncyBtZXNzaW5nIHdpdGggYHhwX3Jhd19nZXRfY3R4YC5cblxuSG9sZCBvbiwgaXMgYHhwX3Jhd19nZXRfY3R4YCB1c2VkIGFueXdoZXJlIGVsc2U/IExldCdzIGNoZWNrIHdpdGhpbiBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgIGFnYWluLiBBaGEsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgbW9kaWZpZXMgYHhwX3Jhd19nZXRfY3R4YCB0byB0YWtlIGBvcHRpb25zYCBhbmQgcGFzcyBpdCBpbnRvIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAuIFRoZSBwYXRjaCBhbHNvIGFkZGVkIGBfX3UzMiByZXNlcnZlZDtgIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYC4gQSBVQVBJIGNoYW5nZS4gVGhpcyBpcyBzaWduaWZpY2FudC5cblxuRG9lcyB0aGlzIGNoYW5nZSB1bHRpbWF0ZWx5IGltcGFjdCB0aGUgY29yZSBBRl9YRFAgY29kZT8gWWVzLCBgeHBfcmF3X2dldF9jdHhgIGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0J3MgdXNhYmxlIG91dHNpZGUuIEJ1dCBpcyB0aGUga2VybmVsIGRpcmVjdGx5IHVzaW5nIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGB4cF9yYXdfZ2V0X2N0eGAgZWxzZXdoZXJlPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBuZXQveGRwL2AgYW5kIGBuZXQvY29yZS9gIGRpcmVjdG9yaWVzIGZvciBjb25maXJtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDg2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjQzLjcwMTE5MjIxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMjAxODMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4cF9yYXdfZ2V0X2N0eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yMzQ9c3RhdGljIGlubGluZSB2b2lkICp4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQ0LSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjQ1OiAqIFdyYXBwZXIgZm9yIHhwX3Jhd19nZXRfY3R4KCkgdG8gYmUgdXNlZCBpbiBkcml2ZXJzLCBzZWUgaXRzIGtkb2MgZm9yXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjQ2LSAqIGRldGFpbHMuXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yNTI9eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI1NDpcXHRyZXR1cm4geHBfcmF3X2dldF9jdHgocG9vbCwgYWRkciwgb3B0aW9ucyk7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjU1LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaD0xNTI9c3RydWN0IHhkcF9kZXNjX2N0eCB7XFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMTU2LVxcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaDoxNTc6c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsXFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oLTE1OC1cXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucyk7XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03NjA9RVhQT1JUX1NZTUJPTCh4cF9yYXdfZ2V0X2RtYSk7XFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NjItLyoqXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6NzYzOiAqIHhwX3Jhd19nZXRfY3R4IC0gZ2V0IFxcdTAwMjZ4ZHBfZGVzYyBjb250ZXh0XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzY0LSAqIEBwb29sOiBYU2sgYnVmZiBwb29sIGRlc2MgYWRkcmVzcyBiZWxvbmdzIHRvXFxuLS1cXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzQtICovXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzc1OnN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLFxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3Ni1cXHRcXHRcXHRcXHQgICB1MzIgb3B0aW9ucylcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc4Ny19XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzg4OkVYUE9SVF9TWU1CT0woeHBfcmF3X2dldF9jdHgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTo0NS4zMzMyMTUzMjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1NjQzNjczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBYU0sgQnVmZmVyIE1ldGFkYXRhIFVzYWdlKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhlIHVzYWdlIG9mIHRoZXNlIFhTSyBidWZmZXIgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGB4cF9yYXdfZ2V0X2N0eGAgc2VlbXMgdG8gYmUgc29sZWx5IHVzZWQgd2l0aGluIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAsIGFuZCB0aGF0IG9uZSBpcyB1c2VkIGluIGBfX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZSBoZXJlLiBUaGVuLCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBjYWxsZWQgaW4gYGlnY2AsIGBtbHg1YCwgYW5kIGBzdG1tYWNgLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpczogYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgd2hhdCBJJ20gdXN1YWxseSB0ZXN0aW5nIHdpdGg/XG5cbiogICBgaWdjYC4uLiB0aGF0J3MgdGhlIEludGVsIEkyMjUtTE0vSTIyNS1WIDIuNUcgRXRoZXJuZXQgY29udHJvbGxlci4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgaXQ7IGl0IHN0aWNrcyB3aXRoIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIFNvLCBubyBqb3kgdGhlcmUuXG4qICAgYG1seDVgLi4uIHRoYXQncyBNZWxsYW5veCBDb25uZWN0WC00LzUvNi4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhhdCBuYXRpdmVseSB3aXRob3V0IFZGSU8gb3IgdGhlIGhhcmR3YXJlLCB3aGljaCBpc24ndCB0aGUgZW52aXJvbm1lbnQgSSdtIGZvY3VzaW5nIG9uLlxuKiAgIGBzdG1tYWNgLi4uIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldC4gUUVNVSBsaWtlbHkgZG9lc24ndCBlbXVsYXRlIGl0IG9uIHN0YW5kYXJkIHg4Nl82NCwgd2hpY2ggaXMgd2hhdCBTeXprYWxsZXIsIHdoaWNoIEkgZ2VuZXJhbGx5IHVzZSwgdGVzdHMuIEl0ICptaWdodCogYmUgcHJlc2VudCBvbiBBUk0gZW11bGF0aW9ucywgYnV0IHRoYXQncyBub3QgdGhlIHByaW1hcnkgdGFyZ2V0LlxuKiAgIFdhaXQgYSBtaW51dGUsIEkgbWlzc2VkIGBpZHBmYC4uLiB0aGF0J3MgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uLiBRRU1VIGRlZmluaXRlbHkgZG9lc24ndCBlbXVsYXRlIHRoYXQgb25lLlxuXG5TbyB0aGUgb2J2aW91cyBxdWVzdGlvbiBpczogaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlIGNhbGxpbmcgZWl0aGVyIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIG9yIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgdGhhdCBJJ20gbWlzc2luZz8gSSBuZWVkIHRvIHBlcmZvcm0gYSBtb3JlIHRob3JvdWdoIHNlYXJjaC4gVGltZSB0byBncmVwIGZvciBgeHNrX2J1ZmZfcmF3X2dldF9jdHhgLiBMZXQncyBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA1NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoxOTo1MS4xODk2NjIzOTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjA4MzQ2ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfcmF3X2dldF9jdHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTE5MT1fX2xpYmV0aF94c2tfeG1pdF9maWxsX2J1Zl9tZChjb25zdCBzdHJ1Y3QgeGRwX2Rlc2MgKnhkZXNjLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE5OC1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk5OlxcdGN0eCA9IHhza19idWZmX3Jhd19nZXRfY3R4KHNxLVxcdTAwM2Vwb29sLCB4ZGVzYy1cXHUwMDNlYWRkciwgeGRlc2MtXFx1MDAzZW9wdGlvbnMpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yMDAtXFx0ZGVzYyA9ICh0eXBlb2YoZGVzYykpe1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCAqeHNrX2J1ZmZfcmF3X2dldF9kYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTIzOS0vKipcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNDA6ICogeHNrX2J1ZmZfcmF3X2dldF9jdHggLSBnZXQgXFx1MDAyNnhkcF9kZXNjIGNvbnRleHRcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNDEtICogQHBvb2w6IFhTayBidWZmIHBvb2wgZGVzYyBhZGRyZXNzIGJlbG9uZ3MgdG9cXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4ZHBfZGVzY19jdHhcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTI6eHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyLCB1MzIgb3B0aW9ucylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTMte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTE1PXN0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF9kZXNjX2N0eFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUxNjp4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjE5OjUyLjgxMDUwMzIyNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTg1OTYwODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBYU0sgQnVmZmVyIEZsb3cgYW5kIFBvdGVudGlhbCBJbXBhY3QqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgaXMsIGFzIGZhciBhcyBJIGNhbiBzZWUsICpvbmx5KiB1c2VkIHdpdGhpbiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiBBbmQgYF9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kYCBpcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgYGxpYmV0aF94c2tfeG1pdF9maWxsX2J1ZmAsIHdoaWNoIGl0c2VsZiBmZWVkcyBpbnRvIGBsaWJldGhfeHNrX3htaXRfZG9fYnVsa2AsIHdoaWNoIGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCAqb25seSogdXNlZCBieSBgaWRwZmAuIFNvLCB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGRpcmVjdGx5IGFmZmVjdGluZyB0aGUgYGlnY2AsIGBtbHg1YCwgYHN0bW1hY2AsIGFuZCBgaWRwZmAgZHJpdmVycy5cblxuVGhlIGNydWNpYWwgcXVlc3Rpb24gbm93OiBhcmUgYW55IG9mIHRoZXNlIGRyaXZlcnMgZW11bGF0ZWQgaW4gUUVNVSBpbiBhIHdheSB0aGF0IHdvdWxkIG1hdHRlciBmb3Igc3RhbmRhcmQgc3l6a2FsbGVyIHRlc3Rpbmc/IE5vcGUuIFN0YW5kYXJkIHN5emthbGxlciB0ZXN0aW5nIGRvZXNuJ3QgdG91Y2ggdGhvc2UuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgc29tZXRoaW5nIGxpa2UgYHZldGhgPyBEb2VzIGl0IHNvbWVob3cgaW5kaXJlY3RseSB1c2UgYHhza19idWZmX2dldF9tZXRhZGF0YWA/IE5vLCB0aGF0J3Mgbm90IHRoZSBjYXNlLiBXaGF0IGFib3V0IGBzdG1tYWNgLCBzcGVjaWZpY2FsbHk/IENhbiB3ZSByZWFjaCBpdCB0aHJvdWdoIHNvbWUgZm9ybSBvZiB2aXJ0dWFsaXphdGlvbj8gTm8sIGBzdG1tYWNgIGlzIGZpcm1seSByb290ZWQgaW4gcGh5c2ljYWwgaGFyZHdhcmUuXG5cbk9rYXksIEkgc2VlIGl0ISBUaGVyZSdzIGEgVUFQSSBjaGFuZ2UgaW4gdGhlIGBpZl94ZHAuaGAgaGVhZGVyOiBhIG5ldyBgcmVzZXJ2ZWRgIGZpZWxkIGhhcyBiZWVuIGFkZGVkIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYC4gSSBuZWVkIHRvIHRoaW5rIGNhcmVmdWxseSBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbGF5b3V0IGNoYW5nZS5cblxuTm93LCBkb2VzIHRoaXMgYWx0ZXJhdGlvbiB0byB0aGUgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGltcGFjdCBhbnkgY29yZSBrZXJuZWwgY29kZT8gVGhpcyBpcyB0aGUgY29yZSBxdWVzdGlvbiBJIG5lZWQgdG8gY29uc2lkZXIgdG8gdW5kZXJzdGFuZCBpZiB0aGUgcGF0Y2ggbWlnaHQgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHBsYWNlcyB3aGVyZSBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaXMgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMDYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MDEuMzk2NDY4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg4MjU2Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCB4c2tfdHhfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q9MTY9bGVuZ3RoIGlzIHRoZXJlZm9yZSB0aGUgc2FtZSBmb3IgZXZlcnkgc29ja2V0IHRoYXQgc2hhcmVzIHRoZSBzYW1lIHVtZW0uXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTc6VGhlIG1ldGFkYXRhIGxheW91dCBpcyBhIGZpeGVkIFVBUEksIHJlZmVyIHRvIGBgc3RydWN0IHhza190eF9tZXRhZGF0YWBgIGluXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTgtYGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgYC4gVGh1cywgZ2VuZXJhbGx5LCB0aGUgYGB0eF9tZXRhZGF0YV9sZW5gYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjE5OmZpZWxkIGFib3ZlIHNob3VsZCBjb250YWluIGBgc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpYGAuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMjAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD00NT1UaGUgZmxhZ3MgZmllbGQgZW5hYmxlcyB0aGUgcGFydGljdWxhciBvZmZsb2FkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNDgtICB0aW1lc3RhbXAgaW50byBgYGNvbXBsZXRpb24udHhfdGltZXN0YW1wYGAgZmllbGQgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo0OTogIGBgc3RydWN0IHhza190eF9tZXRhZGF0YWBgLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTUwLS0gYGBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTWBgOiByZXF1ZXN0cyB0aGUgZGV2aWNlIHRvIGNhbGN1bGF0ZSBMNFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNTYtICB2YWx1ZSBvZiBsYXVuY2ggdGltZSBpcyBpbmRpY2F0ZWQgYnkgYGByZXF1ZXN0LmxhdW5jaF90aW1lYGAgZmllbGQgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo1NzogIGBgc3RydWN0IHhza190eF9tZXRhZGF0YWBgLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTEwOD1zdHJ1Y3QgaWdjX3R4X3RpbWVzdGFtcF9yZXF1ZXN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0xMTktXFx0dTggeHNrX3F1ZXVlX2luZGV4OyAgICAvKiBUeCBxdWV1ZSB3aGljaCByZXF1ZXN0aW5nIHRpbWVzdGFtcCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoxMjA6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCB4c2tfbWV0YTtcXHQvKiByZWYgdG8geHNrIFR4IG1ldGFkYXRhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTEyMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oPTM3Mj1pbnQgaWdjX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHF1ZXVlX2lkLCB1MzIgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTM3NC0vKiBBRl9YRFAgVFggbWV0YWRhdGEgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDozNzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIGlnY194c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0zNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmg9NjAyPXN0cnVjdCBpZ2NfbWV0YWRhdGFfcmVxdWVzdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnYy5oLTYwMy1cXHRzdHJ1Y3QgaWdjX3R4X2J1ZmZlciAqdHhfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDo2MDQ6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjLmgtNjA1LVxcdHN0cnVjdCBpZ2NfcmluZyAqdHhfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTI5OTM9c3RhdGljIHZvaWQgaWdjX3hza19yZXF1ZXN0X2xhdW5jaF90aW1lKHU2NCBsYXVuY2hfdGltZSwgdm9pZCAqX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwMzE6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgaWdjX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzMi1cXHQudG1vX3JlcXVlc3RfdGltZXN0YW1wXFx0XFx0PSBpZ2NfeHNrX3JlcXVlc3RfdGltZXN0YW1wLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA2NC1cXHRcXHRzdHJ1Y3QgaWdjX21ldGFkYXRhX3JlcXVlc3QgbWV0YV9yZXE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzA2NTpcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDY2LVxcdFxcdHN0cnVjdCBpZ2NfdHhfYnVmZmVyICpiaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2Lmg9MTU9c3RydWN0IHhkcF9mcmFtZV9idWxrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2LmgtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3ByaXYuaDoxNzpleHRlcm4gY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9wcml2LmgtMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmM9MzkwPXZvaWQgX19saWJldGhfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jLTM5Mi1cXHRcXHRcXHQgICAgICAgdTMyIHpjX3NlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hkcC5jOjM5MzpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveGRwLmMtMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz0xND12b2lkIF9fY29sZCBsaWJldGhfeHNrX3R4X3JldHVybl9idWxrKGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX3R4X2ZyYW1lICpicSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6MjM6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbGliZXRoX3hza3Rtb19zbG93ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy0yNC1cXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cXHRcXHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD00ODA9c3RydWN0IG1seDVlX3htaXRfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo0ODE6c3RydWN0IHhza190eF9tZXRhZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC00ODItdHlwZWRlZiBpbnQgKCptbHg1ZV9mcF94bWl0X3hkcF9mcmFtZV9jaGVjaykoc3RydWN0IG1seDVlX3hkcHNxICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTQ4Mz10eXBlZGVmIGJvb2wgKCptbHg1ZV9mcF94bWl0X3hkcF9mcmFtZSkoc3RydWN0IG1seDVlX3hkcHNxICosXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC00ODUtXFx0XFx0XFx0XFx0XFx0aW50LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjQ4NjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC00ODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9MzA0PXN0YXRpYyB2b2lkIG1seDVlX3hza19yZXF1ZXN0X2NoZWNrc3VtKHUxNiBjc3VtX3N0YXJ0LCB1MTYgY3N1bV9vZmZzZXQsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzozMTI6Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgbWx4NWVfeHNrX3R4X21ldGFkYXRhX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMtMzEzLVxcdC50bW9fZmlsbF90aW1lc3RhbXBcXHRcXHQ9IG1seDVlX3hza19maWxsX3RpbWVzdGFtcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTQ9bWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo0NTU6XFx0XFx0ICAgICBpbnQgY2hlY2tfcmVzdWx0LCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICoqbWV0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTQ1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYz00NTg9bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgc3RydWN0IG1seDVlX3htaXRfZGF0YSAqeGRwdHhkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo0NTk6XFx0XFx0XFx0ICAgaW50IGNoZWNrX3Jlc3VsdCwgc3RydWN0IHhza190eF9tZXRhZGF0YSAqKm1ldGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NTQwPW1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV94bWl0X2RhdGEgKnhkcHR4ZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM6NTQxOlxcdFxcdCAgICAgaW50IGNoZWNrX3Jlc3VsdCwgc3RydWN0IHhza190eF9tZXRhZGF0YSAqKm1ldGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTU0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmM9NjY1PXN0YXRpYyB2b2lkIG1seDVlX2ZyZWVfeGRwc3FfZGVzYyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jLTczMi1cXHRcXHRcXHQvKiBBRl9YRFAgc2VuZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYzo3MzM6XFx0XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYy03MzQtXFx0XFx0XFx0c3RydWN0IG1seDVlX3hza190eF9jb21wbGV0ZSBwcml2ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oPTg0PXVuaW9uIG1seDVlX3hkcF9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC05NC1cXHR9IHBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjk1OlxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgeHNrX21ldGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTk2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg9MTExPWV4dGVybiBjb25zdCBzdHJ1Y3QgeGRwX21ldGFkYXRhX29wcyBtbHg1ZV94ZHBfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaDoxMTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIG1seDVlX3hza190eF9tZXRhZGF0YV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmg9MTE0PUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExNi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGludCBjaGVja19yZXN1bHQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjExNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKiptZXRhKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oLTExOC1JTkRJUkVDVF9DQUxMQUJMRV9ERUNMQVJFKGJvb2wgbWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaC0xMjAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBjaGVja19yZXN1bHQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oOjEyMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza190eF9tZXRhZGF0YSAqKm1ldGEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgtMTIyLUlORElSRUNUX0NBTExBQkxFX0RFQ0xBUkUoaW50IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYz02Nj1ib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTY4LVxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gc3EtXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzo2OTpcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtNzAtXFx0dW5pb24gbWx4NWVfeGRwX2luZm8geGRwaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMTYtXFx0XFx0XFx0aWYgKHhwX3R4X21ldGFkYXRhX2VuYWJsZWQoc3EtXFx1MDAzZXhza19wb29sKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMTc6XFx0XFx0XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCBjb21wbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMtMTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDk9c3RydWN0IHN0bW1hY190eF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo1MDpcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTUxLVxcdGRtYV9hZGRyX3QgYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNjYxPXN0YXRpYyB2b2lkIHN0bW1hY194c2tfcmVxdWVzdF9sYXVuY2hfdGltZSh1NjQgbGF1bmNoX3RpbWUsIHZvaWQgKl9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjY3MTpzdGF0aWMgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgc3RtbWFjX3hza190eF9tZXRhZGF0YV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjcyLVxcdC50bW9fcmVxdWVzdF90aW1lc3RhbXBcXHRcXHQ9IHN0bW1hY194c2tfcmVxdWVzdF90aW1lc3RhbXAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2Nzc9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjk2LVxcdFxcdHN0cnVjdCBzdG1tYWNfbWV0YWRhdGFfcmVxdWVzdCBtZXRhX3JlcTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2OTc6XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjk4LVxcdFxcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNDk9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMjU2LVxcdGNvbnN0IHN0cnVjdCB4ZHBfbWV0YWRhdGFfb3BzICp4ZHBfbWV0YWRhdGFfb3BzO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjI1NzpcXHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqeHNrX3R4X21ldGFkYXRhX29wcztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIyNTgtXFx0dW5zaWduZWQgc2hvcnRcXHRcXHRnZmxhZ3M7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTU3OT12b2lkIG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXMoc3RydWN0IG1tcGluICptbXApO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01ODUtICovXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo1ODY6c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCB7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01ODctXFx0X191NjQgKnR4X3RpbWVzdGFtcDtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTkzPXN0cnVjdCBza2Jfc2hhcmVkX2luZm8ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC02MDMtXFx0XFx0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzIGh3dHN0YW1wcztcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjYwNDpcXHRcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsIHhza19tZXRhO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNjA1LVxcdH07XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9MTgyMT12b2lkIF9fbGliZXRoX3hkcF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODIzLVxcdFxcdFxcdCAgICAgICB1MzIgemNfc2VncyxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTgyNDpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKnRtbyk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4MjUtdm9pZCBsaWJldGhfeGRwX3NldF9yZWRpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSk7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTY3PXN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeHNrdG1vX3JlcV9jc3VtKHUxNiBjc3VtX3N0YXJ0LCB1MTYgY3N1bV9vZmZzZXQsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTczLS8qIE9ubHkgdG8gaW5saW5lIHRoZSBjYWxsYmFja3MgYmVsb3csIHVzZSBAbGliZXRoX3hza3RtbyBpbiBkcml2ZXJzIGluc3RlYWQgKi9cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyBfX2xpYmV0aF94c2t0bW8gPSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTE3NS1cXHQudG1vX3JlcXVlc3RfY2hlY2tzdW1cXHQ9IGxpYmV0aF94c2t0bW9fcmVxX2NzdW0sXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MTkxPV9fbGliZXRoX3hza194bWl0X2ZpbGxfYnVmX21kKGNvbnN0IHN0cnVjdCB4ZHBfZGVzYyAqeGRlc2MsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtMTk0LXtcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTk1OlxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzICp0bW8gPSBsaWJldGhfeGRwX3ByaXZfdG9fcHRyKHByaXYpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0xOTYtXFx0c3RydWN0IGxpYmV0aF94ZHBfdHhfZGVzYyBkZXNjO1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTI4NT1saWJldGhfeHNrX3htaXRfZG9fYnVsayhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqeGRwc3EsIHUzMiBidWRnZXQsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjI4NjpcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqdG1vLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC0yODctXFx0XFx0XFx0dTMyICgqcHJlcCkodm9pZCAqeGRwc3EsIHN0cnVjdCBsaWJldGhfeGRwc3EgKnNxKSxcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9NDg9c3RydWN0IHhkcF9zb2NrIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTE2LSAqL1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTE3OnN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzIHtcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTExOC1cXHR2b2lkXFx0KCp0bW9fcmVxdWVzdF90aW1lc3RhbXApKHZvaWQgKnByaXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xMjk9SU5ESVJFQ1RfQ0FMTEFCTEVfREVDTEFSRSh2b2lkIHhza19kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKikpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMzQtICogIEBtZXRhOiBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMzU6ICogIEBjb21wbDogcG9pbnRlciB0byBvdXRwdXQgc3RydWN0IHhza190eF9tZXRhZGF0YV90b19jb21wbFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTM2LSAqXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE0MC0gKi9cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE0MTpzdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX3RvX2NvbXBsKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxNDI6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTQzLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTU5LSAqICBAY29tcGw6IHBvaW50ZXIgdG8gY29tcGxldGlvbiBtZXRhZGF0YSBwcm9kdWNlZCBmcm9tIHhza190eF9tZXRhZGF0YV90b19jb21wbFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTYwOiAqICBAb3BzOiBwb2ludGVyIHRvIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfb3BzXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNjEtICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFkXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE2NS0gKi9cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE2NjpzdGF0aWMgaW5saW5lIHZvaWQgeHNrX3R4X21ldGFkYXRhX2NvbXBsZXRlKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFfY29tcGwgKmNvbXBsLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTY3OlxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTY4LVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xOTU9c3RhdGljIGlubGluZSB2b2lkIHhza19kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTk5LVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MjAwOnN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfdG9fY29tcGwoc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjIwMTpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0yMDIte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0yMDQtXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoyMDU6c3RhdGljIGlubGluZSB2b2lkIHhza190eF9tZXRhZGF0YV9jb21wbGV0ZShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsICpjb21wbCxcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjIwNjpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcyxcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTIwNy1cXHRcXHRcXHRcXHRcXHQgICAgdm9pZCAqcHJpdilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI2ND14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNjU6XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSwgdTY0ICpmbGFncylcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNjYte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjY5LVxcdFxcdGlmIChwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW4gXFx1MDAzY1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3MDpcXHRcXHQgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjcxLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3OS0gKiAgQHBtZXRhOiBwb2ludGVyIHRvIHBvaW50ZXIgdG8gQUZfWERQIG1ldGFkYXRhIGFyZWFcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODA6ICogIEBvcHM6IHBvaW50ZXIgdG8gc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHNcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yODEtICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI4Nz14c2tfdHhfbWV0YWRhdGFfcmVxdWVzdChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODg6XFx0XFx0XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqKnBtZXRhLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI4OTpcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyAqb3BzLCB2b2lkICpwcml2KVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI5MC17XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjkxOlxcdGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSAqcG1ldGE7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjkyLVxcdHU2NCBmbGFncztcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyMC1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDozMjE6c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjItX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMzAtXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MzMxOnN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzMyLXhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIsIHUzMiBvcHRpb25zKVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NTIyPXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUyMzpcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhLCB1NjQgKmZsYWdzKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUyNC17XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD01Mjk9eHNrX3R4X21ldGFkYXRhX3JlcXVlc3QoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NTMwOlxcdFxcdFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKipwbWV0YSxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1MzE6XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YV9vcHMgKm9wcywgdm9pZCAqcHJpdilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01MzIte1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNTM0LVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjUzNTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTUzNi1fX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSxcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTU0MS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo1NDI6c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC01NDMteHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkciwgdTMyIG9wdGlvbnMpXFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg9MjU9c3RydWN0IHhkcF9idWZmX3hzayB7XFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMzQtI2RlZmluZSBYU0tfQ0hFQ0tfUFJJVl9UWVBFKHQpIEJVSUxEX0JVR19PTihzaXplb2YodCkgXFx1MDAzZSBvZmZzZXRvZmVuZChzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCBjYikpXFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjM1OiNkZWZpbmUgWFNLX1RYX0NPTVBMX0ZJVFModCkgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX2NvbXBsKSBcXHUwMDNlIHNpemVvZih0KSlcXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgtMzYtXFxuLS1cXG5pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmg9MTUyPXN0cnVjdCB4ZHBfZGVzY19jdHgge1xcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTMtXFx0ZG1hX2FkZHJfdCBkbWE7XFxuaW5jbHVkZS9uZXQveHNrX2J1ZmZfcG9vbC5oOjE1NDpcXHRzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhO1xcbmluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaC0xNTUtfTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaD0xMDI9c3RydWN0IHhkcF9vcHRpb25zIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjAtLyogUmVxdWVzdCB0cmFuc21pdCB0aW1lc3RhbXAuIFVwb24gY29tcGxldGlvbiwgcHV0IGl0IGludG8gdHhfdGltZXN0YW1wXFxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjEyMTogKiBmaWVsZCBvZiBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLlxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMjItICovXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTMyLSAqIHRyYW5zbWlzc2lvbiBhdCBhIHByZS1kZXRlcm1pbmVkIHRpbWUgY2FsbGVkIGxhdW5jaCB0aW1lLiBUaGUgdmFsdWUgb2ZcXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTMzOiAqIGxhdW5jaCB0aW1lIGlzIGNvbW11bmljYXRlZCB2aWEgbGF1bmNoX3RpbWUgZmllbGQgb2Ygc3RydWN0IHhza190eF9tZXRhZGF0YS5cXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTM0LSAqL1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0MC0gKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTQxOnN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xNDItXFx0X191NjQgZmxhZ3M7XFxuLS1cXG5uZXQveGRwL3hzay5jPTkwOD12b2lkIHhza19kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQveGRwL3hzay5jLTkwOS17XFxubmV0L3hkcC94c2suYzo5MTA6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwgPSBcXHUwMDI2c2tiX3NoaW5mbyhza2IpLVxcdTAwM2V4c2tfbWV0YTtcXG5uZXQveGRwL3hzay5jLTkxMS1cXG4tLVxcbm5ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxuLS1cXG5uZXQveGRwL3hzay5jLTk2Ny17XFxubmV0L3hkcC94c2suYzo5Njg6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSA9IE5VTEw7XFxubmV0L3hkcC94c2suYy05NjktXFx0dTE2IGNzdW1fc3RhcnQsIGNzdW1fb2Zmc2V0O1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oPTEwMj1zdHJ1Y3QgeGRwX29wdGlvbnMge1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEyMC0vKiBSZXF1ZXN0IHRyYW5zbWl0IHRpbWVzdGFtcC4gVXBvbiBjb21wbGV0aW9uLCBwdXQgaXQgaW50byB0eF90aW1lc3RhbXBcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg6MTIxOiAqIGZpZWxkIG9mIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEuXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTEyMi0gKi9cXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzItICogdHJhbnNtaXNzaW9uIGF0IGEgcHJlLWRldGVybWluZWQgdGltZSBjYWxsZWQgbGF1bmNoIHRpbWUuIFRoZSB2YWx1ZSBvZlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxMzM6ICogbGF1bmNoIHRpbWUgaXMgY29tbXVuaWNhdGVkIHZpYSBsYXVuY2hfdGltZSBmaWVsZCBvZiBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xMzQtICovXFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTQwLSAqL1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxNDE6c3RydWN0IHhza190eF9tZXRhZGF0YSB7XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oLTE0Mi1cXHRfX3U2NCBmbGFncztcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jPTU5PXN0YXRpYyBpbnQgb3Blbl94c2soaW50IGlmaW5kZXgsIHN0cnVjdCB4c2sgKnhzaylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTcyLVxcdFxcdFxcdCBYRFBfVU1FTV9UWF9NRVRBREFUQV9MRU4sXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM6NzM6XFx0XFx0LnR4X21ldGFkYXRhX2xlbiA9IHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy03NC1cXHR9O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTM3LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxMzg6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xMzktXFx0c3RydWN0IHhkcF9kZXNjICp0eF9kZXNjO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTUxLVxcdHR4X2Rlc2MgPSB4c2tfcmluZ19wcm9kX190eF9kZXNjKFxcdTAwMjZ4c2stXFx1MDAzZXR4LCBpZHgpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jOjE1MjpcXHR0eF9kZXNjLVxcdTAwM2VhZGRyID0gaWR4ICUgKFVNRU1fTlVNIC8gMikgKiBVTUVNX0ZSQU1FX1NJWkUgKyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTUzLVxcdHByaW50ZihcXFwiJXA6IHR4X2Rlc2NbJXVdLVxcdTAwM2VhZGRyPSVsbHhcXFxcblxcXCIsIHhzaywgaWR4LCB0eF9kZXNjLVxcdTAwM2VhZGRyKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTE1NS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoxNTY6XFx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMTU3LVxcdG1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jPTIyNz1zdGF0aWMgdm9pZCBjb21wbGV0ZV90eChzdHJ1Y3QgeHNrICp4c2spXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjI4LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyMjk6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0yMzAtXFx0X191NjQgYWRkcjtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jLTIzOS1cXHRcXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cXHUwMDNldW1lbV9hcmVhLCBhZGRyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYzoyNDA6XFx0XFx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMtMjQxLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jPTkyPXN0YXRpYyBpbnQgb3Blbl94c2soaW50IGlmaW5kZXgsIHN0cnVjdCB4c2sgKnhzaywgX191MzIgcXVldWVfaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMTA0LVxcdFxcdC5mbGFncyA9IFhEUF9VTUVNX1RYX01FVEFEQVRBX0xFTixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MTA1OlxcdFxcdC50eF9tZXRhZGF0YV9sZW4gPSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTEwNi1cXHR9O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jPTMwND1zdGF0aWMgYm9vbCBjb21wbGV0ZV90eChzdHJ1Y3QgeHNrICp4c2ssIGNsb2NraWRfdCBjbG9ja19pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzA1LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzA2OlxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMwNy1cXHRfX3U2NCBhZGRyO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTMxNS1cXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cXHUwMDNldW1lbV9hcmVhLCBhZGRyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6MzE2OlxcdG1ldGEgPSBkYXRhIC0gc2l6ZW9mKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zMTctXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM9MzUyPXN0YXRpYyB2b2lkIHBpbmdfcG9uZyhzdHJ1Y3QgeHNrICp4c2ssIHZvaWQgKnJ4X3BhY2tldCwgY2xvY2tpZF90IGNsb2NrX2lkKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNTMte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNTQ6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzU1LVxcdHN0cnVjdCBpcHY2aGRyICppcDZoID0gTlVMTDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy0zNzItXFx0dHhfZGVzYyA9IHhza19yaW5nX3Byb2RfX3R4X2Rlc2MoXFx1MDAyNnhzay1cXHUwMDNldHgsIGlkeCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jOjM3MzpcXHR0eF9kZXNjLVxcdTAwM2VhZGRyID0gaWR4ICUgKFVNRU1fTlVNIC8gMikgKiBVTUVNX0ZSQU1FX1NJWkUgKyBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3NC1cXHRkYXRhID0geHNrX3VtZW1fX2dldF9kYXRhKHhzay1cXHUwMDNldW1lbV9hcmVhLCB0eF9kZXNjLVxcdTAwM2VhZGRyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtMzc1LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYzozNzY6XFx0bWV0YSA9IGRhdGEgLSBzaXplb2Yoc3RydWN0IHhza190eF9tZXRhZGF0YSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jLTM3Ny1cXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIwOjAzLjA4NDczMDA4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzU2ODk0OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFVBUEkgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIFVBUEkgY2hhbmdlIGlzIG1lc3Npbmcgd2l0aCBgc3RydWN0IHhza190eF9tZXRhZGF0YWAuIEkgc2VlIHRoZXkndmUgYWRkZWQgYF9fdTMyIHJlc2VydmVkO2AuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiUmlnaHQsIHRoYXQncyBnb2luZyB0byBjaGFuZ2UgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAuXCIgIFdoaWNoIGltbWVkaWF0ZWx5IGxlYWRzIG1lIHRvLCBcIkRvZXMgdGhpcyBpbXBhY3QgdGhlIGNvcmUga2VybmVsPyBBcmUgd2UgZ29pbmcgdG8gaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGNoYW5nZT9cIlxuXG5MZXQgbWUgY2hlY2sgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCBpbiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBBaCwgaGVyZSBpdCBpczpcbmBgYGNcblx0XHRpZiAocG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW4gXHUwMDNjXG5cdFx0ICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuYGBgXG5JdCdzIGEgY29tcGlsZS10aW1lIG9mZnNldCBjaGVjaywgd2hpY2ggaXMgZ29vZCwgYnV0IG5vdyB0aGF0IGByZXNlcnZlZGAgaXMgYWRkZWQsIGByZXF1ZXN0LmxhdW5jaF90aW1lYCdzIG9mZnNldCB3aWxsIGJlIGRpZmZlcmVudC4gVGhhdCdzIGEgcHJvYmxlbSEgXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIExldCBtZSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBhZ2Fpbi5cbmBgYGNcbnN0cnVjdCB4c2tfdHhfbWV0YWRhdGEge1xuXHRfX3U2NCBmbGFncztcblxuXHQvKiBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTSAqL1xuXHRzdHJ1Y3Qge1xuXHRcdC8qIE9mZnNldCBmcm9tIGRlc2MtXHUwMDNlYWRkciB3aGVyZSBjaGVja3N1bW1pbmcgc2hvdWxkIHN0YXJ0LiAqL1xuXHRcdF9fdTE2IGNzdW1fc3RhcnQ7XG5cdFx0LyogT2Zmc2V0IGZyb20gY3N1bV9zdGFydCB3aGVyZSBjaGVja3N1bSBzaG91bGQgYmUgc3RvcmVkLiAqL1xuXHRcdF9fdTE2IGNzdW1fb2Zmc2V0O1xuXHRcdF9fdTMyIHJlc2VydmVkO1xuXHR9IHJlcXVlc3Q7XG5cblx0LyogWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUgKi9cblx0c3RydWN0IHtcblx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuXHRcdF9fdTY0IGxhdW5jaF90aW1lO1xuXHR9IHJlcXVlc3Q7XG59O1xuYGBgXG5JcyB0aGlzIHN0cnVjdCByZWFsbHkgZGVmaW5pbmcgYHJlcXVlc3RgIG11bHRpcGxlIHRpbWVzPyBObywgaXQncyBhIHVuaW9uLCBvciBtYXliZSBhbiBhbm9ueW1vdXMgc3RydWN0LiBUaGF0J3MgYSBjcnVjaWFsIGRldGFpbC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gaW50ZXJwcmV0aW5nIHRoaXMgY29ycmVjdGx5LiBMZXQgbWUganVtcCBvdmVyIHRvIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgIHRvIGNvbmZpcm0gdGhlIGRlZmluaXRpb24uIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGByZXF1ZXN0YCBmaWVsZCB3b3JrcyBiZWZvcmUgSSBjYW4gYXNzZXNzIHRoZSBrZXJuZWwgaW1wYWN0IGFjY3VyYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjk2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIwOjA5Ljg0MTYyOTc0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjcyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMTM1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTM1OlxcdCNkZWZpbmUgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUVcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyAyKVxcbiAxMzY6XFx0XFxuIDEzNzpcXHQvKiBBRl9YRFAgb2ZmbG9hZHMgcmVxdWVzdC4gJ3JlcXVlc3QnIHVuaW9uIG1lbWJlciBpcyBjb25zdW1lZCBieSB0aGUgZHJpdmVyXFxuIDEzODpcXHQgKiB3aGVuIHRoZSBwYWNrZXQgaXMgYmVpbmcgdHJhbnNtaXR0ZWQuICdjb21wbGV0aW9uJyB1bmlvbiBtZW1iZXIgaXNcXG4gMTM5OlxcdCAqIGZpbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIHRyYW5zbWl0IGNvbXBsZXRpb24gYXJyaXZlcy5cXG4gMTQwOlxcdCAqL1xcbiAxNDE6XFx0c3RydWN0IHhza190eF9tZXRhZGF0YSB7XFxuIDE0MjpcXHRcXHRfX3U2NCBmbGFncztcXG4gMTQzOlxcdFxcbiAxNDQ6XFx0XFx0dW5pb24ge1xcbiAxNDU6XFx0XFx0XFx0c3RydWN0IHtcXG4gMTQ2OlxcdFxcdFxcdFxcdC8qIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNICovXFxuIDE0NzpcXHRcXG4gMTQ4OlxcdFxcdFxcdFxcdC8qIE9mZnNldCBmcm9tIGRlc2MtXFx1MDAzZWFkZHIgd2hlcmUgY2hlY2tzdW1taW5nIHNob3VsZCBzdGFydC4gKi9cXG4gMTQ5OlxcdFxcdFxcdFxcdF9fdTE2IGNzdW1fc3RhcnQ7XFxuIDE1MDpcXHRcXHRcXHRcXHQvKiBPZmZzZXQgZnJvbSBjc3VtX3N0YXJ0IHdoZXJlIGNoZWNrc3VtIHNob3VsZCBiZSBzdG9yZWQuICovXFxuIDE1MTpcXHRcXHRcXHRcXHRfX3UxNiBjc3VtX29mZnNldDtcXG4gMTUyOlxcdFxcdFxcdFxcdF9fdTMyIHJlc2VydmVkO1xcbiAxNTM6XFx0XFxuIDE1NDpcXHRcXHRcXHRcXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xcbiAxNTU6XFx0XFx0XFx0XFx0LyogTGF1bmNoIHRpbWUgaW4gbmFub3NlY29uZCBhZ2FpbnN0IHRoZSBQVFAgSFcgQ2xvY2sgKi9cXG4gMTU2OlxcdFxcdFxcdFxcdF9fdTY0IGxhdW5jaF90aW1lO1xcbiAxNTc6XFx0XFx0XFx0fSByZXF1ZXN0O1xcbiAxNTg6XFx0XFxuIDE1OTpcXHRcXHRcXHRzdHJ1Y3Qge1xcbiAxNjA6XFx0XFx0XFx0XFx0LyogWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovXFxuIDE2MTpcXHRcXHRcXHRcXHRfX3U2NCB0eF90aW1lc3RhbXA7XFxuIDE2MjpcXHRcXHRcXHR9IGNvbXBsZXRpb247XFxuIDE2MzpcXHRcXHR9O1xcbiAxNjQ6XFx0fTtcXG4gMTY1OlxcdFxcbiAxNjY6XFx0LyogUngvVHggZGVzY3JpcHRvciAqL1xcbiAxNjc6XFx0c3RydWN0IHhkcF9kZXNjIHtcXG4gMTY4OlxcdFxcdF9fdTY0IGFkZHI7XFxuIDE2OTpcXHRcXHRfX3UzMiBsZW47XFxuIDE3MDpcXHRcXHRfX3UzMiBvcHRpb25zO1xcbiAxNzE6XFx0fTtcXG4gMTcyOlxcdFxcbiAxNzM6XFx0LyogVU1FTSBkZXNjcmlwdG9yIGlzIF9fdTY0ICovXFxuIDE3NDpcXHRcXG4gMTc1OlxcdC8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBwYWNrZXQgY29udGludWVzIHdpdGggdGhlIGJ1ZmZlciBwb2ludGVkIG91dCBieSB0aGVcXG4gMTc2OlxcdCAqIG5leHQgZnJhbWUgaW4gdGhlIHJpbmcuIFRoZSBlbmQgb2YgdGhlIHBhY2tldCBpcyBzaWduYWxsZWQgYnkgc2V0dGluZyB0aGlzXFxuIDE3NzpcXHQgKiBiaXQgdG8gemVyby4gRm9yIHNpbmdsZSBidWZmZXIgcGFja2V0cywgZXZlcnkgZGVzY3JpcHRvciBoYXMgJ29wdGlvbnMnIHNldFxcbiAxNzg6XFx0ICogdG8gMCBhbmQgdGhpcyBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cXG4gMTc5OlxcdCAqL1xcbiAxODA6XFx0I2RlZmluZSBYRFBfUEtUX0NPTlREICgxIFxcdTAwM2NcXHUwMDNjIDApXFxuIDE4MTpcXHRcXG4gMTgyOlxcdC8qIFRYIHBhY2tldCBjYXJyaWVzIHZhbGlkIG1ldGFkYXRhLiAqL1xcbiAxODM6XFx0I2RlZmluZSBYRFBfVFhfTUVUQURBVEEgKDEgXFx1MDAzY1xcdTAwM2MgMSlcXG4gMTg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDowOS44NDE3MTYwMjdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMDg5OTAyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFGX1hEUCBNZXRhZGF0YSBIYW5kbGluZyBhbmQgQWxpZ25tZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBzdHJ1Y3QgYHJlcXVlc3RgIG5lc3RsZWQgaW5zaWRlIGEgYHVuaW9uYC4gVGhlIGtleSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgX191MzIgcmVzZXJ2ZWQ7YC4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gYWxpZ25tZW50LiBJIGtub3cgdGhhdCBgY3N1bV9zdGFydGAgYW5kIGBjc3VtX29mZnNldGAgYXJlIDIgYnl0ZXMgZWFjaC4gQmVmb3JlLCBgbGF1bmNoX3RpbWVgIChgX191NjRgKSB3YXMgcHJvYmFibHkgZGlyZWN0bHkgYWZ0ZXIgdGhvc2UsIG1ha2luZyBpdHMgb2Zmc2V0IDQgYnl0ZXMuIFRoYXQncyBhIHByb2JsZW0gYmVjYXVzZSwgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMsIGBfX3U2NGAgbmVlZHMgOC1ieXRlIGFsaWdubWVudC4gU28sIHdpdGhvdXQgcGFkZGluZywgaXQncyBtaXNhbGlnbmVkLiBBZGRpbmcgYF9fdTMyIHJlc2VydmVkYCBleHBsaWNpdGx5IGFsaWducyBgbGF1bmNoX3RpbWVgLCBzaGlmdGluZyBpdHMgb2Zmc2V0IHRvIDggYnl0ZXMgYW5kIGVuc3VyaW5nIHByb3BlciBtZW1vcnkgbGF5b3V0LCB3aGljaCBtYWtlcyB0aGlzIGEgVUFQSSBmaXguXG5cbkkgdGhlbiBtb3ZlIG9uIHRvIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uLiBUaGUgY2hhbmdlIHRoZXJlIGludm9sdmVzIGNoZWNraW5nIGBvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEFgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjb3JlIGNoYW5nZSByZWxhdGVkIHRvIEFGX1hEUC4gQnV0IEkgbmVlZCB0byB0aGluayBhYm91dCB3aGVyZSB0aGlzIGlzIGFjdHVhbGx5IHVzZWQsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cblxuVGhlIGNhbGwgc2l0ZXMgYXJlIHdoYXQgbWF0dGVyLiBJIHNlZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNhbGxlZCBieSBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCAodXNlZCBieSBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCkgYW5kIGB4cF9yYXdfZ2V0X2N0eGAgKHVzZWQgYnkgYSBjaGFpbiBvZiBmdW5jdGlvbnMgZW5kaW5nIHdpdGggYGlkcGZgKS4gTm9uZSBvZiB0aGVzZSBkcml2ZXJzIChgaWdjYCwgYG1seDVgLCBgaWRwZmApIGFyZSB1c3VhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIE5vdywgYHN0bW1hY2AsIHRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBjaGVjay4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlncy4gSSBuZWVkIHRvIGdvIHZlcmlmeSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzE0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MjAuMDUwNzEwNTQzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIyNjgxOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MjIuMDczMzk4MjQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDIwMzczMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgZm9yIHRoZSBgU1RNTUFDX1BDSWAgRmxhZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGRyaXZlciBjb2RlLCBhbmQgZmlyc3QgdGhpbmcncyBmaXJzdDogZ290dGEgbWFrZSBzdXJlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNvbmZpZ3VyYXRpb24gdGhhdCBhY3R1YWxseSB1c2VzIFBDSSBmb3IgdGhlIFNUTU1BQyAoU1RNaWNyb2VsZWN0cm9uaWNzIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBkZXZpY2UuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzPyBcIklzIGBTVE1NQUNfUENJYCBldmVuIGRlZmluZWQ/XCIgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCB0byBhY2NvbW1vZGF0ZSBhIFBDSS1iYXNlZCBTVE1NQUMgaW5zdGFuY2UuIFRoaXMgY2hlY2sgaXMgY3J1Y2lhbDsgaXQgZGljdGF0ZXMgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBzdWJzZXF1ZW50IGFjdGlvbnMgdGhlIGRyaXZlciB3aWxsIHRha2UuIEl0J3MgZXNzZW50aWFsbHkgdGhlIGdhdGVrZWVwZXIgZm9yIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiwgc28gY29uZmlybWluZyB0aGlzIGlzIGVzc2VudGlhbCBiZWZvcmUgbW92aW5nIGFueSBmdXJ0aGVyLiBJZiBpdCdzICpub3QqIGRlZmluZWQsIEknbGwgbmVlZCB0byBhZGFwdCBteSBhbmFseXNpcyBhY2NvcmRpbmdseSwgYXMgSSdtIGxpa2VseSBsb29raW5nIGF0IGEgZGlmZmVyZW50IGhhcmR3YXJlIHNldHVwIG9yIGNvbmZpZ3VyYXRpb24gYWx0b2dldGhlci4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3MTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDoyNS40MTU0MzkzMzNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDkyMDY0MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MjcuMDI0NjUxNjU0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5OTEwMDQ3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBEcml2ZXIgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEkga25vdyBpdCBleGlzdHMsIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQncyBoYW5kbGVkIHdpdGhpbiBRRU1VLiBEb2VzIFFFTVUgZW11bGF0ZSBpdCBkaXJlY3RseT8gTm9wZSwgZG9lc24ndCBsb29rIGxpa2UgaXQuIEkga25vdyBRRU1VIGVtdWxhdGVzIG90aGVyIG5ldHdvcmsgaW50ZXJmYWNlcyAtIGBlMTAwMGAsIGBlMTAwMGVgLCBgaWdiYCwgYHJ0bDgxMzlgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgdm14bmV0M2AsIGFuZCBgdmlydGlvLW5ldC1wY2lgIGFyZSBmYW1pbGlhciBvbmVzLiBCdXQgYFNUTU1BQ19QQ0lgIGlzbid0IG9uIHRoZSBsaXN0LlxuXG5Ob3csIG15IG1pbmQgc2hpZnRzIHRvIGB2ZXRoYC4gSXQncyBhIGtleSB2aXJ0dWFsIEV0aGVybmV0IGRldmljZS4gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJ20gY3VyaW91cyB3aGV0aGVyIGB2ZXRoYCBtYWtlcyB1c2Ugb2YgYHhza19idWZmX2dldF9tZXRhZGF0YWAgaW4gaXRzIG9wZXJhdGlvbi4gVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgc291cmNlIGNvZGUsIHNvIEknbGwgY2hlY2sgYGRyaXZlcnMvbmV0L3ZldGguY2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGFuc3dlcnMgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA4NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDozMi4wMTU2NTk0OTZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzU1NTc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDozMi4wNjQwMjg3MzRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3MDUyOTE4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgZUJQRiBEYXRhIEFjY2VzcyoqXG5cbkhtbSwgc28gdGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgYHZldGhgIHVzZXMgc29tZXRoaW5nIGxpa2UgYSBzaGFyZWQgcmluZyBidWZmZXIgb3IgbWV0YWRhdGEgYWNjZXNzIGluIHRoZSBYRFAgY29udGV4dCBpcyBzdGlsbCBoYW5naW5nLiBJdCBkb2Vzbid0IGxvb2sgbGlrZSBpdCBkb2VzIGJhc2VkIG9uIG15IHByaW9yIGtub3dsZWRnZSwgYnV0IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgcXVpY2tseSBydWxlIG91dCBgdmV0aGAncyBkaXJlY3QgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBNeSB0aG91Z2h0cyBpbW1lZGlhdGVseSBqdW1wIHRvIGBuZXQveGRwL3hzay5jYC4gSSBrbm93IHRoYXQncyB3aGVyZSB0aGUgWERQIHNvY2tldCBpbXBsZW1lbnRhdGlvbiBsaXZlcyBhbmQgaXMgdGhlcmVmb3JlIHdoZXJlIGFueSBYRFAtcmVsYXRlZCBtZXRhZGF0YSBoYW5kbGluZyBpcyBsaWtlbHkgbG9jYXRlZC4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGluZm8gSSBuZWVkIHRvIGRldGVybWluZSBub3cgaXMgd2hldGhlciB0aGlzIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uIGlzIHVzZWQuIElmIGl0IGlzLCB0aGVuIHRoZSBtZWNoYW5pc20gaXMgdGhlcmUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgdXNhZ2UuIElmIG5vdCwgSSBjYW4gY29udGludWUgdG8gaW52ZXN0aWdhdGUgb3RoZXIgbG9jYXRpb25zIG9mIHBvdGVudGlhbCBhY2Nlc3MuIEknbGwgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1MDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDozNi4wMzQ1NjI3OTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDAxNTU4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC94c2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6MzYuMDgxNTc0Nzg1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzkxMzQwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgWERQIERhdGEgUGF0aCoqXG5cbk9rYXksIG5vLiBMZXQncyByZS1ldmFsdWF0ZSB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIG1ldGFkYXRhIGdldHMgaGFuZGxlZC4gSSByZWNhbGwgc2VlaW5nIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaW4gYG5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jYCB3aXRoaW4gYHhwX3Jhd19nZXRfY3R4YC4gTm93LCBpcyBgeHBfcmF3X2dldF9jdHhgIHVzZWQgYW55d2hlcmUgZWxzZT8gVGltZSB0byBkb3VibGUtY2hlY2suIEkgZGlkIGEgcXVpY2sgZ3JlcCBhbHJlYWR5LCBhbmQgaXQgbG9va3MgbGlrZSBgeHBfcmF3X2dldF9jdHhgIGlzICpvbmx5KiB1c2VkIGluIGB4c2tfYnVmZl9yYXdfZ2V0X2N0eGAgd2l0aGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIHdoaWNoIGluIHR1cm4sIGlzIG9ubHkgdXNlZCBieSBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiBJIHRoaW5rIEkgZm91bmQgaXQuXG5cbkFuZCwgb2YgY291cnNlLCBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgIGlzICpzb2xlbHkqIHVzZWQgaW4gYGlkcGZgLiBJIGtuZXcgaXQhXG5cbkhvbGQgb24sIEkgYWxtb3N0IG1pc3NlZCBzb21ldGhpbmcuIFdoYXQgYWJvdXQgdGhhdCBjaGFuZ2UgaW4gYHN0bW1hY194ZHBfeG1pdF96Y2A/IFRoYXQgc25pcHBldC4uLlxuXG5gYGBjXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuYGBgXG5cbi4uLnJlbW92ZXMgdGhlIGNoZWNrIGZvciBgbWF4X3NkdWAgaW4gYHN0bW1hY194ZHBfeG1pdF96Y2AuICBCdXQsIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXNuJ3QgZXZlbiByZWFjaGFibGUgaW4gUUVNVS4gVGhhdCdzIGEgZGVhZCBlbmQsIHRoZW4uXG5cbkxldCdzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gSXMgdGhlcmUgKmFueSogb3RoZXIgZHJpdmVyIEkgaGF2ZW4ndCBjb25zaWRlcmVkPyBJIG5lZWQgdG8gbG9vayBmb3IgYFhEUF9UWF9NRVRBREFUQWAgZGlyZWN0bHkgdG8gc2VlIHdoYXQgZWxzZSBtaWdodCBiZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4MTgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6NDEuOTYwNzExNTgxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE5OTM4ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhEUF9UWF9NRVRBREFUQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD00MT10aGUgYGB4c2tfdHhfbWV0YWRhdGFgYCkuIEZvciB0aGUgZnJhbWVzIHRoYXQgc2hvdWxkbid0IGNhcnJ5XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6NDI6YW55IG1ldGFkYXRhIChpLmUuLCB0aGUgb25lcyB0aGF0IGRvbid0IGhhdmUgYGBYRFBfVFhfTUVUQURBVEFgYCBvcHRpb24pLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTQzLXRoZSBtZXRhZGF0YSBhcmVhIGlzIGlnbm9yZWQgYnkgdGhlIGtlcm5lbCBhcyB3ZWxsLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q9NTk9QmVzaWRlcyB0aGUgZmxhZ3MgYWJvdmUsIGluIG9yZGVyIHRvIHRyaWdnZXIgdGhlIG9mZmxvYWRzLCB0aGUgZmlyc3RcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDo2MDpwYWNrZXQncyBgYHN0cnVjdCB4ZHBfZGVzY2BgIGRlc2NyaXB0b3Igc2hvdWxkIHNldCBgYFhEUF9UWF9NRVRBREFUQWBgXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtNjEtYml0IGluIHRoZSBgYG9wdGlvbnNgYCBmaWVsZC4gQWxzbyBub3RlIHRoYXQgaW4gYSBtdWx0aS1idWZmZXIgcGFja2V0XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0zMjI9X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMjQte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjMyNTpcXHRpZiAoIXBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbiB8fCAhKG9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMyNi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaD0xNjc9c3RydWN0IHhkcF9kZXNjIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODItLyogVFggcGFja2V0IGNhcnJpZXMgdmFsaWQgbWV0YWRhdGEuICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oOjE4MzojZGVmaW5lIFhEUF9UWF9NRVRBREFUQSAoMSBcXHUwMDNjXFx1MDAzYyAxKVxcbmluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaC0xODQtXFxuLS1cXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwMzAtXFx0XFx0c2tiX3Jlc2VydmUoc2tiLCBocik7XFxubmV0L3hkcC94c2suYzoxMDMxOlxcdFxcdGlmIChkZXNjLVxcdTAwM2VvcHRpb25zIFxcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XFxubmV0L3hkcC94c2suYy0xMDMyLVxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsIHBvb2wsIGhyKTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9MTA4NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTExOS1cXG5uZXQveGRwL3hzay5jOjExMjA6XFx0XFx0XFx0aWYgKGRlc2MtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpIHtcXG5uZXQveGRwL3hzay5jLTExMjEtXFx0XFx0XFx0XFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYyxcXG4tLVxcbm5ldC94ZHAveHNrX3F1ZXVlLmg9MTU0PXN0YXRpYyBpbmxpbmUgYm9vbCB4cF91bnVzZWRfb3B0aW9uc19zZXQodTMyIG9wdGlvbnMpXFxubmV0L3hkcC94c2tfcXVldWUuaC0xNTUte1xcbm5ldC94ZHAveHNrX3F1ZXVlLmg6MTU2OlxcdHJldHVybiBvcHRpb25zIFxcdTAwMjYgfihYRFBfUEtUX0NPTlREIHwgWERQX1RYX01FVEFEQVRBKTtcXG5uZXQveGRwL3hza19xdWV1ZS5oLTE1Ny19XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmg9MTY3PXN0cnVjdCB4ZHBfZGVzYyB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTgyLS8qIFRYIHBhY2tldCBjYXJyaWVzIHZhbGlkIG1ldGFkYXRhLiAqL1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaDoxODM6I2RlZmluZSBYRFBfVFhfTUVUQURBVEEgKDEgXFx1MDAzY1xcdTAwM2MgMSlcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmgtMTg0LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmM9MTM2PXN0YXRpYyBpbnQgZ2VuZXJhdGVfcGFja2V0KHN0cnVjdCB4c2sgKnhzaywgX191MTYgZHN0X3BvcnQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xOTItXFx0dHhfZGVzYy1cXHUwMDNlbGVuID0gc2l6ZW9mKCpldGgpICsgc2l6ZW9mKCppcGgpICsgc2l6ZW9mKCp1ZHBoKSArIFVEUF9QQVlMT0FEX0JZVEVTO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jOjE5MzpcXHR0eF9kZXNjLVxcdTAwM2VvcHRpb25zIHw9IFhEUF9UWF9NRVRBREFUQTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYy0xOTQtXFx0eHNrX3JpbmdfcHJvZF9fc3VibWl0KFxcdTAwMjZ4c2stXFx1MDAzZXR4LCAxKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYz0zNTI9c3RhdGljIHZvaWQgcGluZ19wb25nKHN0cnVjdCB4c2sgKnhzaywgdm9pZCAqcnhfcGFja2V0LCBjbG9ja2lkX3QgY2xvY2tfaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMtNDM3LVxcdG1lbWNweShkYXRhLCByeF9wYWNrZXQsIGxlbik7IC8qIGRvbid0IHNoYXJlIHVtZW0gY2h1bmsgZm9yIHNpbXBsaWNpdHkgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmM6NDM4OlxcdHR4X2Rlc2MtXFx1MDAzZW9wdGlvbnMgfD0gWERQX1RYX01FVEFEQVRBO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYy00MzktXFx0dHhfZGVzYy1cXHUwMDNlbGVuID0gbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDo0My41ODA2NTY2MzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODczMTE0ODI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipYRFBfVFhfTUVUQURBVEEgYW5kIHRoZSBJbXBsaWNhdGlvbnMgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkganVzdCBzYXcgdGhhdCBgbmV0L3hkcC94c2suY2AgbWFrZXMgdXNlIG9mIGBYRFBfVFhfTUVUQURBVEFgLiBUaGF0J3MgYXQgbGluZSAxMDMxLCBzcGVjaWZpY2FsbHk6XG5cbmBgYGNcbmlmIChkZXNjLVx1MDAzZW9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xuXHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7XG59XG5gYGBcblxuQnV0IHRoaXMgcGF0Y2ggZG9lc24ndCAqZGlyZWN0bHkqIHRvdWNoIGBuZXQveGRwL3hzay5jYC4gVGhlIGNoYW5nZXMgYXJlIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIGBpbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmhgLCBgbmV0L3hkcC94c2tfYnVmZl9wb29sLmNgLCBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCwgYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAsIGFuZCBhIGZldyBkcml2ZXJzOiBgaWdjYCwgYG1seDVgLCBhbmQgYHN0bW1hY2AuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGluZGlyZWN0IGltcGFjdD9cblxuVGhlIFVBUEkgY2hhbmdlIGluIGBpbmNsdWRlL3VhcGkvbGludXgvaWZfeGRwLmhgIGlzIHdoZXJlIHRoZSBwb3RlbnRpYWwgZ290Y2hhIGlzLiBUaGVyZSdzIGEgbmV3IGBfX3UzMiByZXNlcnZlZDtgIGZpZWxkIGJlaW5nIGFkZGVkLiBOb3csIGRvZXMgKnRoYXQqIGltcGFjdCB0aGUgYHhza19za2JfbWV0YWRhdGFgIGZ1bmN0aW9uPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGB4c2tfc2tiX21ldGFkYXRhYCBpbiBgbmV0L3hkcC94c2suY2AgdG8gc2VlIGlmIGl0IHJlbGllcyBvbiBhbnkgb2YgdGhlIHN0cnVjdHVyZSBvciBkYXRhIHRoYXQgYXJlIGluIHRoZSBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDo1Mi4zMTE4MDg2OTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQ4NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19za2JfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC94c2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL3hzay5jPTk1NT1zdGF0aWMgdm9pZCB4c2tfZHJvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZHAveHNrLmMtOTYzLVxcbm5ldC94ZHAveHNrLmM6OTY0OnN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxubmV0L3hkcC94c2suYy05NjUtXFx0XFx0XFx0ICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYywgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5uZXQveGRwL3hzay5jPTEwMDk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwMzEtXFx0XFx0aWYgKGRlc2MtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNiBYRFBfVFhfTUVUQURBVEEpIHtcXG5uZXQveGRwL3hzay5jOjEwMzI6XFx0XFx0XFx0ZXJyID0geHNrX3NrYl9tZXRhZGF0YShza2IsIGJ1ZmZlciwgZGVzYywgcG9vbCwgaHIpO1xcbm5ldC94ZHAveHNrLmMtMTAzMy1cXHRcXHRcXHRpZiAodW5saWtlbHkoZXJyKSkge1xcbi0tXFxubmV0L3hkcC94c2suYz0xMDg1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbi0tXFxubmV0L3hkcC94c2suYy0xMTIwLVxcdFxcdFxcdGlmIChkZXNjLVxcdTAwM2VvcHRpb25zIFxcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XFxubmV0L3hkcC94c2suYzoxMTIxOlxcdFxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsXFxubmV0L3hkcC94c2suYy0xMTIyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICB4cy1cXHUwMDNlcG9vbCwgaHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMDo1Mi4zNjM1NjYwNzFaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3NDkyODY0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgbmV0d29yayBwcm9ncmFtbWluZywgcG9zc2libHkgd29ya2luZyB3aXRoIFhEUDpcblxuKipBbmFseXppbmcgYHhza19za2JfbWV0YWRhdGFgKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gYHhza19za2JfbWV0YWRhdGFgLiBUaGF0IG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgY3J1Y2lhbCB0byB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgWERQIHNvY2tldCAoWFNLKSBhbmQgdGhlIGtlcm5lbCdzIFNLQiAoU29ja2V0IEJ1ZmZlcikuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIHRoZSBYRFAgcHJvZ3JhbSBncmFicyBvciBoYW5kcyBvZmYgY29udHJvbCBvZiBwYWNrZXRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHN0cnVjdHVyZSBpbnRpbWF0ZWx5LiBJIHN1c3BlY3QgaXQncyB0aGUgZ2x1ZSBob2xkaW5nIHRvZ2V0aGVyIHRoZSBYU0sncyBlZmZpY2llbnQgemVyby1jb3B5IG1lY2hhbmlzbSB3aXRoIHRoZSBtb3JlIHRyYWRpdGlvbmFsIFNLQiB3b3JsZC4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIG1lbWJlcnMgd2l0aGluIGl0LiBQcm9iYWJseSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIHBvaW50ZXJzIHRvIHRoZSBwYWNrZXQgZGF0YSwgdGhlIG1ldGFkYXRhIGZsYWdzLCBtYXliZSBzb21lIHNvcnQgb2YgaW5kZXggaW50byB0aGUgQUZfWERQIHNoYXJlZCBtZW1vcnkgcmluZy4gSXMgdGhlcmUgYSBkZXNjcmlwdG9yPyBIb3cgaXMgcmVmZXJlbmNlIGNvdW50aW5nIGhhbmRsZWQgYmV0d2VlbiBYRFAgcHJvZ3JhbSBhbmQgdGhlIFNLQj8gSXMgdGhpcyBzdHJ1Y3R1cmUgdXNlZCBpbiBib3RoIHRoZSBUWCBhbmQgUlggcGF0aHMsIG9yIGlzIGl0IHNwZWNpZmljIHRvIG9uZSBkaXJlY3Rpb24/IEkgYmV0IHRoZXJlIGFyZSBudWFuY2VzIGhlcmUgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50LCBjb25jdXJyZW5jeSwgYW5kIGVycm9yIGhhbmRsaW5nLiBHb3QgdG8gc3RhcnQgZXhhbWluaW5nIHRoZSBhY3R1YWwgc3RydWN0IGRlZmluaXRpb24gYW5kIHNlZSBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgdmFyaW91cyBrZXJuZWwgZnVuY3Rpb25zLi4uIFRoaXMgd2lsbCB0ZWxsIG1lIG1vcmUgYWJvdXQgaXRzIHB1cnBvc2UuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgaW4gYm90aCB0aGUgUlggYW5kIFRYIHBhdGhzIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIE9rYXksIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA0MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIwOjU2LjYzODQ5ODQ3NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hkcC94c2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NjQsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NjQ6XFx0c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcXG4gOTY1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbiA5NjY6XFx0XFx0XFx0XFx0ICAgIHUzMiBocilcXG4gOTY3OlxcdHtcXG4gOTY4OlxcdFxcdHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEgPSBOVUxMO1xcbiA5Njk6XFx0XFx0dTE2IGNzdW1fc3RhcnQsIGNzdW1fb2Zmc2V0O1xcbiA5NzA6XFx0XFx0dTY0IGZsYWdzO1xcbiA5NzE6XFx0XFxuIDk3MjpcXHRcXHRpZiAodW5saWtlbHkocG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuID09IDApKVxcbiA5NzM6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDk3NDpcXHRcXG4gOTc1OlxcdFxcdG1ldGEgPSBidWZmZXIgLSBwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW47XFxuIDk3NjpcXHRcXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEsIFxcdTAwMjZmbGFncykpKVxcbiA5Nzc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDk3ODpcXHRcXG4gOTc5OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XFxuIDk4MDpcXHRcXHRcXHRjc3VtX3N0YXJ0ID0gUkVBRF9PTkNFKG1ldGEtXFx1MDAzZXJlcXVlc3QuY3N1bV9zdGFydCk7XFxuIDk4MTpcXHRcXHRcXHRjc3VtX29mZnNldCA9IFJFQURfT05DRShtZXRhLVxcdTAwM2VyZXF1ZXN0LmNzdW1fb2Zmc2V0KTtcXG4gOTgyOlxcdFxcbiA5ODM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KGNzdW1fc3RhcnQgKyBjc3VtX29mZnNldCArXFxuIDk4NDpcXHRcXHRcXHRcXHQgICAgIHNpemVvZihfX3N1bTE2KSBcXHUwMDNlIGRlc2MtXFx1MDAzZWxlbikpXFxuIDk4NTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gOTg2OlxcdFxcbiA5ODc6XFx0XFx0XFx0c2tiLVxcdTAwM2Vjc3VtX3N0YXJ0ID0gaHIgKyBjc3VtX3N0YXJ0O1xcbiA5ODg6XFx0XFx0XFx0c2tiLVxcdTAwM2Vjc3VtX29mZnNldCA9IGNzdW1fb2Zmc2V0O1xcbiA5ODk6XFx0XFx0XFx0c2tiLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9QQVJUSUFMO1xcbiA5OTA6XFx0XFxuIDk5MTpcXHRcXHRcXHRpZiAodW5saWtlbHkocG9vbC1cXHUwMDNldHhfc3dfY3N1bSkpIHtcXG4gOTkyOlxcdFxcdFxcdFxcdGludCBlcnI7XFxuIDk5MzpcXHRcXG4gOTk0OlxcdFxcdFxcdFxcdGVyciA9IHNrYl9jaGVja3N1bV9oZWxwKHNrYik7XFxuIDk5NTpcXHRcXHRcXHRcXHRpZiAoZXJyKVxcbiA5OTY6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gOTk3OlxcdFxcdFxcdH1cXG4gOTk4OlxcdFxcdH1cXG4gOTk5OlxcdFxcbjEwMDA6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUpXFxuMTAwMTpcXHRcXHRcXHRza2ItXFx1MDAzZXNrYl9tc3RhbXBfbnMgPSBSRUFEX09OQ0UobWV0YS1cXHUwMDNlcmVxdWVzdC5sYXVuY2hfdGltZSk7XFxuMTAwMjpcXHRcXHRpZiAoIShmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUCkpXFxuMTAwMzpcXHRcXHRcXHRtZXRhID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjA6NTYuNjM4NjE4OTI0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTEzOTEwMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGp1c3Qgb2NjdXJyZWQgdG8gbWUgd2hpbGUgYW5hbHl6aW5nIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKipcblxuT2theSwgc28gSSBzZWUgYHhza19za2JfbWV0YWRhdGFgIGNhbGxzIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBNeSBzcGlkZXIgc2Vuc2VzIGFyZSB0aW5nbGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IHZhbGlkYXRpb24gZW50YWlscy4gTm93LCBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgIGluIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAsIHRoYXQgcmluZ3MgYSBiZWxsLiBMZXQncyBoZWFkIG92ZXIgdG8gdGhhdCBpbmNsdWRlIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHBvb2xgLCBgbWV0YWAsIGFuZCBgZmxhZ3NgIGFyZSBhbGwgYWJvdXQgaW4gdGhpcyBjb250ZXh0IGFuZCBob3cgdGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdvcmtzLiBIb3BlZnVsbHksIHRoaXMgc2hlZHMgc29tZSBsaWdodCBvbiB0aGUgb3ZlcmFsbCBmbG93LCBzcGVjaWZpY2FsbHkgaG93IHRoZSBTS0IgbWV0YWRhdGEgaXMgYmVpbmcgdHJlYXRlZCBhbmQgaXRzIHJvbGUgaW4gdHJhbnNtaXNzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA1OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6MDAuMTkwMDEyODk5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI2NDpcXHR4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4gMjY1OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEsIHU2NCAqZmxhZ3MpXFxuIDI2NjpcXHR7XFxuIDI2NzpcXHRcXHQqZmxhZ3MgPSBSRUFEX09OQ0UobWV0YS1cXHUwMDNlZmxhZ3MpO1xcbiAyNjg6XFx0XFx0aWYgKCpmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxcbiAyNjk6XFx0XFx0XFx0aWYgKHBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbiBcXHUwMDNjXFxuIDI3MDpcXHRcXHRcXHQgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IHhza190eF9tZXRhZGF0YSwgcmVxdWVzdC5sYXVuY2hfdGltZSkpXFxuIDI3MTpcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDI3MjpcXHRcXHRyZXR1cm4gISgqZmxhZ3MgXFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpO1xcbiAyNzM6XFx0fVxcbiAyNzQ6XFx0XFxuIDI3NTpcXHQvKipcXG4gMjc2OlxcdCAqICB4c2tfdHhfbWV0YWRhdGFfcmVxdWVzdCAtIEV2YWx1YXRlIEFGX1hEUCBUWCBtZXRhZGF0YSBhdCBzdWJtaXNzaW9uXFxuIDI3NzpcXHQgKiAgYW5kIGNhbGwgYXBwcm9wcmlhdGUgeHNrX3R4X21ldGFkYXRhX29wcyBvcGVyYXRpb24uXFxuIDI3ODpcXHQgKiAgQHBvb2w6IHBvaW50ZXIgdG8gQUZfWERQIGJ1ZmZlciBwb29sLCB1c2VkIHRvIHZhbGlkYXRlIHRoZSBtZXRhZGF0YVxcbiAyNzk6XFx0ICogIEBwbWV0YTogcG9pbnRlciB0byBwb2ludGVyIHRvIEFGX1hEUCBtZXRhZGF0YSBhcmVhXFxuIDI4MDpcXHQgKiAgQG9wczogcG9pbnRlciB0byBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wc1xcbiAyODE6XFx0ICogIEBwcml2OiBwb2ludGVyIHRvIGRyaXZlci1wcml2YXRlIGFyZWFcXG4gMjgyOlxcdCAqXFxuIDI4MzpcXHQgKiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBuZXR3b3JraW5nIGRldmljZSB3aGVuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjAwLjE5MDA5OTAyOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTA2NTgzNjA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhTSyBUWCBNZXRhZGF0YSBDaGFuZ2UgYW5kIFBvdGVudGlhbCBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgWFNLIGNoYW5nZSByZWxhdGVkIHRvIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSB0aGF0IHRoZXkndmUgYWRkZWQgYSBgcmVzZXJ2ZWRgIGZpZWxkIHRvIHRoZSBgeHNrX3R4X21ldGFkYXRhYCBzdHJ1Y3R1cmUsIHdoaWNoIHNoaWZ0cyB0aGUgb2Zmc2V0IG9mIGByZXF1ZXN0LmxhdW5jaF90aW1lYC4gIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhpcyBjb3VsZCBicmVhayBjb21wYXRpYmlsaXR5IGlmIHVzZXJzcGFjZSBjb2RlIHdhcyBjb21waWxlZCB3aXRoIHRoZSAqb2xkKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgdXNlci1zcGFjZSBwcm9ncmFtIHJlbGllcyBvbiBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSBYU0sgaGVhZGVycywgd2hlcmUgdGhlIGB0eF9tZXRhZGF0YV9sZW5gIGl0IHNldHMgaW4gYHN0cnVjdCB4ZHBfdW1lbV9yZWdgIHdvdWxkIGJlIHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIG5ldyBzdHJ1Y3R1cmUgc2l6ZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gIEknbSB0aGlua2luZywgaWYgdGhleSBwYXNzZWQgYHNpemVvZihzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhKWAgZnJvbSB0aGUgb2xkIGhlYWRlciwgdGhhdCBzaXplIHdvdWxkIGhhdmUgYmVlbiAxMiBieXRlcyBpbml0aWFsbHkgKG9yIHBvdGVudGlhbGx5IDE2IGJ5dGVzIGR1ZSB0byBwYWRkaW5nKS4gIE5vdywgd2l0aCB0aGUgcmVzZXJ2ZWQgZmllbGQsIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBzaXplIGZvciBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGFyY2hpdGVjdHVyZXMuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgbGF5b3V0IG9mIHRoZSBvbGQgYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIHN0cnVjdDpcblxuYGBgY1xuc3RydWN0IHhza190eF9tZXRhZGF0YSB7XG5cdF9fdTY0IGZsYWdzOyAvLyA4IGJ5dGVzXG5cblx0dW5pb24ge1xuXHRcdHN0cnVjdCB7XG5cdFx0XHQvKiBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTSAqL1xuXG5cdFx0XHQvKiBPZmZzZXQgZnJvbSBkZXNjLVx1MDAzZWFkZHIgd2hlcmUgY2hlY2tzdW1taW5nIHNob3VsZCBzdGFydC4gKi9cblx0XHRcdF9fdTE2IGNzdW1fc3RhcnQ7IC8vIDIgYnl0ZXNcblx0XHRcdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cblx0XHRcdF9fdTE2IGNzdW1fb2Zmc2V0OyAvLyAyIGJ5dGVzXG5cblx0XHRcdC8qIFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FICovXG5cdFx0XHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuXHRcdFx0X191NjQgbGF1bmNoX3RpbWU7IC8vIDggYnl0ZXNcblx0XHR9IHJlcXVlc3Q7IC8vIDEyIGJ5dGVzLCBidXQgd2l0aCA4LWJ5dGUgYWxpZ25tZW50IGl0IGlzIHBhZGRlZCB0byAxNiBieXRlcz9cbmBgYFxuXG5JIHJlYWxpemUgYF9fdTY0IGxhdW5jaF90aW1lYCByZXF1aXJlcyA4LWJ5dGUgYWxpZ25tZW50IG9uIDY0LWJpdCBhcmNoaXRlY3R1cmVzLiBUaGlzIG1lYW5zIHRoYXQgb24gNjQtYml0IGFyY2hpdGVjdHVyZXMgdGhlIGNvbXBpbGVyIGluc2VydHMgcGFkZGluZy4gU28gaW4gdGhlIG9sZCBzdHJ1Y3QsIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGZpZWxkIHdhcyBhY3R1YWxseSAxNiBieXRlcyAocGFkZGluZyBhZnRlciBgY3N1bV9vZmZzZXRgKS4gVGhlIGVudGlyZSBzdHJ1Y3R1cmUncyBzaXplIHdvdWxkIHRoZW4gYmUgOCAoZmxhZ3MpICsgMTYgKHJlcXVlc3QpID0gMjQgYnl0ZXMuICBIb3dldmVyLCBvbiAzMi1iaXQgbWFjaGluZXMsIGBfX3U2NGAgb25seSByZXF1aXJlcyA0LWJ5dGUgYWxpZ25tZW50LCBzbyB0aGUgYHJlcXVlc3RgIHN0cnVjdHVyZSBpcyBvbmx5IDEyIGJ5dGVzLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gYSB0b3RhbCBzdHJ1Y3Qgc2l6ZSBvZiA4ICsgMTIgPSAyMCBieXRlcy5cblxuTm93LCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgX191MzIgcmVzZXJ2ZWRgLCB0aGUgYHJlcXVlc3RgIHN0cnVjdHVyZSBiZWNvbWVzOlxuXG5gYGBjXG5zdHJ1Y3Qge1xuXHQvKiBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTSAqL1xuXG5cdC8qIE9mZnNldCBmcm9tIGRlc2MtXHUwMDNlYWRkciB3aGVyZSBjaGVja3N1bW1pbmcgc2hvdWxkIHN0YXJ0LiAqL1xuXHRfX3UxNiBjc3VtX3N0YXJ0OyAvLyAyIGJ5dGVzXG5cdC8qIE9mZnNldCBmcm9tIGNzdW1fc3RhcnQgd2hlcmUgY2hlY2tzdW0gc2hvdWxkIGJlIHN0b3JlZC4gKi9cblx0X191MTYgY3N1bV9vZmZzZXQ7IC8vIDIgYnl0ZXNcblx0X191MzIgcmVzZXJ2ZWQ7IC8vIDQgYnl0ZXNcblxuXHQvKiBYRFBfVFhNRF9GTEFHU19MQVVOQ0hfVElNRSAqL1xuXHQvKiBMYXVuY2ggdGltZSBpbiBuYW5vc2Vjb25kIGFnYWluc3QgdGhlIFBUUCBIVyBDbG9jayAqL1xuXHRfX3U2NCBsYXVuY2hfdGltZTsgLy8gOCBieXRlc1xufSByZXF1ZXN0OyAvLyAxNiBieXRlc1xuYGBgXG5cblRoZSBgcmVxdWVzdGAgc3RydWN0dXJlIHdvdWxkIGJlIDIgKyAyICsgNCArIDggPSAxNiBieXRlcyBvbiBib3RoIDMyIGFuZCA2NCBiaXQgYXJjaGl0ZWN0dXJlcy4gVG90YWwgc2l6ZSB3b3VsZCBiZSA4IChmbGFncykgKyAxNiAocmVxdWVzdCkgPSAyNCBieXRlcy5cblxuU28sIHRoaXMgcGF0Y2ggZWZmZWN0aXZlbHkgZml4ZXMgYSAzMi1iaXQvNjQtYml0IEFCSSBtaXNtYXRjaCwgY29vbCFcblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBVQVBJIGNoYW5nZSBpbnRyb2R1Y2VzIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbmVlZCB0byBiZSBmdXp6ZWQuICBUaGUgY2hhbmdlZCBsYXlvdXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGFuZCBleHBsaWNpdCBwYWRkaW5nIG9uIDY0LWJpdCBtYWNoaW5lcyB3YXJyYW50cyBjbG9zZXIgaW5zcGVjdGlvbi4gIEFsc28sIEkgbm90aWNlZCB0aGUgcGF0Y2ggbW9kaWZpZXMgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCB0byBjaGVjayBgb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYCwgd2hpY2ggY291bGQgYmUgYSBjaGFuZ2UgcG9pbnQuXG5cbkknbSBmb2xsb3dpbmcgdGhlIGNhbGwgY2hhaW46IGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaXMgdXNlZCBpbiBgeHBfcmF3X2dldF9jdHhgLCB3aGljaCBpcyBpbiB0dXJuIHVzZWQgYnkgYHhza19idWZmX3Jhd19nZXRfY3R4YCBhbmQgZmluYWxseSBpbiBgX19saWJldGhfeHNrX3htaXRfZmlsbF9idWZfbWRgLiAgSSBjaGVja2VkIGJlZm9yZSBpZiBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyB1c2VkXG5cbiIsIklucHV0VG9rZW5zIjozMjc0NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToxNS4yNTU5Mzc5MjRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjI2NTU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9wb29sXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkxOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD04MD1zdHJ1Y3QgdHNuZXBfdHgge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05Mi1cXHRpbnQgaW5jcmVtZW50X293bmVyX2NvdW50ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDo5MzpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaC05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg9MTE1PXN0cnVjdCB0c25lcF9yeCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMC1cXHRzdHJ1Y3QgcGFnZSAqKnBhZ2VfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmg6MTMxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oLTEzMi1cXHRzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHBfYmF0Y2g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcC5oPTIzMT1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyMzI6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaD0yNjA9dTMyIHRzbmVwX2dldF9pcnFfY29hbGVzY2Uoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXAuaDoyNjE6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwLmgtMjYyLXZvaWQgdHNuZXBfZGlzYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjA3ND1zdGF0aWMgaW50IHRzbmVwX25ldGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwOTY6aW50IHRzbmVwX2VuYWJsZV94c2soc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9MjE9c3RhdGljIGludCB0c25lcF94ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6MjI6XFx0XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM9NTg9c3RhdGljIGludCB0c25lcF94ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtNTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jOjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX3hkcC5jLTYxLVxcdHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF94ZHAuYz04MD1pbnQgdHNuZXBfeGRwX3NldHVwX3Bvb2woc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmM6ODE6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWVfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfeGRwLmMtODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTQ4Nj1zdHJ1Y3QgZHBhYTJfZXRoX2NoYW5uZWwge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTUwNi1cXHRpbnQgeHNrX3R4X3BrdHNfc2VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmg6NTA3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtNTA4LVxcdHN0cnVjdCBkcGFhMl9ldGhfYnAgKmJwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oPTg0Nj1pbnQgZHBhYTJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcWlkLCB1MzIgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDo4NDc6aW50IGRwYWEyX3hza19zZXR1cF9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtODQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jPTE3Mz1zdGF0aWMgaW50IGRwYWEyX3hza19kaXNhYmxlX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM6MTc1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKGRldiwgcWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmMtMTc2LVxcdHN0cnVjdCBkcGFhMl9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrLmM9MjIwPXN0YXRpYyBpbnQgZHBhYTJfeHNrX2VuYWJsZV9wb29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjIyMTpcXHRcXHRcXHRcXHQgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTIyMi1cXHRcXHRcXHRcXHQgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi14c2suYy0zMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jOjMwMzppbnQgZHBhYTJfeHNrX3NldHVwX3Bvb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXhzay5jLTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg9NTQxPXN0cnVjdCBmZWNfZW5ldF9wcml2X3R4X3Ege1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oLTU0NC1cXHRzdHJ1Y3QgZmVjX3R4X2J1ZmZlciB0eF9idWZbVFhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTQ1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oPTU2MT1zdHJ1Y3QgZmVjX2VuZXRfcHJpdl9yeF9xIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaC01NjMtXFx0dW5pb24gZmVjX3J4X2J1ZmZlciByeF9idWZbUlhfUklOR19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmg6NTY0OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MTQ4Mj1zdGF0aWMgYm9vbCBmZWNfZW5ldF94c2tfeG1pdChzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjE0ODM6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMTQ4NC1cXHRcXHRcXHQgICAgICB1MzIgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0xNTY1PXN0YXRpYyBpbnQgZmVjX2VuZXRfdHhfcXVldWUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTE3MTktXFx0aWYgKHR4cS1cXHUwMDNleHNrX3Bvb2wpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzoxNzIwOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0gdHhxLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0xNzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDQyMD1mZWNfYWxsb2NfbmV3X3J4cV94c2soc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCwgaW50IHF1ZXVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQ0MjE6XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDQyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTIyPXN0YXRpYyBpbnQgZmVjX3hza19yZXN0YXJ0X25hcGkoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTIzOlxcdFxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1MjQtXFx0XFx0XFx0XFx0dTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDU2MT1zdGF0aWMgaW50IGZlY19lbmFibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NTYyOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00NTYzLVxcdFxcdFxcdCAgICAgICB1MTYgcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00NTkyPXN0YXRpYyBpbnQgZmVjX2Rpc2FibGVfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTUtXFx0c3RydWN0IGZlY19lbmV0X3ByaXZfdHhfcSAqdHhxID0gZmVwLVxcdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDU5NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqb2xkX3Bvb2wgPSB0eHEtXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ1OTctXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ2MTg9c3RhdGljIGludCBmZWNfc2V0dXBfeHNrX3Bvb2woc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0NjE5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ2MjAtXFx0XFx0XFx0ICAgICAgdTE2IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaD0yNDI9c3RydWN0IGd2ZV9yeF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMzQzLVxcdHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjM0NDpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0zNDUtXFx0c3RydWN0IHBhZ2VfZnJhZ19jYWNoZSBwYWdlX2NhY2hlOyAvKiBQYWdlIGNhY2hlIHRvIGFsbG9jYXRlIFhEUCBmcmFtZXMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9NDczPXN0cnVjdCBndmVfdHhfcmluZyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY1OS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3RhdHNzOyAvKiBzeW5jIHN0YXRzIGZvciAzMmJpdCBhcmNocyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6NjYwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTY2MS1cXHR1NjQgeGRwX3hza19zZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyMjc9c3RhdGljIGludCBndmVfcmVnX3hza19wb29sKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTIyODpcXHRcXHRcXHQgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNTA9c3RhdGljIHZvaWQgZ3ZlX3VucmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxMjY3OnN0YXRpYyBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqZ3ZlX2dldF94c2tfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTEyNzU9c3RhdGljIGludCBndmVfcmVnX3hkcF9pbmZvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VyeF9jZmcubnVtX3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjEyODY6XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Mjk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE2MzA6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjMxLVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE2Nzk9c3RhdGljIGludCBndmVfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE2ODQtXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpX3R4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxNjg1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xNjg2LVxcdGludCB0eF9xaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV90eF9kcW8uYz0xMDg0PXN0YXRpYyBib29sIGd2ZV94c2tfdHhfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV90eF9yaW5nICp0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jLTEwODYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3R4X2Rxby5jOjEwODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB0eC1cXHUwMDNleHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfdHhfZHFvLmMtMTA4OC1cXHRzdHJ1Y3QgeGRwX2Rlc2MgZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MzQwMj1zdGF0aWMgdm9pZCBpNDBlX2NvbmZpZ194cHNfdHhfcmluZyhzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDIzLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjM0MjQ6c3RhdGljIHN0cnVjdCB4c2tfYnVmZl9wb29sICppNDBlX3hza19wb29sKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0zNDI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg9MzI3PXN0cnVjdCBpNDBlX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaC00MDEtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4Lmg6NDAyOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oLTQwMy19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9ODI9c3RhdGljIGludCBpNDBlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6ODM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTg0LVxcdFxcdFxcdFxcdHUxNiBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM9MTM4PXN0YXRpYyBpbnQgaTQwZV94c2tfcG9vbF9kaXNhYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTE0MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdnNpLVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjE0MTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtMTQyLVxcdGJvb2wgaWZfcnVubmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYzoxODM6aW50IGk0MGVfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy0xODQtXFx0XFx0XFx0dTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz02MzA9Ym9vbCBpNDBlX2NsZWFuX3hkcF90eF9pcnEoc3RydWN0IGk0MGVfdnNpICp2c2ksIHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jLTYzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5jOjYzMjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqYnAgPSB0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNjMzLVxcdHUzMiBpLCBjb21wbGV0ZWRfZnJhbWVzLCB4c2tfZnJhbWVzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYz03NDY9dm9pZCBpNDBlX3hza19jbGVhbl90eF9yaW5nKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmMtNzQ4LVxcdHUxNiBudGMgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuLCBudHUgPSB0eF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmM6NzQ5OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpicCA9IHR4X3JpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suYy03NTAtXFx0c3RydWN0IGk0MGVfdHhfYnVmZmVyICp0eF9iaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV94c2suaD0xOT1zdHJ1Y3QgbmV0X2RldmljZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmg6MjA6c3RydWN0IHhza19idWZmX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oPTIzPWludCBpNDBlX3F1ZXVlX3BhaXJfZW5hYmxlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBpbnQgcXVldWVfcGFpcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3hzay5oOjI0OmludCBpNDBlX3hza19wb29sX3NldHVwKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfeHNrLmgtMjUtXFx0XFx0XFx0dTE2IHFpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg9NzgyPXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfaXNfdHh0aW1lX2NmZyhjb25zdCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNzkxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB4c2tfYnVmZl9wb29sIHN0cnVjdHVyZSBpZiB0aGVyZSBpcyBhIGJ1ZmZlciBwb29sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5My0gKiBhdHRhY2hlZCBhbmQgY29uZmlndXJlZCBhcyB6ZXJvLWNvcHksIE5VTEwgb3RoZXJ3aXNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oOjc5NTpzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfYnVmZl9wb29sICppY2VfZ2V0X3hwX2Zyb21fcWlkKHN0cnVjdCBpY2VfdnNpICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHR1MTYgcWlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC03OTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaDo3OTg6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTEyNjc9aW50IGljZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4MC1cXHRpY2VfZm9yX2VhY2hfdHhfcmluZyh0eF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNldHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMjgxOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRSh0eF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI4Mi1cXHRcXHRib29sIHdkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMC1cXHRpY2VfZm9yX2VhY2hfcnhfcmluZyhyeF9yaW5nLCBxX3ZlY3Rvci1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMzExOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCA9IFJFQURfT05DRShyeF9yaW5nLVxcdTAwM2V4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxMi1cXHRcXHRpbnQgY2xlYW5lZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzA0LVxcdHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzA1OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaD0zNDk9c3RydWN0IGljZV90eF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozNjU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTM2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9MTI0PXN0YXRpYyBpbnQgaWNlX3hza19wb29sX2Rpc2FibGUoc3RydWN0IGljZV92c2kgKnZzaSwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTEyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxMjY6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4c2tfZ2V0X3Bvb2xfZnJvbV9xaWQodnNpLVxcdTAwM2VuZXRkZXYsIHFpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xMjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE0ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxNDU6aWNlX3hza19wb29sX2VuYWJsZShzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTE3ND1pY2VfcmVhbGxvY19yeF94ZHBfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIGJvb2wgcG9vbF9wcmVzZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0xOTYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoxOTc6aW50IGljZV94c2tfcG9vbF9zZXR1cChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHFpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTI1OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjI2MDpzdGF0aWMgdTE2IGljZV9maWxsX3J4X2Rlc2NzKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCBzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yNjEtXFx0XFx0XFx0ICAgICB1bmlvbiBpY2VfMzJiX3J4X2ZsZXhfZGVzYyAqcnhfZGVzYywgdTE2IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0yOTI9c3RhdGljIGJvb2wgX19pY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzoyOTM6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCB1MTYgY291bnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy0yOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz0zNDI9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmc196YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNDM6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTM2Mj1zdGF0aWMgdTMyIGljZV9jbGVhbl94ZHBfaXJxX3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzozNjM6XFx0XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NDMyPXN0YXRpYyBpbnQgaWNlX3htaXRfeGRwX3R4X3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDMzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo0MzQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDczLVxcdFxcdHR4X2Rlc2MtXFx1MDAzZWNtZF90eXBlX29mZnNldF9ic3ogPSBpY2VfYnVpbGRfY3RvYigwLCAwLCBzaXplLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjQ3NDpcXHRcXHQvKiBhY2NvdW50IGZvciBlYWNoIHhkcF9idWZmIGZyb20geHNrX2J1ZmZfcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNDc1LVxcdFxcdHhkcF9yaW5nLVxcdTAwM2V4ZHBfdHhfYWN0aXZlKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTUxNT1pY2VfcnVuX3hkcF96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNTE2LVxcdCAgICAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTE3OlxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NTY4OlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTU2OS1cXHRcXHRcXHRpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MDk9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0KHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MTA6XFx0XFx0XFx0IHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgc3RydWN0IHhkcF9kZXNjICpkZXNjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNzExLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgKnRvdGFsX2J5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz03MzQ9c3RhdGljIHZvaWQgaWNlX3htaXRfcGt0X2JhdGNoKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo3MzU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTczNi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NzY5PXN0YXRpYyB2b2lkIGljZV9maWxsX3R4X2h3X3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc3MDpcXHRcXHRcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03NzEtXFx0XFx0XFx0XFx0c3RydWN0IHhkcF9kZXNjICpkZXNjcywgdTMyIG5iX3BrdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5MC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjc5MTpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTc5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTEwPXN0cnVjdCBpY2VfdnNpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0xMi0jaWZkZWYgQ09ORklHX1hEUF9TT0NLRVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoxMzppbnQgaWNlX3hza19wb29sX3NldHVwKHN0cnVjdCBpY2VfdnNpICp2c2ksIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTQtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9MTU9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MTY6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMTctXFx0XFx0XFx0aW50IGJ1ZGdldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTE5PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnNfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6MjA6XFx0XFx0XFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wsIHUxNiBjb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yMS1ib29sIGljZV94c2tfYW55X3J4X3JpbmdfZW5hKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD0yMz12b2lkIGljZV94c2tfY2xlYW5feGRwX3Jpbmcoc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDoyNDpib29sIGljZV94bWl0X3pjKHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC0yNS1pbnQgaWNlX3JlYWxsb2NfcnhfeGRwX2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBib29sIHBvb2xfcHJlc2VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTM0PXN0YXRpYyBpbmxpbmUgYm9vbCBpY2VfeG1pdF96YyhzdHJ1Y3QgaWNlX3R4X3JpbmcgX19hbHdheXNfdW51c2VkICp4ZHBfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oOjM1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmgtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaD00MT1pY2VfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGljZV92c2kgX19hbHdheXNfdW51c2VkICp2c2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo0MjpcXHRcXHQgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCBfX2Fsd2F5c191bnVzZWQgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC00My1cXHRcXHQgICB1MTYgX19hbHdheXNfdW51c2VkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg9NDk9aWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgX19hbHdheXNfdW51c2VkICpyeF9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmg6NTA6XFx0XFx0ICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01MS1cXHRcXHQgICAgaW50IF9fYWx3YXlzX3VudXNlZCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5oPTU3PWljZV9hbGxvY19yeF9idWZzX3pjKHN0cnVjdCBpY2VfcnhfcmluZyBfX2Fsd2F5c191bnVzZWQgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaDo1ODpcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sIF9fYWx3YXlzX3VudXNlZCAqeHNrX3Bvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suaC01OS1cXHRcXHQgICAgIHUxNiBfX2Fsd2F5c191bnVzZWQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTUxNz1zdHJ1Y3QgaWRwZl9yeF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTU2My1cXHRcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4c2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo1NjQ6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC01NjUtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4Lmg9NjQzPXN0cnVjdCBpZHBmX3R4X3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNjU5LVxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oOjY2MDpcXHRcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTY2MS1cXHR9O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaD03MjA9bGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHN0cnVjdCBpZHBmX3R4X3F1ZXVlLCA2NCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgtNzMzLSAqIEB4c2tfYnVmOiBcXHUwMDI2eGRwX2J1ZmYgZm9yIFhTayBSeCBidWZmZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3MzQ6ICogQHBvb2w6IFxcdTAwMjZ4c2tfYnVmZl9wb29sIG9uIFhTayBxdWV1ZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oLTczNS0gKiBAaGRyX2J1ZjogXFx1MDAyNmxpYmV0aF9mcWUgZm9yIGhlYWRlciBidWZmZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oPTc1NT1zdHJ1Y3QgaWRwZl9idWZfcXVldWUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjQtXFx0XFx0XFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKnhza19idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaDo3NjU6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaC03NjYtXFx0XFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MTI9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfcnhxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6MTU6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9MjY9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfYnVmcShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTI5LVxcdGNvbnN0IHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMgPSBcXHUwMDI2dnBvcnQtXFx1MDAzZWRmbHRfcXZfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjMwOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMzEtXFx0dTMyIHFpZCA9IFUzMl9NQVg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jPTU0PXN0YXRpYyB2b2lkIGlkcGZfeHNrX3NldHVwX3R4cShjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTU2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU3OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTgtXFx0dTMyIHFpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM9Nzk9c3RhdGljIHZvaWQgaWRwZl94c2tfc2V0dXBfY29tcGxxKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmM6ODI6XFx0Y29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy04My1cXHR1MzIgcWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYz01NTQ9aW50IGlkcGZfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtNTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjU1NjpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IGJwZi1cXHUwMDNleHNrLnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01NTctXFx0dTMyIHFpZCA9IGJwZi1cXHUwMDNleHNrLnF1ZXVlX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTMxOT1zdHJ1Y3QgaWdiX3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2NC1cXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjM2NTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTM2Ni19IF9fX19jYWNoZWxpbmVfaW50ZXJub2RlYWxpZ25lZF9pbl9zbXA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODU2PWludCBpZ2JfZGVsX21hY19zdGVlcmluZ19maWx0ZXIoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTg1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODU5OnN0cnVjdCB4c2tfYnVmZl9wb29sICppZ2JfeHNrX3Bvb2woc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGlnYl9yaW5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODYxPWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4NjI6XFx0XFx0ICAgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NjMtXFx0XFx0ICAgICAgIHUxNiBxaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD04NjQ9Ym9vbCBpZ2JfYWxsb2NfcnhfYnVmZmVyc196YyhzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjg2NTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtODY2LXZvaWQgaWdiX2NsZWFuX3J4X3JpbmdfemMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9ODY3PWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo4Njg6XFx0XFx0XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLCBjb25zdCBpbnQgYnVkZ2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6ODY5OmJvb2wgaWdiX3htaXRfemMoc3RydWN0IGlnYl9yaW5nICp0eF9yaW5nLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqeHNrX3Bvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC04NzAtaW50IGlnYl94c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxaWQsIHUzMiBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04Mjc4PXN0YXRpYyBpbnQgaWdiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtODI4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjgyODM6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgyODQtXFx0Ym9vbCBjbGVhbl9jb21wbGV0ZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz04MzI3PXN0YXRpYyBib29sIGlnYl9jbGVhbl90eF9pcnEoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIGludCBuYXBpX2J1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTgzMzUtXFx0c3RydWN0IGlnYl90eF9idWZmZXIgKnR4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4MzM2OlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04MzM3LVxcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTU3PXN0YXRpYyB2b2lkIGlnYl90eHJ4X3JpbmdfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzo4MzpzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqaWdiX3hza19wb29sKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTg0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZ2JfcmluZyAqcmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtODYtXFx0aW50IHFpZCA9IHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6ODc6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9OTc9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZW5hYmxlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjk4OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTk5LVxcdFxcdFxcdCAgICAgICB1MTYgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0xMzk9c3RhdGljIGludCBpZ2JfeHNrX3Bvb2xfZGlzYWJsZShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYy0xNDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTQxOlxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTQyLVxcdHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MTY4PWludCBpZ2JfeHNrX3Bvb2xfc2V0dXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTY5OlxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3MC1cXHRcXHQgICAgICAgdTE2IHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MTc2OnN0YXRpYyB1MTYgaWdiX2ZpbGxfcnhfZGVzY3Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHN0cnVjdCB4ZHBfYnVmZiAqKnhkcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTE3Ny1cXHRcXHRcXHQgICAgIHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjICpyeF9kZXNjLCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jPTIwMD1ib29sIGlnYl9hbGxvY19yeF9idWZmZXJzX3pjKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjIwMTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgdTE2IGNvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9Mjk0PXN0YXRpYyBpbnQgaWdiX3J1bl94ZHBfemMoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaWdiX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzoyOTU6XFx0XFx0XFx0ICBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMjk2LVxcdFxcdFxcdCAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MzQxPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM6MzQyOlxcdFxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbCwgY29uc3QgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTQ2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjQ2NTpib29sIGlnYl94bWl0X3pjKHN0cnVjdCBpZ2JfcmluZyAqdHhfcmluZywgc3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaD0xNDc9c3RydWN0IGlnY19yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDMtXFx0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaDoyMDQ6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2MuaC0yMDUtfSBfX19fY2FjaGVsaW5lX2ludGVybm9kZWFsaWduZWRfaW5fc21wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTk3PXN0YXRpYyBpbnQgaWdjX3NldHVwX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjYxNTpzdGF0aWMgc3RydWN0IHhza19idWZmX3Bvb2wgKmlnY19nZXRfeHNrX3Bvb2woc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTYxNi1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz0zMDM3PXN0YXRpYyB2b2lkIGlnY194ZHBfeG1pdF96YyhzdHJ1Y3QgaWdjX3JpbmcgKnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzAzOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6MzAzOTpcXHRzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCA9IHJpbmctXFx1MDAzZXhza19wb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTMwNDAtXFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqbnEgPSB0eHJpbmdfdHhxKHJpbmcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYz03NDk9c3RhdGljIHZvaWQgaWdjX3B0cF90eF9yZWdfdG9fc3RhbXAoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19wdHAuYy03ODItXFx0aWYgKHRzdGFtcC1cXHUwMDNlYnVmZmVyX3R5cGUgPT0gSUdDX1RYX0JVRkZFUl9UWVBFX1hTSykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcHRwLmM6NzgzOlxcdFxcdHN0cnVjdCB4c2tfYnVmZl9wb29sICp4c2tfcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3B0cC5jLTc4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmM9NTY9c3RhdGljIGludCBpZ2NfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5jOjU3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlX2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYz0xMTg9c3RhdGljIGludCBpZ2NfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiBxdWV1ZV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTIwLVxcdHN0cnVjdCBpZ2NfcmluZyAqcnhfcmluZywgKnR4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxMjE6XFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2w7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xMjItXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYy0xNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuYzoxNTk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmMtMTYwLVxcdFxcdCAgICAgICB1MTYgcXVldWVfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oPTc9aW50IGlnY194ZHBfc2V0X3Byb2coc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY194ZHAuaC04LVxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3hkcC5oOjk6aW50IGlnY194ZHBfc2V0dXBfcG9vbChzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfeGRwLmgtMTAtXFx0XFx0ICAgICAgIHUxNiBxdWV1ZV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTM1Nz1zdHJ1Y3QgaXhnYmVfcmluZyB7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjE1LjM5ODIxMTA2OVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU4NTA1NzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFGX1hEUCBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkcml2ZXJzIHRoYXQgY3VycmVudGx5IHN1cHBvcnQgQUZfWERQIHplcm8tY29weS4gTGV0IG1lIHNlZS4uLiBJJ3ZlIGdvdCBhIG1lbnRhbCBsaXN0IHN0YXJ0aW5nIHRvIGZvcm0uIFRoZXJlJ3MgYHRzbmVwYCAtIHRoZSBFbmdsZWRlciBUU04gZW5kcG9pbnQuIFRoZW4gdGhlcmUncyB0aGUgRnJlZXNjYWxlIERQQUEyLCB0aGF0J3MgYGRwYWEyYC4gSSByZW1lbWJlciBgZmVjYCBmcm9tIEZyZWVzY2FsZSwgdG9vLiBBbmQgb2YgY291cnNlLCBgZ3ZlYCwgdGhlIEdvb2dsZSBWaXJ0dWFsIE5JQywgaXQncyBwcmV0dHkgY3J1Y2lhbC4gVGhlIHVzdWFsIHN1c3BlY3RzIGZyb20gSW50ZWwgYXJlIGluIHRoZSBtaXg6IGBpNDBlYCwgYGljZWAsIGBpZHBmYCwgYGlnYmAsIGBpZ2NgLCBhbmQgYGl4Z2JlYC4gVGhlbiwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IE1lbGxhbm94IGBtbHg1YC4gQW5kLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGBzdG1tYWNgIGRyaXZlciBmcm9tIFNUTWljcm9lbGVjdHJvbmljcy5cblxuV2FpdCBhIHNlY29uZOKApiBgdmV0aGA/IFZpcnR1YWwgRXRoZXJuZXQ/IEkgY291bGQgaGF2ZSBzd29ybiB0aGF0IEkgZGlkbid0IHRoaW5rIGB2ZXRoYCBzdXBwb3J0ZWQgQUZfWERQIHplcm8tY29weS4gSSBjb3VsZCBiZSBtaXN0YWtlbiwgdGhvdWdoLiBNYXliZSB0aGluZ3MgaGF2ZSBjaGFuZ2VkLCBvciBteSBtZW1vcnkncyBzbGlwcGluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIExldCdzIG1ha2Ugc3VyZSBpdCdzIGNvcnJlY3QuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29kZS4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvdmV0aC5jYCBhbmQgY29uZmlybSB0aGF0IGl0IHJlYWxseSBzdXBwb3J0cyBBRl9YRFAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjIxLjY1NjcxOTYyNFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1NDYyMDE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9wb29sXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6MjIuMTAyMTkyMTlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MDY3ODQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIHZldGggYW5kIFhTSyBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIFZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLCBgdmV0aGAsIHdvdWxkIGxldmVyYWdlIHRoZSBgeHNrX2J1ZmZfcG9vbGAgZm9yIGl0cyB6ZXJvLWNvcHkgY2FwYWJpbGl0aWVzLiBCdXQgc29tZXRoaW5nJ3MgbmlnZ2xpbmcgYXQgbWUuLi4gaXMgdGhhdCBhY3R1YWxseSAqdHJ1ZSo/IExldCBtZSBjbGFyaWZ5IHRoYXQgbWVudGFsIG1vZGVsLiBEb2VzIGB2ZXRoYCBhY3R1YWxseSAqdXNlKiBgeHNrX2J1ZmZfcG9vbGAgZGlyZWN0bHk/IE9yIHBlcmhhcHMsIGNvdWxkIGl0IGJlIGEgbW9yZSBpbmRpcmVjdCBjb25uZWN0aW9uLCBvciBwb3NzaWJseSwgemVyby1jb3B5IGlzIGFjaGlldmVkIGluIGEgZGlmZmVyZW50IHdheSBlbnRpcmVseT8gSG1tbS5cblxuUmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgdG8gY2xhcmlmeSB0aGlzLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3ZldGguY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIGFuZCBzaGVkIHNvbWUgbGlnaHQgb24gaG93IGB2ZXRoYCBoYW5kbGVzIFhEUCBzb2NrZXRzIGFuZCB6ZXJvLWNvcHkgaWYgaXQgKmlzKiB1c2luZyBpdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk2ODQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToyNS44OTI4NzMxNjlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODM3NTA4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToyNS45NDU3MTY3NDdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MTU1NjY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBYRFAvdmV0aCBSZWxhdGlvbnNoaXAqKlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIHZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlLCBgdmV0aGAsIGhhZCBzb21lIGludGVncmF0aW9uIHdpdGggWERQLCBwZXJoYXBzIHRocm91Z2ggYHhza2Agc29ja2V0cywgYnV0IG5vdyB0aGF0IEknbSB0aGlua2luZyBhYm91dCBpdCwgdGhhdCBkb2Vzbid0IGZlZWwgcmlnaHQuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgdmV0aCBkcml2ZXIuIFJpZ2h0LCBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3ZldGguY2AgdG8gc2VlIGhvdyBgdmV0aGAgYWN0dWFsbHkgaW50ZXJhY3RzLCBpZiBhdCBhbGwsIHdpdGggWERQJ3MgY2FwYWJpbGl0aWVzLiBUaGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheSB0byBjaGVjayB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDAwMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjI5LjgyNzI3NjU3MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NzM0MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgzNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvdmV0aC5jLTIxLSNpbmNsdWRlIFxcdTAwM2NuZXQveGZybS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3ZldGguYzoyMjojaW5jbHVkZSBcXHUwMDNjbmV0L3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3ZldGguYy0yMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvdmV0aC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTQzPXN0cnVjdCB2ZXRoX3N0YXRzIHtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDQtXFx0dTY0XFx0cnhfZHJvcHM7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ1OlxcdC8qIHhkcCAqL1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjpcXHR1NjRcXHR4ZHBfcGFja2V0cztcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDc6XFx0dTY0XFx0eGRwX2J5dGVzO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0ODpcXHR1NjRcXHR4ZHBfcmVkaXJlY3Q7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ5OlxcdHU2NFxcdHhkcF9kcm9wcztcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTA6XFx0dTY0XFx0eGRwX3R4O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MTpcXHR1NjRcXHR4ZHBfdHhfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MjpcXHR1NjRcXHRwZWVyX3RxX3hkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzpcXHR1NjRcXHRwZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz02MT1zdHJ1Y3QgdmV0aF9ycSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjYyOlxcdHN0cnVjdCBuYXBpX3N0cnVjdFxcdHhkcF9uYXBpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2MzpcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgX19yY3UgKm5hcGk7IC8qIHBvaW50cyB0byB4ZHBfbmFwaSB3aGVuIHRoZSBsYXR0ZXIgaXMgaW5pdGlhbGl6ZWQgKi9cXG5kcml2ZXJzL25ldC92ZXRoLmMtNjQtXFx0c3RydWN0IG5ldF9kZXZpY2VcXHQqZGV2O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NTpcXHRzdHJ1Y3QgYnBmX3Byb2cgX19yY3VcXHQqeGRwX3Byb2c7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY2OlxcdHN0cnVjdCB4ZHBfbWVtX2luZm9cXHR4ZHBfbWVtO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02Ny1cXHRzdHJ1Y3QgdmV0aF9ycV9zdGF0c1xcdHN0YXRzO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02OC1cXHRib29sXFx0XFx0XFx0cnhfbm90aWZ5X21hc2tlZDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6Njk6XFx0c3RydWN0IHB0cl9yaW5nXFx0XFx0eGRwX3Jpbmc7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjcwOlxcdHN0cnVjdCB4ZHBfcnhxX2luZm9cXHR4ZHBfcnhxO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03MS1cXHRzdHJ1Y3QgcGFnZV9wb29sXFx0KnBhZ2VfcG9vbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz03ND1zdHJ1Y3QgdmV0aF9wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03Ni1cXHRhdG9taWM2NF90XFx0XFx0ZHJvcHBlZDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6Nzc6XFx0c3RydWN0IGJwZl9wcm9nXFx0XFx0Kl94ZHBfcHJvZztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzgtXFx0c3RydWN0IHZldGhfcnFcXHRcXHQqcnE7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtODEtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjgyOnN0cnVjdCB2ZXRoX3hkcF90eF9icSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzOlxcdHN0cnVjdCB4ZHBfZnJhbWUgKnFbVkVUSF9YRFBfVFhfQlVMS19TSVpFXTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQtXFx0dW5zaWduZWQgaW50IGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTk4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3JxX3N0YXRzX2Rlc2NbXSA9IHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTk6XFx0eyBcXFwieGRwX3BhY2tldHNcXFwiLFxcdFZFVEhfUlFfU1RBVCh4ZHBfcGFja2V0cykgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmM6MTAwOlxcdHsgXFxcInhkcF9ieXRlc1xcXCIsXFx0XFx0VkVUSF9SUV9TVEFUKHhkcF9ieXRlcykgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmMtMTAxLVxcdHsgXFxcImRyb3BzXFxcIixcXHRcXHRWRVRIX1JRX1NUQVQocnhfZHJvcHMpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwMjpcXHR7IFxcXCJ4ZHBfcmVkaXJlY3RcXFwiLFxcdFZFVEhfUlFfU1RBVCh4ZHBfcmVkaXJlY3QpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwMzpcXHR7IFxcXCJ4ZHBfZHJvcHNcXFwiLFxcdFxcdFZFVEhfUlFfU1RBVCh4ZHBfZHJvcHMpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwNDpcXHR7IFxcXCJ4ZHBfdHhcXFwiLFxcdFxcdFZFVEhfUlFfU1RBVCh4ZHBfdHgpIH0sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjEwNTpcXHR7IFxcXCJ4ZHBfdHhfZXJyb3JzXFxcIixcXHRWRVRIX1JRX1NUQVQoeGRwX3R4X2VycikgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmMtMTA2LX07XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9MTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmV0aF9xX3N0YXRfZGVzYyB2ZXRoX3RxX3N0YXRzX2Rlc2NbXSA9IHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MTExOlxcdHsgXFxcInhkcF94bWl0XFxcIixcXHRcXHRWRVRIX1JRX1NUQVQocGVlcl90cV94ZHBfeG1pdCkgfSxcXG5kcml2ZXJzL25ldC92ZXRoLmM6MTEyOlxcdHsgXFxcInhkcF94bWl0X2Vycm9yc1xcXCIsXFx0VkVUSF9SUV9TVEFUKHBlZXJfdHFfeGRwX3htaXRfZXJyKSB9LFxcbmRyaXZlcnMvbmV0L3ZldGguYy0xMTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0xMTc9c3RhdGljIHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtMTIyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzoxMjM6c3RydWN0IHZldGhfeGRwX2J1ZmYge1xcbmRyaXZlcnMvbmV0L3ZldGguYzoxMjQ6XFx0c3RydWN0IHhkcF9idWZmIHhkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMTI1LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9MjY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmV0aF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0yNzctXFxuZHJpdmVycy9uZXQvdmV0aC5jOjI3ODpzdGF0aWMgYm9vbCB2ZXRoX2lzX3hkcF9mcmFtZSh2b2lkICpwdHIpXFxuZHJpdmVycy9uZXQvdmV0aC5jLTI3OS17XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzoyODM6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfcHRyX3RvX3hkcCh2b2lkICpwdHIpXFxuZHJpdmVycy9uZXQvdmV0aC5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtMjg3LVxcbmRyaXZlcnMvbmV0L3ZldGguYzoyODg6c3RhdGljIHZvaWQgKnZldGhfeGRwX3RvX3B0cihzdHJ1Y3QgeGRwX2ZyYW1lICp4ZHApXFxuZHJpdmVycy9uZXQvdmV0aC5jLTI4OS17XFxuZHJpdmVycy9uZXQvdmV0aC5jOjI5MDpcXHRyZXR1cm4gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpeGRwIHwgVkVUSF9YRFBfRkxBRyk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTI5MS19XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9MjkzPXN0YXRpYyB2b2lkIHZldGhfcHRyX2ZyZWUodm9pZCAqcHRyKVxcbmRyaXZlcnMvbmV0L3ZldGguYy0yOTQte1xcbmRyaXZlcnMvbmV0L3ZldGguYzoyOTU6XFx0aWYgKHZldGhfaXNfeGRwX2ZyYW1lKHB0cikpXFxuZHJpdmVycy9uZXQvdmV0aC5jOjI5NjpcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKHZldGhfcHRyX3RvX3hkcChwdHIpKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMjk3LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMDAtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjMwMTpzdGF0aWMgdm9pZCBfX3ZldGhfeGRwX2ZsdXNoKHN0cnVjdCB2ZXRoX3JxICpycSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMDUtXFx0aWYgKCFSRUFEX09OQ0UocnEtXFx1MDAzZXJ4X25vdGlmeV9tYXNrZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvdmV0aC5jOjMwNjpcXHQgICAgbmFwaV9zY2hlZHVsZV9wcmVwKFxcdTAwMjZycS1cXHUwMDNleGRwX25hcGkpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTMwNy1cXHRcXHRXUklURV9PTkNFKHJxLVxcdTAwM2VyeF9ub3RpZnlfbWFza2VkLCB0cnVlKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MzA4OlxcdFxcdF9fbmFwaV9zY2hlZHVsZShcXHUwMDI2cnEtXFx1MDAzZXhkcF9uYXBpKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzA5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMTEtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjMxMjpzdGF0aWMgaW50IHZldGhfeGRwX3J4KHN0cnVjdCB2ZXRoX3JxICpycSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzEzLXtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MzE0OlxcdGlmICh1bmxpa2VseShwdHJfcmluZ19wcm9kdWNlKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcsIHNrYikpKVxcbmRyaXZlcnMvbmV0L3ZldGguYy0zMTUtXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZOyAvKiBzaWduYWwgcWRpc2MgbGF5ZXIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0zMjA9c3RhdGljIGludCB2ZXRoX2ZvcndhcmRfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjMyMTpcXHRcXHRcXHQgICAgc3RydWN0IHZldGhfcnEgKnJxLCBib29sIHhkcClcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzIyLXtcXG5kcml2ZXJzL25ldC92ZXRoLmM6MzIzOlxcdHJldHVybiBfX2Rldl9mb3J3YXJkX3NrYihkZXYsIHNrYikgPzogeGRwID9cXG5kcml2ZXJzL25ldC92ZXRoLmM6MzI0OlxcdFxcdHZldGhfeGRwX3J4KHJxLCBza2IpIDpcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzI1LVxcdFxcdF9fbmV0aWZfcngoc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0zNDc9c3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTM4NC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvdmV0aC5jOjM4NTpcXHRcXHRcXHRfX3ZldGhfeGRwX2ZsdXNoKHJxKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtMzg2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTQwMy1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6NDA0OlxcdFxcdF9fdmV0aF94ZHBfZmx1c2gocnEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy00MDUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmM9NDIwPXN0YXRpYyB2b2lkIHZldGhfc3RhdHNfcngoc3RydWN0IHZldGhfc3RhdHMgKnJlc3VsdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy00MjQtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjQyNTpcXHRyZXN1bHQtXFx1MDAzZXBlZXJfdHFfeGRwX3htaXRfZXJyID0gMDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDI2OlxcdHJlc3VsdC1cXHUwMDNleGRwX3BhY2tldHMgPSAwO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0Mjc6XFx0cmVzdWx0LVxcdTAwM2V4ZHBfdHhfZXJyID0gMDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDI4OlxcdHJlc3VsdC1cXHUwMDNleGRwX2J5dGVzID0gMDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDI5LVxcdHJlc3VsdC1cXHUwMDNlcnhfZHJvcHMgPSAwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy00MzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQzMTpcXHRcXHR1NjQgcGFja2V0cywgYnl0ZXMsIGRyb3BzLCB4ZHBfdHhfZXJyLCBwZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDMyLVxcdFxcdHN0cnVjdCB2ZXRoX3JxX3N0YXRzICpzdGF0cyA9IFxcdTAwMjZwcml2LVxcdTAwM2VycVtpXS5zdGF0cztcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy00MzYtXFx0XFx0XFx0c3RhcnQgPSB1NjRfc3RhdHNfZmV0Y2hfYmVnaW4oXFx1MDAyNnN0YXRzLVxcdTAwM2VzeW5jcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQzNzpcXHRcXHRcXHRwZWVyX3RxX3hkcF94bWl0X2VyciA9IHN0YXRzLVxcdTAwM2V2cy5wZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDM4OlxcdFxcdFxcdHhkcF90eF9lcnIgPSBzdGF0cy1cXHUwMDNldnMueGRwX3R4X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDM5OlxcdFxcdFxcdHBhY2tldHMgPSBzdGF0cy1cXHUwMDNldnMueGRwX3BhY2tldHM7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ0MDpcXHRcXHRcXHRieXRlcyA9IHN0YXRzLVxcdTAwM2V2cy54ZHBfYnl0ZXM7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTQ0MS1cXHRcXHRcXHRkcm9wcyA9IHN0YXRzLVxcdTAwM2V2cy5yeF9kcm9wcztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDQyLVxcdFxcdH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeShcXHUwMDI2c3RhdHMtXFx1MDAzZXN5bmNwLCBzdGFydCkpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDM6XFx0XFx0cmVzdWx0LVxcdTAwM2VwZWVyX3RxX3hkcF94bWl0X2VyciArPSBwZWVyX3RxX3hkcF94bWl0X2VycjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDQ0OlxcdFxcdHJlc3VsdC1cXHUwMDNleGRwX3R4X2VyciArPSB4ZHBfdHhfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDU6XFx0XFx0cmVzdWx0LVxcdTAwM2V4ZHBfcGFja2V0cyArPSBwYWNrZXRzO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NDY6XFx0XFx0cmVzdWx0LVxcdTAwM2V4ZHBfYnl0ZXMgKz0gYnl0ZXM7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTQ0Ny1cXHRcXHRyZXN1bHQtXFx1MDAzZXJ4X2Ryb3BzICs9IGRyb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jPTQ1MT1zdGF0aWMgdm9pZCB2ZXRoX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNDYxLVxcdHZldGhfc3RhdHNfcngoXFx1MDAyNnJ4LCBkZXYpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjI6XFx0dG90LVxcdTAwM2V0eF9kcm9wcGVkICs9IHJ4LnhkcF90eF9lcnI7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ2MzpcXHR0b3QtXFx1MDAzZXJ4X2Ryb3BwZWQgPSByeC5yeF9kcm9wcyArIHJ4LnBlZXJfdHFfeGRwX3htaXRfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0NjQ6XFx0dG90LVxcdTAwM2VyeF9ieXRlcyArPSByeC54ZHBfYnl0ZXM7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ2NTpcXHR0b3QtXFx1MDAzZXJ4X3BhY2tldHMgKz0gcngueGRwX3BhY2tldHM7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy00NzYtXFx0XFx0dmV0aF9zdGF0c19yeChcXHUwMDI2cngsIHBlZXIpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0Nzc6XFx0XFx0dG90LVxcdTAwM2V0eF9kcm9wcGVkICs9IHJ4LnBlZXJfdHFfeGRwX3htaXRfZXJyO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo0Nzg6XFx0XFx0dG90LVxcdTAwM2VyeF9kcm9wcGVkICs9IHJ4LnhkcF90eF9lcnI7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjQ3OTpcXHRcXHR0b3QtXFx1MDAzZXR4X2J5dGVzICs9IHJ4LnhkcF9ieXRlcztcXG5kcml2ZXJzL25ldC92ZXRoLmM6NDgwOlxcdFxcdHRvdC1cXHUwMDNldHhfcGFja2V0cyArPSByeC54ZHBfcGFja2V0cztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNDgxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz00OTU9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICp2ZXRoX3BlZXJfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTAyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MDM6c3RhdGljIGludCB2ZXRoX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuLFxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MDQ6XFx0XFx0XFx0IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUwNS1cXHRcXHRcXHQgdTMyIGZsYWdzLCBib29sIG5kb194bWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUyMy1cXHQvKiBUaGUgbmFwaSBwb2ludGVyIGlzIHNldCBpZiBOQVBJIGlzIGVuYWJsZWQsIHdoaWNoIGVuc3VyZXMgdGhhdFxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MjQ6XFx0ICogeGRwX3JpbmcgaXMgaW5pdGlhbGl6ZWQgb24gcmVjZWl2ZSBzaWRlIGFuZCB0aGUgcGVlciBkZXZpY2UgaXMgdXAuXFxuZHJpdmVycy9uZXQvdmV0aC5jLTUyNS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01MzAtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjUzMTpcXHRzcGluX2xvY2soXFx1MDAyNnJxLVxcdTAwM2V4ZHBfcmluZy5wcm9kdWNlcl9sb2NrKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTMyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuOyBpKyspIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTMzOlxcdFxcdHN0cnVjdCB4ZHBfZnJhbWUgKmZyYW1lID0gZnJhbWVzW2ldO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzQ6XFx0XFx0dm9pZCAqcHRyID0gdmV0aF94ZHBfdG9fcHRyKGZyYW1lKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTM1LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1MzY6XFx0XFx0aWYgKHVubGlrZWx5KHhkcF9nZXRfZnJhbWVfbGVuKGZyYW1lKSBcXHUwMDNlIG1heF9sZW4gfHxcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTM3OlxcdFxcdFxcdCAgICAgX19wdHJfcmluZ19wcm9kdWNlKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcsIHB0cikpKVxcbmRyaXZlcnMvbmV0L3ZldGguYy01MzgtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQwLVxcdH1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NTQxOlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcucHJvZHVjZXJfbG9jayk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU0Mi1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTQzLVxcdGlmIChmbGFncyBcXHUwMDI2IFhEUF9YTUlUX0ZMVVNIKVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1NDQ6XFx0XFx0X192ZXRoX3hkcF9mbHVzaChycSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NDgtXFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTQ5OlxcdFxcdHJxLVxcdTAwM2VzdGF0cy52cy5wZWVyX3RxX3hkcF94bWl0ICs9IG54bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYzo1NTA6XFx0XFx0cnEtXFx1MDAzZXN0YXRzLnZzLnBlZXJfdHFfeGRwX3htaXRfZXJyICs9IG4gLSBueG1pdDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTUxLVxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZycS1cXHUwMDNlc3RhdHMuc3luY3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTU1OS1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NTYwOnN0YXRpYyBpbnQgdmV0aF9uZG9feGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG4sXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2MTpcXHRcXHRcXHQgICAgIHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsIHUzMiBmbGFncylcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NjQtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU2NTpcXHRlcnIgPSB2ZXRoX3hkcF94bWl0KGRldiwgbiwgZnJhbWVzLCBmbGFncywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU2Ni1cXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTU3NC1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NTc1OnN0YXRpYyB2b2lkIHZldGhfeGRwX2ZsdXNoX2JxKHN0cnVjdCB2ZXRoX3JxICpycSwgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01NzgtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjU3OTpcXHRzZW50ID0gdmV0aF94ZHBfeG1pdChycS1cXHUwMDNlZGV2LCBicS1cXHUwMDNlY291bnQsIGJxLVxcdTAwM2VxLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTU4MC1cXHRpZiAoc2VudCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01ODUtXFx0Zm9yIChpID0gc2VudDsgdW5saWtlbHkoaSBcXHUwMDNjIGJxLVxcdTAwM2Vjb3VudCk7IGkrKylcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTg2OlxcdFxcdHhkcF9yZXR1cm5fZnJhbWUoYnEtXFx1MDAzZXFbaV0pO1xcbmRyaXZlcnMvbmV0L3ZldGguYy01ODctXFxuZHJpdmVycy9uZXQvdmV0aC5jLTU4OC1cXHRkcm9wcyA9IGJxLVxcdTAwM2Vjb3VudCAtIHNlbnQ7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjU4OTpcXHR0cmFjZV94ZHBfYnVsa190eChycS1cXHUwMDNlZGV2LCBzZW50LCBkcm9wcywgZXJyKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNTkwLVxcbmRyaXZlcnMvbmV0L3ZldGguYy01OTEtXFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTkyOlxcdHJxLVxcdTAwM2VzdGF0cy52cy54ZHBfdHggKz0gc2VudDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NTkzOlxcdHJxLVxcdTAwM2VzdGF0cy52cy54ZHBfdHhfZXJyICs9IGRyb3BzO1xcbmRyaXZlcnMvbmV0L3ZldGguYy01OTQtXFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNnJxLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNTk4LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo1OTk6c3RhdGljIHZvaWQgdmV0aF94ZHBfZmx1c2goc3RydWN0IHZldGhfcnEgKnJxLCBzdHJ1Y3QgdmV0aF94ZHBfdHhfYnEgKmJxKVxcbmRyaXZlcnMvbmV0L3ZldGguYy02MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYwNS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjYwNjpcXHR2ZXRoX3hkcF9mbHVzaF9icShycSwgYnEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02MDctXFx0cmN2ID0gcmN1X2RlcmVmZXJlbmNlKHByaXYtXFx1MDAzZXBlZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYxMi1cXHRyY3ZfcnEgPSBcXHUwMDI2cmN2X3ByaXYtXFx1MDAzZXJxW3ZldGhfc2VsZWN0X3J4cShyY3YpXTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjEzOlxcdC8qIHhkcF9yaW5nIGlzIGluaXRpYWxpemVkIG9uIHJlY2VpdmUgc2lkZT8gKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6NjE0OlxcdGlmICh1bmxpa2VseSghcmN1X2FjY2Vzc19wb2ludGVyKHJjdl9ycS1cXHUwMDNleGRwX3Byb2cpKSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjE1LVxcdFxcdGdvdG8gb3V0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy02MTYtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjYxNzpcXHRfX3ZldGhfeGRwX2ZsdXNoKHJjdl9ycSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTYxOC1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNjIxLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjI6c3RhdGljIGludCB2ZXRoX3hkcF90eChzdHJ1Y3QgdmV0aF9ycSAqcnEsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L3ZldGguYzo2MjM6XFx0XFx0ICAgICAgIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEpXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYyNC17XFxuZHJpdmVycy9uZXQvdmV0aC5jOjYyNTpcXHRzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSA9IHhkcF9jb252ZXJ0X2J1ZmZfdG9fZnJhbWUoeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjI2LVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTYzMC1cXHRpZiAodW5saWtlbHkoYnEtXFx1MDAzZWNvdW50ID09IFZFVEhfWERQX1RYX0JVTEtfU0laRSkpXFxuZHJpdmVycy9uZXQvdmV0aC5jOjYzMTpcXHRcXHR2ZXRoX3hkcF9mbHVzaF9icShycSwgYnEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02MzItXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNjM3LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2Mzg6c3RhdGljIHN0cnVjdCB4ZHBfZnJhbWUgKnZldGhfeGRwX3Jjdl9vbmUoc3RydWN0IHZldGhfcnEgKnJxLFxcbmRyaXZlcnMvbmV0L3ZldGguYzo2Mzk6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgeGRwX2ZyYW1lICpmcmFtZSxcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjQwOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZldGhfeGRwX3R4X2JxICpicSxcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjQxLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L3ZldGguYy02NDIte1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDM6XFx0c3RydWN0IHhkcF9mcmFtZSBvcmlnX2ZyYW1lO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDQ6XFx0c3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZztcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjQ1LVxcbmRyaXZlcnMvbmV0L3ZldGguYy02NDYtXFx0cmN1X3JlYWRfbG9jaygpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NDc6XFx0eGRwX3Byb2cgPSByY3VfZGVyZWZlcmVuY2UocnEtXFx1MDAzZXhkcF9wcm9nKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjQ4OlxcdGlmIChsaWtlbHkoeGRwX3Byb2cpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY0OTpcXHRcXHRzdHJ1Y3QgdmV0aF94ZHBfYnVmZiB2eGJ1ZjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjUwOlxcdFxcdHN0cnVjdCB4ZHBfYnVmZiAqeGRwID0gXFx1MDAyNnZ4YnVmLnhkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjUxLVxcdFxcdHUzMiBhY3Q7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY1Mi1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NjUzOlxcdFxcdHhkcF9jb252ZXJ0X2ZyYW1lX3RvX2J1ZmYoZnJhbWUsIHhkcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY1NDpcXHRcXHR4ZHAtXFx1MDAzZXJ4cSA9IFxcdTAwMjZycS1cXHUwMDNleGRwX3J4cTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjU1LVxcdFxcdHZ4YnVmLnNrYiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY1Ni1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NjU3OlxcdFxcdGFjdCA9IGJwZl9wcm9nX3J1bl94ZHAoeGRwX3Byb2csIHhkcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy02NjAtXFx0XFx0Y2FzZSBYRFBfUEFTUzpcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjYxOlxcdFxcdFxcdGlmICh4ZHBfdXBkYXRlX2ZyYW1lX2Zyb21fYnVmZih4ZHAsIGZyYW1lKSlcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjYyOlxcdFxcdFxcdFxcdGdvdG8gZXJyX3hkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjYzLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTY2NS1cXHRcXHRcXHRvcmlnX2ZyYW1lID0gKmZyYW1lO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NjY6XFx0XFx0XFx0eGRwLVxcdTAwM2VyeHEtXFx1MDAzZW1lbS50eXBlID0gZnJhbWUtXFx1MDAzZW1lbV90eXBlO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2Njc6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHZldGhfeGRwX3R4KHJxLCB4ZHAsIGJxKSBcXHUwMDNjIDApKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY2ODpcXHRcXHRcXHRcXHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVxcdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NjktXFx0XFx0XFx0XFx0ZnJhbWUgPSBcXHUwMDI2b3JpZ19mcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjcwLVxcdFxcdFxcdFxcdHN0YXRzLVxcdTAwM2VyeF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2NzE6XFx0XFx0XFx0XFx0Z290byBlcnJfeGRwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NzItXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2NzM6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF90eCsrO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NzQtXFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY3NTpcXHRcXHRcXHRnb3RvIHhkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy02NzYtXFx0XFx0Y2FzZSBYRFBfUkVESVJFQ1Q6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY3Ny1cXHRcXHRcXHRvcmlnX2ZyYW1lID0gKmZyYW1lO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2Nzg6XFx0XFx0XFx0eGRwLVxcdTAwM2VyeHEtXFx1MDAzZW1lbS50eXBlID0gZnJhbWUtXFx1MDAzZW1lbV90eXBlO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2Nzk6XFx0XFx0XFx0aWYgKHhkcF9kb19yZWRpcmVjdChycS1cXHUwMDNlZGV2LCB4ZHAsIHhkcF9wcm9nKSkge1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODAtXFx0XFx0XFx0XFx0ZnJhbWUgPSBcXHUwMDI2b3JpZ19mcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjgxLVxcdFxcdFxcdFxcdHN0YXRzLVxcdTAwM2VyeF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo2ODI6XFx0XFx0XFx0XFx0Z290byBlcnJfeGRwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODMtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3ZldGguYzo2ODQ6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9yZWRpcmVjdCsrO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODUtXFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY4NjpcXHRcXHRcXHRnb3RvIHhkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy02ODctXFx0XFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC92ZXRoLmM6Njg4OlxcdFxcdFxcdGJwZl93YXJuX2ludmFsaWRfeGRwX2FjdGlvbihycS1cXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjg5LVxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbmRyaXZlcnMvbmV0L3ZldGguYy02OTAtXFx0XFx0Y2FzZSBYRFBfQUJPUlRFRDpcXG5kcml2ZXJzL25ldC92ZXRoLmM6NjkxOlxcdFxcdFxcdHRyYWNlX3hkcF9leGNlcHRpb24ocnEtXFx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY5Mi1cXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNjkzLVxcdFxcdGNhc2UgWERQX0RST1A6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY5NDpcXHRcXHRcXHRzdGF0cy1cXHUwMDNleGRwX2Ryb3BzKys7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjY5NTpcXHRcXHRcXHRnb3RvIGVycl94ZHA7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTY5Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzAwLVxcdHJldHVybiBmcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzAxOmVycl94ZHA6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcwMi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzAzOlxcdHhkcF9yZXR1cm5fZnJhbWUoZnJhbWUpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3MDQ6eGRwX3htaXQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcwNS1cXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MDgtLyogZnJhbWVzIGFycmF5IGNvbnRhaW5zIFZFVEhfWERQX0JBVENIIGF0IG1vc3QgKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6NzA5OnN0YXRpYyB2b2lkIHZldGhfeGRwX3Jjdl9idWxrX3NrYihzdHJ1Y3QgdmV0aF9ycSAqcnEsIHZvaWQgKipmcmFtZXMsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxMDpcXHRcXHRcXHRcXHQgIGludCBuX3hkcGYsIHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTcxMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCB2ZXRoX3N0YXRzICpzdGF0cylcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MTUtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxNjpcXHRpZiAodW5saWtlbHkoIW5hcGlfc2tiX2NhY2hlX2dldF9idWxrKHNrYnMsIG5feGRwZikpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxNzpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl94ZHBmOyBpKyspXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxODpcXHRcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKGZyYW1lc1tpXSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjcxOTpcXHRcXHRzdGF0cy1cXHUwMDNlcnhfZHJvcHMgKz0gbl94ZHBmO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03MjAtXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzIzLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo3MjQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5feGRwZjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyNS1cXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tic1tpXTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzI2LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo3Mjc6XFx0XFx0c2tiID0gX194ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWUoZnJhbWVzW2ldLCBza2IsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOC1cXHRcXHRcXHRcXHRcXHRcXHQgcnEtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOS1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3MzA6XFx0XFx0XFx0eGRwX3JldHVybl9mcmFtZShmcmFtZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03MzEtXFx0XFx0XFx0c3RhdHMtXFx1MDAzZXJ4X2Ryb3BzKys7XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzMzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NzM0OlxcdFxcdG5hcGlfZ3JvX3JlY2VpdmUoXFx1MDAyNnJxLVxcdTAwM2V4ZHBfbmFwaSwgc2tiKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzM1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MzctXFxuZHJpdmVycy9uZXQvdmV0aC5jOjczODpzdGF0aWMgdm9pZCB2ZXRoX3hkcF9nZXQoc3RydWN0IHhkcF9idWZmICp4ZHApXFxuZHJpdmVycy9uZXQvdmV0aC5jLTczOS17XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc0MDpcXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvICpzaW5mbyA9IHhkcF9nZXRfc2hhcmVkX2luZm9fZnJvbV9idWZmKHhkcCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTc0MS1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo3NDM6XFx0Z2V0X3BhZ2UodmlydF90b19wYWdlKHhkcC1cXHUwMDNlZGF0YSkpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3NDQ6XFx0aWYgKGxpa2VseSgheGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpKVxcbmRyaXZlcnMvbmV0L3ZldGguYy03NDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTc1MC1cXG5kcml2ZXJzL25ldC92ZXRoLmM6NzUxOnN0YXRpYyBpbnQgdmV0aF9jb252ZXJ0X3NrYl90b194ZHBfYnVmZihzdHJ1Y3QgdmV0aF9ycSAqcnEsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjc1MjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzUzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICoqcHNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03NjktXFx0ZnJhbWVfc3ogKz0gU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzcwOlxcdHhkcF9pbml0X2J1ZmYoeGRwLCBmcmFtZV9zeiwgXFx1MDAyNnJxLVxcdTAwM2V4ZHBfcnhxKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzcxOlxcdHhkcF9wcmVwYXJlX2J1ZmYoeGRwLCBza2ItXFx1MDAzZWhlYWQsIHNrYl9oZWFkcm9vbShza2IpLFxcbmRyaXZlcnMvbmV0L3ZldGguYy03NzItXFx0XFx0XFx0IHNrYl9oZWFkbGVuKHNrYiksIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTc3NC1cXHRpZiAoc2tiX3NoaW5mbyhza2IpLVxcdTAwM2Vucl9mcmFncykge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3NzU6XFx0XFx0c2tiX3NoaW5mbyhza2IpLVxcdTAwM2V4ZHBfZnJhZ3Nfc2l6ZSA9IHNrYi1cXHUwMDNlZGF0YV9sZW47XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc3NjpcXHRcXHR4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxhZyh4ZHApO1xcbmRyaXZlcnMvbmV0L3ZldGguYy03NzctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6Nzc4OlxcdFxcdHhkcF9idWZmX2NsZWFyX2ZyYWdzX2ZsYWcoeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzc5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03ODktXFxuZHJpdmVycy9uZXQvdmV0aC5jOjc5MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZldGhfeGRwX3Jjdl9za2Ioc3RydWN0IHZldGhfcnEgKnJxLFxcbmRyaXZlcnMvbmV0L3ZldGguYy03OTEtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC92ZXRoLmM6NzkyOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB2ZXRoX3hkcF90eF9icSAqYnEsXFxuZHJpdmVycy9uZXQvdmV0aC5jLTc5My1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgdmV0aF9zdGF0cyAqc3RhdHMpXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtNzk1LVxcdHZvaWQgKm9yaWdfZGF0YSwgKm9yaWdfZGF0YV9lbmQ7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc5NjpcXHRzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo3OTc6XFx0c3RydWN0IHZldGhfeGRwX2J1ZmYgdnhidWY7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjc5ODpcXHRzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCA9IFxcdTAwMjZ2eGJ1Zi54ZHA7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTc5OS1cXHR1MzIgYWN0LCBtZXRhbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTgwNC1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgwNTpcXHR4ZHBfcHJvZyA9IHJjdV9kZXJlZmVyZW5jZShycS1cXHUwMDNleGRwX3Byb2cpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4MDY6XFx0aWYgKHVubGlrZWx5KCF4ZHBfcHJvZykpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODA3LVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTgxMS1cXHRfX3NrYl9wdXNoKHNrYiwgc2tiLVxcdTAwM2VkYXRhIC0gc2tiX21hY19oZWFkZXIoc2tiKSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgxMjpcXHRpZiAodmV0aF9jb252ZXJ0X3NrYl90b194ZHBfYnVmZihycSwgeGRwLCBcXHUwMDI2c2tiKSlcXG5kcml2ZXJzL25ldC92ZXRoLmMtODEzLVxcdFxcdGdvdG8gZHJvcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04MTUtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjgxNjpcXHRvcmlnX2RhdGEgPSB4ZHAtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgxNzpcXHRvcmlnX2RhdGFfZW5kID0geGRwLVxcdTAwM2VkYXRhX2VuZDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODE4LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo4MTk6XFx0YWN0ID0gYnBmX3Byb2dfcnVuX3hkcCh4ZHBfcHJvZywgeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODIwLVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTgyNC1cXHRjYXNlIFhEUF9UWDpcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODI1OlxcdFxcdHZldGhfeGRwX2dldCh4ZHApO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MjYtXFx0XFx0Y29uc3VtZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODI3OlxcdFxcdHhkcC1cXHUwMDNlcnhxLVxcdTAwM2VtZW0gPSBycS1cXHUwMDNleGRwX21lbTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODI4OlxcdFxcdGlmICh1bmxpa2VseSh2ZXRoX3hkcF90eChycSwgeGRwLCBicSkgXFx1MDAzYyAwKSkge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4Mjk6XFx0XFx0XFx0dHJhY2VfeGRwX2V4Y2VwdGlvbihycS1cXHUwMDNlZGV2LCB4ZHBfcHJvZywgYWN0KTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODMwLVxcdFxcdFxcdHN0YXRzLVxcdTAwM2VyeF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4MzE6XFx0XFx0XFx0Z290byBlcnJfeGRwO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MzItXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3ZldGguYzo4MzM6XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF90eCsrO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MzQtXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzNTpcXHRcXHRnb3RvIHhkcF94bWl0O1xcbmRyaXZlcnMvbmV0L3ZldGguYy04MzYtXFx0Y2FzZSBYRFBfUkVESVJFQ1Q6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzNzpcXHRcXHR2ZXRoX3hkcF9nZXQoeGRwKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODM4LVxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjgzOTpcXHRcXHR4ZHAtXFx1MDAzZXJ4cS1cXHUwMDNlbWVtID0gcnEtXFx1MDAzZXhkcF9tZW07XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg0MDpcXHRcXHRpZiAoeGRwX2RvX3JlZGlyZWN0KHJxLVxcdTAwM2VkZXYsIHhkcCwgeGRwX3Byb2cpKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg0MS1cXHRcXHRcXHRzdGF0cy1cXHUwMDNlcnhfZHJvcHMrKztcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODQyOlxcdFxcdFxcdGdvdG8gZXJyX3hkcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC92ZXRoLmM6ODQ0OlxcdFxcdHN0YXRzLVxcdTAwM2V4ZHBfcmVkaXJlY3QrKztcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQ1LVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4NDY6XFx0XFx0Z290byB4ZHBfeG1pdDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODQ3LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg0ODpcXHRcXHRicGZfd2Fybl9pbnZhbGlkX3hkcF9hY3Rpb24ocnEtXFx1MDAzZWRldiwgeGRwX3Byb2csIGFjdCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg0OS1cXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODUwLVxcdGNhc2UgWERQX0FCT1JURUQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg1MTpcXHRcXHR0cmFjZV94ZHBfZXhjZXB0aW9uKHJxLVxcdTAwM2VkZXYsIHhkcF9wcm9nLCBhY3QpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04NTItXFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg1My1cXHRjYXNlIFhEUF9EUk9QOlxcbmRyaXZlcnMvbmV0L3ZldGguYzo4NTQ6XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9kcm9wcysrO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4NTU6XFx0XFx0Z290byB4ZHBfZHJvcDtcXG5kcml2ZXJzL25ldC92ZXRoLmMtODU2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04NTgtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjg1OTpcXHQvKiBjaGVjayBpZiBicGZfeGRwX2FkanVzdF9oZWFkIHdhcyB1c2VkICovXFxuZHJpdmVycy9uZXQvdmV0aC5jOjg2MDpcXHRvZmYgPSBvcmlnX2RhdGEgLSB4ZHAtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg2MS1cXHRpZiAob2ZmIFxcdTAwM2UgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04NjgtXFx0LyogWERQIGZyYWcgbWV0YWRhdGEgKGUuZy4gbnJfZnJhZ3MpIGFyZSB1cGRhdGVkIGluIGVCUEYgaGVscGVyc1xcbmRyaXZlcnMvbmV0L3ZldGguYzo4Njk6XFx0ICogKGUuZy4gYnBmX3hkcF9hZGp1c3RfdGFpbCkuIFJlbW92ZSB0aGUgb2xkIGZyYWdtZW50IGNvbnRyaWJ1dGlvblxcbmRyaXZlcnMvbmV0L3ZldGguYy04NzAtXFx0ICogZnJvbSBza2ItXFx1MDAzZWxlbiBiZWZvcmUgdXBkYXRpbmcgZGF0YV9sZW4sIHRoZW4gYWRkIHRoZSBuZXcgb25lIGJhY2suXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtODcyLVxcdHNrYi1cXHUwMDNlbGVuIC09IHNrYi1cXHUwMDNlZGF0YV9sZW47XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg3MzpcXHRpZiAoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6ODc0OlxcdFxcdHNrYi1cXHUwMDNlZGF0YV9sZW4gPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZXhkcF9mcmFnc19zaXplO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04NzUtXFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gc2tiLVxcdTAwM2VkYXRhX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04ODAtXFx0LyogU3luY2hyb25pemUgdGhlIHNrYiB0YWlsIHdpdGggWERQJ3MgdXBkYXRlZCBsaW5lYXIgYXJlYS4gKi9cXG5kcml2ZXJzL25ldC92ZXRoLmM6ODgxOlxcdG9mZiA9IHhkcC1cXHUwMDNlZGF0YV9lbmQgLSBvcmlnX2RhdGFfZW5kO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04ODItXFx0aWYgKG9mZiAhPSAwKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg4MzpcXHRcXHRza2Jfc2V0X3RhaWxfcG9pbnRlcihza2IsIHhkcC1cXHUwMDNlZGF0YV9lbmQgLSB4ZHAtXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy04ODQtXFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gb2ZmOyAvKiBwb3NpdGl2ZSBvbiBncm93LCBuZWdhdGl2ZSBvbiBzaHJpbmsgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04ODgtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjg4OTpcXHRtZXRhbGVuID0geGRwLVxcdTAwM2VkYXRhIC0geGRwLVxcdTAwM2VkYXRhX21ldGE7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTg5MC1cXHRpZiAobWV0YWxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy04OTUtXFx0c3RhdHMtXFx1MDAzZXJ4X2Ryb3BzKys7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjg5Njp4ZHBfZHJvcDpcXG5kcml2ZXJzL25ldC92ZXRoLmMtODk3LVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTg5OS1cXHRyZXR1cm4gTlVMTDtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTAwOmVycl94ZHA6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkwMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTAyOlxcdHhkcF9yZXR1cm5fYnVmZih4ZHApO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MDM6eGRwX3htaXQ6XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkwNC1cXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy05MDYtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjkwNzpzdGF0aWMgaW50IHZldGhfeGRwX3JjdihzdHJ1Y3QgdmV0aF9ycSAqcnEsIGludCBidWRnZXQsXFxuZHJpdmVycy9uZXQvdmV0aC5jOjkwODpcXHRcXHRcXHRzdHJ1Y3QgdmV0aF94ZHBfdHhfYnEgKmJxLFxcbmRyaXZlcnMvbmV0L3ZldGguYy05MDktXFx0XFx0XFx0c3RydWN0IHZldGhfc3RhdHMgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L3ZldGguYy05MTAte1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTE6XFx0aW50IGksIGRvbmUgPSAwLCBuX3hkcGYgPSAwO1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTI6XFx0dm9pZCAqeGRwZltWRVRIX1hEUF9CQVRDSF07XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkxMy1cXG5kcml2ZXJzL25ldC92ZXRoLmMtOTE0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBidWRnZXQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MTU6XFx0XFx0dm9pZCAqcHRyID0gX19wdHJfcmluZ19jb25zdW1lKFxcdTAwMjZycS1cXHUwMDNleGRwX3JpbmcpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy05MTYtXFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtOTE5LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5MjA6XFx0XFx0aWYgKHZldGhfaXNfeGRwX2ZyYW1lKHB0cikpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTIxOlxcdFxcdFxcdC8qIG5kb194ZHBfeG1pdCAqL1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5MjI6XFx0XFx0XFx0c3RydWN0IHhkcF9mcmFtZSAqZnJhbWUgPSB2ZXRoX3B0cl90b194ZHAocHRyKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtOTIzLVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5MjQ6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9ieXRlcyArPSB4ZHBfZ2V0X2ZyYW1lX2xlbihmcmFtZSk7XFxuZHJpdmVycy9uZXQvdmV0aC5jOjkyNTpcXHRcXHRcXHRmcmFtZSA9IHZldGhfeGRwX3Jjdl9vbmUocnEsIGZyYW1lLCBicSwgc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy05MjYtXFx0XFx0XFx0aWYgKGZyYW1lKSB7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkyNy1cXHRcXHRcXHRcXHQvKiBYRFBfUEFTUyAqL1xcbmRyaXZlcnMvbmV0L3ZldGguYzo5Mjg6XFx0XFx0XFx0XFx0eGRwZltuX3hkcGYrK10gPSBmcmFtZTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTI5OlxcdFxcdFxcdFxcdGlmIChuX3hkcGYgPT0gVkVUSF9YRFBfQkFUQ0gpIHtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTMwOlxcdFxcdFxcdFxcdFxcdHZldGhfeGRwX3Jjdl9idWxrX3NrYihycSwgeGRwZiwgbl94ZHBmLFxcbmRyaXZlcnMvbmV0L3ZldGguYy05MzEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgYnEsIHN0YXRzKTtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTMyOlxcdFxcdFxcdFxcdFxcdG5feGRwZiA9IDA7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTkzMy1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC92ZXRoLmMtOTM4LVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5Mzk6XFx0XFx0XFx0c3RhdHMtXFx1MDAzZXhkcF9ieXRlcyArPSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC92ZXRoLmM6OTQwOlxcdFxcdFxcdHNrYiA9IHZldGhfeGRwX3Jjdl9za2IocnEsIHNrYiwgYnEsIHN0YXRzKTtcXG5kcml2ZXJzL25ldC92ZXRoLmMtOTQxLVxcdFxcdFxcdGlmIChza2IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy05NDQtXFx0XFx0XFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3ZldGguYzo5NDU6XFx0XFx0XFx0XFx0XFx0bmFwaV9ncm9fcmVjZWl2ZShcXHUwMDI2cnEtXFx1MDAzZXhkcF9uYXBpLCBza2IpO1xcbmRyaXZlcnMvbmV0L3ZldGguYy05NDYtXFx0XFx0XFx0fVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMToyOS44NzQyNTYyMTFaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY4NjY0OTU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBBRl9YRFAgWmVyby1Db3B5IEltcGFjdCoqXG5cbk9rYXksIHNvIHRoZSBgdmV0aGAgaW50ZXJmYWNlLCB3aGlsZSBYRFAtY2FwYWJsZSwgZG9lc24ndCB1dGlsaXplIHRoZSBgeHNrX2J1ZmZfcG9vbGAsIGluc3RlYWQgcmVseWluZyBvbiBgeGRwX2ZyYW1lYCBhbmQgYHhkcF9idWZmYC4gVGhhdCBtZWFucyB0aGUgcmVjZW50IGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGNoYW5nZSB3b24ndCBhZmZlY3QgaXQuIEdvb2QuXG5cbkxldCdzIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIG90aGVyIGNhbmRpZGF0ZXM6IGBtYWN2bGFuYD8gTm9wZS4gWmVyby1jb3B5IEFGX1hEUCBpcyBhIG5vLWdvIHRoZXJlLiBgdmlydGlvX25ldGA/IFN0aWxsIG5vLiBgdHVuYC9gdGFwYD8gTmVnYXRpdmUuXG5cblNvLCBpdCBsb29rcyBsaWtlLCBhdCBsZWFzdCBpbml0aWFsbHksIHRoZSBvbmx5IGRyaXZlcnMgdGhhdCAqZG8qIHN1cHBvcnQgdGhpcyB6ZXJvLWNvcHkgQUZfWERQIG1lY2hhbmlzbSBhcmUgcGh5c2ljYWwgTklDcyBhbmQgYSBmZXcgc3BlY2lhbGl6ZWQgdmlydHVhbCBvbmVzOiBgdHNuZXBgIChGUEdBIGVuZHBvaW50KSBhbmQgYGd2ZWAsIHRoZSBHb29nbGUgVmlydHVhbCBOSUMuIEhhbmcgb27igKYgYGd2ZWDigKYgdGhhdCdzIGludGVyZXN0aW5nLlxuXG5DYW4gSSBldmVuIHJlYWNoIGBndmVgIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFByb2JhYmx5IG5vdCBuYXRpdmVseS4gSG93ZXZlciwgc3l6a2FsbGVyICptaWdodCogYmUgcnVubmluZyBvbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHdoZXJlIGBndmVgIGlzIHRoZSBhY3R1YWwgbmV0d29yayBpbnRlcmZhY2UhIEJ1dCwgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIHRlc3RzICppbnNpZGUqIGEgVk0uIElmIHRoZSBWTSBpcyBvbiBHQ0UsIGl0IGNvdWxkIHRoZW9yZXRpY2FsbHkgaGF2ZSBhIGBndmVgIGludGVyZmFjZSwgYnV0IHN5emthbGxlciB1c3VhbGx5IGlzb2xhdGVzIHdpdGggbmVzdGVkIFZNcyAoUUVNVSkgb3IgbmV0d29yayBuYW1lc3BhY2VzIHdpdGggYHZldGhgIG9yIGB0dW5gIGRldmljZXMuIEl0J3Mgbm90IHVzdWFsbHkgZnV6emluZyB0aGUgaG9zdCdzIGBndmVgIGRldmljZSBkaXJlY3RseSBiZWNhdXNlIHRoYXQgd291bGQgdGVhciBkb3duIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gdG8gdGhlIFZNLlxuXG5FdmVuIGlmIGl0IGRpZCwgdGhlIGNydWNpYWwgcG9pbnQgaXM6IGRvZXMgYGd2ZWAgKnVzZSogYHhza19idWZmX2dldF9tZXRhZGF0YWA/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gTGV0J3MgZGlnIGRlZXBlciBhbmQgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjg3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjM5LjU2MDkwOTc1NFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2MTM3MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWZmX2dldF9tZXRhZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6MzkuNjA5NTMxNTcyWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzQ4NDIxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY3kgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgdGhlIGBndmVgIGxpYnJhcnkgbm90IHV0aWxpemluZyB0aGUgZGVwZW5kZW5jeSBpbiBxdWVzdGlvbiwgYnV0IGl0J3MgYWx3YXlzIGJlc3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZWZvcmUgSSBtb3ZlIG9uIHdpdGggbXkgb3duIHdvcmssIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzICpub3QqIGEgZmFjdG9yIGluIGBndmVgJ3Mgb3BlcmF0aW9uLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjb2RlLlxuXG5Ob3csIGlmIGBndmVgIGRvZXNuJ3QgdXNlIGl0LCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdHNuZXBgLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoYXQgbGlicmFyeSwgd2hpY2ggaXMgcmVsYXRlZCBpbiBmdW5jdGlvbmFsaXR5LCBhY3R1YWxseSBkZXBlbmRzIG9uIGl0LiBBIHF1aWNrIHNlYXJjaCB0aHJvdWdoIHRoZSBgdHNuZXBgIGNvZGViYXNlIGlzIGluIG9yZGVyLiBJdCdzIGltcG9ydGFudCB0byBrbm93IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYWxsIHRoZXNlIHRvb2xzLiBJZiBlaXRoZXIgb2YgdGhvc2UgcGFja2FnZXMgdXNlIGl0LCB0aGF0IHdpbGwgZHJhc3RpY2FsbHkgY2hhbmdlIHdoYXQgaXMgbmVjZXNzYXJ5IGluIG15IGN1cnJlbnQgZGV2ZWxvcG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDkyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NDMuMTg0Mzc2NTM2WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc4MjcyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NDMuMjMxMTY4NTM1WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjA0NDQ3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBMYW5kc2NhcGUqKlxuXG5Ob3BlLiBOb3QgaGFwcGVuaW5nLiBNeSBndXQgcmVhY3Rpb24gaXMgYSBoYXJkIFwibm9cIiBvbiB0aGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgZGlzbWlzc2luZyB0aGlzIHBvaW50IHRob3VnaC4gTGV0J3Mgbm90IGp1c3QgaWdub3JlIHRoaXMsIGxldCdzIGdvIGRlZXBlciBhbmQgY2hlY2sgaWYgdGhpcyBhY3R1YWxseSBpcyBiZWluZyB1c2VkIGJ5IHRoZSBgZHBhYTJgIHN5c3RlbS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIzNjksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMTo0Ni40OTE2MTY5MjlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODIyOTg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NDYuNTM3NDQ3NTU3WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODAxMzk1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBkaXJlY3QgdGhvdWdodCBwcm9jZXNzOlxuXG4qKk5vLiBMZXQncyBWZXJpZnkgVGhpcyBDbGFpbS4qKlxuXG5BbHJpZ2h0LCB0aGF0J3MgYSBmbGF0IFwibm8uXCIgQnV0LCBsZXQncyBub3QganVzdCB0YWtlIHRoYXQgYXMgdGhlIGZpbmFsIGFuc3dlciwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBbaW1wbGllZCBmaWVsZCAtIHVzZXIncyBhcmVhIG9mIGV4cGVydGlzZSwgZS5nLiwgY29tcGxleCBzeXN0ZW1zLCBkYXRhIGFuYWx5c2lzLCB0aGVvcmV0aWNhbCBwaHlzaWNzXS4gTXkgZ3V0IHNheXMgXCJubyxcIiBidXQgZ3V0IGZlZWxpbmdzIGFyZW4ndCBlbm91Z2guIEkgbmVlZCB0byBiZSAqc3VyZSouIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgdGhpcyBpcyBiZWluZyBpbXBsZW1lbnRlZCBhbnl3aGVyZSwgZXZlbiBpbiBhIHNtYWxsIHdheS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgaWYgYGZlY2AgaXMgdXRpbGl6aW5nIHdoYXRldmVyIHdlJ3JlIHRhbGtpbmcgYWJvdXQuIElzIHRoZXJlIGFueSBleGlzdGluZyBjb2RlYmFzZSBvciByZWxldmFudCBkb2N1bWVudGF0aW9uIHRoYXQgd291bGQgcHJvdmlkZSBhbiBhbnN3ZXIgaGVyZT8gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBzZWFyY2guIEEgcXVpY2sgY2hlY2sgb2YgYGZlY2Agd2lsbCBlaXRoZXIgY29uZmlybSB0aGlzIG5lZ2F0aXZlIG9yIGdpdmUgbWUgYW4gaW1tZWRpYXRlIGp1bXBpbmctb2ZmIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTM5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjE6NTAuNTE3NTkwNzA5WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzk4MDE1OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1ZmZfZ2V0X21ldGFkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIxOjUwLjU2NTU3ODc2N1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDk0NzgzNzUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgQUJJIE1pc21hdGNoIGluIFhEUCBhbmQgQUZfWERQKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgY29kZSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyByZWNlbnQgY2hhbmdlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYCAodGhyb3VnaCBgbGliZXRoYCkgYXJlIHRoZSBvbmx5IGRyaXZlcnMgdGhhdCB1c2UgdGhvc2UgYHhza19idWZmX2dldF9tZXRhZGF0YWAgb3IgYHhwX3Jhd19nZXRfY3R4YCBmdW5jdGlvbnMuIEJ1dCwgU3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enogdGhvc2UgaW4gYSB3YXkgdGhhdCB3b3VsZCBoaXQgdGhpcyBwYXJ0aWN1bGFyIGFyZWEgYmVjYXVzZSBpdCBwcmVmZXJzIHRoaW5ncyBsaWtlIGB2ZXRoYCwgYHR1bmAsIGBtYWN2bGFuYCwgYHZjYW5gLCBhbmQgYHZ4bGFuYC5cblxuVGhlbiwgd2FpdCBhIG1pbnV0ZSwgdGhlcmUncyB0aGF0IFVBUEkgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oYCBzcGVjaWZpY2FsbHkgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gTXkgY29uY2VybiBub3cgY2VudGVycyBhcm91bmQgYG5ldC94ZHAveHNrLmNgLCB0aGUgY29yZSBBRl9YRFAgc29ja2V0IGltcGxlbWVudGF0aW9uLlxuXG5BIHVzZXIgY2FuIHNldCBgdHhfbWV0YWRhdGFfbGVuYCBpbiBgc3RydWN0IHhkcF91bWVtX3JlZ2Agd2hlbiBjcmVhdGluZyBhbiBBRl9YRFAgc29ja2V0LiAgVGhlbiwgaW4gYHhza19za2JfbWV0YWRhdGFgIGl0IGNhbGxzIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuICBUaGUgY3J1Y2lhbCBjaGVjayBoZXJlIHVzZXMgYG9mZnNldG9mZW5kYCB0byBkZXRlcm1pbmUgaWYgZW5vdWdoIHNwYWNlIGlzIGF2YWlsYWJsZS4gQSAzMi1iaXQgdXNlcnNwYWNlIHByb2dyYW0gY29tcGlsZWQgd2l0aCB0aGUgKm9sZCogaGVhZGVyIHdvdWxkIHNldCBgdHhfbWV0YWRhdGFfbGVuYCB0byAyMCwgYnV0IHRoZSAqbmV3KiBoZWFkZXIgbWFrZXMgYG9mZnNldG9mZW5kYCBlcXVhbCAyNC4gQ29uc2VxdWVudGx5LCBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgIHdpbGwgcmV0dXJuIGBmYWxzZWAsIHdoaWNoIGxlYWRzIHRvIGFuIGAtRUlOVkFMYCBmcm9tIGB4c2tfc2tiX21ldGFkYXRhYC5cblxuU28sIHRoZSBwYXRjaCBpcyBmaXhpbmcgYSAzMi1iaXQvNjQtYml0IEFCSSBtaXNtYXRjaCwgYnV0IGl0IGFsc28gY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIGFueSAzMi1iaXQgcHJvZ3JhbXMgdXNpbmcgdGhlIG9sZCBzdHJ1Y3Qgc2l6ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgYmVjYXVzZSBzdWNoIGEgY2hhbmdlIGNhbiBicmVhayBleGlzdGluZyBhcHBsaWNhdGlvbnMuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2UsIGlmIGl0IGlzIG5vdCwgdGhpcyBtYXkgbm90IGJlIGEgdmFsaWQgY29uY2Vybi4gQUZfWERQIHNvY2tldHMgKGBBRl9YRFBgKSAqY2FuKiBiZSBjcmVhdGVkIG9uIGFueSBuZXR3b3JrIGludGVyZmFjZSwgaW5jbHVkaW5nIGB2ZXRoYC4gT2theSwgYHZldGhgIGNvdWxkIGJlIHVzZWQuIFdhaXQuLi4gZG9lcyBgdmV0aGAgZXZlbiBzdXBwb3J0IGBYRFBfVFhfTUVUQURBVEFgPyBUaGlzIG5lZWRzIHZlcmlmaWNhdGlvbi5cblxuT2theSwgbGV0J3Mgc2VlLiBMb29raW5nIGF0IGBuZXQveGRwL3hzay5jYCwgYHhza19idWlsZF9za2JgIGFuZCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAgY2hlY2sgYGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMgdmlhIEFGX1hEUCBzb2NrZXRzLiBJZiB0aGUgc29ja2V0IGlzIGJvdW5kIHRvIGB2ZXRoYCwgaXQnbGwgdXNlIGB4c2tfYnVpbGRfc2tiYCBzaW5jZSBgdmV0aGAgZG9lcyBub3Qgc3VwcG9ydCB6ZXJvLWNvcHkgQUZfWERQLiBJIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyODAyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIwOjIyOjAxLjUxMzQxODk2M1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MDEyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2J1aWxkX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL3hzay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwMDgtXFxubmV0L3hkcC94c2suYzoxMDA5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtMTAxMC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXFxuLS1cXG5uZXQveGRwL3hzay5jLTEwODQtXFxubmV0L3hkcC94c2suYzoxMDg1OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtMTA4Ni1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTA5Mi1cXHRpZiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX1RYX1NLQl9OT19MSU5FQVIpIHtcXG5uZXQveGRwL3hzay5jOjEwOTM6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XFxubmV0L3hkcC94c2suYy0xMDk0LVxcdFxcdGlmIChJU19FUlIoc2tiKSkge1xcbi0tXFxubmV0L3hkcC94c2suYz0xMTkxPXN0YXRpYyBpbnQgX194c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTIzNy1cXG5uZXQveGRwL3hzay5jOjEyMzg6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYih4cywgXFx1MDAyNmRlc2MpO1xcbm5ldC94ZHAveHNrLmMtMTIzOS1cXHRcXHRpZiAoSVNfRVJSKHNrYikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjI6MDEuNTY0MTI1NzMxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjIzMTE4ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFhEUCBaZXJvLUNvcHkgVFggTWV0YWRhdGEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQgb24gZW5oYW5jaW5nIFhEUCB6ZXJvLWNvcHkgdHJhbnNtaXNzaW9uLCBwYXJ0aWN1bGFybHkgdGhlIG1ldGFkYXRhIGhhbmRsaW5nLiBJbml0aWFsbHksIEkgc2F3IHRoYXQgYF9feHNrX2dlbmVyaWNfeG1pdGAgaXMgdGhlIGtleSwgY2FsbGluZyBgeHNrX2J1aWxkX3NrYmAsIGFuZCBjcnVjaWFsbHksIGB4c2tfc2tiX21ldGFkYXRhYCwgd2hpY2ggaXMgYWJzb2x1dGVseSByZWFjaGFibGUgZXZlbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhpcyB0aGVuIGdvZXMgdG8gYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gIE15IG1haW4gcXVlc3Rpb24gaXMgd2hldGhlciBhbnkgb2YgdGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS5cblxuSSBzZWUgYSBtb2RpZmljYXRpb24gdG8gdGhlIGB4c2tfdHhfbWV0YWRhdGFgIHN0cnVjdCBhbmQsIGNvbnNlcXVlbnRseSwgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCB3aXRoaW4gYG5ldC94ZHAveHNrLmNgICh0aHJvdWdoIGlubGluZSkuIFRoaXMgYWZmZWN0cyB0aGUgYHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuYCByZXF1aXJlbWVudCAtIG5vdyAyNCBieXRlcyBtaW5pbXVtIGluc3RlYWQgb2YgMjAgb24gMzItYml0IHN5c3RlbXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgc3RydWN0IGxheW91dCBjaGFuZ2UgaXMgYSBtZWFuaW5nZnVsIGVub3VnaCBmdW5jdGlvbmFsIGNoYW5nZSB0byBiZSB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgYWZmZWN0cyBleGVjdXRpb24gZmxvdyBvciBpcyBqdXN0IGEgc3RydWN0dXJhbCBhZGp1c3RtZW50LiBNeSBpbmNsaW5hdGlvbiBpcyB0aGF0IGl04oCZcyBtb3JlIG9mIHRoZSBsYXR0ZXIsIGJ1dCBJIG5lZWQgdG8gYmUgcHJlY2lzZS5cblxuSSBhbHNvIG5vdGljZSB0aGF0IGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgaGFzIGNoYW5nZWQgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgYnV0IGl0IGlzIG9ubHkgY2FsbGVkIGJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgLSBgaWdjYCwgYG1seDVgLCBgc3RtbWFjYCwgYW5kIGBpZHBmYC4gIFRoZXNlIGFyZSBub3QgdHlwaWNhbGx5IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCB3aGljaCBpcyB3aGF0IHN5emthbGxlciBpcyB1c2VkIHdpdGguIFNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGlzIGEgbm9uLWlzc3VlIGZyb20gbXkgcGVyc3BlY3RpdmUuICBUaGUgc3RtbWFjIGNoYW5nZXMgYXJlIGFsc28gbm90IHJlbGV2YW50LlxuXG5UaGUgY29yZSBsb2dpYyBjaGFuZ2UgbG9va3MgbGlrZSBpdCBpcyB0byBtYWtlIHRoZSBgb3B0aW9uc2AgYXJndW1lbnQgYmUgcGFzc2VkIHRvIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBpbmNsdWRlcyBhIGNoZWNrIGZvciBgb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBYCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBtZXRhZGF0YSBwb2ludGVyLiBUaGlzIHByZXZlbnRzIHRoZSB1c2FnZSBvZiBpbnZhbGlkIG1ldGFkYXRhIGlmIHRoZSBvcHRpb24gaXNuJ3Qgc2V0LiAgVGhpcyBhZmZlY3RzIHRoZSB6ZXJvLWNvcHkgVFggcGF0aCBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBub25lIG9mIHdoaWNoIGFyZSByZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cbk5vdywgdGhhdCBzdHJ1Y3QgbGF5b3V0IGNoYW5nZSwgdGhlIG9ubHkgcmVhY2hhYmxlIGFsdGVyYXRpb24sIG9ubHkgY2hhbmdlcyBhIG51bWVyaWMgY29uc3RhbnQgdXNlZCBpbiBhIHNpemUgY2hlY2suIElmIHRoZSBsZW5ndGggaXMgbGVzcyB0aGFuIDI0LCB3ZSByZXR1cm4gYC1FSU5WQUxgLCBhbmQgdGhlIHBhY2tldCBpcyBkcm9wcGVkLiBJdCBpcyBhIGJvdW5kIGNoZWNrLCBub3QgbG9naWMgY2hhbmdlLiBJcyB0aGlzIGEgbmV3IHN0YXRlIG1hY2hpbmUgb3IgY29tcGxleCBsb2dpYyB0byBmdXp6PyBObywgSSB3b3VsZG7igJl0IGNvbnNpZGVyIHRoaXMgc2lnbmlmaWNhbnQuIEl04oCZcyBqdXN0IHRoZSBhZGRpdGlvbiBvZiBwYWRkaW5nLiBNeSBwcmV2aW91cyBleHBlcmllbmNlIGluZGljYXRlcyB0aGVzZSBzdHJ1Y3QgcGFkZGluZyBmaXhlcyBhcmVu4oCZdCBnZW5lcmFsbHkgYSBmdXp6aW5nIHRhcmdldCBiZWNhdXNlIHRoZXkncmUgZXNzZW50aWFsbHkganVzdCBjb25zdGFudCB1cGRhdGVzLlxuXG5Ob3csIGxldCdzIHJldmlzaXQgYHN0bW1hY2AgYWdhaW4uIEkga25vdyBRRU1VIHVzZXMgYGRlc2lnbndhcmVgLCBidXQgaXMgaXQgdGhlIHNhbWU/IFR1cm5zIG91dCB0aGUgZHJpdmVyIGlzIHRoZSBEZXNpZ25XYXJlIE1BQy4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoYXQgaGFyZHdhcmUgaXMgYWNjZXNzaWJsZSwgYW5kIGFsc28gaWYgemVyby1jb3B5IGlzIHN1cHBvcnRlZC4gSXTigJlzIGEgU3lzQnVzIGRldmljZSwgd2hpY2ggZG9lc24ndCBmaXQgdGhlIHN0YW5kYXJkIHN5emthbGxlciBjb25maWd1cmF0aW9uLlxuXG5BZnRlciBsb29raW5nIGF0IHRoZSBsb2NhdGlvbnMgZm9yIHRoZSBtZXRhZGF0YTpcbjEuIGBpZ2NfbWFpbi5jYDogYG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkciwgeGRwX2Rlc2Mub3B0aW9ucyk7YFxuMi4gYG1seDUvY29yZS9lbi94c2svdHguY2A6IGBtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIGRlc2MuYWRkciwgZGVzYy5vcHRpb25zKTtgXG4zLiBgc3RtbWFjX21haW4uY2A6IGBtZXRhID0geHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhkcF9kZXNjLmFkZHIsIHhkcF9kZXNjLm9wdGlvbnMpO2AgYW5kIHJlbW92ZWQgYG1heF9zZHVgIGNoZWNrLlxuNC4gYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGA6IGBjdHggPSB4c2tfYnVmZl9yYXdfZ2V0X2N0eChzcS1cdTAwM2Vwb29sLCB4ZGVzYy1cdTAwM2VhZGRyLCB4ZGVzYy1cdTAwM2VvcHRpb25zKTtgXG41LiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgOiBBZGRlZCBgb3B0aW9uc2AgYXJndW1lbnQgdG8gYHhza19idWZmX3Jhd19nZXRfY3R4YCwgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCwgYHhza19idWZmX2dldF9tZXRhZGF0YWAuIEFkZGVkIGBvcHRpb25zIFx1MDAyNiBYRFBfVFhfTUVUQURBVEFgIGNoZWNrLlxuNi4gYGluY2x1ZGUvbmV0L3hza19idWZmX3Bvb2wuaGA6IEFkZGVkIGBvcHRpb25zYCBhcmd1bWVudCB0byBgeHBfcmF3X2dldF9jdHhgLlxuNy4gYGluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaGA6IEFkZGVkIGBfX3UzMiByZXNlcnZlZDtgIHRvIGBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhYC5cbjguIGBuZXQveGRwL3hza19idWZmX3Bvb2wuY2A6IEFkZGVkIGBvcHRpb25zYCBhcmd1bWVudCB0byBgeHBfcmF3X2dldF9jdHhgLlxuOS4gYHRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9pZl9cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjY4LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjA6MjI6MzIuNzg3MjQ3MjM2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1hEUCB6ZXJvLWNvcHkgVFggbWV0YWRhdGEgcGF0aCB0byBjaGVjayB0aGUgWERQX1RYX01FVEFEQVRBIG9wdGlvbiBiZWZvcmUgYWNjZXNzaW5nIG1ldGFkYXRhLiBUaGlzIGxvZ2ljIGlzIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHJlYWNoYWJsZSBpbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIChpZ2MsIG1seDUsIHN0bW1hYywgaWRwZikgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgcmVzZXJ2ZWQgcGFkZGluZyBmaWVsZCB0byBgc3RydWN0IHhza190eF9tZXRhZGF0YWAgaW4gdGhlIFVBUEksIHdoaWNoIG9ubHkgYWx0ZXJzIGEgbnVtZXJpYyBjb25zdGFudCAoc3RydWN0IHNpemUpIHVzZWQgaW4gYSBsZW5ndGggY2hlY2sgaW4gdGhlIGdlbmVyaWMgWERQIFRYIHBhdGgsIHdpdGhvdXQgaW50cm9kdWNpbmcgbmV3IGZ1bmN0aW9uYWwgbG9naWMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9YRFAgemVyby1jb3B5IFRYIG1ldGFkYXRhIHBhdGggdG8gY2hlY2sgdGhlIFhEUF9UWF9NRVRBREFUQSBvcHRpb24gYmVmb3JlIGFjY2Vzc2luZyBtZXRhZGF0YS4gVGhpcyBsb2dpYyBpcyBvbmx5IGltcGxlbWVudGVkIGFuZCByZWFjaGFibGUgaW4gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyAoaWdjLCBtbHg1LCBzdG1tYWMsIGlkcGYpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIHBhdGNoIGFsc28gYWRkcyBhIHJlc2VydmVkIHBhZGRpbmcgZmllbGQgdG8gYHN0cnVjdCB4c2tfdHhfbWV0YWRhdGFgIGluIHRoZSBVQVBJLCB3aGljaCBvbmx5IGFsdGVycyBhIG51bWVyaWMgY29uc3RhbnQgKHN0cnVjdCBzaXplKSB1c2VkIGluIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBnZW5lcmljIFhEUCBUWCBwYXRoLCB3aXRob3V0IGludHJvZHVjaW5nIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMDoyMjozMi43ODcyNzY5MzZaIiwiU2VxIjo1NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowfg92s[1] Phase: Running StartedAt: 2026-08-13 20:22:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfg92s[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 20:22:43 +0000 UTC FinishedAt: 2026-08-13 20:22:48 +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,}