Name: series-workflowvlqzw Phase: Failed StartedAt: 2026-08-19 09:04:46 +0000 UTC FinishedAt: 2026-08-19 09:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvlqzw[0] Phase: Succeeded StartedAt: 2026-08-19 09:04:46 +0000 UTC FinishedAt: 2026-08-19 09:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvlqzw[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 09:04:46 +0000 UTC FinishedAt: 2026-08-19 09:08:25 +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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fY2R4X21tYXBgIGluIHRoZSBWRklPIENEWCBkcml2ZXIuIFRoZSBDRFggKENvbXBvc2FibGUgRE1BIGVYcHJlc3MpIGJ1cyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cyBmb3IgQU1EL1hpbGlueCBWZXJzYWwgZGV2aWNlcyB0aGF0IHJlbGllcyBvbiBNQ0RJIGZpcm13YXJlIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gYSByZW1vdGUgcHJvY2Vzc29yIChSNSBjb3JlKSB0byBzY2FuIGFuZCBkaXNjb3ZlciBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgbW9jayBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIG9yIGl0cyBmaXJtd2FyZSBpbiB0aGUga2VybmVsLiBDb25zZXF1ZW50bHksIGl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIGEgQ0RYIGRldmljZSBvciBiaW5kIGl0IHRvIHRoZSBgdmZpby1jZHhgIGRyaXZlciBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2U1NTZjM2RmMTFhMTFhNjVlZDM4OTA5M2ZiNTI4YmVhOGMwNzZjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA5OjA2OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbmluZGV4IGIzMWVkNGJlN2JkYzEuLmI2YjE3YTZhNDY4MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbkBAIC0yODUsNiAmIzQzOzI4NSwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHQgICAgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuJiM0MztcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuJiM0MztcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4mIzQzO1x0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbiYjNDM7XG4gXHRyZXR1cm4gdmZpb19jZHhfbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19jZHhfbW1hcGAgaW4gdGhlIFZGSU8gQ0RYIGRyaXZlci4gVGhlIENEWCAoQ29tcG9zYWJsZSBETUEgZVhwcmVzcykgYnVzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgYnVzIGZvciBBTUQvWGlsaW54IFZlcnNhbCBkZXZpY2VzIHRoYXQgcmVsaWVzIG9uIE1DREkgZmlybXdhcmUgbWVzc2FnZXMgb3ZlciBSUE1TRyB0byBhIHJlbW90ZSBwcm9jZXNzb3IgKFI1IGNvcmUpIHRvIHNjYW4gYW5kIGRpc2NvdmVyIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGRyaXZlciBmb3IgdGhlIENEWCBidXMgb3IgaXRzIGZpcm13YXJlIGluIHRoZSBrZXJuZWwuIENvbnNlcXVlbnRseSwgaXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBDRFggZGV2aWNlIG9yIGJpbmQgaXQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZTU1NmMzZGYxMWExMWE2NWVkMzg5MDkzZmI1MjhiZWE4YzA3NmNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTkgMDk6MDY6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCmluZGV4IGIzMWVkNGJlN2JkYzEuLmI2YjE3YTZhNDY4MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCkBAIC0yODUsNiAmIzQzOzI4NSwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsCiAJICAgICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAomIzQzOwkvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi8KJiM0MzsJaWYgKCEodmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0uZmxhZ3MgJmFtcDsgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSkKJiM0MzsJCXZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpOwomIzQzOwogCXJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0sIHZtYSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWRklPIENEWCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaXMgd2l0aGluIGB2ZmlvX2NkeF9tbWFwYC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrOgoKYGBgYwoJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCglpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQoJCXZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpOwpgYGAKCkJhc2ljYWxseSwgaWYgYSByZWdpb24gaXMgcmVhZC1vbmx5LCBpdCYjMzk7cyBwcmV2ZW50aW5nIGBtcHJvdGVjdCgpYCBmcm9tIGJlaW5nIHVzZWQgdG8gZXNjYWxhdGUgaXRzIHBlcm1pc3Npb25zIHRvIHdyaXRlYWJsZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2Ugd2l0aGluIGB2ZmlvX2NkeF9tbWFwYCwgd2hpY2ggaXMgZ29vZC4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogaG93IGNyaXRpY2FsIGlzIHRoaXM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXMgYHZmaW8vY2R4YCBzb21ldGhpbmcgY29tbW9ubHkgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IExldCBtZSBnbyBjaGVjayBpZiBgdmZpby9jZHhgIGlzIGV2ZW4gcmVhY2hhYmxlLiBXaGF0IHRoZSBoZWNrIGRvZXMgQ0RYIGV2ZW4gKnN0YW5kKiBmb3I/IEl0JiMzOTtzIHNvbWV0aGluZyBsaWtlICYjMzQ7Q29tcG9zYWJsZSBETUEgZVhwcmVzcyYjMzQ7LCByaWdodD8gTGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgIG9yIGBkcml2ZXJzL2NkeC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNvbnRleHQgSSBjYW4gZ2F0aGVyIGFib3V0IGl0cyBwdXJwb3NlIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fQ0RYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy03LVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnOjg6Y29uZmlnIFZGSU9fQ0RYXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgVkZJT19DRFhgIERlcGVuZGVuY2llcyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBWRklPX0NEWGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gZGVwZW5kZW5jaWVzIGZvciB0aGlzPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gcG9pbnRzIGFuZCBob3cgaXQgcmVsaWVzIG9uIG9yIGltcGFjdHMgb3RoZXIgVkZJTyBjb21wb25lbnRzIG9yIHRoZSBicm9hZGVyIGtlcm5lbC4gSSBuZWVkIHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBjaGFuZ2VzIGluIGBWRklPX0NEWGAgY291bGQgcmlwcGxlIG91dHdhcmRzLiBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVycyBvciBzdWJzeXN0ZW1zIGl0JiMzOTtzIHBhcnRpY3VsYXJseSBpbnRlcnR3aW5lZCB3aXRoPyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMsIGluY2x1ZGUgZmlsZXMsIGFuZCBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIG1haWxpbmcgbGlzdCBkaXNjdXNzaW9ucyB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiBpdHMgYXJjaGl0ZWN0dXJlIGFuZCBlbnN1cmUgSSYjMzk7bSBhd2FyZSBvZiB0aGUgZnVsbCBjb250ZXh0IHdoZW4gSSBzdGFydCB0byBhbmFseXplIHRoZSBjb2RlLiBUaGlzIGlzIHN0ZXAgb25lLCBiZWZvcmUgSSBldmVuIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc9OD1jb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzoxMDpcdGRlcGVuZHMgb24gQ0RYX0JVU1xuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVx0c2VsZWN0IEVWRU5URkRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTUwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBDRFhfQlVTKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgcmVsYXRlZCB0byBgQ0RYX0JVU2AuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhpcyB3aWxsIGxpa2VseSBpbnZvbHZlIGRpZ2dpbmcgaW50byBjb25maWd1cmF0aW9uIGZpbGVzLCBwZXJoYXBzIGV4YW1pbmluZyBidWlsZCBzY3JpcHRzIChpZiB0aGlzIGlzIGEgc29mdHdhcmUgc3lzdGVtKSwgb3IgZXZlbiBxdWVyeWluZyBhIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBgQ0RYX0JVU2AgcmVsaWVzIHVwb24g4oCTIHRoaXMgY291bGQgaW5jbHVkZSBzaGFyZWQgbGlicmFyaWVzLCBvdGhlciBtb2R1bGVzLCBleHRlcm5hbCBzZXJ2aWNlcywgb3Igc3BlY2lmaWMgaGFyZHdhcmUvZmlybXdhcmUgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBlbWJlZGRlZCBzeXN0ZW0uIEkgd2FudCB0byBidWlsZCBhIHF1aWNrIGRlcGVuZGVuY3kgZ3JhcGggaW4gbXkgaGVhZCBzbyBJIHVuZGVyc3RhbmQgdGhlIGxpa2VseSBpbXBhY3Qgb2YgYW55IGNoYW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBhcnRpZmFjdHMgYW5kIHRoZWlyIHZlcnNpb25zLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0RYX0JVUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvS2NvbmZpZy03LVxuZHJpdmVycy9jZHgvS2NvbmZpZzo4OmNvbmZpZyBDRFhfQlVTXG5kcml2ZXJzL2NkeC9LY29uZmlnLTktXHRib29sIFwmIzM0O0NEWCBCdXMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ0RYX0JVUyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQ0RYX0JVU2AuIEdpdmVuIG15IGV4aXN0aW5nIGtub3dsZWRnZSBvZiB0aGUgcGxhdGZvcm0gYW5kIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbSwgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIENEWCBkcml2ZXIuIFRoYXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB3aGVyZSB0aGUgY3J1Y2lhbCBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIHJlc2lkZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciB0aGUgS2NvbmZpZyBmaWxlIGluIGBkcml2ZXJzL2NkeC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgZGVjbGFyZWQgZm9yIGBDRFhfQlVTYC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMsIGFueSBjb25kaXRpb25hbCBkZWZpbml0aW9ucyAobGlrZSBgaWZgIHN0YXRlbWVudHMpLCBhbmQgYW55IG90aGVyIGJ1aWxkLXRpbWUgcmVsYXRpb25zaGlwcyB0aGF0IGRpY3RhdGUgd2hlbiBhbmQgaG93IGBDRFhfQlVTYCBnZXRzIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBpbWFnZS4gVGhpcyBxdWljayBkaXZlIGludG8gS2NvbmZpZyBzaG91bGQgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgSSBuZWVkIHRvIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBDRFggYnVzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgQ0RYX0JVU1xuICAgOTpcdFx0Ym9vbCBcJiMzNDtDRFggQnVzIGRyaXZlclwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQVJNNjQgfHwgQ09NUElMRV9URVNUXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHQgIERyaXZlciB0byBlbmFibGUgQ29tcG9zYWJsZSBETUEgVHJhbnNmZXIoQ0RYKSBCdXMuIENEWCBidXNcbiAgMTM6XHRcdCAgZXhwb3NlcyBGYWJyaWMgZGV2aWNlcyB3aGljaCB1c2VzIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZVxuICAxNDpcdFx0ICBBUFUuIENEWCBidXMgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHNjYW5uaW5nIGFuZCBwcm9iaW5nXG4gIDE1Olx0XHQgIG9mIENEWCBkZXZpY2VzLiBDRFggZGV2aWNlcyBhcmUgbWVtb3J5IG1hcHBlZCBvbiBzeXN0ZW0gYnVzXG4gIDE2Olx0XHQgIGZvciBlbWJlZGRlZCBDUFVzLiBDRFggYnVzIHVzZXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGZpcm13YXJlXG4gIDE3Olx0XHQgIHRvIHNjYW4gdGhlc2UgQ0RYIGRldmljZXMuXG4gIDE4Olx0XG4gIDE5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0RYX0JVUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBDRFhfQlVTYCB0aGluZyBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0IGhpbmdlcyBvbiBgT0YgJmFtcDsmYW1wOyBBUk02NCB8fCBDT01QSUxFX1RFU1RgLiBSaWdodCwgdGhhdCBuYXJyb3dzIGl0IGRvd24gYSBiaXQg4oCTIGxpa2VseSBkZWFsaW5nIHdpdGggZGV2aWNlcyBvbiBBUk02NCBzeXN0ZW1zIHdpdGggZGV2aWNlIHRyZWUgc3VwcG9ydCwgb3IgdXNlZCBmb3IgYnVpbGQgdGVzdGluZy4gVGhlIGRlc2NyaXB0aW9uIHNheXMgaXQmIzM5O3MgYWJvdXQgJiMzNDtDb21wb3NhYmxlIERNQSBUcmFuc2ZlcihDRFgpIEJ1cywmIzM0OyB3aGljaCBtYWtlcyBzZW5zZS4gSXQmIzM5O3MgZXhwb3NpbmcgRmFicmljIGRldmljZXMgdGhhdCB1dGlsaXplIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZSBBUFUuCgpUaGUgdGV4dCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCAmIzM0O0NEWCBkZXZpY2VzIGFyZSBtZW1vcnkgbWFwcGVkIG9uIHN5c3RlbSBidXMgZm9yIGVtYmVkZGVkIENQVXMsJiMzNDsgYW5kIHRoYXQgaXQgJiMzNDt1c2VzIENEWCBjb250cm9sbGVyIGFuZCBmaXJtd2FyZSB0byBzY2FuIHRoZXNlIENEWCBkZXZpY2VzLiYjMzQ7IFRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBzdXNwaWNpb246IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBidXMsIGFuZCBpdCBzb3VuZHMgbGlrZSBpdCYjMzk7cyBwcmltYXJpbHkgZGVzaWduZWQgZm9yIEFNRCBlbWJlZGRlZCBDUFVzLCBzcGVjaWZpY2FsbHkgQVBVcy4KCk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBpcywgY2FuIHdlIGVtdWxhdGUgYW55IG9mIHRoaXMgaW4gUUVNVT8gSXMgdGhlcmUgYW55IGV4aXN0aW5nIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBDRFggYnVzIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgdGhlIENEWCBkZXZpY2VzIHRoZW1zZWx2ZXM/IEkgbmVlZCB0byBjaGVjayBpbnRvIHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNvbW11bml0eSBzdXBwb3J0IG9yIGV4aXN0aW5nIHdvcmsgaW4gdGhpcyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5NjQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvY2R4L0tjb25maWc9OD1jb25maWcgQ0RYX0JVU1xuLS1cbmRyaXZlcnMvY2R4L0tjb25maWctMTgtXG5kcml2ZXJzL2NkeC9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9NYWtlZmlsZT04PWNjZmxhZ3MteSAmIzQzOz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9JiMzOTtcJiMzNDtDRFhfQlVTXCYjMzQ7JiMzOTtcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTktXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0RYX0JVUykgJiM0Mzs9IGNkeC5vIGNvbnRyb2xsZXIvXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSAmIzQzOz0gY2R4X21zaS5vXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lkci5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYzo2ODojaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYy02OS0jaW5jbHVkZSBcdTAwM2NsaW51eC9pb21tdS5oXHUwMDNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzEtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYzo3MjojaW5jbHVkZSBcJiMzNDtjZHguaFwmIzM0O1xuZHJpdmVycy9jZHgvY2R4LmMtNzMtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xuZHJpdmVycy9jZHgvY2R4LmMtODAtLyogTG9jayB0byBwcm90ZWN0IGNvbnRyb2xsZXIgb3BzICovXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmM6ODI6LyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgzOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XG5kcml2ZXJzL2NkeC9jZHguYy04NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjg1OnN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0OztcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxuZHJpdmVycy9jZHgvY2R4LmM6ODc6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtODgtXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjkwOiAqIGNkeF9kZXZfcmVzZXQgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjk3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDEtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6MTAzOlx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDQtXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZXNldF9wcmVwYXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MTA2Olx0XHRjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXG5kcml2ZXJzL2NkeC9jZHguYy0xMDgtXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTExLVx0aWYgKHJldClcbmRyaXZlcnMvY2R4L2NkeC5jOjExMjpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2NkeCBkZXZpY2UgcmVzZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTExMy1cbmRyaXZlcnMvY2R4L2NkeC5jLTExNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X2RvbmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTIxLVxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTEyNC0gKiBAZGV2OiBDRFggZGV2aWNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTMxOnN0YXRpYyBpbnQgcmVzZXRfY2R4X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlx0cmV0dXJuIGNkeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTM2LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXG5kcml2ZXJzL2NkeC9jZHguYzoxNDE6ICpcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlx0ICBhcyBhbiBhcmd1bWVudC5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNDY6c3RhdGljIGludCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVx0XHRcdFx0IHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xNDgte1xuZHJpdmVycy9jZHgvY2R4LmM6MTQ5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMTUxLVxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKSB7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XHRcdGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XHRcdGlmIChjZHhfZGV2LVx1MDAzZWVuYWJsZWQgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzoxNTU6XHRcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXHR9IGVsc2Uge1xuZHJpdmVycy9jZHgvY2R4LmM6MTU3Olx0XHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTU4Olx0XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXHR9XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVx0LypcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MjpcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gd2l0aGluIHB1dF9kZXZpY2UoKS5cbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cdCAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTY1Olx0ZGV2aWNlX2RlbChcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XHRwdXRfZGV2aWNlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Mi17XG5kcml2ZXJzL2NkeC9jZHguYzoxNzM6XHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTc0Olx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xuZHJpdmVycy9jZHgvY2R4LmMtMTc5LSAqXHRcdFx0ICBDRFggZGV2aWNlIGlkIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxuZHJpdmVycy9jZHgvY2R4LmM6MTgzOiAqIFJldHVybjogbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3IgTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NjpjZHhfbWF0Y2hfb25lX2RldmljZShjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWQsXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XHRcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTk5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxuZHJpdmVycy9jZHgvY2R4LmMtMjA2LSAqIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDktICovXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTIte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cdFx0d2hpbGUgKGlkcy1cdTAwM2V2ZW5kb3IgfHwgaWRzLVx1MDAzZWRldmljZSkge1xuZHJpdmVycy9jZHgvY2R4LmM6MjE1Olx0XHRcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXHRcdFx0XHRyZXR1cm4gaWRzO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjIyMzppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjI1Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIzMC1cdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSB0cnVlO1xuZHJpdmVycy9jZHgvY2R4LmM6MjMxOlx0aWYgKGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMjpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtLFxuZHJpdmVycy9jZHgvY2R4LmM6MjMzOlx0XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjM0LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIzNi19XG5kcml2ZXJzL2NkeC9jZHguYzoyMzc6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X3NldF9tYXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjM4LVxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjQwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzoyNDI6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeC5jLTI0My1cdGludCByZXQgPSAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNDYtXHRkZXZfY29uZmlnLmJ1c19tYXN0ZXJfZW5hYmxlID0gZmFsc2U7XG5kcml2ZXJzL2NkeC9jZHguYzoyNDc6XHRpZiAoY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MjQ4Olx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoyNDk6XHRcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0yNTAtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjUyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjI1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfY2xlYXJfbWFzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI1NC1cbmRyaXZlcnMvY2R4L2NkeC5jLTI1NS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NjogKiBjZHhfYnVzX21hdGNoIC0gZGV2aWNlIHRvIGRyaXZlciBtYXRjaGluZyBjYWxsYmFja1xuZHJpdmVycy9jZHgvY2R4LmM6MjU3OiAqIEBkZXY6IHRoZSBjZHggZGV2aWNlIHRvIG1hdGNoIGFnYWluc3RcbmRyaXZlcnMvY2R4L2NkeC5jOjI1ODogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGNkeCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTI1OS0gKiBzdHJ1Y3R1cmVzXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjY1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjY6XHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpmb3VuZF9pZCA9IE5VTEw7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xuZHJpdmVycy9jZHgvY2R4LmMtMjY5LVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjI3MTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTI3Mi1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9jZHgvY2R4LmMtMjczLVxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0Olx0aWRzID0gY2R4X2Rydi1cdTAwM2VtYXRjaF9pZF90YWJsZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yODAtXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjgyLVx0aWYgKCFmb3VuZF9pZClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yOTUtXHRcdGlkcyA9IGZvdW5kX2lkICYjNDM7IDE7XG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XHRcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXHR9IHdoaWxlIChmb3VuZF9pZCk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxuZHJpdmVycy9jZHgvY2R4LmM6MzAyOnN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXHRpbnQgZXJyb3I7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzEyLVx0ICovXG5kcml2ZXJzL2NkeC9jZHguYzozMTM6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfR0VORVJJQ19NU0lfSVJRKSBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW1zaV9kb21haW4pIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjMxNDpcdFx0ZXJyb3IgPSBtc2lfc2V0dXBfZGV2aWNlX2RhdGEoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzE1LVx0XHRpZiAoZXJyb3IpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzE4LVxuZHJpdmVycy9jZHgvY2R4LmM6MzE5Olx0ZXJyb3IgPSBjZHhfZHJ2LVx1MDAzZXByb2JlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzIwLVx0aWYgKGVycm9yKSB7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzI3LVxuZHJpdmVycy9jZHgvY2R4LmM6MzI4OnN0YXRpYyB2b2lkIGNkeF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMDpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzMzOlx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlcmVtb3ZlKVxuZHJpdmVycy9jZHgvY2R4LmM6MzM0Olx0XHRjZHhfZHJ2LVx1MDAzZXJlbW92ZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNS19XG5kcml2ZXJzL2NkeC9jZHguYy0zMzYtXG5kcml2ZXJzL2NkeC9jZHguYzozMzc6c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMzOC17XG5kcml2ZXJzL2NkeC9jZHguYzozMzk6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozNDA6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zNDItXG5kcml2ZXJzL2NkeC9jZHguYzozNDM6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMgXHUwMDI2XHUwMDI2IGNkeF9kZXYtXHUwMDNlZW5hYmxlZCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NDpcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYzozNDU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VzaHV0ZG93bilcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NjpcdFx0Y2R4X2Rydi1cdTAwM2VzaHV0ZG93bihjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Ny19XG5kcml2ZXJzL2NkeC9jZHguYy0zNDgtXG5kcml2ZXJzL2NkeC9jZHguYzozNDk6c3RhdGljIGludCBjZHhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xuZHJpdmVycy9jZHgvY2R4LmM6MzUxOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzozNTM6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmM6MzU0Olx0dTMyIGlucHV0X2lkID0gY2R4X2Rldi1cdTAwM2VyZXFfaWQ7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTUtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMzU2LVxuZHJpdmVycy9jZHgvY2R4LmM6MzU3Olx0cmV0ID0gb2ZfZG1hX2NvbmZpZ3VyZV9pZChkZXYsIGNkeC1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgMCwgXHUwMDI2aW5wdXRfaWQpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzU4LVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FUFJPQkVfREVGRVIpIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNjItXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UmIzM5O3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MzY0Olx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2Vkcml2ZXIgXHUwMDI2XHUwMDI2ICFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSkge1xuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVx0XHRyZXQgPSBpb21tdV9kZXZpY2VfdXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzczOnN0YXRpYyB2b2lkIGNkeF9kbWFfY2xlYW51cChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xuZHJpdmVycy9jZHgvY2R4LmM6Mzc1Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxuZHJpdmVycy9jZHgvY2R4LmM6Mzc3Olx0aWYgKCFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcbmRyaXZlcnMvY2R4L2NkeC5jLTM3OC1cdFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODMtc3RhdGljIHNzaXplX3RcdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgZm9ybWF0X3N0cmluZywgY2R4X2Rldi1cdTAwM2VmaWVsZCk7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODk9c3RhdGljIERFVklDRV9BVFRSX1JPKGZpZWxkKVxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MzpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX3ZlbmRvciwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFwmIzM0OzB4JTAyeFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTY6Y2R4X2NvbmZpZ19hdHRyKGNsYXNzLCBcJiMzNDsweCUwNnhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxuZHJpdmVycy9jZHgvY2R4LmM9Mzk4PXN0YXRpYyBzc2l6ZV90IHJlbW92ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxuZHJpdmVycy9jZHgvY2R4LmM6NDEzOlx0XHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQxNC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MjQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDI1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00MjYtXHRib29sIHZhbDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYzo0MzY6XHRcdC8qIFJlc2V0IGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byBjZHggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XHRcdHJldCA9IGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIHJlc2V0X2NkeF9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVx0ZWxzZVxuZHJpdmVycy9jZHgvY2R4LmM6NDM5Olx0XHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDAtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xuZHJpdmVycy9jZHgvY2R4LmM6NDQ4Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDktXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0O2NkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXG5cJiMzNDssIGNkeF9kZXYtXHUwMDNldmVuZG9yLFxuZHJpdmVycy9jZHgvY2R4LmM6NDUxOlx0XHRcdGNkeF9kZXYtXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcdFx0XHRjZHhfZGV2LVx1MDAzZWNsYXNzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1My19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XHRpZiAoZW5hYmxlID09IGNkeF9kZXYtXHUwMDNlZW5hYmxlZClcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cdFx0cmV0dXJuIGNvdW50O1xuZHJpdmVycy9jZHgvY2R4LmMtNDY5LVxuZHJpdmVycy9jZHgvY2R4LmM6NDcwOlx0aWYgKGVuYWJsZSBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZW5hYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6NDcxOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19lbmFibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmM6NDcyOlx0ZWxzZSBpZiAoIWVuYWJsZSBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MzpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy00NzQtXHRlbHNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDc3LVx0aWYgKCFyZXQpXG5kcml2ZXJzL2NkeC9jZHguYzo0Nzg6XHRcdGNkeF9kZXYtXHUwMDNlZW5hYmxlZCA9IGVuYWJsZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3OS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00ODM9c3RhdGljIHNzaXplX3QgZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxuZHJpdmVycy9jZHgvY2R4LmM6NDg3Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsldVxcblwmIzM0OywgY2R4X2Rldi1cdTAwM2VlbmFibGVkKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4OC19XG5kcml2ZXJzL2NkeC9jZHguYz00ODk9c3RhdGljIERFVklDRV9BVFRSX1JXKGVuYWJsZSk7XG5kcml2ZXJzL2NkeC9jZHguYy00OTAtXG5kcml2ZXJzL2NkeC9jZHguYzo0OTE6c3RhdGljIHVtb2RlX3QgY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXG5kcml2ZXJzL2NkeC9jZHguYy00OTIte1xuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XG5kcml2ZXJzL2NkeC9jZHguYzo0OTQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5NS1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NjpcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo0OTc6XHRpZiAoIWNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNDk4LVx0XHRyZXR1cm4gYS1cdTAwM2Vtb2RlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUwMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjUwMzpzdGF0aWMgdW1vZGVfdCBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNC17XG5kcml2ZXJzL2NkeC9jZHguYy01MDUtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjUwNjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNTA3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTA4Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjUwOTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTUxMC1cdFx0cmV0dXJuIGEtXHUwMDNlbW9kZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MTQtXG5kcml2ZXJzL2NkeC9jZHguYzo1MTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9kZXZfYXR0cnNbXSA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTUxNi1cdFx1MDAyNmRldl9hdHRyX3JlbW92ZS5hdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUyNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjUyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfZGV2X2dyb3VwID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTI5Olx0LmF0dHJzID0gY2R4X2Rldl9hdHRycyxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzMDpcdC5pc192aXNpYmxlID0gY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZSxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMS19O1xuZHJpdmVycy9jZHgvY2R4LmMtNTMyLVxuZHJpdmVycy9jZHgvY2R4LmM6NTMzOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNTM0LVx0XHUwMDI2ZGV2X2F0dHJfZW5hYmxlLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTM4LVxuZHJpdmVycy9jZHgvY2R4LmM6NTM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9idXNfZGV2X2dyb3VwID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTQwOlx0LmF0dHJzID0gY2R4X2J1c19kZXZfYXR0cnMsXG5kcml2ZXJzL2NkeC9jZHguYzo1NDE6XHQuaXNfdmlzaWJsZSA9IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUsXG5kcml2ZXJzL2NkeC9jZHguYy01NDItfTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU0My1cbmRyaXZlcnMvY2R4L2NkeC5jOjU0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqY2R4X2Rldl9ncm91cHNbXSA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NTpcdFx1MDAyNmNkeF9kZXZfZ3JvdXAsXG5kcml2ZXJzL2NkeC9jZHguYzo1NDY6XHRcdTAwMjZjZHhfYnVzX2Rldl9ncm91cCxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Ny1cdE5VTEwsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTQ5LVxuZHJpdmVycy9jZHgvY2R4LmM6NTUwOnN0YXRpYyBpbnQgY2R4X2RlYnVnX3Jlc291cmNlX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU1MjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jZHgvY2R4LmMtNTUzLVx0aW50IGk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTU1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9jZHgvY2R4LmM6NTU2Olx0XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICBcdTAwMjZjZHhfZGV2LVx1MDAzZXJlc1tpXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU1Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NjItfVxuZHJpdmVycy9jZHgvY2R4LmM6NTYzOkRFRklORV9TSE9XX0FUVFJJQlVURShjZHhfZGVidWdfcmVzb3VyY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTY0LVxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtNTY2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU2NzpcdGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpLCBjZHhfZGVidWdmc19kaXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6NTY4Olx0aWYgKElTX0VSUihjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyKSlcbmRyaXZlcnMvY2R4L2NkeC5jLTU2OS1cdFx0cmV0dXJuO1xuZHJpdmVycy9jZHgvY2R4LmMtNTcwLVxuZHJpdmVycy9jZHgvY2R4LmM6NTcxOlx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtyZXNvdXJjZVwmIzM0OywgMDQ0NCwgY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpciwgY2R4X2RldixcbmRyaXZlcnMvY2R4L2NkeC5jOjU3MjpcdFx0XHQgICAgXHUwMDI2Y2R4X2RlYnVnX3Jlc291cmNlX2ZvcHMpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTczLX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU3Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3OS1cdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU4Ny1cbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcdGd1YXJkKG11dGV4KShcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU5MC1cdC8qIFVucmVnaXN0ZXIgYWxsIHRoZSBkZXZpY2VzIG9uIHRoZSBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjU5MTpcdGNkeF91bnJlZ2lzdGVyX2RldmljZXMoXHUwMDI2Y2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU5Mi1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01OTgtXG5kcml2ZXJzL2NkeC9jZHguYzo1OTk6XHRcdGNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYwMDpcdFx0aWYgKGNkeCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VzY2FuKVxuZHJpdmVycy9jZHgvY2R4LmM6NjAxOlx0XHRcdGNkeC1cdTAwM2VvcHMtXHUwMDNlc2NhbihjZHgpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjAyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTYwOD1zdGF0aWMgQlVTX0FUVFJfV08ocmVzY2FuKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxMDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNjExLVx0XHUwMDI2YnVzX2F0dHJfcmVzY2FuLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XG5kcml2ZXJzL2NkeC9jZHguYzo2MTQ6QVRUUklCVVRFX0dST1VQUyhjZHhfYnVzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NjE3Olx0Lm5hbWVcdFx0PSBcJiMzNDtjZHhcJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYy02MTgtXHQuZHJpdmVyX292ZXJyaWRlID0gdHJ1ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcdC5tYXRjaFx0XHQ9IGNkeF9idXNfbWF0Y2gsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjA6XHQucHJvYmVcdFx0PSBjZHhfcHJvYmUsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjE6XHQucmVtb3ZlXHRcdD0gY2R4X3JlbW92ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcdC5zaHV0ZG93blx0PSBjZHhfc2h1dGRvd24sXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XHQuZG1hX2NvbmZpZ3VyZVx0PSBjZHhfZG1hX2NvbmZpZ3VyZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcdC5kbWFfY2xlYW51cFx0PSBjZHhfZG1hX2NsZWFudXAsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XHQuYnVzX2dyb3Vwc1x0PSBjZHhfYnVzX2dyb3VwcyxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcdC5kZXZfZ3JvdXBzXHQ9IGNkeF9kZXZfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XG5kcml2ZXJzL2NkeC9jZHguYzo2Mjg6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM1Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNjpcdGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNmNkeF9idXNfdHlwZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcdGVycm9yID0gZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmNkeF9kcml2ZXItXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzOS1cdGlmIChlcnJvcikge1xuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVx0XHRwcl9lcnIoXCYjMzQ7ZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXG5cJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYzo2NDE6XHRcdCAgICAgICBjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5uYW1lLCBlcnJvcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDItXHRcdHJldHVybiBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xuZHJpdmVycy9jZHgvY2R4LmM6NjUxOlx0ZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjU0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy02NTYte1xuZHJpdmVycy9jZHgvY2R4LmM6NjU3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTk6XHRrZnJlZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MC19XG5kcml2ZXJzL2NkeC9jZHguYy02NjEtXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NjMtI2lmZGVmIENPTkZJR19IQVZFX0lPUkVNQVBfUFJPVFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjY2OTogKiBjZHhfbW1hcF9yZXNvdXJjZSAtIG1hcCBhIENEWCByZXNvdXJjZSBpbnRvIHVzZXIgbWVtb3J5IHNwYWNlXG5kcml2ZXJzL2NkeC9jZHguYy02NzAtICogQGZwOiBGaWxlIHBvaW50ZXIuIE5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJ1dCByZXF1aXJlZCB3aGVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY3OS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjY4MDpzdGF0aWMgaW50IGNkeF9tbWFwX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGtvYmplY3QgKmtvYmosXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02ODMte1xuZHJpdmVycy9jZHgvY2R4LmM6Njg0Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGtvYmpfdG9fZGV2KGtvYmopKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY4NS1cdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVx1MDAzZXByaXZhdGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxuZHJpdmVycy9jZHgvY2R4LmM6Njg5Olx0cmVzID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbbnVtXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5MC1cdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVx1MDAzZXN0YXJ0KSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXHQvKiBNYWtlIHN1cmUgdGhlIGNhbGxlciBpcyBtYXBwaW5nIGEgdmFsaWQgcmVzb3VyY2UgZm9yIHRoaXMgZGV2aWNlICovXG5kcml2ZXJzL2NkeC9jZHguYzo2OTQ6XHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkgJiM0MzsgMTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5NS1cdGlmICh2bWEtXHUwMDNldm1fcGdvZmYgJiM0Mzsgdm1hX3BhZ2VzKHZtYSkgXHUwMDNlIHNpemUpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyNjgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBDRFggQnVzIEVtdWxhdGlvbiBpbiBRRU1VKioKCk9rYXksIHNvIHRoZSBDRFggYnVzIGRyaXZlciBpbiB0aGlzIGNvbnRleHQgaXMgZGVwZW5kZW50IG9uIGVpdGhlciBgT0YgJmFtcDsmYW1wOyBBUk02NGAgb3IgYENPTVBJTEVfVEVTVGAuIFRoaXMgdGVsbHMgbWUgdGhlIGNvcmUgcmVxdWlyZW1lbnQgb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgb3BlcmF0ZXMuIFRoZSBmYWN0IHRoYXQgdGhlIGB2ZmlvL2NkeGAgZHJpdmVyIGV4aXN0cywgc3BlY2lmaWNhbGx5IGZvciBWRklPIHN1cHBvcnQsIGlzIGludGVyZXN0aW5nLiBUaGlzIGltbWVkaWF0ZWx5IHNwYXJrcyB0aGUgcXVlc3Rpb246IGNhbiB3ZSBlbXVsYXRlIHRoZXNlIENEWCBkZXZpY2VzIHdpdGhpbiBRRU1VPyBUaGF0JiMzOTtzIHRoZSByZWFsIGdvYWwgaGVyZS4gVG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBwb3NzaWJsZS4KCk15IG5leHQgbGluZSBvZiB0aG91Z2h0IGlzIHRvIHNlZSB3aGF0IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBDRFggYnVzLiBJcyB0aGVyZSBhIHNvZnR3YXJlIGRyaXZlciB0aGF0IHdlIGNhbiBhY3R1YWxseSBwcm9iZT8gSWYgd2UgY2FuIGZpbmQgb25lLCB0aGF0IHdpbGwgZ2l2ZSB1cyBhIHN0cm9uZyBiYXNpcyBmb3IgZW11bGF0aW9uLiBJdCBsb29rcyBsaWtlIHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gc3RhcnQuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ2AgaXMgbGlrZWx5IHRvIGJlIHRoZSByaWdodCBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRpZiBDRFhfQlVTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIENEWF9DT05UUk9MTEVSXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtDRFggYnVzIGNvbnRyb2xsZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gSEFTX0RNQVxuICAxMzpcdFx0c2VsZWN0IFJFTU9URVBST0NcbiAgMTQ6XHRcdHNlbGVjdCBSUE1TR1xuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBDRFggY29udHJvbGxlciBkcml2ZXMgdGhlIENEWCBidXMuIEl0IGludGVyYWN0cyB3aXRoXG4gIDE3Olx0XHQgIGZpcm13YXJlIHRvIGdldCB0aGUgaGFyZHdhcmUgZGV2aWNlcyBhbmQgcmVnaXN0ZXJzIHdpdGhcbiAgMTg6XHRcdCAgdGhlIENEWCBidXMuIFNheSBZIHRvIGVuYWJsZSB0aGUgQ0RYIGhhcmR3YXJlIGRyaXZlci5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MzMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIENEWCBDb250cm9sbGVyIEludGVyYWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIENEWCBjb250cm9sbGVyIGFuZCBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBob3cgaXQgaG9va3MgaW50byB0aGUgaGFyZHdhcmUuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgcmVsaWVzIG9uIGZpcm13YXJlIHRvIGludGVyZmFjZSB3aXRoIHRoZSBkZXZpY2VzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byBob3cgdGhhdCYjMzk7cyBvcmNoZXN0cmF0ZWQsIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llczogYEhBU19ETUFgLCBgUkVNT1RFUFJPQ2AsIGFuZCBgUlBNU0dgLiBUaGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBhIHJlYWxpc3RpYyB3YXkgdG8gbW9jayBhbnkgb2YgdGhlIENEWCBoYXJkd2FyZSBmb3IgdGVzdGluZy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdG8gY2hlY2sgd2l0aGluIHRoZSBkcml2ZXIgZGlyZWN0b3J5IGZvciBgY2R4YCwgZm9jdXNpbmcgaW4gdGhlIGBjb250cm9sbGVyYCBzdWJkaXJlY3RvcnksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBjZHhfY29udHJvbGxlci5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW50ZXJhY3Rpb24gbG9naWMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmIGFueSBtZWNoYW5pc21zIGhhdmUgYmVlbiBkZXZlbG9wZWQgdG8gaGFuZGxlIHZpcnR1YWwgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2NvbnRyb2xsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0NEWF9DT05UUk9MTEVSKSAmIzQzOz0gY2R4LWNvbnRyb2xsZXIub1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9NYWtlZmlsZTo5OmNkeC1jb250cm9sbGVyLW9ianMgOj0gY2R4X2NvbnRyb2xsZXIubyBjZHhfcnBtc2cubyBtY2RpLm8gbWNkaV9mdW5jdGlvbnMub1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xMi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMzojaW5jbHVkZSBcJiMzNDtjZHhfY29udHJvbGxlci5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQtI2luY2x1ZGUgXCYjMzQ7Li4vY2R4LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBjZHhfbWNkaV9vcHMgbWNkaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTM1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjM2OnN0YXRpYyBpbnQgY2R4X2J1c19lbmFibGUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMzcte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00MC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo0MTpzdGF0aWMgaW50IGNkeF9idXNfZGlzYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Mi17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ2OnZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDcte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01Mi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1Mzp2b2lkIGNkeF9ycG1zZ19wcmVfcmVtb3ZlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTU0LXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTgtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NTk6c3RhdGljIGludCBjZHhfY29uZmlndXJlX2RldmljZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cdFx0XHRcdHU4IGJ1c19udW0sIHU4IGRldl9udW0sXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTkyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjkzOnN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy05NC17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTE2ND1zdGF0aWMgaW50IHhsbnhfY2R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTY1LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNjY6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjctXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yMjI9c3RhdGljIHZvaWQgeGxueF9jZHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjIzLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyMjQ6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIyNS1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmg6MTQ6dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmg6MTY6dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTctXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNS0jaW5jbHVkZSBcJiMzNDsuLi9jZHguaFwmIzM0O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNjojaW5jbHVkZSBcJiMzNDtjZHhfY29udHJvbGxlci5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3LSNpbmNsdWRlIFwmIzM0O21jZGlfZnVuY3Rpb25zLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTQ2PXN0YXRpYyBpbnQgY2R4X2F0dGFjaF90b19ycHJvYyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtNDgtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnI1X2NvcmVfbm9kZTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6NDk6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy01MC1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz04NT1zdGF0aWMgdm9pZCBjZHhfZGV0YWNoX3RvX3I1KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg2LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6ODc6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy04OC1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz05Nz1zdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTk5LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTAwOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZycGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMDEtXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTExMT1zdGF0aWMgdm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTEyLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTEzOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTE0LVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTEyMT1zdGF0aWMgaW50IGNkeF9ycG1zZ19wcm9iZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyMy1cdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvID0gezB9O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxMjQ6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjUtXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjYtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNzpcdGNkeF9jID0gKHN0cnVjdCBjZHhfY29udHJvbGxlciAqKWNkeF9ycG1zZ19pZF90YWJsZVswXS5kcml2ZXJfZGF0YTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTI4LVx0Y2R4X21jZGkgPSBjZHhfYy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTQ5PXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19yZW1vdmUoc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE1MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjE1MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUyLVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeF9jLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz0xNjk9aW50IGNkeF9zZXR1cF9ycG1zZyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNzAte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNzE6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNzItXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODMzNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENEWCBDb250cm9sbGVyKioKCk9rYXksIHNvIHRoZSBDRFggY29udHJvbGxlciBpcyBSUE1TRyBiYXNlZCwgYW5kIGl0JiMzOTtzIHVzaW5nIGBycHJvY2Ag4oCTIHRoYXQgYHJlbW90ZXByb2NgIHRoaW5nIOKAkyB0byB0YWxrIHRvIGEgcmVtb3RlIHByb2Nlc3Nvciwgc3BlY2lmaWNhbGx5IGFuIFI1IGNvcmUuIFRoaXMgaW1tZWRpYXRlbHkgZmVlbHMgcHJldHR5IGhhcmR3YXJlLXNwZWNpZmljLiBJJiMzOTttIHdvbmRlcmluZyBpZiB3ZSBjYW4gbW9jayBpdC4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgYW55dGhpbmcgZm9yIHRoYXQ/IExpa2UgYHN5el9ycG1zZ19jcmVhdGVgPyBOb3BlLCBub3RoaW5nIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgQ0RYLiBIbW0sIGZydXN0cmF0aW5nLgoKV2FpdCBhIHNlY29uZC4uLiB0aGUgcmVsZXZhbnQgcGF0Y2ggaXMgcmlnaHQgdGhlcmUgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGNvbmNyZXRlIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgYHZmaW9fY2R4X21tYXBgLiBJcyB0aGUgYFZGSU9fQ0RYYCBkcml2ZXIgZXZlbiB0ZXN0YWJsZT8gSSBndWVzcyB0aGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGFuZCBmaWd1cmUgdGhpcyBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHNlZSB3aGF0IHBvc3NpYmlsaXRpZXMgZXhpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fY2R4X21tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMjM9c3RhdGljIGxvbmcgdmZpb19jZHhfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjQzLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjQ0OnN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjQ1LVx0XHRcdCAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI2My1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2NDpzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNjUtXHRcdFx0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI5MS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI5MjpcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI5My19XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9Mjk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fY2R4X29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMDMtXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX2NkeF9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzA0Olx0Lm1tYXBcdFx0PSB2ZmlvX2NkeF9tbWFwLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA1LVx0LmJpbmRfaW9tbXVmZFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxOTkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFZGSU8gQ0RYIGFuZCBtbWFwKioKCk9rYXksIHNvIGB2ZmlvX2NkeF9tbWFwYCBpcyB0aGUgYG1tYXBgIGZ1bmN0aW9uIHNwZWNpZmljYWxseSBmb3Igb3BlcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBgdmZpb19jZHhgIGRyaXZlci4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IHRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IG9ubHkgYmVjb21lcyByZWxldmFudCB3aGVuIGEgQ0RYIGRldmljZSBpcyBhY3R1YWxseSBib3VuZCB0byB0aGUgYHZmaW8tY2R4YCBkcml2ZXIuIEkmIzM5O20gd29uZGVyaW5nLi4uIGlzIHRoZXJlIGEgd2F5IHRvIGNyZWF0ZSBhIENEWCBkZXZpY2UgdmlydHVhbGx5LCB3aXRoaW4gc29mdHdhcmU/IEkmIzM5O20gdGhpbmtpbmcgb2Ygc2NlbmFyaW9zIGZvciB0ZXN0aW5nIG9yIHByb3RvdHlwaW5nIHdoZXJlIEkgZG9uJiMzOTt0IG5lY2Vzc2FyaWx5IGhhdmUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhlbiBpcywgYXJlIHRoZXJlIGFueSBtb2NrIG9yIHRlc3QgZHJpdmVycyBvdXQgdGhlcmUgc3BlY2lmaWNhbGx5IGZvciBDRFg/IElmIHNvLCB0aGF0IHdvdWxkIGJlIGEgZmFudGFzdGljIHNob3J0Y3V0IHRvIHdvcmtpbmcgd2l0aCBgdmZpb19jZHhgIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZSBmdXJ0aGVyLCBpdCBjb3VsZCBiZSBhIHJlYWwgdGltZSBzYXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTA1CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipDaGVja2luZyBmb3IgYSBNb2NrIGluIGBkcml2ZXJzL2NkeC9gKioKCk9rYXksIHNvIEkgbmVlZCB0byBzZWUgaWYgd2UmIzM5O3ZlIGdvdCBhIG1vY2sgaW1wbGVtZW50YXRpb24gYW55d2hlcmUgaW4gdGhlIGBkcml2ZXJzL2NkeC9gIGRpcmVjdG9yeS4gVGhpcyBpcyBzdGFuZGFyZCBwcmFjdGljZSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBkcml2ZXJzIOKAkyBtb2NrcyBhcmUgKmluY3JlZGlibHkqIHVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgaXNvbGF0aW9uLCB3aGV0aGVyIHdlJiMzOTtyZSB0YWxraW5nIHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBvciBldmVuIGp1c3QgZGVidWdnaW5nLiBUaGV5IGxldCB1cyBjb250cm9sIHRoZSBlbnZpcm9ubWVudCwgc2ltdWxhdGUgaGFyZHdhcmUsIGFuZCB2ZXJpZnkgb3VyIGNvZGUmIzM5O3MgaW50ZXJhY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHJlbHkgb24gdGhlIGFjdHVhbCwgc29tZXRpbWVzIHVucmVsaWFibGUsIGRyaXZlciBoYXJkd2FyZS4gUGx1cywgbW9ja3MgbWFrZSB0ZXN0aW5nIHNvIG11Y2ggZmFzdGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSB0ZWFtIGhhcyBiZWVuIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcywgb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZC4gSSBrbm93ICpJJiMzOTtkKiBwcmVmZXIgYSBnb29kIG1vY2sgdG8ga2VlcCB0aGluZ3MgbW92aW5nLiBUaW1lIHRvIGRpdmUgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkNoZWNraW5nIGZvciBNb2NrIGBjZHhgIGluIERyaXZlcnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgd2UmIzM5O3ZlIGdvdCBhbnkgbW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgYGNkeGAgbHVya2luZyBpbiB0aGUgYGRyaXZlcnMvYCBkaXJlY3RvcnkuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlIGJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgY2hhbmdlcywganVzdCB0byBlbnN1cmUgdGhhdCBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhIHRlc3Qgc2V0dXAgb3IgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdG8gbWFrZSB1cGRhdGVzIHRvIHRob3NlIHRvbywgb3Igd2hldGhlciB0aGV5JiMzOTtyZSBldmVuIHJlbGV2YW50IHRvIHdoYXQgSSYjMzk7bSBkb2luZy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwOyBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gYnJlYWsgZXhpc3RpbmcgbW9ja2luZyBpbXBsZW1lbnRhdGlvbnMuIFRoYXQgd291bGQgY2F1c2UgdW50b2xkIGlzc3Vlcy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGNsZWFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjU0NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9LY29uZmlnPTI1MD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9odGUvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9LY29uZmlnLTI1MS1cbmRyaXZlcnMvS2NvbmZpZzoyNTI6c291cmNlIFwmIzM0O2RyaXZlcnMvY2R4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvS2NvbmZpZy0yNTMtXG4tLVxuZHJpdmVycy9NYWtlZmlsZT0xOTQ9b2JqLSQoQ09ORklHX0RSTV9BQ0NFTClcdFx0JiM0Mzs9IGFjY2VsL1xuZHJpdmVycy9NYWtlZmlsZToxOTU6b2JqLSQoQ09ORklHX0NEWF9CVVMpXHRcdCYjNDM7PSBjZHgvXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcdFx0JiM0Mzs9IGRwbGwvXG4tLVxuZHJpdmVycy9jZHgvS2NvbmZpZz04PWNvbmZpZyBDRFhfQlVTXG4tLVxuZHJpdmVycy9jZHgvS2NvbmZpZy0xOC1cbmRyaXZlcnMvY2R4L0tjb25maWc6MTk6c291cmNlIFwmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlPTg9Y2NmbGFncy15ICYjNDM7PSAtRERFRkFVTFRfU1lNQk9MX05BTUVTUEFDRT0mIzM5O1wmIzM0O0NEWF9CVVNcJiMzNDsmIzM5O1xuZHJpdmVycy9jZHgvTWFrZWZpbGUtOS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSAmIzQzOz0gY2R4Lm8gY29udHJvbGxlci9cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0NEWF9CVVMpICYjNDM7PSBjZHhfbXNpLm9cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTE0LWVuZGlmXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXHUwMDNjbGludXgvaWRyLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvbW11LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MS0jaW5jbHVkZSBcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jOjcyOiNpbmNsdWRlIFwmIzM0O2NkeC5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jZHguYy03My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjc5OnN0YXRpYyBERUZJTkVfSURBKGNkeF9jb250cm9sbGVyX2lkYSk7XG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYzo4MjovKiBEZWJ1Z2ZzIGRpciBmb3IgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxuZHJpdmVycy9jZHgvY2R4LmM6ODU6c3RhdGljIGNoYXIgKmNvbXBhdF9ub2RlX25hbWUgPSBcJiMzNDt4bG54LHZlcnNhbC1uZXQtY2R4XCYjMzQ7O1xuZHJpdmVycy9jZHgvY2R4LmMtODYtXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XG5kcml2ZXJzL2NkeC9jZHguYy04OC1cbmRyaXZlcnMvY2R4L2NkeC5jLTg5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtOTYte1xuZHJpdmVycy9jZHgvY2R4LmM6OTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjk4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjk5Olx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDItXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEwNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNy1cbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcbmRyaXZlcnMvY2R4L2NkeC5jOjEwOTpcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0xMTEtXHRpZiAocmV0KVxuZHJpdmVycy9jZHgvY2R4LmM6MTEyOlx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7Y2R4IGRldmljZSByZXNldCBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtMTEzLVxuZHJpdmVycy9jZHgvY2R4LmMtMTE0LVx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSByZXNldCBpcyBjb21wbGV0ZSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTE1Olx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlcmVzZXRfZG9uZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjExNjpcdFx0Y2R4X2Rydi1cdTAwM2VyZXNldF9kb25lKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTE3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTExOS19XG5kcml2ZXJzL2NkeC9jZHguYzoxMjA6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2Rldl9yZXNldCk7XG5kcml2ZXJzL2NkeC9jZHguYy0xMjEtXG5kcml2ZXJzL2NkeC9jZHguYy0xMjItLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoxMjM6ICogcmVzZXRfY2R4X2RldmljZSAtIFJlc2V0IGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMzAtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMi17XG5kcml2ZXJzL2NkeC9jZHguYzoxMzM6XHRyZXR1cm4gY2R4X2Rldl9yZXNldChkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTM0LX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMzYtLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoxMzc6ICogY2R4X3VucmVnaXN0ZXJfZGV2aWNlIC0gVW5yZWdpc3RlciBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTEzOC0gKiBAZGV2OiBDRFggZGV2aWNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTQwLSAqXHQgIGJ1dCBpcyByZXF1aXJlZCBoZXJlIGFzIHRoZSBidXNfZm9yX2VhY2hfZGV2KCkgQVBJIGV4cGVjdHNcbmRyaXZlcnMvY2R4L2NkeC5jOjE0MTogKlx0ICB0aGUgcGFzc2VkIGZ1bmN0aW9uIChjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGhhdmUgdGhpc1xuZHJpdmVycy9jZHgvY2R4LmMtMTQyLSAqXHQgIGFzIGFuIGFyZ3VtZW50LlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0NS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE0NjpzdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2NkeC9jZHguYy0xNDctXHRcdFx0XHQgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXG5kcml2ZXJzL2NkeC9jZHguYzoxNTI6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MzpcdFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NDpcdFx0aWYgKGNkeF9kZXYtXHUwMDNlZW5hYmxlZCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NTpcdFx0XHRjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1Ni1cdH0gZWxzZSB7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTc6XHRcdGNkeF9kZXN0cm95X3Jlc19hdHRyKGNkeF9kZXYsIE1BWF9DRFhfREVWX1JFU09VUkNFUyk7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTg6XHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1OS1cdH1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNjEtXHQvKlxuZHJpdmVycy9jZHgvY2R4LmM6MTYyOlx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXG5kcml2ZXJzL2NkeC9jZHguYzoxNjM6XHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVx0ICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNjU6XHRkZXZpY2VfZGVsKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NjpcdHB1dF9kZXZpY2UoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTY3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjE3MTpzdGF0aWMgdm9pZCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2VzKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtMTcyLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjE3MzpcdC8qIFJlc2V0IGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byBjZHggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNzQ6XHRidXNfZm9yX2VhY2hfZGV2KGJ1cywgTlVMTCwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE3NS19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTc3LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTc4OiAqIGNkeF9tYXRjaF9vbmVfZGV2aWNlIC0gVGVsbCBpZiBhIENEWCBkZXZpY2Ugc3RydWN0dXJlIGhhcyBhIG1hdGNoaW5nXG5kcml2ZXJzL2NkeC9jZHguYy0xNzktICpcdFx0XHQgIENEWCBkZXZpY2UgaWQgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTgyLSAqXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTg1OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKlxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcdFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xOTktLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoyMDA6ICogY2R4X21hdGNoX2lkIC0gU2VlIGlmIGEgQ0RYIGRldmljZSBtYXRjaGVzIGEgZ2l2ZW4gY2R4X2lkIHRhYmxlXG5kcml2ZXJzL2NkeC9jZHguYy0yMDEtICogQGlkczogYXJyYXkgb2YgQ0RYIGRldmljZSBJRCBzdHJ1Y3R1cmVzIHRvIHNlYXJjaCBpblxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXG5kcml2ZXJzL2NkeC9jZHguYzoyMDU6ICogc3VwcG9ydGVkIGRldmljZXMuIFJldHVybnMgdGhlIG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yXG5kcml2ZXJzL2NkeC9jZHguYy0yMDYtICogTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxuZHJpdmVycy9jZHgvY2R4LmM6MjA4OiAqIFJldHVybjogbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3IgTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTIwOS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMTpjZHhfbWF0Y2hfaWQoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcywgc3RydWN0IGNkeF9kZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTIxMi17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjE0LVx0XHR3aGlsZSAoaWRzLVx1MDAzZXZlbmRvciB8fCBpZHMtXHUwMDNlZGV2aWNlKSB7XG5kcml2ZXJzL2NkeC9jZHguYzoyMTU6XHRcdFx0aWYgKGNkeF9tYXRjaF9vbmVfZGV2aWNlKGlkcywgZGV2KSlcbmRyaXZlcnMvY2R4L2NkeC5jLTIxNi1cdFx0XHRcdHJldHVybiBpZHM7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjIyLVxuZHJpdmVycy9jZHgvY2R4LmM6MjIzOmludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XG5kcml2ZXJzL2NkeC9jZHguYzoyMjU6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmM6MjI2Olx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjMwLVx0ZGV2X2NvbmZpZy5idXNfbWFzdGVyX2VuYWJsZSA9IHRydWU7XG5kcml2ZXJzL2NkeC9jZHguYzoyMzE6XHRpZiAoY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XHRcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzQtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjM2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI0Ni1cdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSBmYWxzZTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0NzpcdGlmIChjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUpXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcdFx0XHRcdFx0ICAgICAgY2R4X2Rldi1cdTAwM2VkZXZfbnVtLCBcdTAwMjZkZXZfY29uZmlnKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI1MC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxuZHJpdmVycy9jZHgvY2R4LmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9jbGVhcl9tYXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjU2OiAqIGNkeF9idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2NkeC9jZHguYzoyNTc6ICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxuZHJpdmVycy9jZHgvY2R4LmM6MjU4OiAqIEBkcnY6IHRoZSBkZXZpY2UgZHJpdmVyIHRvIHNlYXJjaCBmb3IgbWF0Y2hpbmcgY2R4IGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtMjU5LSAqIHN0cnVjdHVyZXNcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNjItICovXG5kcml2ZXJzL2NkeC9jZHguYzoyNjM6c3RhdGljIGludCBjZHhfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbmRyaXZlcnMvY2R4L2NkeC5jLTI2NC17XG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY3Olx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHM7XG5kcml2ZXJzL2NkeC9jZHguYy0yNjktXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMjcwLVxuZHJpdmVycy9jZHgvY2R4LmM6MjcxOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtMjcyLVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL2NkeC9jZHguYy0yNzMtXG5kcml2ZXJzL2NkeC9jZHguYzoyNzQ6XHRpZHMgPSBjZHhfZHJ2LVx1MDAzZW1hdGNoX2lkX3RhYmxlO1xuZHJpdmVycy9jZHgvY2R4LmMtMjc1LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI4MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjI4MTpcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0yODItXHRpZiAoIWZvdW5kX2lkKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI5NS1cdFx0aWRzID0gZm91bmRfaWQgJiM0MzsgMTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI5NjpcdFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI5Ny1cdH0gd2hpbGUgKGZvdW5kX2lkKTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMDEtXG5kcml2ZXJzL2NkeC9jZHguYzozMDI6c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNDpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzA2Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cdGludCBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMTItXHQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjMxMzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlbXNpX2RvbWFpbikge1xuZHJpdmVycy9jZHgvY2R4LmM6MzE0Olx0XHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXHRcdGlmIChlcnJvcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMTgtXG5kcml2ZXJzL2NkeC9jZHguYzozMTk6XHRlcnJvciA9IGNkeF9kcnYtXHUwMDNlcHJvYmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMjAtXHRpZiAoZXJyb3IpIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMjctXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzMxOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMzItXG5kcml2ZXJzL2NkeC9jZHguYzozMzM6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZW1vdmUpXG5kcml2ZXJzL2NkeC9jZHguYzozMzQ6XHRcdGNkeF9kcnYtXHUwMDNlcmVtb3ZlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzM1LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cbmRyaXZlcnMvY2R4L2NkeC5jOjMzNzpzdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzM4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cyBcdTAwMjZcdTAwMjYgY2R4X2Rldi1cdTAwM2VlbmFibGVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ0Olx0XHRjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXNodXRkb3duKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2Olx0XHRjZHhfZHJ2LVx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQ3LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTM0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTM1MC17XG5kcml2ZXJzL2NkeC9jZHguYzozNTE6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozNTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzozNTQ6XHR1MzIgaW5wdXRfaWQgPSBjZHhfZGV2LVx1MDAzZXJlcV9pZDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTYtXG5kcml2ZXJzL2NkeC9jZHguYzozNTc6XHRyZXQgPSBvZl9kbWFfY29uZmlndXJlX2lkKGRldiwgY2R4LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCAwLCBcdTAwMjZpbnB1dF9pZCk7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTgtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVQUk9CRV9ERUZFUikge1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM2Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM2MzpcdC8qIEBjZHhfZHJ2IG1heSBub3QgYmUgdmFsaWQgd2hlbiB3ZSYjMzk7cmUgY2FsbGVkIGZyb20gdGhlIElPTU1VIGxheWVyICovXG5kcml2ZXJzL2NkeC9jZHguYzozNjQ6XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWRyaXZlciBcdTAwMjZcdTAwMjYgIWNkeF9kcnYtXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKSB7XG5kcml2ZXJzL2NkeC9jZHguYy0zNjUtXHRcdHJldCA9IGlvbW11X2RldmljZV91c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNzItXG5kcml2ZXJzL2NkeC9jZHguYzozNzM6c3RhdGljIHZvaWQgY2R4X2RtYV9jbGVhbnVwKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XG5kcml2ZXJzL2NkeC9jZHguYzozNzU6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0zNzYtXG5kcml2ZXJzL2NkeC9jZHguYzozNzc6XHRpZiAoIWNkeF9kcnYtXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKVxuZHJpdmVycy9jZHgvY2R4LmMtMzc4LVx0XHRpb21tdV9kZXZpY2VfdW51c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zODEtLyogc2hvdyBjb25maWd1cmF0aW9uIGZpZWxkcyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MzgyOiNkZWZpbmUgY2R4X2NvbmZpZ19hdHRyKGZpZWxkLCBmb3JtYXRfc3RyaW5nKVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4My1zdGF0aWMgc3NpemVfdFx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4NS17XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg3Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVx1MDAzZWZpZWxkKTtcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODgtfVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4OT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmllbGQpXG5kcml2ZXJzL2NkeC9jZHguYy0zOTAtXG5kcml2ZXJzL2NkeC9jZHguYzozOTE6Y2R4X2NvbmZpZ19hdHRyKHZlbmRvciwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MjpjZHhfY29uZmlnX2F0dHIoZGV2aWNlLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6MzkzOmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fdmVuZG9yLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6Mzk0OmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fZGV2aWNlLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6Mzk1OmNkeF9jb25maWdfYXR0cihyZXZpc2lvbiwgXCYjMzQ7MHglMDJ4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NjpjZHhfY29uZmlnX2F0dHIoY2xhc3MsIFwmIzM0OzB4JTA2eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy0zOTctXG5kcml2ZXJzL2NkeC9jZHguYz0zOTg9c3RhdGljIHNzaXplX3QgcmVtb3ZlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MTItXG5kcml2ZXJzL2NkeC9jZHguYzo0MTM6XHRcdHJldCA9IGNkeF91bnJlZ2lzdGVyX2RldmljZShkZXYsIE5VTEwpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDE0LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQyMj1zdGF0aWMgc3NpemVfdCByZXNldF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XG5kcml2ZXJzL2NkeC9jZHguYzo0MjU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cdGJvb2wgdmFsO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQzNC1cbmRyaXZlcnMvY2R4L2NkeC5jOjQzNTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNjpcdFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcdFx0cmV0ID0gZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgcmVzZXRfY2R4X2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXHRlbHNlXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzk6XHRcdHJldCA9IGNkeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0MC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NDU9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo0NDg6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MDpcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXCYjMzQ7Y2R4OnYlMDRYZCUwNFhzdiUwNFhzZCUwNFhjJTA2WFxcblwmIzM0OywgY2R4X2Rldi1cdTAwM2V2ZW5kb3IsXG5kcml2ZXJzL2NkeC9jZHguYzo0NTE6XHRcdFx0Y2R4X2Rldi1cdTAwM2VkZXZpY2UsIGNkeF9kZXYtXHUwMDNlc3Vic3lzdGVtX3ZlbmRvciwgY2R4X2Rldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxuZHJpdmVycy9jZHgvY2R4LmM6NDUyOlx0XHRcdGNkeF9kZXYtXHUwMDNlY2xhc3MpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDUzLX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NTY9c3RhdGljIHNzaXplX3QgZW5hYmxlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NDYwOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MS1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ2Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ2NzpcdGlmIChlbmFibGUgPT0gY2R4X2Rldi1cdTAwM2VlbmFibGVkKVxuZHJpdmVycy9jZHgvY2R4LmMtNDY4LVx0XHRyZXR1cm4gY291bnQ7XG5kcml2ZXJzL2NkeC9jZHguYy00NjktXG5kcml2ZXJzL2NkeC9jZHguYzo0NzA6XHRpZiAoZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19lbmFibGUpXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2VuYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYzo0NzI6XHRlbHNlIGlmICghZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXHRpZiAoIXJldClcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3ODpcdFx0Y2R4X2Rldi1cdTAwM2VlbmFibGVkID0gZW5hYmxlO1xuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDg1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXG5kcml2ZXJzL2NkeC9jZHguYzo0ODc6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBjZHhfZGV2LVx1MDAzZWVuYWJsZWQpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg4LX1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ5MTpzdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxuZHJpdmVycy9jZHgvY2R4LmM6NDk2Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NzpcdGlmICghY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy00OTgtXHRcdHJldHVybiBhLVx1MDAzZW1vZGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6NTAzOnN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy01MDctXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA5Olx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNTEwLVx0XHRyZXR1cm4gYS1cdTAwM2Vtb2RlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUxNC1cbmRyaXZlcnMvY2R4L2NkeC5jOjUxNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVx0XHUwMDI2ZGV2X2F0dHJfcmVtb3ZlLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTI3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XHQuYXR0cnMgPSBjZHhfZGV2X2F0dHJzLFxuZHJpdmVycy9jZHgvY2R4LmM6NTMwOlx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxuZHJpdmVycy9jZHgvY2R4LmMtNTMxLX07XG5kcml2ZXJzL2NkeC9jZHguYy01MzItXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy01MzQtXHRcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MzgtXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NDA6XHQuYXR0cnMgPSBjZHhfYnVzX2Rldl9hdHRycyxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcdC5pc192aXNpYmxlID0gY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZSxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Mi19O1xuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxuZHJpdmVycy9jZHgvY2R4LmM6NTQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpjZHhfZGV2X2dyb3Vwc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTQ1Olx0XHUwMDI2Y2R4X2Rldl9ncm91cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NjpcdFx1MDAyNmNkeF9idXNfZGV2X2dyb3VwLFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ3LVx0TlVMTCxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NDktXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy01NTEte1xuZHJpdmVycy9jZHgvY2R4LmM6NTUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NkeC9jZHguYy01NTMtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NTUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfQ0RYX0RFVl9SRVNPVVJDRVM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XHRcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gIFx1MDAyNmNkeF9kZXYtXHUwMDNlcmVzW2ldO1xuZHJpdmVycy9jZHgvY2R4LmMtNTU3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU2Mi19XG5kcml2ZXJzL2NkeC9jZHguYzo1NjM6REVGSU5FX1NIT1dfQVRUUklCVVRFKGNkeF9kZWJ1Z19yZXNvdXJjZSk7XG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXG5kcml2ZXJzL2NkeC9jZHguYzo1NjU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy01NjYte1xuZHJpdmVycy9jZHgvY2R4LmM6NTY3Olx0Y2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldiksIGNkeF9kZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYzo1Njg6XHRpZiAoSVNfRVJSKGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIpKVxuZHJpdmVycy9jZHgvY2R4LmMtNTY5LVx0XHRyZXR1cm47XG5kcml2ZXJzL2NkeC9jZHguYy01NzAtXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3Jlc291cmNlXCYjMzQ7LCAwNDQ0LCBjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyLCBjZHhfZGV2LFxuZHJpdmVycy9jZHgvY2R4LmM6NTcyOlx0XHRcdCAgICBcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XG5kcml2ZXJzL2NkeC9jZHguYy01NzMtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTg4Olx0Z3VhcmQobXV0ZXgpKFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxuZHJpdmVycy9jZHgvY2R4LmMtNTkwLVx0LyogVW5yZWdpc3RlciBhbGwgdGhlIGRldmljZXMgb24gdGhlIGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlx0Y2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhcdTAwMjZjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU5OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU5OTpcdFx0Y2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGQpO1xuZHJpdmVycy9jZHgvY2R4LmM6NjAwOlx0XHRpZiAoY2R4IFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlY29udHJvbGxlcl9yZWdpc3RlcmVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZXNjYW4pXG5kcml2ZXJzL2NkeC9jZHguYzo2MDE6XHRcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VzY2FuKGNkeCk7XG5kcml2ZXJzL2NkeC9jZHguYy02MDItXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xuZHJpdmVycy9jZHgvY2R4LmMtNjA5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjEwOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXHRcdTAwMjZidXNfYXR0cl9yZXNjYW4uYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MTMtfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNDpBVFRSSUJVVEVfR1JPVVBTKGNkeF9idXMpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxuZHJpdmVycy9jZHgvY2R4LmM6NjE2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBjZHhfYnVzX3R5cGUgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo2MTc6XHQubmFtZVx0XHQ9IFwmIzM0O2NkeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxOC1cdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjE5Olx0Lm1hdGNoXHRcdD0gY2R4X2J1c19tYXRjaCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMDpcdC5wcm9iZVx0XHQ9IGNkeF9wcm9iZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcdC5yZW1vdmVcdFx0PSBjZHhfcmVtb3ZlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjIyOlx0LnNodXRkb3duXHQ9IGNkeF9zaHV0ZG93bixcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMzpcdC5kbWFfY29uZmlndXJlXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI0Olx0LmRtYV9jbGVhbnVwXHQ9IGNkeF9kbWFfY2xlYW51cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNTpcdC5idXNfZ3JvdXBzXHQ9IGNkeF9idXNfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI2Olx0LmRldl9ncm91cHNcdD0gY2R4X2Rldl9ncm91cHMsXG5kcml2ZXJzL2NkeC9jZHguYy02MjctfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYyODpFWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXHRcdFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo2MzU6XHRjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5vd25lciA9IG93bmVyO1xuZHJpdmVycy9jZHgvY2R4LmM6NjM2Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2Y2R4X2J1c190eXBlO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM4Olx0ZXJyb3IgPSBkcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM5LVx0aWYgKGVycm9yKSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NDAtXHRcdHByX2VycihcJiMzNDtkcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yICVzOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0MTpcdFx0ICAgICAgIGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLm5hbWUsIGVycm9yKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cdFx0cmV0dXJuIGVycm9yO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY0Ni19XG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1MC17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XHRkcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZjZHhfZHJpdmVyLVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTItfVxuZHJpdmVycy9jZHgvY2R4LmM6NjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcdGtmcmVlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjYwLX1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cbmRyaXZlcnMvY2R4L2NkeC5jOjY2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGNkeF9waHlzX3ZtX29wcyA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2My0jaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjY4LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6NjY5OiAqIGNkeF9tbWFwX3Jlc291cmNlIC0gbWFwIGEgQ0RYIHJlc291cmNlIGludG8gdXNlciBtZW1vcnkgc3BhY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjc5LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbmRyaXZlcnMvY2R4L2NkeC5jLTY4MS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTY5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENEWCBCdXMgYW5kIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBDRFggYnVz4oCmIHJpZ2h0LCB0aGF0JiMzOTtzIHNwZWNpZmljIHRvIHRob3NlIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgKGB4bG54LHZlcnNhbC1uZXQtY2R4YCkuIE5vdCBhIHdpZGVseS11c2VkIHN0YW5kYXJkLCBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC4gQW5kIHRoZSBwcm9ibGVtIGlzLCBpdCByZXF1aXJlcyAqYWN0dWFsKiBoYXJkd2FyZSBvciBhIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHJlbW90ZXByb2MgdG8gZXZlbiBzY2FuIGZvciBkZXZpY2VzLiBObyBtb2NrIGRyaXZlciBpbiB0aGUga2VybmVsLCB3aGljaCBpcyBhIHJlYWwgbGltaXRhdGlvbi4KClNvLCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHRoYXQgYHZmaW9fY2R4X21tYXBgIHBhdGggaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSB3aXRob3V0IHNvbWUgZGVkaWNhdGVkIGhhcmR3YXJlIGVtdWxhdGlvbi4gQW5kIFFFTVUsIGFzIGZhciBhcyBJIGtub3csIGRvZXNuJiMzOTt0IGhhdmUgc3RhbmRhcmQgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBDRFggYnVzLiBJdCYjMzk7cyBub3QgbGlrZSB0aGUgbWFjODAyMTFfaHdzaW0gd2hlcmUgdGhlcmUmIzM5O3MgYSBnZW5lcmljIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuCgpXYWl0IGEgc2Vjb25k4oCmIGNhbiBJIHRyaWNrIHRoZSBzeXN0ZW0/IENhbiBJIGNyZWF0ZSBhICYjMzQ7ZmFrZSYjMzQ7IENEWCBkZXZpY2UgdGhyb3VnaCBzeXNmcyBvciBjb25maWdmcz8gUGVyaGFwcyBJIGNvdWxkIGNyYWZ0IHNvbWV0aGluZyB0byBzaW11bGF0ZSBpdHMgcHJlc2VuY2UsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IHRydWx5IGNvbm5lY3RlZCB0byBhbnkgcGh5c2ljYWwgaGFyZHdhcmUuIFRoYXQgd291bGQgYmUgYSB3YXkgdG8gYnlwYXNzIHRoaXMgcmVxdWlyZW1lbnQgZm9yIGhhcmR3YXJlL3JlbW90ZXByb2MuIExldCBtZSBnbyBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIGNyZWF0ZSB0aGF0IENEWCBkZXZpY2UgZnJvbSB1c2Vyc3BhY2UuIFRoYXQgbWlnaHQgYmUgYSB2aWFibGUgd29ya2Fyb3VuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RldmljZV9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmM9NzI3PXN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03NTUtXG5kcml2ZXJzL2NkeC9jZHguYzo3NTY6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTY0LS8qKlxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguaC02Ni0gKlx0XHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNzItICovXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NkeC5oLTc0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0MS1cdFx0XHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcdFx0XHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcdTAwMjZkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDMtXHRcdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTk2MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBDRFggRGV2aWNlIEFkZGl0aW9uKioKCk9rYXksIHNvIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3QgYm91bmNpbmcgYXJvdW5kIGluIG15IGhlYWQgYWJvdXQgdGhpcyBgY2R4X2RldmljZV9hZGRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgdGlnaHRseSBjb3VwbGVkOyBmcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGUgb25seSBwbGFjZSBpdCYjMzk7cyBldmVyIGNhbGxlZCBpcyBkaXJlY3RseSB3aXRoaW4gYGNkeF9zY2FuX2RldmljZXNgIHdoaWNoIHJlc2lkZXMgaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBtZWFuaW5nIG15IGludmVzdGlnYXRpb24gY2FuIGJlIHByZXR0eSBmb2N1c2VkLiBOb3csIHdoZW4gaXMgYGNkeF9zY2FuX2RldmljZXNgIHRyaWdnZXJlZD8gSXQgaGFwcGVucyB3aGVuIHRoZSBDRFggY29udHJvbGxlciBpdHNlbGYgaXMgcHJvYmVkIOKAkyB3aGljaCBtYWtlcyBzZW5zZSDigJMgb3Igd2hlbiBhIHJlc2Nhbm5pbmcgb3BlcmF0aW9uIGlzIGluaXRpYXRlZC4gVGhlIENEWCBjb250cm9sbGVyLCByZW1lbWJlciwgaXMgc2V0IHVwIGFzIGEgcGxhdGZvcm0gZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhlIGB4bG54X2NkeF9wcm9iZWAgdHlwZS4KClRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpczogY2FuIGEgdXNlciwgZm9yIHNvbWUgcmVhc29uLCBjcmVhdGUgKmFub3RoZXIqIHBsYXRmb3JtIGRldmljZSBmb3IgYHhsbnhfY2R4X3Byb2JlYD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG1heWJlLCBwb3RlbnRpYWxseSwgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXksIHJpZ2h0PyBUaGF0IHNlZW1zIHBsYXVzaWJsZS4gSG93ZXZlciwgZXZlbiBpZiB0aGV5IGNvdWxkLCB0aGUgcmVhbCBib3R0bGVuZWNrLCB0aGUgcmVhbCBkZXBlbmRlbmN5LCBhcHBlYXJzIHRvIGJlIHRoZSBNQ0RJIChNYW5hZ2VtZW50IENvbnRyb2xsZXIgRHJpdmVyIEludGVyZmFjZSkgb3ZlciBSUE1TRy4gSWYgdGhlcmUmIzM5O3Mgbm8gd29ya2luZyBSUE1TRyBlbmRwb2ludCB0aGF0JiMzOTtzIGFjdHVhbGx5IHJlc3BvbmRpbmcgdG8gdGhvc2UgTUNESSBjb21tYW5kcywgYGNkeF9zY2FuX2RldmljZXNgIGlzIGdvaW5nIHRvIHVsdGltYXRlbHkgZmFpbCBhdCBmaW5kaW5nIGFueSBkZXZpY2VzLiBJdCBkb2VzbiYjMzk7dCBtYXR0ZXIgaG93IG1hbnkgcGxhdGZvcm0gZGV2aWNlcyB3ZSBtaWdodCBiZSBhYmxlIHRvIGNvbmp1cmUgdXAuIEl04oCZcyBhbGwgYWJvdXQgdGhlIHVuZGVybHlpbmcgY29tbXVuaWNhdGlvbi4KClNvLCB3aGVyZSBkbyBJIGdvIGZyb20gaGVyZT8gR2l2ZW4gdGhlIGNlbnRyYWxpdHkgb2YgYGNkeF9zY2FuX2RldmljZXNgLCBpdCBzZWVtcyBsaWtlIGNoZWNraW5nIGl0cyBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCB0aGUgZGV0YWlscyBvZiB0aGlzIHByb2Nlc3MsIHJpZ2h0PyBUaGUgZGV0YWlscyBhcmUgaW4gdGhlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZGlnIGluIGFuZCBzZWUgZXhhY3RseSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFJQTVNHIGxheWVyIGFuZCBNQ0RJLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTM6XHRzdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4gIDk0Olx0e1xuICA5NTpcdFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeC1cdTAwM2Vwcml2O1xuICA5NjpcdFx0dTggYnVzX251bSwgZGV2X251bSwgbnVtX2NkeF9idXM7XG4gIDk3Olx0XHRpbnQgcmV0O1xuICA5ODpcdFxuICA5OTpcdFx0LyogTUNESSBGVyBSZWFkOiBGZXRjaCB0aGUgbnVtYmVyIG9mIENEWCBidXNlcyBvbiB0aGlzIGNvbnRyb2xsZXIgKi9cbiAxMDA6XHRcdHJldCA9IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoY2R4X21jZGkpO1xuIDEwMTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDEwMjpcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsXG4gMTAzOlx0XHRcdFx0XCYjMzQ7R2V0IG51bWJlciBvZiBDRFggYnVzZXMgZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbiAxMDQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMDU6XHRcdH1cbiAxMDY6XHRcdG51bV9jZHhfYnVzID0gKHU4KXJldDtcbiAxMDc6XHRcbiAxMDg6XHRcdGZvciAoYnVzX251bSA9IDA7IGJ1c19udW0gXHUwMDNjIG51bV9jZHhfYnVzOyBidXNfbnVtJiM0MzsmIzQzOykge1xuIDEwOTpcdFx0XHRzdHJ1Y3QgZGV2aWNlICpidXNfZGV2O1xuIDExMDpcdFx0XHR1OCBudW1fY2R4X2RldjtcbiAxMTE6XHRcbiAxMTI6XHRcdFx0LyogQWRkIHRoZSBidXMgb24gY2R4IHN1YnN5c3RlbSAqL1xuIDExMzpcdFx0XHRidXNfZGV2ID0gY2R4X2J1c19hZGQoY2R4LCBidXNfbnVtKTtcbiAxMTQ6XHRcdFx0aWYgKCFidXNfZGV2KVxuIDExNTpcdFx0XHRcdGNvbnRpbnVlO1xuIDExNjpcdFxuIDExNzpcdFx0XHQvKiBNQ0RJIEZXIFJlYWQ6IEZldGNoIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBwcmVzZW50ICovXG4gMTE4Olx0XHRcdHJldCA9IGNkeF9tY2RpX2dldF9udW1fZGV2cyhjZHhfbWNkaSwgYnVzX251bSk7XG4gMTE5Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiAxMjA6XHRcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsXG4gMTIxOlx0XHRcdFx0XHRcJiMzNDtHZXQgZGV2aWNlcyBvbiBDRFggYnVzICVkIGZhaWxlZDogJWRcXG5cJiMzNDssIGJ1c19udW0sIHJldCk7XG4gMTIyOlx0XHRcdFx0Y29udGludWU7XG4gMTIzOlx0XHRcdH1cbiAxMjQ6XHRcdFx0bnVtX2NkeF9kZXYgPSAodTgpcmV0O1xuIDEyNTpcdFxuIDEyNjpcdFx0XHRmb3IgKGRldl9udW0gPSAwOyBkZXZfbnVtIFx1MDAzYyBudW1fY2R4X2RldjsgZGV2X251bSYjNDM7JiM0MzspIHtcbiAxMjc6XHRcdFx0XHRzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgZGV2X3BhcmFtcztcbiAxMjg6XHRcbiAxMjk6XHRcdFx0XHQvKiBNQ0RJIEZXOiBHZXQgdGhlIGRldmljZSBjb25maWcgKi9cbiAxMzA6XHRcdFx0XHRyZXQgPSBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhjZHhfbWNkaSwgYnVzX251bSxcbiAxMzE6XHRcdFx0XHRcdFx0XHQgICAgICBkZXZfbnVtLCBcdTAwMjZkZXZfcGFyYW1zKTtcbiAxMzI6XHRcdFx0XHRpZiAocmV0KSB7XG4gMTMzOlx0XHRcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsXG4gMTM0Olx0XHRcdFx0XHRcdFwmIzM0O0NEWCBkZXZpY2UgY29uZmlnIGdldCBmYWlsZWQgZm9yICVkKGJ1cyk6JWQoZGV2KSwgJWRcXG5cJiMzNDssXG4gMTM1Olx0XHRcdFx0XHRcdGJ1c19udW0sIGRldl9udW0sIHJldCk7XG4gMTM2Olx0XHRcdFx0XHRjb250aW51ZTtcbiAxMzc6XHRcdFx0XHR9XG4gMTM4Olx0XHRcdFx0ZGV2X3BhcmFtcy5jZHggPSBjZHg7XG4gMTM5Olx0XHRcdFx0ZGV2X3BhcmFtcy5wYXJlbnQgPSBidXNfZGV2O1xuIDE0MDpcdFxuIDE0MTpcdFx0XHRcdC8qIEFkZCB0aGUgZGV2aWNlIHRvIHRoZSBjZHggYnVzICovXG4gMTQyOlx0XHRcdFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXHUwMDI2ZGV2X3BhcmFtcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDA5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgdmZpby1jZHhgIERyaXZlciBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHZmaW8tY2R4YCBkcml2ZXIsIGFuZCBJJiMzOTt2ZSBnb3QgYSBwcm9ibGVtLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIHRoZXNlIE1DREkgZmlybXdhcmUgcmVhZHMsIHNwZWNpZmljYWxseSBgY2R4X21jZGlfZ2V0X251bV9idXNlc2AsIGBjZHhfbWNkaV9nZXRfbnVtX2RldnNgLCBhbmQgYGNkeF9tY2RpX2dldF9kZXZfY29uZmlnYC4gVGhlc2UgZnVuY3Rpb25zIGRlcGVuZCBvbiBzZW5kaW5nIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gdGhlIGZpcm13YXJlLiBUaGUgaXNzdWUgaXMsIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgd2l0aG91dCBhIG1vY2sgUlBNU0cgZW5kcG9pbnQgdGhhdCAqYWN0cyogbGlrZSB0aGUgZmlybXdhcmUsIHRob3NlIGBjZHhfbWNkaV8qYCBjYWxscyBhcmUgZ29pbmcgdG8gZmFpbC4gVGhleSYjMzk7bGwgZWl0aGVyIHRpbWVvdXQgb3IgcmV0dXJuIGVycm9ycy4KCkFuZCBpZiB0aG9zZSBjYWxscyBmYWlsLCBib29tLCBubyBDRFggZGV2aWNlcyBhcmUgY3JlYXRlZC4gSWYgdGhlcmUgYXJlIG5vIENEWCBkZXZpY2VzLCB0aGVuIHRoZSBgdmZpby1jZHhgIGRyaXZlciwgbmF0dXJhbGx5LCBjYW4mIzM5O3QgYmUgYm91bmQgdG8gYW55dGhpbmcuIFRoYXQgbWVhbnMgYHZmaW9fY2R4X21tYXBgIOKAkyB0aGUgZnVuY3Rpb24gSSYjMzk7bSByZWFsbHkgaW50ZXJlc3RlZCBpbiDigJMgaXMgbmV2ZXIgZ29pbmcgdG8gYmUgcmVhY2hlZC4KClRoaXMgc2VlbXMgdG8gZmFsbCBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnkgd2UmIzM5O3ZlIGJlZW4gdGFsa2luZyBhYm91dDogY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGluayBhYm91dCB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IHNldHVwcyBvciBgbWFjODAyMTFfaHdzaW1gIOKAkyB5b3UgY2FuIGVtdWxhdGUgdGhlIGhhcmR3YXJlLCBidXQgaWYgdGhlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGFyZW4mIzM5O3QgdGhlcmUsIHlvdSYjMzk7cmUgc3R1Y2suCgpCdXQgaG9sZCBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBJcyB0aGVyZSAqYW55KiBvdGhlciB3YXkgYHZmaW9fY2R4X21tYXBgIGNvdWxkIGJlIGNhbGxlZD8gTGV0IG1lIHJldHJhY2UgbXkgc3RlcHMuLi4gaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIGRlZmluZWQgcmlnaHQgdGhlcmUgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGB2ZmlvX2NkeF9vcHMubW1hcGAuIEFoLCB5ZXMsIHJpZ2h0LiBgdmZpb19jZHhfb3BzYCBpcyB1c2VkIGluIGB2ZmlvX2NkeF9wcm9iZWAuIFNvIGl0IGFwcGVhcnMgdGhlcmUgYXJlIG5vIG90aGVyIG9idmlvdXMgbWV0aG9kcyBmb3IgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgoKQWxyaWdodCwgbG9va3MgbGlrZSBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgc29saWQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSBicm9hZGVyIHZpcnR1YWxpemF0aW9uIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2NkeF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA5LVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzEwOnN0YXRpYyBpbnQgdmZpb19jZHhfcHJvYmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTEte1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM1Mj1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzUzOlx0LnByb2JlXHRcdD0gdmZpb19jZHhfcHJvYmUsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNTQtXHQucmVtb3ZlXHRcdD0gdmZpb19jZHhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQxOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIFZGSU8tQ0RYIFByb2JlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHZmaW9fY2R4X3Byb2JlYC4gVGhpcyBnZXRzIGNhbGxlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgZ2V0cyBib3VuZCB0byB0aGUgYHZmaW9fY2R4X2RyaXZlcmAuIFRoZSB0aGluZyBpcywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBjcmVhdGluZyBhIGBjZHhfZGV2aWNlYCBpcyBpbXBvc3NpYmxlIGluIG91ciBjdXJyZW50IHNldHVwLiBXZSBjYW4mIzM5O3QgYWN0dWFsbHkgcHJvYmUgdGhlIGRyaXZlciB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzLCBhbmQgdGhhdCBtZWFucyB3ZSYjMzk7cmUgbmV2ZXIgaGl0dGluZyB0aGUgbW1hcCBmdW5jdGlvbiwgZWl0aGVyLiBHaXZlbiB0aGlzLCBpdCBsb29rcyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgd2l0aGluIHN5emthbGxlci9RRU1VJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGEgZGVhZCBlbmQsIHBsYWluIGFuZCBzaW1wbGUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIGFueSBleGlzdGluZyBtb2NrcyBmb3IgTUNESSBvciBDRFggaW4gdGhlIGtlcm5lbCwganVzdCBpbiBjYXNlIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZSBJJiMzOTttIG1pc3NpbmcsIGJ1dCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgaW4gbXkgaW5pdGlhbCBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHhfbWNkaV9nZXRfbnVtX2J1c2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk5LVx0LyogTUNESSBGVyBSZWFkOiBGZXRjaCB0aGUgbnVtYmVyIG9mIENEWCBidXNlcyBvbiB0aGlzIGNvbnRyb2xsZXIgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMDA6XHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xMDEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTktXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA6aW50IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoc3RydWN0IGNkeF9tY2RpICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0xNS0vKipcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaDoxNjogKiBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzIC0gR2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgYnVzZXMgb25cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0xNy0gKlx0dGhlIGNvbnRyb2xsZXIuXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oLTIyLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oOjIzOmludCBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKHN0cnVjdCBjZHhfbWNkaSAqY2R4KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0yNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNzEKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGgqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IG5vIG1vY2sgaXMgZ29pbmcgdG8gY3V0IGl0IGhlcmUuIFRoaXMgd2hvbGUgdGhpbmcgaGluZ2VzIG9uIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGgsIGluIHBhcnRpY3VsYXIsIHJlbGllcyBvbiB0aGUgQ0RYIGJ1cywgd2hpY2gsIGFzIEkgcmVjYWxsLCBuZWVkcyBhIHZlcnkgcGFydGljdWxhciBzZXR1cCDigJMgTUNESSBjb21tdW5pY2F0aW9uIG92ZXIgUlBNU0csIGxlYWRpbmcgdG8gYW4gUjUgY29yZS4gQW5kIGZyYW5rbHksIHRoaXMgc2V0dXAgaXNu4oCZdCBzb21ldGhpbmcgUUVNVSwgb3IgYW55IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LCBlbXVsYXRlcy4KClRoZXJlZm9yZSwgZnJvbSBhIHByYWN0aWNhbCBwZXJzcGVjdGl2ZSwgaXQmIzM5O3MgYSBkZWFkIGVuZC4gRnV6emluZyB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHdvdWxkIGJlIGFuIGV4ZXJjaXNlIGluIGZ1dGlsaXR5LiBJdCBzaW1wbHkgd29uJiMzOTt0IGJlIHJlYWNoYWJsZS4gSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZW4sIEkmIzM5O2xsIHByb3ZpZGUgYSBjb25jaXNlIGFuZCB0ZWNobmljYWxseSBzb3VuZCBleHBsYW5hdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIGB2ZmlvX2NkeF9tbWFwYCBmdW5jdGlvbiBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIENEWCBidXMgYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmljIHRvIGEgaGFyZHdhcmUvZmlybXdhcmUgYXJyYW5nZW1lbnQgKE1DREkgdmlhIFJQTVNHIHRvIGFuIFI1IGNvcmUpIHdoaWNoIGlzbiYjMzk7dCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gVGhhdCBzaG91bGQgYmUgY2xlYXIgYW5kIGxlYXZlIG5vIHJvb20gZm9yIG1pc3VuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fY2R4X21tYXBgIGluIHRoZSBWRklPIENEWCBkcml2ZXIuIFRoZSBDRFggKENvbXBvc2FibGUgRE1BIGVYcHJlc3MpIGJ1cyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cyBmb3IgQU1EL1hpbGlueCBWZXJzYWwgZGV2aWNlcyB0aGF0IHJlbGllcyBvbiBNQ0RJIGZpcm13YXJlIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gYSByZW1vdGUgcHJvY2Vzc29yIChSNSBjb3JlKSB0byBzY2FuIGFuZCBkaXNjb3ZlciBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgbW9jayBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIG9yIGl0cyBmaXJtd2FyZSBpbiB0aGUga2VybmVsLiBDb25zZXF1ZW50bHksIGl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIGEgQ0RYIGRldmljZSBvciBiaW5kIGl0IHRvIHRoZSBgdmZpby1jZHhgIGRyaXZlciBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19jZHhfbW1hcGAgaW4gdGhlIFZGSU8gQ0RYIGRyaXZlci4gVGhlIENEWCAoQ29tcG9zYWJsZSBETUEgZVhwcmVzcykgYnVzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgYnVzIGZvciBBTUQvWGlsaW54IFZlcnNhbCBkZXZpY2VzIHRoYXQgcmVsaWVzIG9uIE1DREkgZmlybXdhcmUgbWVzc2FnZXMgb3ZlciBSUE1TRyB0byBhIHJlbW90ZSBwcm9jZXNzb3IgKFI1IGNvcmUpIHRvIHNjYW4gYW5kIGRpc2NvdmVyIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGRyaXZlciBmb3IgdGhlIENEWCBidXMgb3IgaXRzIGZpcm13YXJlIGluIHRoZSBrZXJuZWwuIENvbnNlcXVlbnRseSwgaXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBDRFggZGV2aWNlIG9yIGJpbmQgaXQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNjo0Mi41NjYxNzk1ODlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTYwNzU5ODE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2NkeF9tbWFwYCBpbiB0aGUgVkZJTyBDRFggZHJpdmVyLiBUaGUgQ0RYIChDb21wb3NhYmxlIERNQSBlWHByZXNzKSBidXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBidXMgZm9yIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgdGhhdCByZWxpZXMgb24gTUNESSBmaXJtd2FyZSBtZXNzYWdlcyBvdmVyIFJQTVNHIHRvIGEgcmVtb3RlIHByb2Nlc3NvciAoUjUgY29yZSkgdG8gc2NhbiBhbmQgZGlzY292ZXIgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9yIG1vY2sgZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyBvciBpdHMgZmlybXdhcmUgaW4gdGhlIGtlcm5lbC4gQ29uc2VxdWVudGx5LCBpdCBpcyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhIENEWCBkZXZpY2Ugb3IgYmluZCBpdCB0byB0aGUgYHZmaW8tY2R4YCBkcml2ZXIgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NDIuNTY2MTg1MTY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg3MzYxNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2U1NTZjM2RmMTFhMTFhNjVlZDM4OTA5M2ZiNTI4YmVhOGMwNzZjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwOTowNjo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuaW5kZXggYjMxZWQ0YmU3YmRjMS4uYjZiMTdhNmE0NjgxMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbisrKyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuQEAgLTI4NSw2ICsyODUsMTAgQEAgc3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHQgICAgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9XUklURSkpXFxuIFxcdFxcdHJldHVybiAtRVBFUk07XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjQ0LjA1NDE2NjQzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkwMTE5NTk4NzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19jZHhfbW1hcGAgaW4gdGhlIFZGSU8gQ0RYIGRyaXZlci4gVGhlIENEWCAoQ29tcG9zYWJsZSBETUEgZVhwcmVzcykgYnVzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgYnVzIGZvciBBTUQvWGlsaW54IFZlcnNhbCBkZXZpY2VzIHRoYXQgcmVsaWVzIG9uIE1DREkgZmlybXdhcmUgbWVzc2FnZXMgb3ZlciBSUE1TRyB0byBhIHJlbW90ZSBwcm9jZXNzb3IgKFI1IGNvcmUpIHRvIHNjYW4gYW5kIGRpc2NvdmVyIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGRyaXZlciBmb3IgdGhlIENEWCBidXMgb3IgaXRzIGZpcm13YXJlIGluIHRoZSBrZXJuZWwuIENvbnNlcXVlbnRseSwgaXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBDRFggZGV2aWNlIG9yIGJpbmQgaXQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlNTU2YzNkZjExYTExYTY1ZWQzODkwOTNmYjUyOGJlYThjMDc2Y2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwOTowNjo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbmluZGV4IGIzMWVkNGJlN2JkYzEuLmI2YjE3YTZhNDY4MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuKysrIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbkBAIC0yODUsNiArMjg1LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdCAgICAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9XUklURSkpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4rXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbitcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4rXHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuK1xuIFx0cmV0dXJuIHZmaW9fY2R4X21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjQ0LjA1NDE2NzYwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMzY4MjE2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZJTyBDRFggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpcyB3aXRoaW4gYHZmaW9fY2R4X21tYXBgLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjazpcblxuYGBgY1xuXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cblx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcblx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmBgYFxuXG5CYXNpY2FsbHksIGlmIGEgcmVnaW9uIGlzIHJlYWQtb25seSwgaXQncyBwcmV2ZW50aW5nIGBtcHJvdGVjdCgpYCBmcm9tIGJlaW5nIHVzZWQgdG8gZXNjYWxhdGUgaXRzIHBlcm1pc3Npb25zIHRvIHdyaXRlYWJsZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2Ugd2l0aGluIGB2ZmlvX2NkeF9tbWFwYCwgd2hpY2ggaXMgZ29vZC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBob3cgY3JpdGljYWwgaXMgdGhpcz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBJcyBgdmZpby9jZHhgIHNvbWV0aGluZyBjb21tb25seSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gTGV0IG1lIGdvIGNoZWNrIGlmIGB2ZmlvL2NkeGAgaXMgZXZlbiByZWFjaGFibGUuIFdoYXQgdGhlIGhlY2sgZG9lcyBDRFggZXZlbiAqc3RhbmQqIGZvcj8gSXQncyBzb21ldGhpbmcgbGlrZSBcIkNvbXBvc2FibGUgRE1BIGVYcHJlc3NcIiwgcmlnaHQ/IExldCdzIGNoZWNrIGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgIG9yIGBkcml2ZXJzL2NkeC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhbnkgY29udGV4dCBJIGNhbiBnYXRoZXIgYWJvdXQgaXRzIHB1cnBvc2UgYW5kIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjQ5LjM5MDk5MjIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5Njg3ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX0NEWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTctXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnOjg6Y29uZmlnIFZGSU9fQ0RYXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNjo0OS40NzA2ODUxMjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIxNzkwNTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYFZGSU9fQ0RYYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBWRklPX0NEWGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gZGVwZW5kZW5jaWVzIGZvciB0aGlzPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gcG9pbnRzIGFuZCBob3cgaXQgcmVsaWVzIG9uIG9yIGltcGFjdHMgb3RoZXIgVkZJTyBjb21wb25lbnRzIG9yIHRoZSBicm9hZGVyIGtlcm5lbC4gSSBuZWVkIHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBjaGFuZ2VzIGluIGBWRklPX0NEWGAgY291bGQgcmlwcGxlIG91dHdhcmRzLiBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVycyBvciBzdWJzeXN0ZW1zIGl0J3MgcGFydGljdWxhcmx5IGludGVydHdpbmVkIHdpdGg/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLCBpbmNsdWRlIGZpbGVzLCBhbmQgYW55IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gaXRzIGFyY2hpdGVjdHVyZSBhbmQgZW5zdXJlIEknbSBhd2FyZSBvZiB0aGUgZnVsbCBjb250ZXh0IHdoZW4gSSBzdGFydCB0byBhbmFseXplIHRoZSBjb2RlLiBUaGlzIGlzIHN0ZXAgb25lLCBiZWZvcmUgSSBldmVuIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNjo1Mi41OTI0NzkwOTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwODMwNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnPTg9Y29uZmlnIFZGSU9fQ0RYXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzoxMDpcXHRkZXBlbmRzIG9uIENEWF9CVVNcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctMTEtXFx0c2VsZWN0IEVWRU5URkRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTIuNjcwNTY2OTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNjYzNzY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBDRFhfQlVTKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgc3RydWN0dXJlIHJlbGF0ZWQgdG8gYENEWF9CVVNgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhpcyB3aWxsIGxpa2VseSBpbnZvbHZlIGRpZ2dpbmcgaW50byBjb25maWd1cmF0aW9uIGZpbGVzLCBwZXJoYXBzIGV4YW1pbmluZyBidWlsZCBzY3JpcHRzIChpZiB0aGlzIGlzIGEgc29mdHdhcmUgc3lzdGVtKSwgb3IgZXZlbiBxdWVyeWluZyBhIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBgQ0RYX0JVU2AgcmVsaWVzIHVwb24g4oCTIHRoaXMgY291bGQgaW5jbHVkZSBzaGFyZWQgbGlicmFyaWVzLCBvdGhlciBtb2R1bGVzLCBleHRlcm5hbCBzZXJ2aWNlcywgb3Igc3BlY2lmaWMgaGFyZHdhcmUvZmlybXdhcmUgaWYgd2UncmUgZGVhbGluZyB3aXRoIGFuIGVtYmVkZGVkIHN5c3RlbS4gSSB3YW50IHRvIGJ1aWxkIGEgcXVpY2sgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkIHNvIEkgdW5kZXJzdGFuZCB0aGUgbGlrZWx5IGltcGFjdCBvZiBhbnkgY2hhbmdlcy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgYXJ0aWZhY3RzIGFuZCB0aGVpciB2ZXJzaW9ucy4gTGV0J3Mgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjU2LjE5NzIwODc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNzQ0NzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRFhfQlVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTYuMjcwOTU3MzQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3MjkyNjA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDRFhfQlVTIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYENEWF9CVVNgLiBHaXZlbiBteSBleGlzdGluZyBrbm93bGVkZ2Ugb2YgdGhlIHBsYXRmb3JtIGFuZCB0aGUgYnJvYWRlciBidWlsZCBzeXN0ZW0sIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBDRFggZHJpdmVyLiBUaGF0J3MgYWxtb3N0IGFsd2F5cyB3aGVyZSB0aGUgY3J1Y2lhbCBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIHJlc2lkZXMuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgZm9yIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBkZWNsYXJlZCBmb3IgYENEWF9CVVNgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLCBhbnkgY29uZGl0aW9uYWwgZGVmaW5pdGlvbnMgKGxpa2UgYGlmYCBzdGF0ZW1lbnRzKSwgYW5kIGFueSBvdGhlciBidWlsZC10aW1lIHJlbGF0aW9uc2hpcHMgdGhhdCBkaWN0YXRlIHdoZW4gYW5kIGhvdyBgQ0RYX0JVU2AgZ2V0cyBpbmNsdWRlZCBpbiB0aGUgZmluYWwgaW1hZ2UuIFRoaXMgcXVpY2sgZGl2ZSBpbnRvIEtjb25maWcgc2hvdWxkIGdpdmUgbWUgdGhlIGZvdW5kYXRpb25hbCBjb250ZXh0IEkgbmVlZCB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTkuNjQzODg2MTU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvY2R4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBidXMgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgQ0RYX0JVU1xcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiQ0RYIEJ1cyBkcml2ZXJcXFwiXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEFSTTY0IHx8IENPTVBJTEVfVEVTVFxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIENvbXBvc2FibGUgRE1BIFRyYW5zZmVyKENEWCkgQnVzLiBDRFggYnVzXFxuICAxMzpcXHRcXHQgIGV4cG9zZXMgRmFicmljIGRldmljZXMgd2hpY2ggdXNlcyBjb21wb3NhYmxlIERNQSBJUCB0byB0aGVcXG4gIDE0OlxcdFxcdCAgQVBVLiBDRFggYnVzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBzY2FubmluZyBhbmQgcHJvYmluZ1xcbiAgMTU6XFx0XFx0ICBvZiBDRFggZGV2aWNlcy4gQ0RYIGRldmljZXMgYXJlIG1lbW9yeSBtYXBwZWQgb24gc3lzdGVtIGJ1c1xcbiAgMTY6XFx0XFx0ICBmb3IgZW1iZWRkZWQgQ1BVcy4gQ0RYIGJ1cyB1c2VzIENEWCBjb250cm9sbGVyIGFuZCBmaXJtd2FyZVxcbiAgMTc6XFx0XFx0ICB0byBzY2FuIHRoZXNlIENEWCBkZXZpY2VzLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTkuNjQzOTg1MDAzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTUyNjExMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDRFhfQlVTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBDRFhfQlVTYCB0aGluZyBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0IGhpbmdlcyBvbiBgT0YgXHUwMDI2XHUwMDI2IEFSTTY0IHx8IENPTVBJTEVfVEVTVGAuIFJpZ2h0LCB0aGF0IG5hcnJvd3MgaXQgZG93biBhIGJpdCDigJMgbGlrZWx5IGRlYWxpbmcgd2l0aCBkZXZpY2VzIG9uIEFSTTY0IHN5c3RlbXMgd2l0aCBkZXZpY2UgdHJlZSBzdXBwb3J0LCBvciB1c2VkIGZvciBidWlsZCB0ZXN0aW5nLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCdzIGFib3V0IFwiQ29tcG9zYWJsZSBETUEgVHJhbnNmZXIoQ0RYKSBCdXMsXCIgd2hpY2ggbWFrZXMgc2Vuc2UuIEl0J3MgZXhwb3NpbmcgRmFicmljIGRldmljZXMgdGhhdCB1dGlsaXplIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZSBBUFUuXG5cblRoZSB0ZXh0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IFwiQ0RYIGRldmljZXMgYXJlIG1lbW9yeSBtYXBwZWQgb24gc3lzdGVtIGJ1cyBmb3IgZW1iZWRkZWQgQ1BVcyxcIiBhbmQgdGhhdCBpdCBcInVzZXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGZpcm13YXJlIHRvIHNjYW4gdGhlc2UgQ0RYIGRldmljZXMuXCIgVGhhdCBjb25maXJtcyBteSBpbml0aWFsIHN1c3BpY2lvbjogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cywgYW5kIGl0IHNvdW5kcyBsaWtlIGl0J3MgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBBTUQgZW1iZWRkZWQgQ1BVcywgc3BlY2lmaWNhbGx5IEFQVXMuXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBpcywgY2FuIHdlIGVtdWxhdGUgYW55IG9mIHRoaXMgaW4gUUVNVT8gSXMgdGhlcmUgYW55IGV4aXN0aW5nIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBDRFggYnVzIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgdGhlIENEWCBkZXZpY2VzIHRoZW1zZWx2ZXM/IEkgbmVlZCB0byBjaGVjayBpbnRvIHRoYXQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb21tdW5pdHkgc3VwcG9ydCBvciBleGlzdGluZyB3b3JrIGluIHRoaXMgYXJlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc1NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjAzLjY5OTI0OTA4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzOTUwMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5NjQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvY2R4L0tjb25maWc9OD1jb25maWcgQ0RYX0JVU1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL2NkeC9LY29uZmlnOjE5OnNvdXJjZSBcXFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU9OD1jY2ZsYWdzLXkgKz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9J1xcXCJDRFhfQlVTXFxcIidcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHgubyBjb250cm9sbGVyL1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgKz0gY2R4X21zaS5vXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZHIuaFxcdTAwM2VcXG5kcml2ZXJzL2NkeC9jZHguYzo2ODojaW5jbHVkZSBcXHUwMDNjbGludXgvY2R4L2NkeF9idXMuaFxcdTAwM2VcXG5kcml2ZXJzL2NkeC9jZHguYy02OS0jaW5jbHVkZSBcXHUwMDNjbGludXgvaW9tbXUuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcXHUwMDNlXFxuZHJpdmVycy9jZHgvY2R4LmM6NzI6I2luY2x1ZGUgXFxcImNkeC5oXFxcIlxcbmRyaXZlcnMvY2R4L2NkeC5jLTczLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk6c3RhdGljIERFRklORV9JREEoY2R4X2NvbnRyb2xsZXJfaWRhKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjgyOi8qIERlYnVnZnMgZGlyIGZvciBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcXG5kcml2ZXJzL2NkeC9jZHguYy04NC1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NTpzdGF0aWMgY2hhciAqY29tcGF0X25vZGVfbmFtZSA9IFxcXCJ4bG54LHZlcnNhbC1uZXQtY2R4XFxcIjtcXG5kcml2ZXJzL2NkeC9jZHguYy04Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODgtXFxuZHJpdmVycy9jZHgvY2R4LmMtODktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy05Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6OTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTk6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XFxuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XFx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA1OlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA3LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTA5OlxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExMS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMjpcXHRcXHRkZXZfZXJyKGRldiwgXFxcImNkeCBkZXZpY2UgcmVzZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMTMtXFxuZHJpdmVycy9jZHgvY2R4LmMtMTE0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMTU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMDpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZGV2X3Jlc2V0KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjEtXFxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMzpcXHRyZXR1cm4gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMzYtLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTM4LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlxcdCAgYnV0IGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlIGJ1c19mb3JfZWFjaF9kZXYoKSBBUEkgZXhwZWN0c1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0MTogKlxcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDItICpcXHQgIGFzIGFuIGFyZ3VtZW50Llxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0NjpzdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVxcdFxcdFxcdFxcdCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XFx0XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NTpcXHRcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTc6XFx0XFx0Y2R4X2Rlc3Ryb3lfcmVzX2F0dHIoY2R4X2RldiwgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTg6XFx0XFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXFx0fVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVxcdC8qXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYyOlxcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MzpcXHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cXHQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNjU6XFx0ZGV2aWNlX2RlbChcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XFx0cHV0X2RldmljZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNjctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTcxOnN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTcyLXtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNzM6XFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzQ6XFx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTc1LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxNzg6ICogY2R4X21hdGNoX29uZV9kZXZpY2UgLSBUZWxsIGlmIGEgQ0RYIGRldmljZSBzdHJ1Y3R1cmUgaGFzIGEgbWF0Y2hpbmdcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzktICpcXHRcXHRcXHQgIENEWCBkZXZpY2UgaWQgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xODItICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxODU6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xOTktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwMS0gKiBAaWRzOiBhcnJheSBvZiBDRFggZGV2aWNlIElEIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwNTogKiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3JcXG5kcml2ZXJzL2NkeC9jZHguYy0yMDYtICogTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDg6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwOS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjExOmNkeF9tYXRjaF9pZChjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzLCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMTQtXFx0XFx0d2hpbGUgKGlkcy1cXHUwMDNldmVuZG9yIHx8IGlkcy1cXHUwMDNlZGV2aWNlKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjE1OlxcdFxcdFxcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjE2LVxcdFxcdFxcdFxcdHJldHVybiBpZHM7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMjItXFxuZHJpdmVycy9jZHgvY2R4LmM6MjIzOmludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMjY6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVxcdGludCByZXQgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzMC1cXHRkZXZfY29uZmlnLmJ1c19tYXN0ZXJfZW5hYmxlID0gdHJ1ZTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzE6XFx0aWYgKGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMjpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0sXFxuZHJpdmVycy9jZHgvY2R4LmM6MjMzOlxcdFxcdFxcdFxcdFxcdCAgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0sIFxcdTAwMjZkZXZfY29uZmlnKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzQtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMzYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjM4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzOTppbnQgY2R4X2NsZWFyX21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDI6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVxcdGludCByZXQgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0Ni1cXHRkZXZfY29uZmlnLmJ1c19tYXN0ZXJfZW5hYmxlID0gZmFsc2U7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ3OlxcdGlmIChjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcXHRcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjUwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2NsZWFyX21hc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI1NS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyNTY6ICogY2R4X2J1c19tYXRjaCAtIGRldmljZSB0byBkcml2ZXIgbWF0Y2hpbmcgY2FsbGJhY2tcXG5kcml2ZXJzL2NkeC9jZHguYzoyNTc6ICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1ODogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGNkeCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTktICogc3RydWN0dXJlc1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2MzpzdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI2NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNjktXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjcxOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjcyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzMtXFxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0OlxcdGlkcyA9IGNkeF9kcnYtXFx1MDAzZW1hdGNoX2lkX3RhYmxlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI4MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yODItXFx0aWYgKCFmb3VuZF9pZClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI5NS1cXHRcXHRpZHMgPSBmb3VuZF9pZCArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mjk2OlxcdFxcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjk3LVxcdH0gd2hpbGUgKGZvdW5kX2lkKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMS1cXG5kcml2ZXJzL2NkeC9jZHguYzozMDI6c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA0OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXFx0aW50IGVycm9yO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzEyLVxcdCAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMxMzpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfR0VORVJJQ19NU0lfSVJRKSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW1zaV9kb21haW4pIHtcXG5kcml2ZXJzL2NkeC9jZHguYzozMTQ6XFx0XFx0ZXJyb3IgPSBtc2lfc2V0dXBfZGV2aWNlX2RhdGEoXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzE1LVxcdFxcdGlmIChlcnJvcilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMxOC1cXG5kcml2ZXJzL2NkeC9jZHguYzozMTk6XFx0ZXJyb3IgPSBjZHhfZHJ2LVxcdTAwM2Vwcm9iZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMjAtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMjctXFxuZHJpdmVycy9jZHgvY2R4LmM6MzI4OnN0YXRpYyB2b2lkIGNkeF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMyOS17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzMxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMzMi1cXG5kcml2ZXJzL2NkeC9jZHguYzozMzM6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVtb3ZlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzNDpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VyZW1vdmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzM1LX1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMzYtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzM3OnN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzM4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzk6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDA6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNDM6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cyBcXHUwMDI2XFx1MDAyNiBjZHhfZGV2LVxcdTAwM2VlbmFibGVkIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzozNDQ6XFx0XFx0Y2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ1OlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXNodXRkb3duKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NjpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VzaHV0ZG93bihjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNDctfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM0OC1cXG5kcml2ZXJzL2NkeC9jZHguYzozNDk6c3RhdGljIGludCBjZHhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzUwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTE6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUzOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1NDpcXHR1MzIgaW5wdXRfaWQgPSBjZHhfZGV2LVxcdTAwM2VyZXFfaWQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzU1LVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzU2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM1NzpcXHRyZXQgPSBvZl9kbWFfY29uZmlndXJlX2lkKGRldiwgY2R4LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIDAsIFxcdTAwMjZpbnB1dF9pZCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzU4LVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FUFJPQkVfREVGRVIpIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM2Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XFx0LyogQGNkeF9kcnYgbWF5IG5vdCBiZSB2YWxpZCB3aGVuIHdlJ3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM2NDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRyaXZlciBcXHUwMDI2XFx1MDAyNiAhY2R4X2Rydi1cXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVxcdFxcdHJldCA9IGlvbW11X2RldmljZV91c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzM6c3RhdGljIHZvaWQgY2R4X2RtYV9jbGVhbnVwKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzc6XFx0aWYgKCFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzc4LVxcdFxcdGlvbW11X2RldmljZV91bnVzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzozODI6I2RlZmluZSBjZHhfY29uZmlnX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpXFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4My1zdGF0aWMgc3NpemVfdFxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg1LXtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVxcdTAwM2VmaWVsZCk7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4OC19XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4OT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmllbGQpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MTpjZHhfY29uZmlnX2F0dHIodmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzkzOmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fdmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTQ6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV9kZXZpY2UsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFxcXCIweCUwMnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NjpjZHhfY29uZmlnX2F0dHIoY2xhc3MsIFxcXCIweCUwNnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM5Ny1cXG5kcml2ZXJzL2NkeC9jZHguYz0zOTg9c3RhdGljIHNzaXplX3QgcmVtb3ZlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQxMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MTM6XFx0XFx0cmV0ID0gY2R4X3VucmVnaXN0ZXJfZGV2aWNlKGRldiwgTlVMTCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDE0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDI1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cXHRib29sIHZhbDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYzo0MzY6XFx0XFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XFx0XFx0cmV0ID0gZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgcmVzZXRfY2R4X2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVxcdGVsc2VcXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzk6XFx0XFx0cmV0ID0gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ0NT1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ0ODpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUwOlxcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXFxcImNkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXFxcblxcXCIsIGNkeF9kZXYtXFx1MDAzZXZlbmRvcixcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTE6XFx0XFx0XFx0Y2R4X2Rldi1cXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VjbGFzcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDUzLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDU5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDY3OlxcdGlmIChlbmFibGUgPT0gY2R4X2Rldi1cXHUwMDNlZW5hYmxlZClcXG5kcml2ZXJzL2NkeC9jZHguYy00NjgtXFx0XFx0cmV0dXJuIGNvdW50O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0NzA6XFx0aWYgKGVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2VuYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19lbmFibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzI6XFx0ZWxzZSBpZiAoIWVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDc4OlxcdFxcdGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgPSBlbmFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDgzPXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDg3OlxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODgtfVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDkxOnN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XFxuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDk2OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDk3OlxcdGlmICghY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5OC1cXHRcXHRyZXR1cm4gYS1cXHUwMDNlbW9kZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDM6c3RhdGljIHVtb2RlX3QgY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXFxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDUtXFx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTA2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XFx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1MDk6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy01MTAtXFx0XFx0cmV0dXJuIGEtXFx1MDAzZW1vZGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTE1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVxcdFxcdTAwMjZkZXZfYXR0cl9yZW1vdmUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjg6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2Rldl9ncm91cCA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XFx0LmF0dHJzID0gY2R4X2Rldl9hdHRycyxcXG5kcml2ZXJzL2NkeC9jZHguYzo1MzA6XFx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMS19O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTM0LVxcdFxcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzOC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTQwOlxcdC5hdHRycyA9IGNkeF9idXNfZGV2X2F0dHJzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcXHQuaXNfdmlzaWJsZSA9IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQyLX07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqY2R4X2Rldl9ncm91cHNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDU6XFx0XFx1MDAyNmNkeF9kZXZfZ3JvdXAsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ2OlxcdFxcdTAwMjZjZHhfYnVzX2Rldl9ncm91cCxcXG5kcml2ZXJzL2NkeC9jZHguYy01NDctXFx0TlVMTCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU1NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTOyBpKyspIHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXMgPSAgXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tpXTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NjItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU2MzpERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTY3OlxcdGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpLCBjZHhfZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU2ODpcXHRpZiAoSVNfRVJSKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKSlcXG5kcml2ZXJzL2NkeC9jZHguYy01NjktXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicmVzb3VyY2VcXFwiLCAwNDQ0LCBjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpciwgY2R4X2RldixcXG5kcml2ZXJzL2NkeC9jZHguYzo1NzI6XFx0XFx0XFx0ICAgIFxcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTczLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01Nzcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzktXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01ODctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTg4OlxcdGd1YXJkKG11dGV4KShcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU5MC1cXHQvKiBVbnJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlxcdGNkeF91bnJlZ2lzdGVyX2RldmljZXMoXFx1MDAyNmNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTk4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU5OTpcXHRcXHRjZHggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZCk7XFxuZHJpdmVycy9jZHgvY2R4LmM6NjAwOlxcdFxcdGlmIChjZHggXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2Vjb250cm9sbGVyX3JlZ2lzdGVyZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZXNjYW4pXFxuZHJpdmVycy9jZHgvY2R4LmM6NjAxOlxcdFxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VzY2FuKGNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjAyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MTA6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXFx0XFx1MDAyNmJ1c19hdHRyX3Jlc2Nhbi5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjE0OkFUVFJJQlVURV9HUk9VUFMoY2R4X2J1cyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNzpcXHQubmFtZVxcdFxcdD0gXFxcImNkeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjE4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcXHQubWF0Y2hcXHRcXHQ9IGNkeF9idXNfbWF0Y2gsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIwOlxcdC5wcm9iZVxcdFxcdD0gY2R4X3Byb2JlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcXHQucmVtb3ZlXFx0XFx0PSBjZHhfcmVtb3ZlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcXHQuc2h1dGRvd25cXHQ9IGNkeF9zaHV0ZG93bixcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XFx0LmRtYV9jb25maWd1cmVcXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcXHQuZG1hX2NsZWFudXBcXHQ9IGNkeF9kbWFfY2xlYW51cCxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XFx0LmJ1c19ncm91cHNcXHQ9IGNkeF9idXNfZ3JvdXBzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcXHQuZGV2X2dyb3Vwc1xcdD0gY2R4X2Rldl9ncm91cHMsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjI4OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNTpcXHRjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MzY6XFx0Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZjZHhfYnVzX3R5cGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcXHRlcnJvciA9IGRyaXZlcl9yZWdpc3RlcihcXHUwMDI2Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MzktXFx0aWYgKGVycm9yKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVxcdFxcdHByX2VycihcXFwiZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjQxOlxcdFxcdCAgICAgICBjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIubmFtZSwgZXJyb3IpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cXHRcXHRyZXR1cm4gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjUwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XFx0ZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmNkeF9kcml2ZXItXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjU2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcXHRrZnJlZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NjAtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYzLSNpZmRlZiBDT05GSUdfSEFWRV9JT1JFTUFQX1BST1RcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo2Njk6ICogY2R4X21tYXBfcmVzb3VyY2UgLSBtYXAgYSBDRFggcmVzb3VyY2UgaW50byB1c2VyIG1lbW9yeSBzcGFjZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NzktICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XFxuZHJpdmVycy9jZHgvY2R4LmM6Njg0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShrb2JqX3RvX2Rldihrb2JqKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVxcdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVxcdTAwM2Vwcml2YXRlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OTpcXHRyZXMgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW251bV07XFxuZHJpdmVycy9jZHgvY2R4LmMtNjkwLVxcdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVxcdTAwM2VzdGFydCkpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXFx0LyogTWFrZSBzdXJlIHRoZSBjYWxsZXIgaXMgbWFwcGluZyBhIHZhbGlkIHJlc291cmNlIGZvciB0aGlzIGRldmljZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY5NDpcXHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjk1LVxcdGlmICh2bWEtXFx1MDAzZXZtX3Bnb2ZmICsgdm1hX3BhZ2VzKHZtYSkgXFx1MDAzZSBzaXplKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzowMy43Njg2NDk0OThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzNDY5MTI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBDRFggQnVzIEVtdWxhdGlvbiBpbiBRRU1VKipcblxuT2theSwgc28gdGhlIENEWCBidXMgZHJpdmVyIGluIHRoaXMgY29udGV4dCBpcyBkZXBlbmRlbnQgb24gZWl0aGVyIGBPRiBcdTAwMjZcdTAwMjYgQVJNNjRgIG9yIGBDT01QSUxFX1RFU1RgLiBUaGlzIHRlbGxzIG1lIHRoZSBjb3JlIHJlcXVpcmVtZW50IG9yIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IG9wZXJhdGVzLiBUaGUgZmFjdCB0aGF0IHRoZSBgdmZpby9jZHhgIGRyaXZlciBleGlzdHMsIHNwZWNpZmljYWxseSBmb3IgVkZJTyBzdXBwb3J0LCBpcyBpbnRlcmVzdGluZy4gVGhpcyBpbW1lZGlhdGVseSBzcGFya3MgdGhlIHF1ZXN0aW9uOiBjYW4gd2UgZW11bGF0ZSB0aGVzZSBDRFggZGV2aWNlcyB3aXRoaW4gUUVNVT8gVGhhdCdzIHRoZSByZWFsIGdvYWwgaGVyZS4gVG8gZmlndXJlIG91dCBpZiBpdCdzIHBvc3NpYmxlLlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhvdWdodCBpcyB0byBzZWUgd2hhdCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSB0byB0aGUgQ0RYIGJ1cy4gSXMgdGhlcmUgYSBzb2Z0d2FyZSBkcml2ZXIgdGhhdCB3ZSBjYW4gYWN0dWFsbHkgcHJvYmU/IElmIHdlIGNhbiBmaW5kIG9uZSwgdGhhdCB3aWxsIGdpdmUgdXMgYSBzdHJvbmcgYmFzaXMgZm9yIGVtdWxhdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIHBsYWNlIHRvIHN0YXJ0LiBTcGVjaWZpY2FsbHksIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdgIGlzIGxpa2VseSB0byBiZSB0aGUgcmlnaHQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyNjgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzowOC40MDMzNDMzOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0aWYgQ0RYX0JVU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQ0RYX0NPTlRST0xMRVJcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJDRFggYnVzIGNvbnRyb2xsZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRU1PVEVQUk9DXFxuICAxNDpcXHRcXHRzZWxlY3QgUlBNU0dcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ0RYIGNvbnRyb2xsZXIgZHJpdmVzIHRoZSBDRFggYnVzLiBJdCBpbnRlcmFjdHMgd2l0aFxcbiAgMTc6XFx0XFx0ICBmaXJtd2FyZSB0byBnZXQgdGhlIGhhcmR3YXJlIGRldmljZXMgYW5kIHJlZ2lzdGVycyB3aXRoXFxuICAxODpcXHRcXHQgIHRoZSBDRFggYnVzLiBTYXkgWSB0byBlbmFibGUgdGhlIENEWCBoYXJkd2FyZSBkcml2ZXIuXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MDguNDAzNDAwMjkyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjExMzI1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBDRFggQ29udHJvbGxlciBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyBpdCBob29rcyBpbnRvIHRoZSBoYXJkd2FyZS4gSXQncyBjbGVhciB0aGF0IGl0IHJlbGllcyBvbiBmaXJtd2FyZSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgZGV2aWNlcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gaG93IHRoYXQncyBvcmNoZXN0cmF0ZWQsIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llczogYEhBU19ETUFgLCBgUkVNT1RFUFJPQ2AsIGFuZCBgUlBNU0dgLiBUaGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBhIHJlYWxpc3RpYyB3YXkgdG8gbW9jayBhbnkgb2YgdGhlIENEWCBoYXJkd2FyZSBmb3IgdGVzdGluZy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdG8gY2hlY2sgd2l0aGluIHRoZSBkcml2ZXIgZGlyZWN0b3J5IGZvciBgY2R4YCwgZm9jdXNpbmcgaW4gdGhlIGBjb250cm9sbGVyYCBzdWJkaXJlY3RvcnksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBjZHhfY29udHJvbGxlci5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW50ZXJhY3Rpb24gbG9naWMuIEknbGwgbmVlZCB0byBzZWUgaWYgYW55IG1lY2hhbmlzbXMgaGF2ZSBiZWVuIGRldmVsb3BlZCB0byBoYW5kbGUgdmlydHVhbCBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgzMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MTUuMDI0NTM1MDk4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ3MzUzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfY29udHJvbGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0NEWF9DT05UUk9MTEVSKSArPSBjZHgtY29udHJvbGxlci5vXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9NYWtlZmlsZTo5OmNkeC1jb250cm9sbGVyLW9ianMgOj0gY2R4X2NvbnRyb2xsZXIubyBjZHhfcnBtc2cubyBtY2RpLm8gbWNkaV9mdW5jdGlvbnMub1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTEyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMzojaW5jbHVkZSBcXFwiY2R4X2NvbnRyb2xsZXIuaFxcXCJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2R4X21jZGlfb3BzIG1jZGlfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTM1LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzozNjpzdGF0aWMgaW50IGNkeF9idXNfZW5hYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0zNy17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQxOnN0YXRpYyBpbnQgY2R4X2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Mi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ2OnZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01Mi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NTM6dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTQte1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTU4LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1OTpzdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cXHRcXHRcXHRcXHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTkyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo5MzpzdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk0LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0xNjQ9c3RhdGljIGludCB4bG54X2NkeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjUte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNjY6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE2Ny1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTIyMj1zdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjIzLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIyNS1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oLTEzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNDp2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oOjE2OnZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTY6I2luY2x1ZGUgXFxcImNkeF9jb250cm9sbGVyLmhcXFwiXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNy0jaW5jbHVkZSBcXFwibWNkaV9mdW5jdGlvbnMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9NDY9c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTQ4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6NDk6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTUwLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTg1PXN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg2LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjg3OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy04OC1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz05Nz1zdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtOTkte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTAwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTAxLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTExPXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTEyLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjExMzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTE0LVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTEyMT1zdGF0aWMgaW50IGNkeF9ycG1zZ19wcm9iZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTIzLVxcdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvID0gezB9O1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjUtXFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNzpcXHRjZHhfYyA9IChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKiljZHhfcnBtc2dfaWRfdGFibGVbMF0uZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjgtXFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTQ5PXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19yZW1vdmUoc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTUxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUyLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTY5PWludCBjZHhfc2V0dXBfcnBtc2coc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNzE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3Mi1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzoxNS4wNzIwMTI1MzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg4MTMzODI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENEWCBDb250cm9sbGVyKipcblxuT2theSwgc28gdGhlIENEWCBjb250cm9sbGVyIGlzIFJQTVNHIGJhc2VkLCBhbmQgaXQncyB1c2luZyBgcnByb2NgIOKAkyB0aGF0IGByZW1vdGVwcm9jYCB0aGluZyDigJMgdG8gdGFsayB0byBhIHJlbW90ZSBwcm9jZXNzb3IsIHNwZWNpZmljYWxseSBhbiBSNSBjb3JlLiBUaGlzIGltbWVkaWF0ZWx5IGZlZWxzIHByZXR0eSBoYXJkd2FyZS1zcGVjaWZpYy4gSSdtIHdvbmRlcmluZyBpZiB3ZSBjYW4gbW9jayBpdC4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgYW55dGhpbmcgZm9yIHRoYXQ/IExpa2UgYHN5el9ycG1zZ19jcmVhdGVgPyBOb3BlLCBub3RoaW5nIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgQ0RYLiBIbW0sIGZydXN0cmF0aW5nLlxuXG5XYWl0IGEgc2Vjb25kLi4uIHRoZSByZWxldmFudCBwYXRjaCBpcyByaWdodCB0aGVyZSBpbiBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBPa2F5LCB0aGF0IGdpdmVzIG1lIGEgY29uY3JldGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3Mgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGB2ZmlvX2NkeF9tbWFwYC4gSXMgdGhlIGBWRklPX0NEWGAgZHJpdmVyIGV2ZW4gdGVzdGFibGU/IEkgZ3Vlc3MgdGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGFuZCBmaWd1cmUgdGhpcyBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHNlZSB3aGF0IHBvc3NpYmlsaXRpZXMgZXhpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzM1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjIxLjk1MzM1NDIxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NDEwODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19jZHhfbW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMjM9c3RhdGljIGxvbmcgdmZpb19jZHhfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNDMtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjQ0OnN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI0NS1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI2My1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyNjQ6c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI2NS1cXHRcXHRcXHQgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yOTEtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjkyOlxcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjkzLX1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMDMtXFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19jZHhfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMDQ6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fY2R4X21tYXAsXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA1LVxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzoyMS45OTc3OTk2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIyMzMzMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTyBDRFggYW5kIG1tYXAqKlxuXG5Pa2F5LCBzbyBgdmZpb19jZHhfbW1hcGAgaXMgdGhlIGBtbWFwYCBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIG9wZXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgYHZmaW9fY2R4YCBkcml2ZXIuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCB0aGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHRoaXMgZnVuY3Rpb25hbGl0eSBvbmx5IGJlY29tZXMgcmVsZXZhbnQgd2hlbiBhIENEWCBkZXZpY2UgaXMgYWN0dWFsbHkgYm91bmQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLiBJJ20gd29uZGVyaW5nLi4uIGlzIHRoZXJlIGEgd2F5IHRvIGNyZWF0ZSBhIENEWCBkZXZpY2UgdmlydHVhbGx5LCB3aXRoaW4gc29mdHdhcmU/IEknbSB0aGlua2luZyBvZiBzY2VuYXJpb3MgZm9yIHRlc3Rpbmcgb3IgcHJvdG90eXBpbmcgd2hlcmUgSSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gaXMsIGFyZSB0aGVyZSBhbnkgbW9jayBvciB0ZXN0IGRyaXZlcnMgb3V0IHRoZXJlIHNwZWNpZmljYWxseSBmb3IgQ0RYPyBJZiBzbywgdGhhdCB3b3VsZCBiZSBhIGZhbnRhc3RpYyBzaG9ydGN1dCB0byB3b3JraW5nIHdpdGggYHZmaW9fY2R4YCB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCBhdmVudWUgZnVydGhlciwgaXQgY291bGQgYmUgYSByZWFsIHRpbWUgc2F2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTk5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MjYuNTIwMTM1Mjc2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI2MzQzNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ0b29scy90ZXN0aW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MjYuNjIyNzc3MjA0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM2OTY3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6XG5cbioqQ2hlY2tpbmcgZm9yIGEgTW9jayBpbiBgZHJpdmVycy9jZHgvYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBzZWUgaWYgd2UndmUgZ290IGEgbW9jayBpbXBsZW1lbnRhdGlvbiBhbnl3aGVyZSBpbiB0aGUgYGRyaXZlcnMvY2R4L2AgZGlyZWN0b3J5LiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGRyaXZlcnMg4oCTIG1vY2tzIGFyZSAqaW5jcmVkaWJseSogdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBpc29sYXRpb24sIHdoZXRoZXIgd2UncmUgdGFsa2luZyB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgZXZlbiBqdXN0IGRlYnVnZ2luZy4gVGhleSBsZXQgdXMgY29udHJvbCB0aGUgZW52aXJvbm1lbnQsIHNpbXVsYXRlIGhhcmR3YXJlLCBhbmQgdmVyaWZ5IG91ciBjb2RlJ3MgaW50ZXJhY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHJlbHkgb24gdGhlIGFjdHVhbCwgc29tZXRpbWVzIHVucmVsaWFibGUsIGRyaXZlciBoYXJkd2FyZS4gUGx1cywgbW9ja3MgbWFrZSB0ZXN0aW5nIHNvIG11Y2ggZmFzdGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlLiBMZXQncyBzZWUgaWYgdGhlIHRlYW0gaGFzIGJlZW4gZm9sbG93aW5nIGJlc3QgcHJhY3RpY2VzLCBvciBpZiB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkLiBJIGtub3cgKkknZCogcHJlZmVyIGEgZ29vZCBtb2NrIHRvIGtlZXAgdGhpbmdzIG1vdmluZy4gVGltZSB0byBkaXZlIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUwNSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjMxLjA1NjQ3Njk0MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjMxMTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jZHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzozMS4xMDE3NTI4MjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4NTM5MzkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIGZvciBNb2NrIGBjZHhgIGluIERyaXZlcnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGlmIHdlJ3ZlIGdvdCBhbnkgbW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgYGNkeGAgbHVya2luZyBpbiB0aGUgYGRyaXZlcnMvYCBkaXJlY3RvcnkuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlIGJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgY2hhbmdlcywganVzdCB0byBlbnN1cmUgdGhhdCBJJ20gbm90IG92ZXJsb29raW5nIGEgdGVzdCBzZXR1cCBvciBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRvIG1ha2UgdXBkYXRlcyB0byB0aG9zZSB0b28sIG9yIHdoZXRoZXIgdGhleSdyZSBldmVuIHJlbGV2YW50IHRvIHdoYXQgSSdtIGRvaW5nLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4ndCBhZmZvcmQgdG8gYnJlYWsgZXhpc3RpbmcgbW9ja2luZyBpbXBsZW1lbnRhdGlvbnMuIFRoYXQgd291bGQgY2F1c2UgdW50b2xkIGlzc3Vlcy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBjbGVhci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzozNS4xODcxNTE3MzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MDc1ODUxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNTQ2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL0tjb25maWc9MjUwPXNvdXJjZSBcXFwiZHJpdmVycy9odGUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL0tjb25maWctMjUxLVxcbmRyaXZlcnMvS2NvbmZpZzoyNTI6c291cmNlIFxcXCJkcml2ZXJzL2NkeC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvS2NvbmZpZy0yNTMtXFxuLS1cXG5kcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVxcdFxcdCs9IGFjY2VsL1xcbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVxcdFxcdCs9IGNkeC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcXHRcXHQrPSBkcGxsL1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZz04PWNvbmZpZyBDRFhfQlVTXFxuLS1cXG5kcml2ZXJzL2NkeC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6MTk6c291cmNlIFxcXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL2NkeC9NYWtlZmlsZT04PWNjZmxhZ3MteSArPSAtRERFRkFVTFRfU1lNQk9MX05BTUVTUEFDRT0nXFxcIkNEWF9CVVNcXFwiJ1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTktXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0NEWF9CVVMpICs9IGNkeC5vIGNvbnRyb2xsZXIvXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHhfbXNpLm9cXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb21tdS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlYnVnZnMuaFxcdTAwM2VcXG5kcml2ZXJzL2NkeC9jZHguYzo3MjojaW5jbHVkZSBcXFwiY2R4LmhcXFwiXFxuZHJpdmVycy9jZHgvY2R4LmMtNzMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgwLS8qIExvY2sgdG8gcHJvdGVjdCBjb250cm9sbGVyIG9wcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmM6ODI6LyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MzpzdGF0aWMgc3RydWN0IGRlbnRyeSAqY2R4X2RlYnVnZnNfZGlyO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg1OnN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OC1cXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo5MDogKiBjZHhfZGV2X3Jlc2V0IC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTQtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo5NzpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZyA9IHswfTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAxLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEwMzpcXHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXFxuZHJpdmVycy9jZHgvY2R4LmMtMTA4LVxcdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTExLVxcdGlmIChyZXQpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTEyOlxcdFxcdGRldl9lcnIoZGV2LCBcXFwiY2R4IGRldmljZSByZXNldCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExMy1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTQtXFx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSByZXNldCBpcyBjb21wbGV0ZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjExNjpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTExOS19XFxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEyMS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMjItLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMi17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlxcdHJldHVybiBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTM0LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNi0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxMzc6ICogY2R4X3VucmVnaXN0ZXJfZGV2aWNlIC0gVW5yZWdpc3RlciBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQwLSAqXFx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQxOiAqXFx0ICB0aGUgcGFzc2VkIGZ1bmN0aW9uIChjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGhhdmUgdGhpc1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlxcdCAgYXMgYW4gYXJndW1lbnQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ2OnN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDctXFx0XFx0XFx0XFx0IHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNTI6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cykge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MzpcXHRcXHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NDpcXHRcXHRpZiAoY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTU1OlxcdFxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NzpcXHRcXHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1ODpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNjEtXFx0LypcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjI6XFx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlxcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHdpdGhpbiBwdXRfZGV2aWNlKCkuXFxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVxcdCAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NTpcXHRkZXZpY2VfZGVsKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NjpcXHRwdXRfZGV2aWNlKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE3MzpcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE3NDpcXHRidXNfZm9yX2VhY2hfZGV2KGJ1cywgTlVMTCwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTc3LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE3OS0gKlxcdFxcdFxcdCAgQ0RYIGRldmljZSBpZCBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE5OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDA6ICogY2R4X21hdGNoX2lkIC0gU2VlIGlmIGEgQ0RYIGRldmljZSBtYXRjaGVzIGEgZ2l2ZW4gY2R4X2lkIHRhYmxlXFxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXFxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cXHRcXHR3aGlsZSAoaWRzLVxcdTAwM2V2ZW5kb3IgfHwgaWRzLVxcdTAwM2VkZXZpY2UpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTU6XFx0XFx0XFx0aWYgKGNkeF9tYXRjaF9vbmVfZGV2aWNlKGlkcywgZGV2KSlcXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXFx0XFx0XFx0XFx0cmV0dXJuIGlkcztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjI1OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjMwLVxcdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSB0cnVlO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMTpcXHRpZiAoY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6MjM3OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjQ2LVxcdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSBmYWxzZTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDc6XFx0aWYgKGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0ODpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0sXFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0sIFxcdTAwMjZkZXZfY29uZmlnKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTAtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfY2xlYXJfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTQtXFxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NjogKiBjZHhfYnVzX21hdGNoIC0gZGV2aWNlIHRvIGRyaXZlciBtYXRjaGluZyBjYWxsYmFja1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NzogKiBAZGV2OiB0aGUgY2R4IGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuZHJpdmVycy9jZHgvY2R4LmM6MjU4OiAqIEBkcnY6IHRoZSBkZXZpY2UgZHJpdmVyIHRvIHNlYXJjaCBmb3IgbWF0Y2hpbmcgY2R4IGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI1OS0gKiBzdHJ1Y3R1cmVzXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNjItICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY2OlxcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzE6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3My1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzQ6XFx0aWRzID0gY2R4X2Rydi1cXHUwMDNlbWF0Y2hfaWRfdGFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjc1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjgwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI4MTpcXHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI4Mi1cXHRpZiAoIWZvdW5kX2lkKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjk1LVxcdFxcdGlkcyA9IGZvdW5kX2lkICsgMTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XFx0XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXFx0fSB3aGlsZSAoZm91bmRfaWQpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMwMjpzdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA2OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cXHRpbnQgZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMTItXFx0ICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MzEzOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlbXNpX2RvbWFpbikge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMxNDpcXHRcXHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXFx0XFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzE4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMxOTpcXHRlcnJvciA9IGNkeF9kcnYtXFx1MDAzZXByb2JlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMyMC1cXHRpZiAoZXJyb3IpIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMzpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZW1vdmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MzM0OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlbW92ZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzUtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cXG5kcml2ZXJzL2NkeC9jZHguYzozMzc6c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzIFxcdTAwMjZcXHUwMDI2IGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NDpcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlc2h1dGRvd24pXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Ny19XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTM6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzU0OlxcdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXFx1MDAzZXJlcV9pZDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTUtXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTYtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzU3OlxcdHJldCA9IG9mX2RtYV9jb25maWd1cmVfaWQoZGV2LCBjZHgtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgMCwgXFx1MDAyNmlucHV0X2lkKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTgtXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVQUk9CRV9ERUZFUikge1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzYyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM2MzpcXHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UncmUgY2FsbGVkIGZyb20gdGhlIElPTU1VIGxheWVyICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MzY0OlxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZHJpdmVyIFxcdTAwMjZcXHUwMDI2ICFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpIHtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNjUtXFx0XFx0cmV0ID0gaW9tbXVfZGV2aWNlX3VzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3MzpzdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzc1OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NzpcXHRpZiAoIWNkeF9kcnYtXFx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzgtXFx0XFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zODEtLyogc2hvdyBjb25maWd1cmF0aW9uIGZpZWxkcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgzLXN0YXRpYyBzc2l6ZV90XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXFx1MDAzZWZpZWxkKTtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg5PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmaWVsZClcXG5kcml2ZXJzL2NkeC9jZHguYy0zOTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MjpjZHhfY29uZmlnX2F0dHIoZGV2aWNlLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTM6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV92ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk1OmNkeF9jb25maWdfYXR0cihyZXZpc2lvbiwgXFxcIjB4JTAyeFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk2OmNkeF9jb25maWdfYXR0cihjbGFzcywgXFxcIjB4JTA2eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM5OD1zdGF0aWMgc3NpemVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQxMzpcXHRcXHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MTQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQyMj1zdGF0aWMgc3NpemVfdCByZXNldF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0MjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVxcdGJvb2wgdmFsO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNTpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNjpcXHRcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcXHRcXHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXFx0ZWxzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzOTpcXHRcXHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDQwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDQ4OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XFx0cmV0dXJuIHNwcmludGYoYnVmLCBcXFwiY2R4OnYlMDRYZCUwNFhzdiUwNFhzZCUwNFhjJTA2WFxcXFxuXFxcIiwgY2R4X2Rldi1cXHUwMDNldmVuZG9yLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MTpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VkZXZpY2UsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUyOlxcdFxcdFxcdGNkeF9kZXYtXFx1MDAzZWNsYXNzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NTMtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDYwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MS1cXHRib29sIGVuYWJsZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XFx0aWYgKGVuYWJsZSA9PSBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cXHRcXHRyZXR1cm4gY291bnQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDY5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MDpcXHRpZiAoZW5hYmxlIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZW5hYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MTpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2VuYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MjpcXHRlbHNlIGlmICghZW5hYmxlIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzM6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDc0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3Ny1cXHRpZiAoIXJldClcXG5kcml2ZXJzL2NkeC9jZHguYzo0Nzg6XFx0XFx0Y2R4X2Rldi1cXHUwMDNlZW5hYmxlZCA9IGVuYWJsZTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NzktXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00ODM9c3RhdGljIHNzaXplX3QgZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDg1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo0ODc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJXVcXFxcblxcXCIsIGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4OC19XFxuZHJpdmVycy9jZHgvY2R4LmM9NDg5PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhlbmFibGUpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo0OTE6c3RhdGljIHVtb2RlX3QgY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXFxuZHJpdmVycy9jZHgvY2R4LmMtNDkyLXtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDk0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5NS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0OTY6XFx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo0OTc6XFx0aWYgKCFjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNDk4LVxcdFxcdHJldHVybiBhLVxcdTAwM2Vtb2RlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUwMzpzdGF0aWMgdW1vZGVfdCBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcXG5kcml2ZXJzL2NkeC9jZHguYy01MDQte1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1MDY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTA3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUwODpcXHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUwOTpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUxMC1cXHRcXHRyZXR1cm4gYS1cXHUwMDNlbW9kZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUxNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy01MTYtXFx0XFx1MDAyNmRldl9hdHRyX3JlbW92ZS5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTI3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfZGV2X2dyb3VwID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUyOTpcXHQuYXR0cnMgPSBjZHhfZGV2X2F0dHJzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzMDpcXHQuaXNfdmlzaWJsZSA9IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTMxLX07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTMyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzMzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy01MzQtXFx0XFx1MDAyNmRldl9hdHRyX2VuYWJsZS5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTM4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfYnVzX2Rldl9ncm91cCA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDA6XFx0LmF0dHJzID0gY2R4X2J1c19kZXZfYXR0cnMsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQxOlxcdC5pc192aXNpYmxlID0gY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZSxcXG5kcml2ZXJzL2NkeC9jZHguYy01NDItfTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NDMtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpjZHhfZGV2X2dyb3Vwc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NTpcXHRcXHUwMDI2Y2R4X2Rldl9ncm91cCxcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDY6XFx0XFx1MDAyNmNkeF9idXNfZGV2X2dyb3VwLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Ny1cXHROVUxMLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU1MDpzdGF0aWMgaW50IGNkeF9kZWJ1Z19yZXNvdXJjZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy01NTEte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU1MjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTUzLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTU1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfQ0RYX0RFVl9SRVNPVVJDRVM7IGkrKykge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU1NjpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW2ldO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1Ny1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Mi19XFxuZHJpdmVycy9jZHgvY2R4LmM6NTYzOkRFRklORV9TSE9XX0FUVFJJQlVURShjZHhfZGVidWdfcmVzb3VyY2UpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU2NC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NjU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTY2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Njc6XFx0Y2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldiksIGNkeF9kZWJ1Z2ZzX2Rpcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTY4OlxcdGlmIChJU19FUlIoY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIpKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2OS1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9jZHgvY2R4LmMtNTcwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU3MTpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJyZXNvdXJjZVxcXCIsIDA0NDQsIGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyLCBjZHhfZGV2LFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU3MjpcXHRcXHRcXHQgICAgXFx1MDAyNmNkeF9kZWJ1Z19yZXNvdXJjZV9mb3BzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzMtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NTc1PXN0YXRpYyBzc2l6ZV90IHJlc2Nhbl9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU3Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTc4OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3OS1cXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU4Ny1cXG5kcml2ZXJzL2NkeC9jZHguYzo1ODg6XFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01ODktXFxuZHJpdmVycy9jZHgvY2R4LmMtNTkwLVxcdC8qIFVucmVnaXN0ZXIgYWxsIHRoZSBkZXZpY2VzIG9uIHRoZSBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo1OTE6XFx0Y2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhcXHUwMDI2Y2R4X2J1c190eXBlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01OTItXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01OTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTk5OlxcdFxcdGNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MDA6XFx0XFx0aWYgKGNkeCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlc2NhbilcXG5kcml2ZXJzL2NkeC9jZHguYzo2MDE6XFx0XFx0XFx0Y2R4LVxcdTAwM2VvcHMtXFx1MDAzZXNjYW4oY2R4KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MDItXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz02MDg9c3RhdGljIEJVU19BVFRSX1dPKHJlc2Nhbik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjA5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxMDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19hdHRyc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYxMS1cXHRcXHUwMDI2YnVzX2F0dHJfcmVzY2FuLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02MTMtfTtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MTQ6QVRUUklCVVRFX0dST1VQUyhjZHhfYnVzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjE2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBjZHhfYnVzX3R5cGUgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NjE3OlxcdC5uYW1lXFx0XFx0PSBcXFwiY2R4XFxcIixcXG5kcml2ZXJzL2NkeC9jZHguYy02MTgtXFx0LmRyaXZlcl9vdmVycmlkZSA9IHRydWUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjE5OlxcdC5tYXRjaFxcdFxcdD0gY2R4X2J1c19tYXRjaCxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjA6XFx0LnByb2JlXFx0XFx0PSBjZHhfcHJvYmUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIxOlxcdC5yZW1vdmVcXHRcXHQ9IGNkeF9yZW1vdmUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIyOlxcdC5zaHV0ZG93blxcdD0gY2R4X3NodXRkb3duLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMzpcXHQuZG1hX2NvbmZpZ3VyZVxcdD0gY2R4X2RtYV9jb25maWd1cmUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjI0OlxcdC5kbWFfY2xlYW51cFxcdD0gY2R4X2RtYV9jbGVhbnVwLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNTpcXHQuYnVzX2dyb3Vwc1xcdD0gY2R4X2J1c19ncm91cHMsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjI2OlxcdC5kZXZfZ3JvdXBzXFx0PSBjZHhfZGV2X2dyb3VwcyxcXG5kcml2ZXJzL2NkeC9jZHguYy02MjctfTtcXG5kcml2ZXJzL2NkeC9jZHguYzo2Mjg6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MjktXFxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVxcdFxcdFxcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02MzQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjM1OlxcdGNkeF9kcml2ZXItXFx1MDAzZWRyaXZlci5vd25lciA9IG93bmVyO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNjpcXHRjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIuYnVzID0gXFx1MDAyNmNkeF9idXNfdHlwZTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MzctXFxuZHJpdmVycy9jZHgvY2R4LmM6NjM4OlxcdGVycm9yID0gZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYzOS1cXHRpZiAoZXJyb3IpIHtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDAtXFx0XFx0cHJfZXJyKFxcXCJkcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yICVzOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL2NkeC9jZHguYzo2NDE6XFx0XFx0ICAgICAgIGNkeF9kcml2ZXItXFx1MDAzZWRyaXZlci5uYW1lLCBlcnJvcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQyLVxcdFxcdHJldHVybiBlcnJvcjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Ni19XFxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY1MTpcXHRkcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY1NC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy02NTYte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY1NzpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU5OlxcdGtmcmVlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MC19XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYxLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGNkeF9waHlzX3ZtX29wcyA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02NjMtI2lmZGVmIENPTkZJR19IQVZFX0lPUkVNQVBfUFJPVFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjY4LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjY2OTogKiBjZHhfbW1hcF9yZXNvdXJjZSAtIG1hcCBhIENEWCByZXNvdXJjZSBpbnRvIHVzZXIgbWVtb3J5IHNwYWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtNjcwLSAqIEBmcDogRmlsZSBwb2ludGVyLiBOb3QgdXNlZCBpbiB0aGlzIGZ1bmN0aW9uLCBidXQgcmVxdWlyZWQgd2hlcmVcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3OS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo2ODA6c3RhdGljIGludCBjZHhfbW1hcF9yZXNvdXJjZShzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4MS1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjgzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGtvYmpfdG9fZGV2KGtvYmopKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MzUuOTI3OTE3Mzg0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mzg3MTUzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ0RYIEJ1cyBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgQ0RYIGJ1c+KApiByaWdodCwgdGhhdCdzIHNwZWNpZmljIHRvIHRob3NlIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgKGB4bG54LHZlcnNhbC1uZXQtY2R4YCkuIE5vdCBhIHdpZGVseS11c2VkIHN0YW5kYXJkLCBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC4gQW5kIHRoZSBwcm9ibGVtIGlzLCBpdCByZXF1aXJlcyAqYWN0dWFsKiBoYXJkd2FyZSBvciBhIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHJlbW90ZXByb2MgdG8gZXZlbiBzY2FuIGZvciBkZXZpY2VzLiBObyBtb2NrIGRyaXZlciBpbiB0aGUga2VybmVsLCB3aGljaCBpcyBhIHJlYWwgbGltaXRhdGlvbi5cblxuU28sIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhhdCBgdmZpb19jZHhfbW1hcGAgcGF0aCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIHdpdGhvdXQgc29tZSBkZWRpY2F0ZWQgaGFyZHdhcmUgZW11bGF0aW9uLiBBbmQgUUVNVSwgYXMgZmFyIGFzIEkga25vdywgZG9lc24ndCBoYXZlIHN0YW5kYXJkIHN1cHBvcnQgZm9yIGVtdWxhdGluZyB0aGUgQ0RYIGJ1cy4gSXQncyBub3QgbGlrZSB0aGUgbWFjODAyMTFfaHdzaW0gd2hlcmUgdGhlcmUncyBhIGdlbmVyaWMgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZS5cblxuV2FpdCBhIHNlY29uZOKApiBjYW4gSSB0cmljayB0aGUgc3lzdGVtPyBDYW4gSSBjcmVhdGUgYSBcImZha2VcIiBDRFggZGV2aWNlIHRocm91Z2ggc3lzZnMgb3IgY29uZmlnZnM/IFBlcmhhcHMgSSBjb3VsZCBjcmFmdCBzb21ldGhpbmcgdG8gc2ltdWxhdGUgaXRzIHByZXNlbmNlLCBldmVuIGlmIGl0J3Mgbm90IHRydWx5IGNvbm5lY3RlZCB0byBhbnkgcGh5c2ljYWwgaGFyZHdhcmUuIFRoYXQgd291bGQgYmUgYSB3YXkgdG8gYnlwYXNzIHRoaXMgcmVxdWlyZW1lbnQgZm9yIGhhcmR3YXJlL3JlbW90ZXByb2MuIExldCBtZSBnbyBjaGVjayBpZiB0aGVyZSdzIGFueSB3YXkgdG8gY3JlYXRlIHRoYXQgQ0RYIGRldmljZSBmcm9tIHVzZXJzcGFjZS4gVGhhdCBtaWdodCBiZSBhIHZpYWJsZSB3b3JrYXJvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzo0MS40NjY2MzU4NjdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTI2NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kZXZpY2VfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jZHguYz03Mjc9c3RhdGljIGludCBjZHhfY3JlYXRlX3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzU1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjc1NjppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy04NDEtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXFxcIkNEWF9CVVNfQ09OVFJPTExFUlxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oPTYyPXZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC02NC0vKipcXG5kcml2ZXJzL2NkeC9jZHguaDo2NTogKiBjZHhfZGV2aWNlX2FkZCAtIEFkZCBhIENEWCBkZXZpY2UuIFRoaXMgZnVuY3Rpb24gYWRkcyBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguaC02Ni0gKlxcdFxcdG9uIHRoZSBDRFggYnVzIGFzIHBlciB0aGUgZGV2aWNlIHBhcmFtZXRlcnMgcHJvdmlkZWRcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTcyLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjczOmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpO1xcbmRyaXZlcnMvY2R4L2NkeC5oLTc0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTkzPXN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDEtXFx0XFx0XFx0LyogQWRkIHRoZSBkZXZpY2UgdG8gdGhlIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MTQyOlxcdFxcdFxcdHJldCA9IGNkeF9kZXZpY2VfYWRkKFxcdTAwMjZkZXZfcGFyYW1zKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQzLVxcdFxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6NDEuNTExNTY1NjMxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwODQwODQ0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQ0RYIERldmljZSBBZGRpdGlvbioqXG5cbk9rYXksIHNvIGhlcmUncyB3aGF0IEkndmUgZ290IGJvdW5jaW5nIGFyb3VuZCBpbiBteSBoZWFkIGFib3V0IHRoaXMgYGNkeF9kZXZpY2VfYWRkYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHRpZ2h0bHkgY291cGxlZDsgZnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlIG9ubHkgcGxhY2UgaXQncyBldmVyIGNhbGxlZCBpcyBkaXJlY3RseSB3aXRoaW4gYGNkeF9zY2FuX2RldmljZXNgIHdoaWNoIHJlc2lkZXMgaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIG1lYW5pbmcgbXkgaW52ZXN0aWdhdGlvbiBjYW4gYmUgcHJldHR5IGZvY3VzZWQuIE5vdywgd2hlbiBpcyBgY2R4X3NjYW5fZGV2aWNlc2AgdHJpZ2dlcmVkPyBJdCBoYXBwZW5zIHdoZW4gdGhlIENEWCBjb250cm9sbGVyIGl0c2VsZiBpcyBwcm9iZWQg4oCTIHdoaWNoIG1ha2VzIHNlbnNlIOKAkyBvciB3aGVuIGEgcmVzY2FubmluZyBvcGVyYXRpb24gaXMgaW5pdGlhdGVkLiBUaGUgQ0RYIGNvbnRyb2xsZXIsIHJlbWVtYmVyLCBpcyBzZXQgdXAgYXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHNwZWNpZmljYWxseSB0aGUgYHhsbnhfY2R4X3Byb2JlYCB0eXBlLlxuXG5UaGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXM6IGNhbiBhIHVzZXIsIGZvciBzb21lIHJlYXNvbiwgY3JlYXRlICphbm90aGVyKiBwbGF0Zm9ybSBkZXZpY2UgZm9yIGB4bG54X2NkeF9wcm9iZWA/IE15IGluaXRpYWwgdGhvdWdodCBpcyBtYXliZSwgcG90ZW50aWFsbHksIHRocm91Z2ggYSBkZXZpY2UgdHJlZSBvdmVybGF5LCByaWdodD8gVGhhdCBzZWVtcyBwbGF1c2libGUuIEhvd2V2ZXIsIGV2ZW4gaWYgdGhleSBjb3VsZCwgdGhlIHJlYWwgYm90dGxlbmVjaywgdGhlIHJlYWwgZGVwZW5kZW5jeSwgYXBwZWFycyB0byBiZSB0aGUgTUNESSAoTWFuYWdlbWVudCBDb250cm9sbGVyIERyaXZlciBJbnRlcmZhY2UpIG92ZXIgUlBNU0cuIElmIHRoZXJlJ3Mgbm8gd29ya2luZyBSUE1TRyBlbmRwb2ludCB0aGF0J3MgYWN0dWFsbHkgcmVzcG9uZGluZyB0byB0aG9zZSBNQ0RJIGNvbW1hbmRzLCBgY2R4X3NjYW5fZGV2aWNlc2AgaXMgZ29pbmcgdG8gdWx0aW1hdGVseSBmYWlsIGF0IGZpbmRpbmcgYW55IGRldmljZXMuIEl0IGRvZXNuJ3QgbWF0dGVyIGhvdyBtYW55IHBsYXRmb3JtIGRldmljZXMgd2UgbWlnaHQgYmUgYWJsZSB0byBjb25qdXJlIHVwLiBJdOKAmXMgYWxsIGFib3V0IHRoZSB1bmRlcmx5aW5nIGNvbW11bmljYXRpb24uXG5cblNvLCB3aGVyZSBkbyBJIGdvIGZyb20gaGVyZT8gR2l2ZW4gdGhlIGNlbnRyYWxpdHkgb2YgYGNkeF9zY2FuX2RldmljZXNgLCBpdCBzZWVtcyBsaWtlIGNoZWNraW5nIGl0cyBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCB0aGUgZGV0YWlscyBvZiB0aGlzIHByb2Nlc3MsIHJpZ2h0PyBUaGUgZGV0YWlscyBhcmUgaW4gdGhlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZGlnIGluIGFuZCBzZWUgZXhhY3RseSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFJQTVNHIGxheWVyIGFuZCBNQ0RJLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk2MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzo0Ny41OTU2NTIxMzVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkzLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkzOlxcdHN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXFx1MDAzZXByaXY7XFxuICA5NjpcXHRcXHR1OCBidXNfbnVtLCBkZXZfbnVtLCBudW1fY2R4X2J1cztcXG4gIDk3OlxcdFxcdGludCByZXQ7XFxuICA5ODpcXHRcXG4gIDk5OlxcdFxcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXFxuIDEwMDpcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcXG4gMTAxOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDEwMjpcXHRcXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LFxcbiAxMDM6XFx0XFx0XFx0XFx0XFxcIkdldCBudW1iZXIgb2YgQ0RYIGJ1c2VzIGZhaWxlZDogJWRcXFxcblxcXCIsIHJldCk7XFxuIDEwNDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMDU6XFx0XFx0fVxcbiAxMDY6XFx0XFx0bnVtX2NkeF9idXMgPSAodTgpcmV0O1xcbiAxMDc6XFx0XFxuIDEwODpcXHRcXHRmb3IgKGJ1c19udW0gPSAwOyBidXNfbnVtIFxcdTAwM2MgbnVtX2NkeF9idXM7IGJ1c19udW0rKykge1xcbiAxMDk6XFx0XFx0XFx0c3RydWN0IGRldmljZSAqYnVzX2RldjtcXG4gMTEwOlxcdFxcdFxcdHU4IG51bV9jZHhfZGV2O1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHRcXHQvKiBBZGQgdGhlIGJ1cyBvbiBjZHggc3Vic3lzdGVtICovXFxuIDExMzpcXHRcXHRcXHRidXNfZGV2ID0gY2R4X2J1c19hZGQoY2R4LCBidXNfbnVtKTtcXG4gMTE0OlxcdFxcdFxcdGlmICghYnVzX2RldilcXG4gMTE1OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRcXHQvKiBNQ0RJIEZXIFJlYWQ6IEZldGNoIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBwcmVzZW50ICovXFxuIDExODpcXHRcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2RldnMoY2R4X21jZGksIGJ1c19udW0pO1xcbiAxMTk6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gMTIwOlxcdFxcdFxcdFxcdGRldl9lcnIoY2R4LVxcdTAwM2VkZXYsXFxuIDEyMTpcXHRcXHRcXHRcXHRcXHRcXFwiR2V0IGRldmljZXMgb24gQ0RYIGJ1cyAlZCBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBidXNfbnVtLCByZXQpO1xcbiAxMjI6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDEyMzpcXHRcXHRcXHR9XFxuIDEyNDpcXHRcXHRcXHRudW1fY2R4X2RldiA9ICh1OClyZXQ7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdFxcdGZvciAoZGV2X251bSA9IDA7IGRldl9udW0gXFx1MDAzYyBudW1fY2R4X2RldjsgZGV2X251bSsrKSB7XFxuIDEyNzpcXHRcXHRcXHRcXHRzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgZGV2X3BhcmFtcztcXG4gMTI4OlxcdFxcbiAxMjk6XFx0XFx0XFx0XFx0LyogTUNESSBGVzogR2V0IHRoZSBkZXZpY2UgY29uZmlnICovXFxuIDEzMDpcXHRcXHRcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhjZHhfbWNkaSwgYnVzX251bSxcXG4gMTMxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGRldl9udW0sIFxcdTAwMjZkZXZfcGFyYW1zKTtcXG4gMTMyOlxcdFxcdFxcdFxcdGlmIChyZXQpIHtcXG4gMTMzOlxcdFxcdFxcdFxcdFxcdGRldl9lcnIoY2R4LVxcdTAwM2VkZXYsXFxuIDEzNDpcXHRcXHRcXHRcXHRcXHRcXHRcXFwiQ0RYIGRldmljZSBjb25maWcgZ2V0IGZhaWxlZCBmb3IgJWQoYnVzKTolZChkZXYpLCAlZFxcXFxuXFxcIixcXG4gMTM1OlxcdFxcdFxcdFxcdFxcdFxcdGJ1c19udW0sIGRldl9udW0sIHJldCk7XFxuIDEzNjpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMTM3OlxcdFxcdFxcdFxcdH1cXG4gMTM4OlxcdFxcdFxcdFxcdGRldl9wYXJhbXMuY2R4ID0gY2R4O1xcbiAxMzk6XFx0XFx0XFx0XFx0ZGV2X3BhcmFtcy5wYXJlbnQgPSBidXNfZGV2O1xcbiAxNDA6XFx0XFxuIDE0MTpcXHRcXHRcXHRcXHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xcbiAxNDI6XFx0XFx0XFx0XFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXFx1MDAyNmRldl9wYXJhbXMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzo0Ny41OTU3MzQzMjVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwMjkzMzEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHZmaW8tY2R4YCBEcml2ZXIgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgdmZpby1jZHhgIGRyaXZlciwgYW5kIEkndmUgZ290IGEgcHJvYmxlbS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiB0aGVzZSBNQ0RJIGZpcm13YXJlIHJlYWRzLCBzcGVjaWZpY2FsbHkgYGNkeF9tY2RpX2dldF9udW1fYnVzZXNgLCBgY2R4X21jZGlfZ2V0X251bV9kZXZzYCwgYW5kIGBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZ2AuIFRoZXNlIGZ1bmN0aW9ucyBkZXBlbmQgb24gc2VuZGluZyBtZXNzYWdlcyBvdmVyIFJQTVNHIHRvIHRoZSBmaXJtd2FyZS4gVGhlIGlzc3VlIGlzLCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHdpdGhvdXQgYSBtb2NrIFJQTVNHIGVuZHBvaW50IHRoYXQgKmFjdHMqIGxpa2UgdGhlIGZpcm13YXJlLCB0aG9zZSBgY2R4X21jZGlfKmAgY2FsbHMgYXJlIGdvaW5nIHRvIGZhaWwuIFRoZXknbGwgZWl0aGVyIHRpbWVvdXQgb3IgcmV0dXJuIGVycm9ycy5cblxuQW5kIGlmIHRob3NlIGNhbGxzIGZhaWwsIGJvb20sIG5vIENEWCBkZXZpY2VzIGFyZSBjcmVhdGVkLiBJZiB0aGVyZSBhcmUgbm8gQ0RYIGRldmljZXMsIHRoZW4gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLCBuYXR1cmFsbHksIGNhbid0IGJlIGJvdW5kIHRvIGFueXRoaW5nLiBUaGF0IG1lYW5zIGB2ZmlvX2NkeF9tbWFwYCDigJMgdGhlIGZ1bmN0aW9uIEknbSByZWFsbHkgaW50ZXJlc3RlZCBpbiDigJMgaXMgbmV2ZXIgZ29pbmcgdG8gYmUgcmVhY2hlZC5cblxuVGhpcyBzZWVtcyB0byBmYWxsIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeSB3ZSd2ZSBiZWVuIHRhbGtpbmcgYWJvdXQ6IGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gVGhpbmsgYWJvdXQgdGhpbmdzIGxpa2UgVVNCIGdhZGdldCBzZXR1cHMgb3IgYG1hYzgwMjExX2h3c2ltYCDigJMgeW91IGNhbiBlbXVsYXRlIHRoZSBoYXJkd2FyZSwgYnV0IGlmIHRoZSB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcyBhcmVuJ3QgdGhlcmUsIHlvdSdyZSBzdHVjay5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmTigKYgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IGB2ZmlvX2NkeF9tbWFwYCBjb3VsZCBiZSBjYWxsZWQ/IExldCBtZSByZXRyYWNlIG15IHN0ZXBzLi4uIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIGRlZmluZWQgcmlnaHQgdGhlcmUgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIGl0J3MgYXNzaWduZWQgdG8gYHZmaW9fY2R4X29wcy5tbWFwYC4gQWgsIHllcywgcmlnaHQuIGB2ZmlvX2NkeF9vcHNgIGlzIHVzZWQgaW4gYHZmaW9fY2R4X3Byb2JlYC4gU28gaXQgYXBwZWFycyB0aGVyZSBhcmUgbm8gb3RoZXIgb2J2aW91cyBtZXRob2RzIGZvciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG5cbkFscmlnaHQsIGxvb2tzIGxpa2UgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHNvbGlkLiBMZXQncyBzZWUgaWYgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSBicm9hZGVyIHZpcnR1YWxpemF0aW9uIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQwOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjU1LjM5ODY2OTgyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2MTQ0MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fY2R4X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9jZHgvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMDktXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzEwOnN0YXRpYyBpbnQgdmZpb19jZHhfcHJvYmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzExLXtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM1Mj1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM1MzpcXHQucHJvYmVcXHRcXHQ9IHZmaW9fY2R4X3Byb2JlLFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1NC1cXHQucmVtb3ZlXFx0XFx0PSB2ZmlvX2NkeF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjU2LjE2NDgxODg3OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODI4MTQ3NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gVkZJTy1DRFggUHJvYmUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYHZmaW9fY2R4X3Byb2JlYC4gVGhpcyBnZXRzIGNhbGxlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgZ2V0cyBib3VuZCB0byB0aGUgYHZmaW9fY2R4X2RyaXZlcmAuIFRoZSB0aGluZyBpcywgd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGNyZWF0aW5nIGEgYGNkeF9kZXZpY2VgIGlzIGltcG9zc2libGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuIFdlIGNhbid0IGFjdHVhbGx5IHByb2JlIHRoZSBkcml2ZXIgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcywgYW5kIHRoYXQgbWVhbnMgd2UncmUgbmV2ZXIgaGl0dGluZyB0aGUgbW1hcCBmdW5jdGlvbiwgZWl0aGVyLiBHaXZlbiB0aGlzLCBpdCBsb29rcyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgd2l0aGluIHN5emthbGxlci9RRU1VJ3MgY29uZmlndXJhdGlvbi4gSXQncyBhIGRlYWQgZW5kLCBwbGFpbiBhbmQgc2ltcGxlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IGV4aXN0aW5nIG1vY2tzIGZvciBNQ0RJIG9yIENEWCBpbiB0aGUga2VybmVsLCBqdXN0IGluIGNhc2UgdGhlcmUncyBzb21lIG9ic2N1cmUgY29ybmVyIGNhc2UgSSdtIG1pc3NpbmcsIGJ1dCBJJ20gcHJldHR5IGNvbmZpZGVudCBpbiBteSBpbml0aWFsIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDE4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA4OjA0Ljk5Mjk2ODg4NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczOTcyNzQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfbWNkaV9nZXRfbnVtX2J1c2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk5LVxcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjEwMDpcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTAxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA6aW50IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoc3RydWN0IGNkeF9tY2RpICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0xNS0vKipcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmg6MTY6ICogY2R4X21jZGlfZ2V0X251bV9idXNlcyAtIEdldCB0aGUgdG90YWwgbnVtYmVyIG9mIGJ1c2VzIG9uXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oLTE3LSAqXFx0dGhlIGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmgtMjItICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oOjIzOmludCBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKHN0cnVjdCBjZHhfbWNkaSAqY2R4KTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmgtMjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA4OjA2LjczMjcwMjM5N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDQxMDM0MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQncyBwcmV0dHkgY2xlYXI6IG5vIG1vY2sgaXMgZ29pbmcgdG8gY3V0IGl0IGhlcmUuIFRoaXMgd2hvbGUgdGhpbmcgaGluZ2VzIG9uIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGgsIGluIHBhcnRpY3VsYXIsIHJlbGllcyBvbiB0aGUgQ0RYIGJ1cywgd2hpY2gsIGFzIEkgcmVjYWxsLCBuZWVkcyBhIHZlcnkgcGFydGljdWxhciBzZXR1cCDigJMgTUNESSBjb21tdW5pY2F0aW9uIG92ZXIgUlBNU0csIGxlYWRpbmcgdG8gYW4gUjUgY29yZS4gQW5kIGZyYW5rbHksIHRoaXMgc2V0dXAgaXNu4oCZdCBzb21ldGhpbmcgUUVNVSwgb3IgYW55IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LCBlbXVsYXRlcy5cblxuVGhlcmVmb3JlLCBmcm9tIGEgcHJhY3RpY2FsIHBlcnNwZWN0aXZlLCBpdCdzIGEgZGVhZCBlbmQuIEZ1enppbmcgdGhpcyBwYXJ0aWN1bGFyIGNoYW5nZSB3b3VsZCBiZSBhbiBleGVyY2lzZSBpbiBmdXRpbGl0eS4gSXQgc2ltcGx5IHdvbid0IGJlIHJlYWNoYWJsZS4gSSdtIGdvaW5nIHRvIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlbiwgSSdsbCBwcm92aWRlIGEgY29uY2lzZSBhbmQgdGVjaG5pY2FsbHkgc291bmQgZXhwbGFuYXRpb24uIEknbGwgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIGB2ZmlvX2NkeF9tbWFwYCBmdW5jdGlvbiBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIENEWCBidXMgYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmljIHRvIGEgaGFyZHdhcmUvZmlybXdhcmUgYXJyYW5nZW1lbnQgKE1DREkgdmlhIFJQTVNHIHRvIGFuIFI1IGNvcmUpIHdoaWNoIGlzbid0IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0IHNob3VsZCBiZSBjbGVhciBhbmQgbGVhdmUgbm8gcm9vbSBmb3IgbWlzdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxNzEsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA4OjE0LjE3MzczODk1NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2NkeF9tbWFwYCBpbiB0aGUgVkZJTyBDRFggZHJpdmVyLiBUaGUgQ0RYIChDb21wb3NhYmxlIERNQSBlWHByZXNzKSBidXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBidXMgZm9yIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgdGhhdCByZWxpZXMgb24gTUNESSBmaXJtd2FyZSBtZXNzYWdlcyBvdmVyIFJQTVNHIHRvIGEgcmVtb3RlIHByb2Nlc3NvciAoUjUgY29yZSkgdG8gc2NhbiBhbmQgZGlzY292ZXIgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9yIG1vY2sgZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyBvciBpdHMgZmlybXdhcmUgaW4gdGhlIGtlcm5lbC4gQ29uc2VxdWVudGx5LCBpdCBpcyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhIENEWCBkZXZpY2Ugb3IgYmluZCBpdCB0byB0aGUgYHZmaW8tY2R4YCBkcml2ZXIgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fY2R4X21tYXBgIGluIHRoZSBWRklPIENEWCBkcml2ZXIuIFRoZSBDRFggKENvbXBvc2FibGUgRE1BIGVYcHJlc3MpIGJ1cyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cyBmb3IgQU1EL1hpbGlueCBWZXJzYWwgZGV2aWNlcyB0aGF0IHJlbGllcyBvbiBNQ0RJIGZpcm13YXJlIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gYSByZW1vdGUgcHJvY2Vzc29yIChSNSBjb3JlKSB0byBzY2FuIGFuZCBkaXNjb3ZlciBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgbW9jayBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIG9yIGl0cyBmaXJtd2FyZSBpbiB0aGUga2VybmVsLiBDb25zZXF1ZW50bHksIGl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIGEgQ0RYIGRldmljZSBvciBiaW5kIGl0IHRvIHRoZSBgdmZpby1jZHhgIGRyaXZlciBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowODoxNC4xNzM3NjcxOTVaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvlqzw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 09:04:46 +0000 UTC FinishedAt: 2026-08-19 09:08:16 +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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fY2R4X21tYXBgIGluIHRoZSBWRklPIENEWCBkcml2ZXIuIFRoZSBDRFggKENvbXBvc2FibGUgRE1BIGVYcHJlc3MpIGJ1cyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cyBmb3IgQU1EL1hpbGlueCBWZXJzYWwgZGV2aWNlcyB0aGF0IHJlbGllcyBvbiBNQ0RJIGZpcm13YXJlIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gYSByZW1vdGUgcHJvY2Vzc29yIChSNSBjb3JlKSB0byBzY2FuIGFuZCBkaXNjb3ZlciBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgbW9jayBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIG9yIGl0cyBmaXJtd2FyZSBpbiB0aGUga2VybmVsLiBDb25zZXF1ZW50bHksIGl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIGEgQ0RYIGRldmljZSBvciBiaW5kIGl0IHRvIHRoZSBgdmZpby1jZHhgIGRyaXZlciBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2U1NTZjM2RmMTFhMTFhNjVlZDM4OTA5M2ZiNTI4YmVhOGMwNzZjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA5OjA2OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbmluZGV4IGIzMWVkNGJlN2JkYzEuLmI2YjE3YTZhNDY4MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbkBAIC0yODUsNiAmIzQzOzI4NSwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHQgICAgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuJiM0MztcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuJiM0MztcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4mIzQzO1x0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbiYjNDM7XG4gXHRyZXR1cm4gdmZpb19jZHhfbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19jZHhfbW1hcGAgaW4gdGhlIFZGSU8gQ0RYIGRyaXZlci4gVGhlIENEWCAoQ29tcG9zYWJsZSBETUEgZVhwcmVzcykgYnVzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgYnVzIGZvciBBTUQvWGlsaW54IFZlcnNhbCBkZXZpY2VzIHRoYXQgcmVsaWVzIG9uIE1DREkgZmlybXdhcmUgbWVzc2FnZXMgb3ZlciBSUE1TRyB0byBhIHJlbW90ZSBwcm9jZXNzb3IgKFI1IGNvcmUpIHRvIHNjYW4gYW5kIGRpc2NvdmVyIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGRyaXZlciBmb3IgdGhlIENEWCBidXMgb3IgaXRzIGZpcm13YXJlIGluIHRoZSBrZXJuZWwuIENvbnNlcXVlbnRseSwgaXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBDRFggZGV2aWNlIG9yIGJpbmQgaXQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZTU1NmMzZGYxMWExMWE2NWVkMzg5MDkzZmI1MjhiZWE4YzA3NmNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTkgMDk6MDY6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCmluZGV4IGIzMWVkNGJlN2JkYzEuLmI2YjE3YTZhNDY4MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jCkBAIC0yODUsNiAmIzQzOzI4NSwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsCiAJICAgICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAomIzQzOwkvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi8KJiM0MzsJaWYgKCEodmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0uZmxhZ3MgJmFtcDsgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSkKJiM0MzsJCXZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpOwomIzQzOwogCXJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0sIHZtYSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWRklPIENEWCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaXMgd2l0aGluIGB2ZmlvX2NkeF9tbWFwYC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrOgoKYGBgYwoJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCglpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQoJCXZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpOwpgYGAKCkJhc2ljYWxseSwgaWYgYSByZWdpb24gaXMgcmVhZC1vbmx5LCBpdCYjMzk7cyBwcmV2ZW50aW5nIGBtcHJvdGVjdCgpYCBmcm9tIGJlaW5nIHVzZWQgdG8gZXNjYWxhdGUgaXRzIHBlcm1pc3Npb25zIHRvIHdyaXRlYWJsZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2Ugd2l0aGluIGB2ZmlvX2NkeF9tbWFwYCwgd2hpY2ggaXMgZ29vZC4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogaG93IGNyaXRpY2FsIGlzIHRoaXM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXMgYHZmaW8vY2R4YCBzb21ldGhpbmcgY29tbW9ubHkgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IExldCBtZSBnbyBjaGVjayBpZiBgdmZpby9jZHhgIGlzIGV2ZW4gcmVhY2hhYmxlLiBXaGF0IHRoZSBoZWNrIGRvZXMgQ0RYIGV2ZW4gKnN0YW5kKiBmb3I/IEl0JiMzOTtzIHNvbWV0aGluZyBsaWtlICYjMzQ7Q29tcG9zYWJsZSBETUEgZVhwcmVzcyYjMzQ7LCByaWdodD8gTGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgIG9yIGBkcml2ZXJzL2NkeC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNvbnRleHQgSSBjYW4gZ2F0aGVyIGFib3V0IGl0cyBwdXJwb3NlIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fQ0RYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy03LVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnOjg6Y29uZmlnIFZGSU9fQ0RYXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgVkZJT19DRFhgIERlcGVuZGVuY2llcyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBWRklPX0NEWGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gZGVwZW5kZW5jaWVzIGZvciB0aGlzPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gcG9pbnRzIGFuZCBob3cgaXQgcmVsaWVzIG9uIG9yIGltcGFjdHMgb3RoZXIgVkZJTyBjb21wb25lbnRzIG9yIHRoZSBicm9hZGVyIGtlcm5lbC4gSSBuZWVkIHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBjaGFuZ2VzIGluIGBWRklPX0NEWGAgY291bGQgcmlwcGxlIG91dHdhcmRzLiBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVycyBvciBzdWJzeXN0ZW1zIGl0JiMzOTtzIHBhcnRpY3VsYXJseSBpbnRlcnR3aW5lZCB3aXRoPyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMsIGluY2x1ZGUgZmlsZXMsIGFuZCBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIG1haWxpbmcgbGlzdCBkaXNjdXNzaW9ucyB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiBpdHMgYXJjaGl0ZWN0dXJlIGFuZCBlbnN1cmUgSSYjMzk7bSBhd2FyZSBvZiB0aGUgZnVsbCBjb250ZXh0IHdoZW4gSSBzdGFydCB0byBhbmFseXplIHRoZSBjb2RlLiBUaGlzIGlzIHN0ZXAgb25lLCBiZWZvcmUgSSBldmVuIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc9OD1jb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzoxMDpcdGRlcGVuZHMgb24gQ0RYX0JVU1xuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVx0c2VsZWN0IEVWRU5URkRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTUwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBDRFhfQlVTKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgcmVsYXRlZCB0byBgQ0RYX0JVU2AuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhpcyB3aWxsIGxpa2VseSBpbnZvbHZlIGRpZ2dpbmcgaW50byBjb25maWd1cmF0aW9uIGZpbGVzLCBwZXJoYXBzIGV4YW1pbmluZyBidWlsZCBzY3JpcHRzIChpZiB0aGlzIGlzIGEgc29mdHdhcmUgc3lzdGVtKSwgb3IgZXZlbiBxdWVyeWluZyBhIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBgQ0RYX0JVU2AgcmVsaWVzIHVwb24g4oCTIHRoaXMgY291bGQgaW5jbHVkZSBzaGFyZWQgbGlicmFyaWVzLCBvdGhlciBtb2R1bGVzLCBleHRlcm5hbCBzZXJ2aWNlcywgb3Igc3BlY2lmaWMgaGFyZHdhcmUvZmlybXdhcmUgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBlbWJlZGRlZCBzeXN0ZW0uIEkgd2FudCB0byBidWlsZCBhIHF1aWNrIGRlcGVuZGVuY3kgZ3JhcGggaW4gbXkgaGVhZCBzbyBJIHVuZGVyc3RhbmQgdGhlIGxpa2VseSBpbXBhY3Qgb2YgYW55IGNoYW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBhcnRpZmFjdHMgYW5kIHRoZWlyIHZlcnNpb25zLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0RYX0JVUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvS2NvbmZpZy03LVxuZHJpdmVycy9jZHgvS2NvbmZpZzo4OmNvbmZpZyBDRFhfQlVTXG5kcml2ZXJzL2NkeC9LY29uZmlnLTktXHRib29sIFwmIzM0O0NEWCBCdXMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ0RYX0JVUyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQ0RYX0JVU2AuIEdpdmVuIG15IGV4aXN0aW5nIGtub3dsZWRnZSBvZiB0aGUgcGxhdGZvcm0gYW5kIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbSwgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIENEWCBkcml2ZXIuIFRoYXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB3aGVyZSB0aGUgY3J1Y2lhbCBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIHJlc2lkZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciB0aGUgS2NvbmZpZyBmaWxlIGluIGBkcml2ZXJzL2NkeC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgZGVjbGFyZWQgZm9yIGBDRFhfQlVTYC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMsIGFueSBjb25kaXRpb25hbCBkZWZpbml0aW9ucyAobGlrZSBgaWZgIHN0YXRlbWVudHMpLCBhbmQgYW55IG90aGVyIGJ1aWxkLXRpbWUgcmVsYXRpb25zaGlwcyB0aGF0IGRpY3RhdGUgd2hlbiBhbmQgaG93IGBDRFhfQlVTYCBnZXRzIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBpbWFnZS4gVGhpcyBxdWljayBkaXZlIGludG8gS2NvbmZpZyBzaG91bGQgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgSSBuZWVkIHRvIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBDRFggYnVzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgQ0RYX0JVU1xuICAgOTpcdFx0Ym9vbCBcJiMzNDtDRFggQnVzIGRyaXZlclwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQVJNNjQgfHwgQ09NUElMRV9URVNUXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHQgIERyaXZlciB0byBlbmFibGUgQ29tcG9zYWJsZSBETUEgVHJhbnNmZXIoQ0RYKSBCdXMuIENEWCBidXNcbiAgMTM6XHRcdCAgZXhwb3NlcyBGYWJyaWMgZGV2aWNlcyB3aGljaCB1c2VzIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZVxuICAxNDpcdFx0ICBBUFUuIENEWCBidXMgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHNjYW5uaW5nIGFuZCBwcm9iaW5nXG4gIDE1Olx0XHQgIG9mIENEWCBkZXZpY2VzLiBDRFggZGV2aWNlcyBhcmUgbWVtb3J5IG1hcHBlZCBvbiBzeXN0ZW0gYnVzXG4gIDE2Olx0XHQgIGZvciBlbWJlZGRlZCBDUFVzLiBDRFggYnVzIHVzZXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGZpcm13YXJlXG4gIDE3Olx0XHQgIHRvIHNjYW4gdGhlc2UgQ0RYIGRldmljZXMuXG4gIDE4Olx0XG4gIDE5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0RYX0JVUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBDRFhfQlVTYCB0aGluZyBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0IGhpbmdlcyBvbiBgT0YgJmFtcDsmYW1wOyBBUk02NCB8fCBDT01QSUxFX1RFU1RgLiBSaWdodCwgdGhhdCBuYXJyb3dzIGl0IGRvd24gYSBiaXQg4oCTIGxpa2VseSBkZWFsaW5nIHdpdGggZGV2aWNlcyBvbiBBUk02NCBzeXN0ZW1zIHdpdGggZGV2aWNlIHRyZWUgc3VwcG9ydCwgb3IgdXNlZCBmb3IgYnVpbGQgdGVzdGluZy4gVGhlIGRlc2NyaXB0aW9uIHNheXMgaXQmIzM5O3MgYWJvdXQgJiMzNDtDb21wb3NhYmxlIERNQSBUcmFuc2ZlcihDRFgpIEJ1cywmIzM0OyB3aGljaCBtYWtlcyBzZW5zZS4gSXQmIzM5O3MgZXhwb3NpbmcgRmFicmljIGRldmljZXMgdGhhdCB1dGlsaXplIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZSBBUFUuCgpUaGUgdGV4dCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCAmIzM0O0NEWCBkZXZpY2VzIGFyZSBtZW1vcnkgbWFwcGVkIG9uIHN5c3RlbSBidXMgZm9yIGVtYmVkZGVkIENQVXMsJiMzNDsgYW5kIHRoYXQgaXQgJiMzNDt1c2VzIENEWCBjb250cm9sbGVyIGFuZCBmaXJtd2FyZSB0byBzY2FuIHRoZXNlIENEWCBkZXZpY2VzLiYjMzQ7IFRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBzdXNwaWNpb246IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBidXMsIGFuZCBpdCBzb3VuZHMgbGlrZSBpdCYjMzk7cyBwcmltYXJpbHkgZGVzaWduZWQgZm9yIEFNRCBlbWJlZGRlZCBDUFVzLCBzcGVjaWZpY2FsbHkgQVBVcy4KCk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBpcywgY2FuIHdlIGVtdWxhdGUgYW55IG9mIHRoaXMgaW4gUUVNVT8gSXMgdGhlcmUgYW55IGV4aXN0aW5nIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBDRFggYnVzIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgdGhlIENEWCBkZXZpY2VzIHRoZW1zZWx2ZXM/IEkgbmVlZCB0byBjaGVjayBpbnRvIHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNvbW11bml0eSBzdXBwb3J0IG9yIGV4aXN0aW5nIHdvcmsgaW4gdGhpcyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5NjQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvY2R4L0tjb25maWc9OD1jb25maWcgQ0RYX0JVU1xuLS1cbmRyaXZlcnMvY2R4L0tjb25maWctMTgtXG5kcml2ZXJzL2NkeC9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9NYWtlZmlsZT04PWNjZmxhZ3MteSAmIzQzOz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9JiMzOTtcJiMzNDtDRFhfQlVTXCYjMzQ7JiMzOTtcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTktXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0RYX0JVUykgJiM0Mzs9IGNkeC5vIGNvbnRyb2xsZXIvXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSAmIzQzOz0gY2R4X21zaS5vXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lkci5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYzo2ODojaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYy02OS0jaW5jbHVkZSBcdTAwM2NsaW51eC9pb21tdS5oXHUwMDNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzEtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYzo3MjojaW5jbHVkZSBcJiMzNDtjZHguaFwmIzM0O1xuZHJpdmVycy9jZHgvY2R4LmMtNzMtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xuZHJpdmVycy9jZHgvY2R4LmMtODAtLyogTG9jayB0byBwcm90ZWN0IGNvbnRyb2xsZXIgb3BzICovXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmM6ODI6LyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgzOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XG5kcml2ZXJzL2NkeC9jZHguYy04NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjg1OnN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0OztcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxuZHJpdmVycy9jZHgvY2R4LmM6ODc6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtODgtXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjkwOiAqIGNkeF9kZXZfcmVzZXQgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjk3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDEtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6MTAzOlx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDQtXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZXNldF9wcmVwYXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MTA2Olx0XHRjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXG5kcml2ZXJzL2NkeC9jZHguYy0xMDgtXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTExLVx0aWYgKHJldClcbmRyaXZlcnMvY2R4L2NkeC5jOjExMjpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2NkeCBkZXZpY2UgcmVzZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTExMy1cbmRyaXZlcnMvY2R4L2NkeC5jLTExNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X2RvbmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTIxLVxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTEyNC0gKiBAZGV2OiBDRFggZGV2aWNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTMxOnN0YXRpYyBpbnQgcmVzZXRfY2R4X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlx0cmV0dXJuIGNkeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTM2LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXG5kcml2ZXJzL2NkeC9jZHguYzoxNDE6ICpcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlx0ICBhcyBhbiBhcmd1bWVudC5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNDY6c3RhdGljIGludCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVx0XHRcdFx0IHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy0xNDgte1xuZHJpdmVycy9jZHgvY2R4LmM6MTQ5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMTUxLVxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKSB7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XHRcdGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XHRcdGlmIChjZHhfZGV2LVx1MDAzZWVuYWJsZWQgXHUwMDI2XHUwMDI2IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUpXG5kcml2ZXJzL2NkeC9jZHguYzoxNTU6XHRcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXHR9IGVsc2Uge1xuZHJpdmVycy9jZHgvY2R4LmM6MTU3Olx0XHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTU4Olx0XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXHR9XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVx0LypcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MjpcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlx0ICogY2R4X2RldmljZV9yZWxlYXNlKCkgY2FsbGVkIGZyb20gd2l0aGluIHB1dF9kZXZpY2UoKS5cbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cdCAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTY1Olx0ZGV2aWNlX2RlbChcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XHRwdXRfZGV2aWNlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Mi17XG5kcml2ZXJzL2NkeC9jZHguYzoxNzM6XHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTc0Olx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xuZHJpdmVycy9jZHgvY2R4LmMtMTc5LSAqXHRcdFx0ICBDRFggZGV2aWNlIGlkIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxuZHJpdmVycy9jZHgvY2R4LmM6MTgzOiAqIFJldHVybjogbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3IgTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NjpjZHhfbWF0Y2hfb25lX2RldmljZShjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWQsXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XHRcdCAgICAgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTk5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxuZHJpdmVycy9jZHgvY2R4LmMtMjA2LSAqIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0yMDktICovXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTIte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cdFx0d2hpbGUgKGlkcy1cdTAwM2V2ZW5kb3IgfHwgaWRzLVx1MDAzZWRldmljZSkge1xuZHJpdmVycy9jZHgvY2R4LmM6MjE1Olx0XHRcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXHRcdFx0XHRyZXR1cm4gaWRzO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjIyMzppbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjI1Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIzMC1cdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSB0cnVlO1xuZHJpdmVycy9jZHgvY2R4LmM6MjMxOlx0aWYgKGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMjpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtLFxuZHJpdmVycy9jZHgvY2R4LmM6MjMzOlx0XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjM0LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIzNi19XG5kcml2ZXJzL2NkeC9jZHguYzoyMzc6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X3NldF9tYXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjM4LVxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjQwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzoyNDI6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeC5jLTI0My1cdGludCByZXQgPSAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNDYtXHRkZXZfY29uZmlnLmJ1c19tYXN0ZXJfZW5hYmxlID0gZmFsc2U7XG5kcml2ZXJzL2NkeC9jZHguYzoyNDc6XHRpZiAoY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MjQ4Olx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoyNDk6XHRcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0yNTAtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjUyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjI1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfY2xlYXJfbWFzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI1NC1cbmRyaXZlcnMvY2R4L2NkeC5jLTI1NS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NjogKiBjZHhfYnVzX21hdGNoIC0gZGV2aWNlIHRvIGRyaXZlciBtYXRjaGluZyBjYWxsYmFja1xuZHJpdmVycy9jZHgvY2R4LmM6MjU3OiAqIEBkZXY6IHRoZSBjZHggZGV2aWNlIHRvIG1hdGNoIGFnYWluc3RcbmRyaXZlcnMvY2R4L2NkeC5jOjI1ODogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGNkeCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTI1OS0gKiBzdHJ1Y3R1cmVzXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNjQte1xuZHJpdmVycy9jZHgvY2R4LmM6MjY1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjY6XHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpmb3VuZF9pZCA9IE5VTEw7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xuZHJpdmVycy9jZHgvY2R4LmMtMjY5LVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjI3MTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTI3Mi1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9jZHgvY2R4LmMtMjczLVxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0Olx0aWRzID0gY2R4X2Rydi1cdTAwM2VtYXRjaF9pZF90YWJsZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yODAtXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjgyLVx0aWYgKCFmb3VuZF9pZClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yOTUtXHRcdGlkcyA9IGZvdW5kX2lkICYjNDM7IDE7XG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XHRcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXHR9IHdoaWxlIChmb3VuZF9pZCk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxuZHJpdmVycy9jZHgvY2R4LmM6MzAyOnN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXHRpbnQgZXJyb3I7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzEyLVx0ICovXG5kcml2ZXJzL2NkeC9jZHguYzozMTM6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfR0VORVJJQ19NU0lfSVJRKSBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW1zaV9kb21haW4pIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjMxNDpcdFx0ZXJyb3IgPSBtc2lfc2V0dXBfZGV2aWNlX2RhdGEoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzE1LVx0XHRpZiAoZXJyb3IpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzE4LVxuZHJpdmVycy9jZHgvY2R4LmM6MzE5Olx0ZXJyb3IgPSBjZHhfZHJ2LVx1MDAzZXByb2JlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzIwLVx0aWYgKGVycm9yKSB7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzI3LVxuZHJpdmVycy9jZHgvY2R4LmM6MzI4OnN0YXRpYyB2b2lkIGNkeF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMDpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzMzOlx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlcmVtb3ZlKVxuZHJpdmVycy9jZHgvY2R4LmM6MzM0Olx0XHRjZHhfZHJ2LVx1MDAzZXJlbW92ZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNS19XG5kcml2ZXJzL2NkeC9jZHguYy0zMzYtXG5kcml2ZXJzL2NkeC9jZHguYzozMzc6c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMzOC17XG5kcml2ZXJzL2NkeC9jZHguYzozMzk6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozNDA6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zNDItXG5kcml2ZXJzL2NkeC9jZHguYzozNDM6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMgXHUwMDI2XHUwMDI2IGNkeF9kZXYtXHUwMDNlZW5hYmxlZCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NDpcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYzozNDU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VzaHV0ZG93bilcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NjpcdFx0Y2R4X2Rydi1cdTAwM2VzaHV0ZG93bihjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Ny19XG5kcml2ZXJzL2NkeC9jZHguYy0zNDgtXG5kcml2ZXJzL2NkeC9jZHguYzozNDk6c3RhdGljIGludCBjZHhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xuZHJpdmVycy9jZHgvY2R4LmM6MzUxOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzozNTM6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmM6MzU0Olx0dTMyIGlucHV0X2lkID0gY2R4X2Rldi1cdTAwM2VyZXFfaWQ7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTUtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMzU2LVxuZHJpdmVycy9jZHgvY2R4LmM6MzU3Olx0cmV0ID0gb2ZfZG1hX2NvbmZpZ3VyZV9pZChkZXYsIGNkeC1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgMCwgXHUwMDI2aW5wdXRfaWQpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzU4LVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FUFJPQkVfREVGRVIpIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNjItXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UmIzM5O3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MzY0Olx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2Vkcml2ZXIgXHUwMDI2XHUwMDI2ICFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSkge1xuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVx0XHRyZXQgPSBpb21tdV9kZXZpY2VfdXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzczOnN0YXRpYyB2b2lkIGNkeF9kbWFfY2xlYW51cChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xuZHJpdmVycy9jZHgvY2R4LmM6Mzc1Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxuZHJpdmVycy9jZHgvY2R4LmM6Mzc3Olx0aWYgKCFjZHhfZHJ2LVx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcbmRyaXZlcnMvY2R4L2NkeC5jLTM3OC1cdFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODMtc3RhdGljIHNzaXplX3RcdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgZm9ybWF0X3N0cmluZywgY2R4X2Rldi1cdTAwM2VmaWVsZCk7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cdFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODk9c3RhdGljIERFVklDRV9BVFRSX1JPKGZpZWxkKVxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MzpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX3ZlbmRvciwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFwmIzM0OzB4JTAyeFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTY6Y2R4X2NvbmZpZ19hdHRyKGNsYXNzLCBcJiMzNDsweCUwNnhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxuZHJpdmVycy9jZHgvY2R4LmM9Mzk4PXN0YXRpYyBzc2l6ZV90IHJlbW92ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxuZHJpdmVycy9jZHgvY2R4LmM6NDEzOlx0XHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQxNC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MjQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDI1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00MjYtXHRib29sIHZhbDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYzo0MzY6XHRcdC8qIFJlc2V0IGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byBjZHggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XHRcdHJldCA9IGRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIHJlc2V0X2NkeF9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVx0ZWxzZVxuZHJpdmVycy9jZHgvY2R4LmM6NDM5Olx0XHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDAtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xuZHJpdmVycy9jZHgvY2R4LmM6NDQ4Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00NDktXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0O2NkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXG5cJiMzNDssIGNkeF9kZXYtXHUwMDNldmVuZG9yLFxuZHJpdmVycy9jZHgvY2R4LmM6NDUxOlx0XHRcdGNkeF9kZXYtXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcdFx0XHRjZHhfZGV2LVx1MDAzZWNsYXNzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1My19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XHRpZiAoZW5hYmxlID09IGNkeF9kZXYtXHUwMDNlZW5hYmxlZClcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cdFx0cmV0dXJuIGNvdW50O1xuZHJpdmVycy9jZHgvY2R4LmMtNDY5LVxuZHJpdmVycy9jZHgvY2R4LmM6NDcwOlx0aWYgKGVuYWJsZSBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZW5hYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6NDcxOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19lbmFibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmM6NDcyOlx0ZWxzZSBpZiAoIWVuYWJsZSBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MzpcdFx0cmV0ID0gY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy00NzQtXHRlbHNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDc3LVx0aWYgKCFyZXQpXG5kcml2ZXJzL2NkeC9jZHguYzo0Nzg6XHRcdGNkeF9kZXYtXHUwMDNlZW5hYmxlZCA9IGVuYWJsZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3OS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00ODM9c3RhdGljIHNzaXplX3QgZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuZHJpdmVycy9jZHgvY2R4LmMtNDg0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg2LVxuZHJpdmVycy9jZHgvY2R4LmM6NDg3Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsldVxcblwmIzM0OywgY2R4X2Rldi1cdTAwM2VlbmFibGVkKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4OC19XG5kcml2ZXJzL2NkeC9jZHguYz00ODk9c3RhdGljIERFVklDRV9BVFRSX1JXKGVuYWJsZSk7XG5kcml2ZXJzL2NkeC9jZHguYy00OTAtXG5kcml2ZXJzL2NkeC9jZHguYzo0OTE6c3RhdGljIHVtb2RlX3QgY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXG5kcml2ZXJzL2NkeC9jZHguYy00OTIte1xuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XG5kcml2ZXJzL2NkeC9jZHguYzo0OTQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5NS1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NjpcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo0OTc6XHRpZiAoIWNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNDk4LVx0XHRyZXR1cm4gYS1cdTAwM2Vtb2RlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUwMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjUwMzpzdGF0aWMgdW1vZGVfdCBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNC17XG5kcml2ZXJzL2NkeC9jZHguYy01MDUtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjUwNjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNTA3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTA4Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjUwOTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jLTUxMC1cdFx0cmV0dXJuIGEtXHUwMDNlbW9kZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MTQtXG5kcml2ZXJzL2NkeC9jZHguYzo1MTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9kZXZfYXR0cnNbXSA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTUxNi1cdFx1MDAyNmRldl9hdHRyX3JlbW92ZS5hdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUyNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjUyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfZGV2X2dyb3VwID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTI5Olx0LmF0dHJzID0gY2R4X2Rldl9hdHRycyxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzMDpcdC5pc192aXNpYmxlID0gY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZSxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMS19O1xuZHJpdmVycy9jZHgvY2R4LmMtNTMyLVxuZHJpdmVycy9jZHgvY2R4LmM6NTMzOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNTM0LVx0XHUwMDI2ZGV2X2F0dHJfZW5hYmxlLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTM4LVxuZHJpdmVycy9jZHgvY2R4LmM6NTM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9idXNfZGV2X2dyb3VwID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTQwOlx0LmF0dHJzID0gY2R4X2J1c19kZXZfYXR0cnMsXG5kcml2ZXJzL2NkeC9jZHguYzo1NDE6XHQuaXNfdmlzaWJsZSA9IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUsXG5kcml2ZXJzL2NkeC9jZHguYy01NDItfTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU0My1cbmRyaXZlcnMvY2R4L2NkeC5jOjU0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqY2R4X2Rldl9ncm91cHNbXSA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NTpcdFx1MDAyNmNkeF9kZXZfZ3JvdXAsXG5kcml2ZXJzL2NkeC9jZHguYzo1NDY6XHRcdTAwMjZjZHhfYnVzX2Rldl9ncm91cCxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Ny1cdE5VTEwsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTQ5LVxuZHJpdmVycy9jZHgvY2R4LmM6NTUwOnN0YXRpYyBpbnQgY2R4X2RlYnVnX3Jlc291cmNlX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU1MjpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jZHgvY2R4LmMtNTUzLVx0aW50IGk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTU1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9jZHgvY2R4LmM6NTU2Olx0XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICBcdTAwMjZjZHhfZGV2LVx1MDAzZXJlc1tpXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU1Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NjItfVxuZHJpdmVycy9jZHgvY2R4LmM6NTYzOkRFRklORV9TSE9XX0FUVFJJQlVURShjZHhfZGVidWdfcmVzb3VyY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTY0LVxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtNTY2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU2NzpcdGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpLCBjZHhfZGVidWdmc19kaXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6NTY4Olx0aWYgKElTX0VSUihjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyKSlcbmRyaXZlcnMvY2R4L2NkeC5jLTU2OS1cdFx0cmV0dXJuO1xuZHJpdmVycy9jZHgvY2R4LmMtNTcwLVxuZHJpdmVycy9jZHgvY2R4LmM6NTcxOlx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtyZXNvdXJjZVwmIzM0OywgMDQ0NCwgY2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpciwgY2R4X2RldixcbmRyaXZlcnMvY2R4L2NkeC5jOjU3MjpcdFx0XHQgICAgXHUwMDI2Y2R4X2RlYnVnX3Jlc291cmNlX2ZvcHMpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTczLX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU3Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3OS1cdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU4Ny1cbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcdGd1YXJkKG11dGV4KShcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU5MC1cdC8qIFVucmVnaXN0ZXIgYWxsIHRoZSBkZXZpY2VzIG9uIHRoZSBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjU5MTpcdGNkeF91bnJlZ2lzdGVyX2RldmljZXMoXHUwMDI2Y2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU5Mi1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01OTgtXG5kcml2ZXJzL2NkeC9jZHguYzo1OTk6XHRcdGNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYwMDpcdFx0aWYgKGNkeCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VzY2FuKVxuZHJpdmVycy9jZHgvY2R4LmM6NjAxOlx0XHRcdGNkeC1cdTAwM2VvcHMtXHUwMDNlc2NhbihjZHgpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjAyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTYwOD1zdGF0aWMgQlVTX0FUVFJfV08ocmVzY2FuKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxMDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNjExLVx0XHUwMDI2YnVzX2F0dHJfcmVzY2FuLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XG5kcml2ZXJzL2NkeC9jZHguYzo2MTQ6QVRUUklCVVRFX0dST1VQUyhjZHhfYnVzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NjE3Olx0Lm5hbWVcdFx0PSBcJiMzNDtjZHhcJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYy02MTgtXHQuZHJpdmVyX292ZXJyaWRlID0gdHJ1ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcdC5tYXRjaFx0XHQ9IGNkeF9idXNfbWF0Y2gsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjA6XHQucHJvYmVcdFx0PSBjZHhfcHJvYmUsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjE6XHQucmVtb3ZlXHRcdD0gY2R4X3JlbW92ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcdC5zaHV0ZG93blx0PSBjZHhfc2h1dGRvd24sXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XHQuZG1hX2NvbmZpZ3VyZVx0PSBjZHhfZG1hX2NvbmZpZ3VyZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcdC5kbWFfY2xlYW51cFx0PSBjZHhfZG1hX2NsZWFudXAsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XHQuYnVzX2dyb3Vwc1x0PSBjZHhfYnVzX2dyb3VwcyxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcdC5kZXZfZ3JvdXBzXHQ9IGNkeF9kZXZfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XG5kcml2ZXJzL2NkeC9jZHguYzo2Mjg6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM1Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNjpcdGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNmNkeF9idXNfdHlwZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcdGVycm9yID0gZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmNkeF9kcml2ZXItXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzOS1cdGlmIChlcnJvcikge1xuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVx0XHRwcl9lcnIoXCYjMzQ7ZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXG5cJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYzo2NDE6XHRcdCAgICAgICBjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5uYW1lLCBlcnJvcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDItXHRcdHJldHVybiBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xuZHJpdmVycy9jZHgvY2R4LmM6NjUxOlx0ZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjU0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy02NTYte1xuZHJpdmVycy9jZHgvY2R4LmM6NjU3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTk6XHRrZnJlZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MC19XG5kcml2ZXJzL2NkeC9jZHguYy02NjEtXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NjMtI2lmZGVmIENPTkZJR19IQVZFX0lPUkVNQVBfUFJPVFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjY2OTogKiBjZHhfbW1hcF9yZXNvdXJjZSAtIG1hcCBhIENEWCByZXNvdXJjZSBpbnRvIHVzZXIgbWVtb3J5IHNwYWNlXG5kcml2ZXJzL2NkeC9jZHguYy02NzAtICogQGZwOiBGaWxlIHBvaW50ZXIuIE5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJ1dCByZXF1aXJlZCB3aGVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY3OS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjY4MDpzdGF0aWMgaW50IGNkeF9tbWFwX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGtvYmplY3QgKmtvYmosXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02ODMte1xuZHJpdmVycy9jZHgvY2R4LmM6Njg0Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGtvYmpfdG9fZGV2KGtvYmopKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY4NS1cdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVx1MDAzZXByaXZhdGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxuZHJpdmVycy9jZHgvY2R4LmM6Njg5Olx0cmVzID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbbnVtXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5MC1cdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVx1MDAzZXN0YXJ0KSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXHQvKiBNYWtlIHN1cmUgdGhlIGNhbGxlciBpcyBtYXBwaW5nIGEgdmFsaWQgcmVzb3VyY2UgZm9yIHRoaXMgZGV2aWNlICovXG5kcml2ZXJzL2NkeC9jZHguYzo2OTQ6XHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkgJiM0MzsgMTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5NS1cdGlmICh2bWEtXHUwMDNldm1fcGdvZmYgJiM0Mzsgdm1hX3BhZ2VzKHZtYSkgXHUwMDNlIHNpemUpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyNjgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBDRFggQnVzIEVtdWxhdGlvbiBpbiBRRU1VKioKCk9rYXksIHNvIHRoZSBDRFggYnVzIGRyaXZlciBpbiB0aGlzIGNvbnRleHQgaXMgZGVwZW5kZW50IG9uIGVpdGhlciBgT0YgJmFtcDsmYW1wOyBBUk02NGAgb3IgYENPTVBJTEVfVEVTVGAuIFRoaXMgdGVsbHMgbWUgdGhlIGNvcmUgcmVxdWlyZW1lbnQgb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgb3BlcmF0ZXMuIFRoZSBmYWN0IHRoYXQgdGhlIGB2ZmlvL2NkeGAgZHJpdmVyIGV4aXN0cywgc3BlY2lmaWNhbGx5IGZvciBWRklPIHN1cHBvcnQsIGlzIGludGVyZXN0aW5nLiBUaGlzIGltbWVkaWF0ZWx5IHNwYXJrcyB0aGUgcXVlc3Rpb246IGNhbiB3ZSBlbXVsYXRlIHRoZXNlIENEWCBkZXZpY2VzIHdpdGhpbiBRRU1VPyBUaGF0JiMzOTtzIHRoZSByZWFsIGdvYWwgaGVyZS4gVG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBwb3NzaWJsZS4KCk15IG5leHQgbGluZSBvZiB0aG91Z2h0IGlzIHRvIHNlZSB3aGF0IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBDRFggYnVzLiBJcyB0aGVyZSBhIHNvZnR3YXJlIGRyaXZlciB0aGF0IHdlIGNhbiBhY3R1YWxseSBwcm9iZT8gSWYgd2UgY2FuIGZpbmQgb25lLCB0aGF0IHdpbGwgZ2l2ZSB1cyBhIHN0cm9uZyBiYXNpcyBmb3IgZW11bGF0aW9uLiBJdCBsb29rcyBsaWtlIHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gc3RhcnQuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ2AgaXMgbGlrZWx5IHRvIGJlIHRoZSByaWdodCBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRpZiBDRFhfQlVTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIENEWF9DT05UUk9MTEVSXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtDRFggYnVzIGNvbnRyb2xsZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gSEFTX0RNQVxuICAxMzpcdFx0c2VsZWN0IFJFTU9URVBST0NcbiAgMTQ6XHRcdHNlbGVjdCBSUE1TR1xuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBDRFggY29udHJvbGxlciBkcml2ZXMgdGhlIENEWCBidXMuIEl0IGludGVyYWN0cyB3aXRoXG4gIDE3Olx0XHQgIGZpcm13YXJlIHRvIGdldCB0aGUgaGFyZHdhcmUgZGV2aWNlcyBhbmQgcmVnaXN0ZXJzIHdpdGhcbiAgMTg6XHRcdCAgdGhlIENEWCBidXMuIFNheSBZIHRvIGVuYWJsZSB0aGUgQ0RYIGhhcmR3YXJlIGRyaXZlci5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MzMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIENEWCBDb250cm9sbGVyIEludGVyYWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIENEWCBjb250cm9sbGVyIGFuZCBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBob3cgaXQgaG9va3MgaW50byB0aGUgaGFyZHdhcmUuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgcmVsaWVzIG9uIGZpcm13YXJlIHRvIGludGVyZmFjZSB3aXRoIHRoZSBkZXZpY2VzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byBob3cgdGhhdCYjMzk7cyBvcmNoZXN0cmF0ZWQsIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llczogYEhBU19ETUFgLCBgUkVNT1RFUFJPQ2AsIGFuZCBgUlBNU0dgLiBUaGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBhIHJlYWxpc3RpYyB3YXkgdG8gbW9jayBhbnkgb2YgdGhlIENEWCBoYXJkd2FyZSBmb3IgdGVzdGluZy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdG8gY2hlY2sgd2l0aGluIHRoZSBkcml2ZXIgZGlyZWN0b3J5IGZvciBgY2R4YCwgZm9jdXNpbmcgaW4gdGhlIGBjb250cm9sbGVyYCBzdWJkaXJlY3RvcnksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBjZHhfY29udHJvbGxlci5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW50ZXJhY3Rpb24gbG9naWMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmIGFueSBtZWNoYW5pc21zIGhhdmUgYmVlbiBkZXZlbG9wZWQgdG8gaGFuZGxlIHZpcnR1YWwgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2NvbnRyb2xsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0NEWF9DT05UUk9MTEVSKSAmIzQzOz0gY2R4LWNvbnRyb2xsZXIub1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9NYWtlZmlsZTo5OmNkeC1jb250cm9sbGVyLW9ianMgOj0gY2R4X2NvbnRyb2xsZXIubyBjZHhfcnBtc2cubyBtY2RpLm8gbWNkaV9mdW5jdGlvbnMub1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xMi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMzojaW5jbHVkZSBcJiMzNDtjZHhfY29udHJvbGxlci5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQtI2luY2x1ZGUgXCYjMzQ7Li4vY2R4LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBjZHhfbWNkaV9vcHMgbWNkaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTM1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjM2OnN0YXRpYyBpbnQgY2R4X2J1c19lbmFibGUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMzcte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00MC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo0MTpzdGF0aWMgaW50IGNkeF9idXNfZGlzYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Mi17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ2OnZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDcte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01Mi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1Mzp2b2lkIGNkeF9ycG1zZ19wcmVfcmVtb3ZlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTU0LXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTgtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NTk6c3RhdGljIGludCBjZHhfY29uZmlndXJlX2RldmljZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cdFx0XHRcdHU4IGJ1c19udW0sIHU4IGRldl9udW0sXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTkyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjkzOnN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy05NC17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTE2ND1zdGF0aWMgaW50IHhsbnhfY2R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTY1LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNjY6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjctXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yMjI9c3RhdGljIHZvaWQgeGxueF9jZHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjIzLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyMjQ6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIyNS1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmg6MTQ6dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmg6MTY6dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTctXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNS0jaW5jbHVkZSBcJiMzNDsuLi9jZHguaFwmIzM0O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNjojaW5jbHVkZSBcJiMzNDtjZHhfY29udHJvbGxlci5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3LSNpbmNsdWRlIFwmIzM0O21jZGlfZnVuY3Rpb25zLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTQ2PXN0YXRpYyBpbnQgY2R4X2F0dGFjaF90b19ycHJvYyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtNDgtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnI1X2NvcmVfbm9kZTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6NDk6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy01MC1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz04NT1zdGF0aWMgdm9pZCBjZHhfZGV0YWNoX3RvX3I1KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg2LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6ODc6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy04OC1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz05Nz1zdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTk5LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTAwOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZycGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMDEtXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTExMT1zdGF0aWMgdm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTEyLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTEzOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTE0LVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTEyMT1zdGF0aWMgaW50IGNkeF9ycG1zZ19wcm9iZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyMy1cdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvID0gezB9O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxMjQ6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjUtXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjYtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNzpcdGNkeF9jID0gKHN0cnVjdCBjZHhfY29udHJvbGxlciAqKWNkeF9ycG1zZ19pZF90YWJsZVswXS5kcml2ZXJfZGF0YTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTI4LVx0Y2R4X21jZGkgPSBjZHhfYy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTQ5PXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19yZW1vdmUoc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE1MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjE1MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUyLVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeF9jLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz0xNjk9aW50IGNkeF9zZXR1cF9ycG1zZyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNzAte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNzE6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNzItXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODMzNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENEWCBDb250cm9sbGVyKioKCk9rYXksIHNvIHRoZSBDRFggY29udHJvbGxlciBpcyBSUE1TRyBiYXNlZCwgYW5kIGl0JiMzOTtzIHVzaW5nIGBycHJvY2Ag4oCTIHRoYXQgYHJlbW90ZXByb2NgIHRoaW5nIOKAkyB0byB0YWxrIHRvIGEgcmVtb3RlIHByb2Nlc3Nvciwgc3BlY2lmaWNhbGx5IGFuIFI1IGNvcmUuIFRoaXMgaW1tZWRpYXRlbHkgZmVlbHMgcHJldHR5IGhhcmR3YXJlLXNwZWNpZmljLiBJJiMzOTttIHdvbmRlcmluZyBpZiB3ZSBjYW4gbW9jayBpdC4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgYW55dGhpbmcgZm9yIHRoYXQ/IExpa2UgYHN5el9ycG1zZ19jcmVhdGVgPyBOb3BlLCBub3RoaW5nIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgQ0RYLiBIbW0sIGZydXN0cmF0aW5nLgoKV2FpdCBhIHNlY29uZC4uLiB0aGUgcmVsZXZhbnQgcGF0Y2ggaXMgcmlnaHQgdGhlcmUgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGNvbmNyZXRlIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgYHZmaW9fY2R4X21tYXBgLiBJcyB0aGUgYFZGSU9fQ0RYYCBkcml2ZXIgZXZlbiB0ZXN0YWJsZT8gSSBndWVzcyB0aGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGFuZCBmaWd1cmUgdGhpcyBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHNlZSB3aGF0IHBvc3NpYmlsaXRpZXMgZXhpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fY2R4X21tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMjM9c3RhdGljIGxvbmcgdmZpb19jZHhfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjQzLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjQ0OnN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjQ1LVx0XHRcdCAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI2My1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI2NDpzdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNjUtXHRcdFx0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI5MS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI5MjpcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI5My19XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9Mjk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fY2R4X29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMDMtXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX2NkeF9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzA0Olx0Lm1tYXBcdFx0PSB2ZmlvX2NkeF9tbWFwLFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA1LVx0LmJpbmRfaW9tbXVmZFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxOTkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFZGSU8gQ0RYIGFuZCBtbWFwKioKCk9rYXksIHNvIGB2ZmlvX2NkeF9tbWFwYCBpcyB0aGUgYG1tYXBgIGZ1bmN0aW9uIHNwZWNpZmljYWxseSBmb3Igb3BlcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBgdmZpb19jZHhgIGRyaXZlci4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IHRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IG9ubHkgYmVjb21lcyByZWxldmFudCB3aGVuIGEgQ0RYIGRldmljZSBpcyBhY3R1YWxseSBib3VuZCB0byB0aGUgYHZmaW8tY2R4YCBkcml2ZXIuIEkmIzM5O20gd29uZGVyaW5nLi4uIGlzIHRoZXJlIGEgd2F5IHRvIGNyZWF0ZSBhIENEWCBkZXZpY2UgdmlydHVhbGx5LCB3aXRoaW4gc29mdHdhcmU/IEkmIzM5O20gdGhpbmtpbmcgb2Ygc2NlbmFyaW9zIGZvciB0ZXN0aW5nIG9yIHByb3RvdHlwaW5nIHdoZXJlIEkgZG9uJiMzOTt0IG5lY2Vzc2FyaWx5IGhhdmUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhlbiBpcywgYXJlIHRoZXJlIGFueSBtb2NrIG9yIHRlc3QgZHJpdmVycyBvdXQgdGhlcmUgc3BlY2lmaWNhbGx5IGZvciBDRFg/IElmIHNvLCB0aGF0IHdvdWxkIGJlIGEgZmFudGFzdGljIHNob3J0Y3V0IHRvIHdvcmtpbmcgd2l0aCBgdmZpb19jZHhgIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZSBmdXJ0aGVyLCBpdCBjb3VsZCBiZSBhIHJlYWwgdGltZSBzYXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTA1CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipDaGVja2luZyBmb3IgYSBNb2NrIGluIGBkcml2ZXJzL2NkeC9gKioKCk9rYXksIHNvIEkgbmVlZCB0byBzZWUgaWYgd2UmIzM5O3ZlIGdvdCBhIG1vY2sgaW1wbGVtZW50YXRpb24gYW55d2hlcmUgaW4gdGhlIGBkcml2ZXJzL2NkeC9gIGRpcmVjdG9yeS4gVGhpcyBpcyBzdGFuZGFyZCBwcmFjdGljZSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBkcml2ZXJzIOKAkyBtb2NrcyBhcmUgKmluY3JlZGlibHkqIHVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgaXNvbGF0aW9uLCB3aGV0aGVyIHdlJiMzOTtyZSB0YWxraW5nIHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBvciBldmVuIGp1c3QgZGVidWdnaW5nLiBUaGV5IGxldCB1cyBjb250cm9sIHRoZSBlbnZpcm9ubWVudCwgc2ltdWxhdGUgaGFyZHdhcmUsIGFuZCB2ZXJpZnkgb3VyIGNvZGUmIzM5O3MgaW50ZXJhY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHJlbHkgb24gdGhlIGFjdHVhbCwgc29tZXRpbWVzIHVucmVsaWFibGUsIGRyaXZlciBoYXJkd2FyZS4gUGx1cywgbW9ja3MgbWFrZSB0ZXN0aW5nIHNvIG11Y2ggZmFzdGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSB0ZWFtIGhhcyBiZWVuIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcywgb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZC4gSSBrbm93ICpJJiMzOTtkKiBwcmVmZXIgYSBnb29kIG1vY2sgdG8ga2VlcCB0aGluZ3MgbW92aW5nLiBUaW1lIHRvIGRpdmUgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkNoZWNraW5nIGZvciBNb2NrIGBjZHhgIGluIERyaXZlcnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgd2UmIzM5O3ZlIGdvdCBhbnkgbW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgYGNkeGAgbHVya2luZyBpbiB0aGUgYGRyaXZlcnMvYCBkaXJlY3RvcnkuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlIGJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgY2hhbmdlcywganVzdCB0byBlbnN1cmUgdGhhdCBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhIHRlc3Qgc2V0dXAgb3IgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdG8gbWFrZSB1cGRhdGVzIHRvIHRob3NlIHRvbywgb3Igd2hldGhlciB0aGV5JiMzOTtyZSBldmVuIHJlbGV2YW50IHRvIHdoYXQgSSYjMzk7bSBkb2luZy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwOyBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gYnJlYWsgZXhpc3RpbmcgbW9ja2luZyBpbXBsZW1lbnRhdGlvbnMuIFRoYXQgd291bGQgY2F1c2UgdW50b2xkIGlzc3Vlcy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGNsZWFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjU0NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9LY29uZmlnPTI1MD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9odGUvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9LY29uZmlnLTI1MS1cbmRyaXZlcnMvS2NvbmZpZzoyNTI6c291cmNlIFwmIzM0O2RyaXZlcnMvY2R4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvS2NvbmZpZy0yNTMtXG4tLVxuZHJpdmVycy9NYWtlZmlsZT0xOTQ9b2JqLSQoQ09ORklHX0RSTV9BQ0NFTClcdFx0JiM0Mzs9IGFjY2VsL1xuZHJpdmVycy9NYWtlZmlsZToxOTU6b2JqLSQoQ09ORklHX0NEWF9CVVMpXHRcdCYjNDM7PSBjZHgvXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcdFx0JiM0Mzs9IGRwbGwvXG4tLVxuZHJpdmVycy9jZHgvS2NvbmZpZz04PWNvbmZpZyBDRFhfQlVTXG4tLVxuZHJpdmVycy9jZHgvS2NvbmZpZy0xOC1cbmRyaXZlcnMvY2R4L0tjb25maWc6MTk6c291cmNlIFwmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlPTg9Y2NmbGFncy15ICYjNDM7PSAtRERFRkFVTFRfU1lNQk9MX05BTUVTUEFDRT0mIzM5O1wmIzM0O0NEWF9CVVNcJiMzNDsmIzM5O1xuZHJpdmVycy9jZHgvTWFrZWZpbGUtOS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSAmIzQzOz0gY2R4Lm8gY29udHJvbGxlci9cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0NEWF9CVVMpICYjNDM7PSBjZHhfbXNpLm9cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTE0LWVuZGlmXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXHUwMDNjbGludXgvaWRyLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvbW11LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03MS0jaW5jbHVkZSBcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcdTAwM2VcbmRyaXZlcnMvY2R4L2NkeC5jOjcyOiNpbmNsdWRlIFwmIzM0O2NkeC5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jZHguYy03My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjc5OnN0YXRpYyBERUZJTkVfSURBKGNkeF9jb250cm9sbGVyX2lkYSk7XG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYzo4MjovKiBEZWJ1Z2ZzIGRpciBmb3IgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxuZHJpdmVycy9jZHgvY2R4LmM6ODU6c3RhdGljIGNoYXIgKmNvbXBhdF9ub2RlX25hbWUgPSBcJiMzNDt4bG54LHZlcnNhbC1uZXQtY2R4XCYjMzQ7O1xuZHJpdmVycy9jZHgvY2R4LmMtODYtXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XG5kcml2ZXJzL2NkeC9jZHguYy04OC1cbmRyaXZlcnMvY2R4L2NkeC5jLTg5LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtOTYte1xuZHJpdmVycy9jZHgvY2R4LmM6OTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjk4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjk5Olx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDItXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEwNTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUpXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XHRcdGNkeF9kcnYtXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNy1cbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcbmRyaXZlcnMvY2R4L2NkeC5jOjEwOTpcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0xMTEtXHRpZiAocmV0KVxuZHJpdmVycy9jZHgvY2R4LmM6MTEyOlx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7Y2R4IGRldmljZSByZXNldCBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtMTEzLVxuZHJpdmVycy9jZHgvY2R4LmMtMTE0LVx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSByZXNldCBpcyBjb21wbGV0ZSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTE1Olx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlcmVzZXRfZG9uZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjExNjpcdFx0Y2R4X2Rydi1cdTAwM2VyZXNldF9kb25lKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTE3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTExOS19XG5kcml2ZXJzL2NkeC9jZHguYzoxMjA6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2Rldl9yZXNldCk7XG5kcml2ZXJzL2NkeC9jZHguYy0xMjEtXG5kcml2ZXJzL2NkeC9jZHguYy0xMjItLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoxMjM6ICogcmVzZXRfY2R4X2RldmljZSAtIFJlc2V0IGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMzAtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMi17XG5kcml2ZXJzL2NkeC9jZHguYzoxMzM6XHRyZXR1cm4gY2R4X2Rldl9yZXNldChkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTM0LX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMzYtLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoxMzc6ICogY2R4X3VucmVnaXN0ZXJfZGV2aWNlIC0gVW5yZWdpc3RlciBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTEzOC0gKiBAZGV2OiBDRFggZGV2aWNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTQwLSAqXHQgIGJ1dCBpcyByZXF1aXJlZCBoZXJlIGFzIHRoZSBidXNfZm9yX2VhY2hfZGV2KCkgQVBJIGV4cGVjdHNcbmRyaXZlcnMvY2R4L2NkeC5jOjE0MTogKlx0ICB0aGUgcGFzc2VkIGZ1bmN0aW9uIChjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGhhdmUgdGhpc1xuZHJpdmVycy9jZHgvY2R4LmMtMTQyLSAqXHQgIGFzIGFuIGFyZ3VtZW50LlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE0NS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE0NjpzdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2NkeC9jZHguYy0xNDctXHRcdFx0XHQgdm9pZCAqZGF0YSlcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXG5kcml2ZXJzL2NkeC9jZHguYzoxNTI6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MzpcdFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NDpcdFx0aWYgKGNkeF9kZXYtXHUwMDNlZW5hYmxlZCBcdTAwMjZcdTAwMjYgY2R4LVx1MDAzZW9wcy1cdTAwM2VidXNfZGlzYWJsZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NTpcdFx0XHRjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1Ni1cdH0gZWxzZSB7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTc6XHRcdGNkeF9kZXN0cm95X3Jlc19hdHRyKGNkeF9kZXYsIE1BWF9DRFhfREVWX1JFU09VUkNFUyk7XG5kcml2ZXJzL2NkeC9jZHguYzoxNTg6XHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1OS1cdH1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNjEtXHQvKlxuZHJpdmVycy9jZHgvY2R4LmM6MTYyOlx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXG5kcml2ZXJzL2NkeC9jZHguYzoxNjM6XHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVx0ICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNjU6XHRkZXZpY2VfZGVsKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NjpcdHB1dF9kZXZpY2UoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTY3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE3MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjE3MTpzdGF0aWMgdm9pZCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2VzKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtMTcyLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjE3MzpcdC8qIFJlc2V0IGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byBjZHggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzoxNzQ6XHRidXNfZm9yX2VhY2hfZGV2KGJ1cywgTlVMTCwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTE3NS19XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTc3LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MTc4OiAqIGNkeF9tYXRjaF9vbmVfZGV2aWNlIC0gVGVsbCBpZiBhIENEWCBkZXZpY2Ugc3RydWN0dXJlIGhhcyBhIG1hdGNoaW5nXG5kcml2ZXJzL2NkeC9jZHguYy0xNzktICpcdFx0XHQgIENEWCBkZXZpY2UgaWQgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTgyLSAqXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTg1OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKlxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcdFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xOTktLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoyMDA6ICogY2R4X21hdGNoX2lkIC0gU2VlIGlmIGEgQ0RYIGRldmljZSBtYXRjaGVzIGEgZ2l2ZW4gY2R4X2lkIHRhYmxlXG5kcml2ZXJzL2NkeC9jZHguYy0yMDEtICogQGlkczogYXJyYXkgb2YgQ0RYIGRldmljZSBJRCBzdHJ1Y3R1cmVzIHRvIHNlYXJjaCBpblxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXG5kcml2ZXJzL2NkeC9jZHguYzoyMDU6ICogc3VwcG9ydGVkIGRldmljZXMuIFJldHVybnMgdGhlIG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yXG5kcml2ZXJzL2NkeC9jZHguYy0yMDYtICogTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxuZHJpdmVycy9jZHgvY2R4LmM6MjA4OiAqIFJldHVybjogbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3IgTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbmRyaXZlcnMvY2R4L2NkeC5jLTIwOS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMTpjZHhfbWF0Y2hfaWQoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcywgc3RydWN0IGNkeF9kZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTIxMi17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjE0LVx0XHR3aGlsZSAoaWRzLVx1MDAzZXZlbmRvciB8fCBpZHMtXHUwMDNlZGV2aWNlKSB7XG5kcml2ZXJzL2NkeC9jZHguYzoyMTU6XHRcdFx0aWYgKGNkeF9tYXRjaF9vbmVfZGV2aWNlKGlkcywgZGV2KSlcbmRyaXZlcnMvY2R4L2NkeC5jLTIxNi1cdFx0XHRcdHJldHVybiBpZHM7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjIyLVxuZHJpdmVycy9jZHgvY2R4LmM6MjIzOmludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XG5kcml2ZXJzL2NkeC9jZHguYzoyMjU6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmM6MjI2Olx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjMwLVx0ZGV2X2NvbmZpZy5idXNfbWFzdGVyX2VuYWJsZSA9IHRydWU7XG5kcml2ZXJzL2NkeC9jZHguYzoyMzE6XHRpZiAoY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XHRcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzQtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjM2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI0Ni1cdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSBmYWxzZTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0NzpcdGlmIChjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUpXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcdFx0XHRcdFx0ICAgICAgY2R4X2Rldi1cdTAwM2VkZXZfbnVtLCBcdTAwMjZkZXZfY29uZmlnKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI1MC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxuZHJpdmVycy9jZHgvY2R4LmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9jbGVhcl9tYXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjU2OiAqIGNkeF9idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2NkeC9jZHguYzoyNTc6ICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxuZHJpdmVycy9jZHgvY2R4LmM6MjU4OiAqIEBkcnY6IHRoZSBkZXZpY2UgZHJpdmVyIHRvIHNlYXJjaCBmb3IgbWF0Y2hpbmcgY2R4IGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtMjU5LSAqIHN0cnVjdHVyZXNcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNjItICovXG5kcml2ZXJzL2NkeC9jZHguYzoyNjM6c3RhdGljIGludCBjZHhfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbmRyaXZlcnMvY2R4L2NkeC5jLTI2NC17XG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY3Olx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHM7XG5kcml2ZXJzL2NkeC9jZHguYy0yNjktXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMjcwLVxuZHJpdmVycy9jZHgvY2R4LmM6MjcxOlx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtMjcyLVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL2NkeC9jZHguYy0yNzMtXG5kcml2ZXJzL2NkeC9jZHguYzoyNzQ6XHRpZHMgPSBjZHhfZHJ2LVx1MDAzZW1hdGNoX2lkX3RhYmxlO1xuZHJpdmVycy9jZHgvY2R4LmMtMjc1LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI4MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjI4MTpcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0yODItXHRpZiAoIWZvdW5kX2lkKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI5NS1cdFx0aWRzID0gZm91bmRfaWQgJiM0MzsgMTtcbmRyaXZlcnMvY2R4L2NkeC5jOjI5NjpcdFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI5Ny1cdH0gd2hpbGUgKGZvdW5kX2lkKTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMDEtXG5kcml2ZXJzL2NkeC9jZHguYzozMDI6c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNDpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzA2Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cdGludCBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMTItXHQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjMxMzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlbXNpX2RvbWFpbikge1xuZHJpdmVycy9jZHgvY2R4LmM6MzE0Olx0XHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXHRcdGlmIChlcnJvcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMTgtXG5kcml2ZXJzL2NkeC9jZHguYzozMTk6XHRlcnJvciA9IGNkeF9kcnYtXHUwMDNlcHJvYmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMjAtXHRpZiAoZXJyb3IpIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMjctXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzMxOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMzItXG5kcml2ZXJzL2NkeC9jZHguYzozMzM6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZW1vdmUpXG5kcml2ZXJzL2NkeC9jZHguYzozMzQ6XHRcdGNkeF9kcnYtXHUwMDNlcmVtb3ZlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzM1LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cbmRyaXZlcnMvY2R4L2NkeC5jOjMzNzpzdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzM4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cyBcdTAwMjZcdTAwMjYgY2R4X2Rldi1cdTAwM2VlbmFibGVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ0Olx0XHRjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXNodXRkb3duKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2Olx0XHRjZHhfZHJ2LVx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQ3LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTM0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTM1MC17XG5kcml2ZXJzL2NkeC9jZHguYzozNTE6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozNTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzozNTQ6XHR1MzIgaW5wdXRfaWQgPSBjZHhfZGV2LVx1MDAzZXJlcV9pZDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTYtXG5kcml2ZXJzL2NkeC9jZHguYzozNTc6XHRyZXQgPSBvZl9kbWFfY29uZmlndXJlX2lkKGRldiwgY2R4LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCAwLCBcdTAwMjZpbnB1dF9pZCk7XG5kcml2ZXJzL2NkeC9jZHguYy0zNTgtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVQUk9CRV9ERUZFUikge1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM2Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM2MzpcdC8qIEBjZHhfZHJ2IG1heSBub3QgYmUgdmFsaWQgd2hlbiB3ZSYjMzk7cmUgY2FsbGVkIGZyb20gdGhlIElPTU1VIGxheWVyICovXG5kcml2ZXJzL2NkeC9jZHguYzozNjQ6XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWRyaXZlciBcdTAwMjZcdTAwMjYgIWNkeF9kcnYtXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKSB7XG5kcml2ZXJzL2NkeC9jZHguYy0zNjUtXHRcdHJldCA9IGlvbW11X2RldmljZV91c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNzItXG5kcml2ZXJzL2NkeC9jZHguYzozNzM6c3RhdGljIHZvaWQgY2R4X2RtYV9jbGVhbnVwKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XG5kcml2ZXJzL2NkeC9jZHguYzozNzU6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0zNzYtXG5kcml2ZXJzL2NkeC9jZHguYzozNzc6XHRpZiAoIWNkeF9kcnYtXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKVxuZHJpdmVycy9jZHgvY2R4LmMtMzc4LVx0XHRpb21tdV9kZXZpY2VfdW51c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zODEtLyogc2hvdyBjb25maWd1cmF0aW9uIGZpZWxkcyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MzgyOiNkZWZpbmUgY2R4X2NvbmZpZ19hdHRyKGZpZWxkLCBmb3JtYXRfc3RyaW5nKVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4My1zdGF0aWMgc3NpemVfdFx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4NS17XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg3Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVx1MDAzZWZpZWxkKTtcdFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODgtfVx0XFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4OT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmllbGQpXG5kcml2ZXJzL2NkeC9jZHguYy0zOTAtXG5kcml2ZXJzL2NkeC9jZHguYzozOTE6Y2R4X2NvbmZpZ19hdHRyKHZlbmRvciwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MjpjZHhfY29uZmlnX2F0dHIoZGV2aWNlLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6MzkzOmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fdmVuZG9yLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6Mzk0OmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fZGV2aWNlLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6Mzk1OmNkeF9jb25maWdfYXR0cihyZXZpc2lvbiwgXCYjMzQ7MHglMDJ4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NjpjZHhfY29uZmlnX2F0dHIoY2xhc3MsIFwmIzM0OzB4JTA2eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy0zOTctXG5kcml2ZXJzL2NkeC9jZHguYz0zOTg9c3RhdGljIHNzaXplX3QgcmVtb3ZlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00MTItXG5kcml2ZXJzL2NkeC9jZHguYzo0MTM6XHRcdHJldCA9IGNkeF91bnJlZ2lzdGVyX2RldmljZShkZXYsIE5VTEwpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDE0LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQyMj1zdGF0aWMgc3NpemVfdCByZXNldF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XG5kcml2ZXJzL2NkeC9jZHguYzo0MjU6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cdGJvb2wgdmFsO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQzNC1cbmRyaXZlcnMvY2R4L2NkeC5jOjQzNTpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cylcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNjpcdFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcdFx0cmV0ID0gZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgcmVzZXRfY2R4X2RldmljZSk7XG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXHRlbHNlXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzk6XHRcdHJldCA9IGNkeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0MC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NDU9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo0NDg6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MDpcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXCYjMzQ7Y2R4OnYlMDRYZCUwNFhzdiUwNFhzZCUwNFhjJTA2WFxcblwmIzM0OywgY2R4X2Rldi1cdTAwM2V2ZW5kb3IsXG5kcml2ZXJzL2NkeC9jZHguYzo0NTE6XHRcdFx0Y2R4X2Rldi1cdTAwM2VkZXZpY2UsIGNkeF9kZXYtXHUwMDNlc3Vic3lzdGVtX3ZlbmRvciwgY2R4X2Rldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxuZHJpdmVycy9jZHgvY2R4LmM6NDUyOlx0XHRcdGNkeF9kZXYtXHUwMDNlY2xhc3MpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDUzLX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz00NTY9c3RhdGljIHNzaXplX3QgZW5hYmxlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NDYwOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MS1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQ2Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ2NzpcdGlmIChlbmFibGUgPT0gY2R4X2Rldi1cdTAwM2VlbmFibGVkKVxuZHJpdmVycy9jZHgvY2R4LmMtNDY4LVx0XHRyZXR1cm4gY291bnQ7XG5kcml2ZXJzL2NkeC9jZHguYy00NjktXG5kcml2ZXJzL2NkeC9jZHguYzo0NzA6XHRpZiAoZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19lbmFibGUpXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2VuYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYzo0NzI6XHRlbHNlIGlmICghZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXHRpZiAoIXJldClcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3ODpcdFx0Y2R4X2Rldi1cdTAwM2VlbmFibGVkID0gZW5hYmxlO1xuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDg1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXG5kcml2ZXJzL2NkeC9jZHguYzo0ODc6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBjZHhfZGV2LVx1MDAzZWVuYWJsZWQpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg4LX1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ5MTpzdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxuZHJpdmVycy9jZHgvY2R4LmM6NDk2Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NzpcdGlmICghY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy00OTgtXHRcdHJldHVybiBhLVx1MDAzZW1vZGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6NTAzOnN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy01MDctXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA5Olx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNTEwLVx0XHRyZXR1cm4gYS1cdTAwM2Vtb2RlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUxNC1cbmRyaXZlcnMvY2R4L2NkeC5jOjUxNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVx0XHUwMDI2ZGV2X2F0dHJfcmVtb3ZlLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTI3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XHQuYXR0cnMgPSBjZHhfZGV2X2F0dHJzLFxuZHJpdmVycy9jZHgvY2R4LmM6NTMwOlx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxuZHJpdmVycy9jZHgvY2R4LmMtNTMxLX07XG5kcml2ZXJzL2NkeC9jZHguYy01MzItXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy01MzQtXHRcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MzgtXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NDA6XHQuYXR0cnMgPSBjZHhfYnVzX2Rldl9hdHRycyxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcdC5pc192aXNpYmxlID0gY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZSxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Mi19O1xuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxuZHJpdmVycy9jZHgvY2R4LmM6NTQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpjZHhfZGV2X2dyb3Vwc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTQ1Olx0XHUwMDI2Y2R4X2Rldl9ncm91cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NjpcdFx1MDAyNmNkeF9idXNfZGV2X2dyb3VwLFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ3LVx0TlVMTCxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NDktXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy01NTEte1xuZHJpdmVycy9jZHgvY2R4LmM6NTUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NkeC9jZHguYy01NTMtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NTUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfQ0RYX0RFVl9SRVNPVVJDRVM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XHRcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gIFx1MDAyNmNkeF9kZXYtXHUwMDNlcmVzW2ldO1xuZHJpdmVycy9jZHgvY2R4LmMtNTU3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU2Mi19XG5kcml2ZXJzL2NkeC9jZHguYzo1NjM6REVGSU5FX1NIT1dfQVRUUklCVVRFKGNkeF9kZWJ1Z19yZXNvdXJjZSk7XG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXG5kcml2ZXJzL2NkeC9jZHguYzo1NjU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy01NjYte1xuZHJpdmVycy9jZHgvY2R4LmM6NTY3Olx0Y2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldiksIGNkeF9kZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYzo1Njg6XHRpZiAoSVNfRVJSKGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIpKVxuZHJpdmVycy9jZHgvY2R4LmMtNTY5LVx0XHRyZXR1cm47XG5kcml2ZXJzL2NkeC9jZHguYy01NzAtXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3Jlc291cmNlXCYjMzQ7LCAwNDQ0LCBjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyLCBjZHhfZGV2LFxuZHJpdmVycy9jZHgvY2R4LmM6NTcyOlx0XHRcdCAgICBcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XG5kcml2ZXJzL2NkeC9jZHguYy01NzMtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTg4Olx0Z3VhcmQobXV0ZXgpKFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxuZHJpdmVycy9jZHgvY2R4LmMtNTkwLVx0LyogVW5yZWdpc3RlciBhbGwgdGhlIGRldmljZXMgb24gdGhlIGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlx0Y2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhcdTAwMjZjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU5OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjU5OTpcdFx0Y2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGQpO1xuZHJpdmVycy9jZHgvY2R4LmM6NjAwOlx0XHRpZiAoY2R4IFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlY29udHJvbGxlcl9yZWdpc3RlcmVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZXNjYW4pXG5kcml2ZXJzL2NkeC9jZHguYzo2MDE6XHRcdFx0Y2R4LVx1MDAzZW9wcy1cdTAwM2VzY2FuKGNkeCk7XG5kcml2ZXJzL2NkeC9jZHguYy02MDItXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xuZHJpdmVycy9jZHgvY2R4LmMtNjA5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjEwOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfYnVzX2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXHRcdTAwMjZidXNfYXR0cl9yZXNjYW4uYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MTMtfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNDpBVFRSSUJVVEVfR1JPVVBTKGNkeF9idXMpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxuZHJpdmVycy9jZHgvY2R4LmM6NjE2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBjZHhfYnVzX3R5cGUgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo2MTc6XHQubmFtZVx0XHQ9IFwmIzM0O2NkeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jLTYxOC1cdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjE5Olx0Lm1hdGNoXHRcdD0gY2R4X2J1c19tYXRjaCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMDpcdC5wcm9iZVx0XHQ9IGNkeF9wcm9iZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcdC5yZW1vdmVcdFx0PSBjZHhfcmVtb3ZlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjIyOlx0LnNodXRkb3duXHQ9IGNkeF9zaHV0ZG93bixcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMzpcdC5kbWFfY29uZmlndXJlXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI0Olx0LmRtYV9jbGVhbnVwXHQ9IGNkeF9kbWFfY2xlYW51cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNTpcdC5idXNfZ3JvdXBzXHQ9IGNkeF9idXNfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmM6NjI2Olx0LmRldl9ncm91cHNcdD0gY2R4X2Rldl9ncm91cHMsXG5kcml2ZXJzL2NkeC9jZHguYy02MjctfTtcbmRyaXZlcnMvY2R4L2NkeC5jOjYyODpFWFBPUlRfU1lNQk9MX0dQTChjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5kcml2ZXJzL2NkeC9jZHguYy02MzEtXHRcdFx0ICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02MzQtXG5kcml2ZXJzL2NkeC9jZHguYzo2MzU6XHRjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5vd25lciA9IG93bmVyO1xuZHJpdmVycy9jZHgvY2R4LmM6NjM2Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2Y2R4X2J1c190eXBlO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM4Olx0ZXJyb3IgPSBkcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjM5LVx0aWYgKGVycm9yKSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NDAtXHRcdHByX2VycihcJiMzNDtkcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yICVzOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0MTpcdFx0ICAgICAgIGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLm5hbWUsIGVycm9yKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cdFx0cmV0dXJuIGVycm9yO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY0Ni19XG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1MC17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XHRkcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZjZHhfZHJpdmVyLVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTItfVxuZHJpdmVycy9jZHgvY2R4LmM6NjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTY1Ni17XG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY1OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcdGtmcmVlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjYwLX1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cbmRyaXZlcnMvY2R4L2NkeC5jOjY2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGNkeF9waHlzX3ZtX29wcyA9IHtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2My0jaWZkZWYgQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjY4LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6NjY5OiAqIGNkeF9tbWFwX3Jlc291cmNlIC0gbWFwIGEgQ0RYIHJlc291cmNlIGludG8gdXNlciBtZW1vcnkgc3BhY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjc5LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbmRyaXZlcnMvY2R4L2NkeC5jLTY4MS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2Uoa29ial90b19kZXYoa29iaikpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTY5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENEWCBCdXMgYW5kIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBDRFggYnVz4oCmIHJpZ2h0LCB0aGF0JiMzOTtzIHNwZWNpZmljIHRvIHRob3NlIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgKGB4bG54LHZlcnNhbC1uZXQtY2R4YCkuIE5vdCBhIHdpZGVseS11c2VkIHN0YW5kYXJkLCBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC4gQW5kIHRoZSBwcm9ibGVtIGlzLCBpdCByZXF1aXJlcyAqYWN0dWFsKiBoYXJkd2FyZSBvciBhIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHJlbW90ZXByb2MgdG8gZXZlbiBzY2FuIGZvciBkZXZpY2VzLiBObyBtb2NrIGRyaXZlciBpbiB0aGUga2VybmVsLCB3aGljaCBpcyBhIHJlYWwgbGltaXRhdGlvbi4KClNvLCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHRoYXQgYHZmaW9fY2R4X21tYXBgIHBhdGggaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSB3aXRob3V0IHNvbWUgZGVkaWNhdGVkIGhhcmR3YXJlIGVtdWxhdGlvbi4gQW5kIFFFTVUsIGFzIGZhciBhcyBJIGtub3csIGRvZXNuJiMzOTt0IGhhdmUgc3RhbmRhcmQgc3VwcG9ydCBmb3IgZW11bGF0aW5nIHRoZSBDRFggYnVzLiBJdCYjMzk7cyBub3QgbGlrZSB0aGUgbWFjODAyMTFfaHdzaW0gd2hlcmUgdGhlcmUmIzM5O3MgYSBnZW5lcmljIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuCgpXYWl0IGEgc2Vjb25k4oCmIGNhbiBJIHRyaWNrIHRoZSBzeXN0ZW0/IENhbiBJIGNyZWF0ZSBhICYjMzQ7ZmFrZSYjMzQ7IENEWCBkZXZpY2UgdGhyb3VnaCBzeXNmcyBvciBjb25maWdmcz8gUGVyaGFwcyBJIGNvdWxkIGNyYWZ0IHNvbWV0aGluZyB0byBzaW11bGF0ZSBpdHMgcHJlc2VuY2UsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IHRydWx5IGNvbm5lY3RlZCB0byBhbnkgcGh5c2ljYWwgaGFyZHdhcmUuIFRoYXQgd291bGQgYmUgYSB3YXkgdG8gYnlwYXNzIHRoaXMgcmVxdWlyZW1lbnQgZm9yIGhhcmR3YXJlL3JlbW90ZXByb2MuIExldCBtZSBnbyBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIGNyZWF0ZSB0aGF0IENEWCBkZXZpY2UgZnJvbSB1c2Vyc3BhY2UuIFRoYXQgbWlnaHQgYmUgYSB2aWFibGUgd29ya2Fyb3VuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RldmljZV9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmM9NzI3PXN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03NTUtXG5kcml2ZXJzL2NkeC9jZHguYzo3NTY6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTY0LS8qKlxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguaC02Ni0gKlx0XHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNzItICovXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NkeC5oLTc0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0MS1cdFx0XHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcdFx0XHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcdTAwMjZkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDMtXHRcdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTk2MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBDRFggRGV2aWNlIEFkZGl0aW9uKioKCk9rYXksIHNvIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3QgYm91bmNpbmcgYXJvdW5kIGluIG15IGhlYWQgYWJvdXQgdGhpcyBgY2R4X2RldmljZV9hZGRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgdGlnaHRseSBjb3VwbGVkOyBmcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGUgb25seSBwbGFjZSBpdCYjMzk7cyBldmVyIGNhbGxlZCBpcyBkaXJlY3RseSB3aXRoaW4gYGNkeF9zY2FuX2RldmljZXNgIHdoaWNoIHJlc2lkZXMgaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBtZWFuaW5nIG15IGludmVzdGlnYXRpb24gY2FuIGJlIHByZXR0eSBmb2N1c2VkLiBOb3csIHdoZW4gaXMgYGNkeF9zY2FuX2RldmljZXNgIHRyaWdnZXJlZD8gSXQgaGFwcGVucyB3aGVuIHRoZSBDRFggY29udHJvbGxlciBpdHNlbGYgaXMgcHJvYmVkIOKAkyB3aGljaCBtYWtlcyBzZW5zZSDigJMgb3Igd2hlbiBhIHJlc2Nhbm5pbmcgb3BlcmF0aW9uIGlzIGluaXRpYXRlZC4gVGhlIENEWCBjb250cm9sbGVyLCByZW1lbWJlciwgaXMgc2V0IHVwIGFzIGEgcGxhdGZvcm0gZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhlIGB4bG54X2NkeF9wcm9iZWAgdHlwZS4KClRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpczogY2FuIGEgdXNlciwgZm9yIHNvbWUgcmVhc29uLCBjcmVhdGUgKmFub3RoZXIqIHBsYXRmb3JtIGRldmljZSBmb3IgYHhsbnhfY2R4X3Byb2JlYD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG1heWJlLCBwb3RlbnRpYWxseSwgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXksIHJpZ2h0PyBUaGF0IHNlZW1zIHBsYXVzaWJsZS4gSG93ZXZlciwgZXZlbiBpZiB0aGV5IGNvdWxkLCB0aGUgcmVhbCBib3R0bGVuZWNrLCB0aGUgcmVhbCBkZXBlbmRlbmN5LCBhcHBlYXJzIHRvIGJlIHRoZSBNQ0RJIChNYW5hZ2VtZW50IENvbnRyb2xsZXIgRHJpdmVyIEludGVyZmFjZSkgb3ZlciBSUE1TRy4gSWYgdGhlcmUmIzM5O3Mgbm8gd29ya2luZyBSUE1TRyBlbmRwb2ludCB0aGF0JiMzOTtzIGFjdHVhbGx5IHJlc3BvbmRpbmcgdG8gdGhvc2UgTUNESSBjb21tYW5kcywgYGNkeF9zY2FuX2RldmljZXNgIGlzIGdvaW5nIHRvIHVsdGltYXRlbHkgZmFpbCBhdCBmaW5kaW5nIGFueSBkZXZpY2VzLiBJdCBkb2VzbiYjMzk7dCBtYXR0ZXIgaG93IG1hbnkgcGxhdGZvcm0gZGV2aWNlcyB3ZSBtaWdodCBiZSBhYmxlIHRvIGNvbmp1cmUgdXAuIEl04oCZcyBhbGwgYWJvdXQgdGhlIHVuZGVybHlpbmcgY29tbXVuaWNhdGlvbi4KClNvLCB3aGVyZSBkbyBJIGdvIGZyb20gaGVyZT8gR2l2ZW4gdGhlIGNlbnRyYWxpdHkgb2YgYGNkeF9zY2FuX2RldmljZXNgLCBpdCBzZWVtcyBsaWtlIGNoZWNraW5nIGl0cyBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCB0aGUgZGV0YWlscyBvZiB0aGlzIHByb2Nlc3MsIHJpZ2h0PyBUaGUgZGV0YWlscyBhcmUgaW4gdGhlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZGlnIGluIGFuZCBzZWUgZXhhY3RseSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFJQTVNHIGxheWVyIGFuZCBNQ0RJLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTM6XHRzdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4gIDk0Olx0e1xuICA5NTpcdFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeC1cdTAwM2Vwcml2O1xuICA5NjpcdFx0dTggYnVzX251bSwgZGV2X251bSwgbnVtX2NkeF9idXM7XG4gIDk3Olx0XHRpbnQgcmV0O1xuICA5ODpcdFxuICA5OTpcdFx0LyogTUNESSBGVyBSZWFkOiBGZXRjaCB0aGUgbnVtYmVyIG9mIENEWCBidXNlcyBvbiB0aGlzIGNvbnRyb2xsZXIgKi9cbiAxMDA6XHRcdHJldCA9IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoY2R4X21jZGkpO1xuIDEwMTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDEwMjpcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsXG4gMTAzOlx0XHRcdFx0XCYjMzQ7R2V0IG51bWJlciBvZiBDRFggYnVzZXMgZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbiAxMDQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMDU6XHRcdH1cbiAxMDY6XHRcdG51bV9jZHhfYnVzID0gKHU4KXJldDtcbiAxMDc6XHRcbiAxMDg6XHRcdGZvciAoYnVzX251bSA9IDA7IGJ1c19udW0gXHUwMDNjIG51bV9jZHhfYnVzOyBidXNfbnVtJiM0MzsmIzQzOykge1xuIDEwOTpcdFx0XHRzdHJ1Y3QgZGV2aWNlICpidXNfZGV2O1xuIDExMDpcdFx0XHR1OCBudW1fY2R4X2RldjtcbiAxMTE6XHRcbiAxMTI6XHRcdFx0LyogQWRkIHRoZSBidXMgb24gY2R4IHN1YnN5c3RlbSAqL1xuIDExMzpcdFx0XHRidXNfZGV2ID0gY2R4X2J1c19hZGQoY2R4LCBidXNfbnVtKTtcbiAxMTQ6XHRcdFx0aWYgKCFidXNfZGV2KVxuIDExNTpcdFx0XHRcdGNvbnRpbnVlO1xuIDExNjpcdFxuIDExNzpcdFx0XHQvKiBNQ0RJIEZXIFJlYWQ6IEZldGNoIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBwcmVzZW50ICovXG4gMTE4Olx0XHRcdHJldCA9IGNkeF9tY2RpX2dldF9udW1fZGV2cyhjZHhfbWNkaSwgYnVzX251bSk7XG4gMTE5Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiAxMjA6XHRcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsXG4gMTIxOlx0XHRcdFx0XHRcJiMzNDtHZXQgZGV2aWNlcyBvbiBDRFggYnVzICVkIGZhaWxlZDogJWRcXG5cJiMzNDssIGJ1c19udW0sIHJldCk7XG4gMTIyOlx0XHRcdFx0Y29udGludWU7XG4gMTIzOlx0XHRcdH1cbiAxMjQ6XHRcdFx0bnVtX2NkeF9kZXYgPSAodTgpcmV0O1xuIDEyNTpcdFxuIDEyNjpcdFx0XHRmb3IgKGRldl9udW0gPSAwOyBkZXZfbnVtIFx1MDAzYyBudW1fY2R4X2RldjsgZGV2X251bSYjNDM7JiM0MzspIHtcbiAxMjc6XHRcdFx0XHRzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgZGV2X3BhcmFtcztcbiAxMjg6XHRcbiAxMjk6XHRcdFx0XHQvKiBNQ0RJIEZXOiBHZXQgdGhlIGRldmljZSBjb25maWcgKi9cbiAxMzA6XHRcdFx0XHRyZXQgPSBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhjZHhfbWNkaSwgYnVzX251bSxcbiAxMzE6XHRcdFx0XHRcdFx0XHQgICAgICBkZXZfbnVtLCBcdTAwMjZkZXZfcGFyYW1zKTtcbiAxMzI6XHRcdFx0XHRpZiAocmV0KSB7XG4gMTMzOlx0XHRcdFx0XHRkZXZfZXJyKGNkeC1cdTAwM2VkZXYsXG4gMTM0Olx0XHRcdFx0XHRcdFwmIzM0O0NEWCBkZXZpY2UgY29uZmlnIGdldCBmYWlsZWQgZm9yICVkKGJ1cyk6JWQoZGV2KSwgJWRcXG5cJiMzNDssXG4gMTM1Olx0XHRcdFx0XHRcdGJ1c19udW0sIGRldl9udW0sIHJldCk7XG4gMTM2Olx0XHRcdFx0XHRjb250aW51ZTtcbiAxMzc6XHRcdFx0XHR9XG4gMTM4Olx0XHRcdFx0ZGV2X3BhcmFtcy5jZHggPSBjZHg7XG4gMTM5Olx0XHRcdFx0ZGV2X3BhcmFtcy5wYXJlbnQgPSBidXNfZGV2O1xuIDE0MDpcdFxuIDE0MTpcdFx0XHRcdC8qIEFkZCB0aGUgZGV2aWNlIHRvIHRoZSBjZHggYnVzICovXG4gMTQyOlx0XHRcdFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXHUwMDI2ZGV2X3BhcmFtcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDA5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgdmZpby1jZHhgIERyaXZlciBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHZmaW8tY2R4YCBkcml2ZXIsIGFuZCBJJiMzOTt2ZSBnb3QgYSBwcm9ibGVtLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIHRoZXNlIE1DREkgZmlybXdhcmUgcmVhZHMsIHNwZWNpZmljYWxseSBgY2R4X21jZGlfZ2V0X251bV9idXNlc2AsIGBjZHhfbWNkaV9nZXRfbnVtX2RldnNgLCBhbmQgYGNkeF9tY2RpX2dldF9kZXZfY29uZmlnYC4gVGhlc2UgZnVuY3Rpb25zIGRlcGVuZCBvbiBzZW5kaW5nIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gdGhlIGZpcm13YXJlLiBUaGUgaXNzdWUgaXMsIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgd2l0aG91dCBhIG1vY2sgUlBNU0cgZW5kcG9pbnQgdGhhdCAqYWN0cyogbGlrZSB0aGUgZmlybXdhcmUsIHRob3NlIGBjZHhfbWNkaV8qYCBjYWxscyBhcmUgZ29pbmcgdG8gZmFpbC4gVGhleSYjMzk7bGwgZWl0aGVyIHRpbWVvdXQgb3IgcmV0dXJuIGVycm9ycy4KCkFuZCBpZiB0aG9zZSBjYWxscyBmYWlsLCBib29tLCBubyBDRFggZGV2aWNlcyBhcmUgY3JlYXRlZC4gSWYgdGhlcmUgYXJlIG5vIENEWCBkZXZpY2VzLCB0aGVuIHRoZSBgdmZpby1jZHhgIGRyaXZlciwgbmF0dXJhbGx5LCBjYW4mIzM5O3QgYmUgYm91bmQgdG8gYW55dGhpbmcuIFRoYXQgbWVhbnMgYHZmaW9fY2R4X21tYXBgIOKAkyB0aGUgZnVuY3Rpb24gSSYjMzk7bSByZWFsbHkgaW50ZXJlc3RlZCBpbiDigJMgaXMgbmV2ZXIgZ29pbmcgdG8gYmUgcmVhY2hlZC4KClRoaXMgc2VlbXMgdG8gZmFsbCBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnkgd2UmIzM5O3ZlIGJlZW4gdGFsa2luZyBhYm91dDogY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGluayBhYm91dCB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IHNldHVwcyBvciBgbWFjODAyMTFfaHdzaW1gIOKAkyB5b3UgY2FuIGVtdWxhdGUgdGhlIGhhcmR3YXJlLCBidXQgaWYgdGhlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGFyZW4mIzM5O3QgdGhlcmUsIHlvdSYjMzk7cmUgc3R1Y2suCgpCdXQgaG9sZCBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBJcyB0aGVyZSAqYW55KiBvdGhlciB3YXkgYHZmaW9fY2R4X21tYXBgIGNvdWxkIGJlIGNhbGxlZD8gTGV0IG1lIHJldHJhY2UgbXkgc3RlcHMuLi4gaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIGRlZmluZWQgcmlnaHQgdGhlcmUgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGB2ZmlvX2NkeF9vcHMubW1hcGAuIEFoLCB5ZXMsIHJpZ2h0LiBgdmZpb19jZHhfb3BzYCBpcyB1c2VkIGluIGB2ZmlvX2NkeF9wcm9iZWAuIFNvIGl0IGFwcGVhcnMgdGhlcmUgYXJlIG5vIG90aGVyIG9idmlvdXMgbWV0aG9kcyBmb3IgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgoKQWxyaWdodCwgbG9va3MgbGlrZSBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgc29saWQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSBicm9hZGVyIHZpcnR1YWxpemF0aW9uIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2NkeF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA5LVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzEwOnN0YXRpYyBpbnQgdmZpb19jZHhfcHJvYmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMTEte1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM1Mj1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzUzOlx0LnByb2JlXHRcdD0gdmZpb19jZHhfcHJvYmUsXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNTQtXHQucmVtb3ZlXHRcdD0gdmZpb19jZHhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQxOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIFZGSU8tQ0RYIFByb2JlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHZmaW9fY2R4X3Byb2JlYC4gVGhpcyBnZXRzIGNhbGxlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgZ2V0cyBib3VuZCB0byB0aGUgYHZmaW9fY2R4X2RyaXZlcmAuIFRoZSB0aGluZyBpcywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBjcmVhdGluZyBhIGBjZHhfZGV2aWNlYCBpcyBpbXBvc3NpYmxlIGluIG91ciBjdXJyZW50IHNldHVwLiBXZSBjYW4mIzM5O3QgYWN0dWFsbHkgcHJvYmUgdGhlIGRyaXZlciB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzLCBhbmQgdGhhdCBtZWFucyB3ZSYjMzk7cmUgbmV2ZXIgaGl0dGluZyB0aGUgbW1hcCBmdW5jdGlvbiwgZWl0aGVyLiBHaXZlbiB0aGlzLCBpdCBsb29rcyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgd2l0aGluIHN5emthbGxlci9RRU1VJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGEgZGVhZCBlbmQsIHBsYWluIGFuZCBzaW1wbGUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIGFueSBleGlzdGluZyBtb2NrcyBmb3IgTUNESSBvciBDRFggaW4gdGhlIGtlcm5lbCwganVzdCBpbiBjYXNlIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZSBJJiMzOTttIG1pc3NpbmcsIGJ1dCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgaW4gbXkgaW5pdGlhbCBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwOTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHhfbWNkaV9nZXRfbnVtX2J1c2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk5LVx0LyogTUNESSBGVyBSZWFkOiBGZXRjaCB0aGUgbnVtYmVyIG9mIENEWCBidXNlcyBvbiB0aGlzIGNvbnRyb2xsZXIgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMDA6XHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xMDEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTktXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA6aW50IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoc3RydWN0IGNkeF9tY2RpICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0xNS0vKipcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaDoxNjogKiBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzIC0gR2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgYnVzZXMgb25cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0xNy0gKlx0dGhlIGNvbnRyb2xsZXIuXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oLTIyLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oOjIzOmludCBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKHN0cnVjdCBjZHhfbWNkaSAqY2R4KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0yNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDk6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNzEKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGgqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IG5vIG1vY2sgaXMgZ29pbmcgdG8gY3V0IGl0IGhlcmUuIFRoaXMgd2hvbGUgdGhpbmcgaGluZ2VzIG9uIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGgsIGluIHBhcnRpY3VsYXIsIHJlbGllcyBvbiB0aGUgQ0RYIGJ1cywgd2hpY2gsIGFzIEkgcmVjYWxsLCBuZWVkcyBhIHZlcnkgcGFydGljdWxhciBzZXR1cCDigJMgTUNESSBjb21tdW5pY2F0aW9uIG92ZXIgUlBNU0csIGxlYWRpbmcgdG8gYW4gUjUgY29yZS4gQW5kIGZyYW5rbHksIHRoaXMgc2V0dXAgaXNu4oCZdCBzb21ldGhpbmcgUUVNVSwgb3IgYW55IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LCBlbXVsYXRlcy4KClRoZXJlZm9yZSwgZnJvbSBhIHByYWN0aWNhbCBwZXJzcGVjdGl2ZSwgaXQmIzM5O3MgYSBkZWFkIGVuZC4gRnV6emluZyB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHdvdWxkIGJlIGFuIGV4ZXJjaXNlIGluIGZ1dGlsaXR5LiBJdCBzaW1wbHkgd29uJiMzOTt0IGJlIHJlYWNoYWJsZS4gSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZW4sIEkmIzM5O2xsIHByb3ZpZGUgYSBjb25jaXNlIGFuZCB0ZWNobmljYWxseSBzb3VuZCBleHBsYW5hdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIGB2ZmlvX2NkeF9tbWFwYCBmdW5jdGlvbiBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIENEWCBidXMgYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmljIHRvIGEgaGFyZHdhcmUvZmlybXdhcmUgYXJyYW5nZW1lbnQgKE1DREkgdmlhIFJQTVNHIHRvIGFuIFI1IGNvcmUpIHdoaWNoIGlzbiYjMzk7dCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gVGhhdCBzaG91bGQgYmUgY2xlYXIgYW5kIGxlYXZlIG5vIHJvb20gZm9yIG1pc3VuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fY2R4X21tYXBgIGluIHRoZSBWRklPIENEWCBkcml2ZXIuIFRoZSBDRFggKENvbXBvc2FibGUgRE1BIGVYcHJlc3MpIGJ1cyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cyBmb3IgQU1EL1hpbGlueCBWZXJzYWwgZGV2aWNlcyB0aGF0IHJlbGllcyBvbiBNQ0RJIGZpcm13YXJlIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gYSByZW1vdGUgcHJvY2Vzc29yIChSNSBjb3JlKSB0byBzY2FuIGFuZCBkaXNjb3ZlciBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgbW9jayBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIG9yIGl0cyBmaXJtd2FyZSBpbiB0aGUga2VybmVsLiBDb25zZXF1ZW50bHksIGl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIGEgQ0RYIGRldmljZSBvciBiaW5kIGl0IHRvIHRoZSBgdmZpby1jZHhgIGRyaXZlciBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19jZHhfbW1hcGAgaW4gdGhlIFZGSU8gQ0RYIGRyaXZlci4gVGhlIENEWCAoQ29tcG9zYWJsZSBETUEgZVhwcmVzcykgYnVzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgYnVzIGZvciBBTUQvWGlsaW54IFZlcnNhbCBkZXZpY2VzIHRoYXQgcmVsaWVzIG9uIE1DREkgZmlybXdhcmUgbWVzc2FnZXMgb3ZlciBSUE1TRyB0byBhIHJlbW90ZSBwcm9jZXNzb3IgKFI1IGNvcmUpIHRvIHNjYW4gYW5kIGRpc2NvdmVyIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGRyaXZlciBmb3IgdGhlIENEWCBidXMgb3IgaXRzIGZpcm13YXJlIGluIHRoZSBrZXJuZWwuIENvbnNlcXVlbnRseSwgaXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBDRFggZGV2aWNlIG9yIGJpbmQgaXQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA5OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNjo0Mi41NjYxNzk1ODlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTYwNzU5ODE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2NkeF9tbWFwYCBpbiB0aGUgVkZJTyBDRFggZHJpdmVyLiBUaGUgQ0RYIChDb21wb3NhYmxlIERNQSBlWHByZXNzKSBidXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBidXMgZm9yIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgdGhhdCByZWxpZXMgb24gTUNESSBmaXJtd2FyZSBtZXNzYWdlcyBvdmVyIFJQTVNHIHRvIGEgcmVtb3RlIHByb2Nlc3NvciAoUjUgY29yZSkgdG8gc2NhbiBhbmQgZGlzY292ZXIgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9yIG1vY2sgZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyBvciBpdHMgZmlybXdhcmUgaW4gdGhlIGtlcm5lbC4gQ29uc2VxdWVudGx5LCBpdCBpcyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhIENEWCBkZXZpY2Ugb3IgYmluZCBpdCB0byB0aGUgYHZmaW8tY2R4YCBkcml2ZXIgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NDIuNTY2MTg1MTY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg3MzYxNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2U1NTZjM2RmMTFhMTFhNjVlZDM4OTA5M2ZiNTI4YmVhOGMwNzZjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwOTowNjo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuaW5kZXggYjMxZWQ0YmU3YmRjMS4uYjZiMTdhNmE0NjgxMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbisrKyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXFxuQEAgLTI4NSw2ICsyODUsMTAgQEAgc3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHQgICAgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9XUklURSkpXFxuIFxcdFxcdHJldHVybiAtRVBFUk07XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjQ0LjA1NDE2NjQzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkwMTE5NTk4NzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19jZHhfbW1hcGAgaW4gdGhlIFZGSU8gQ0RYIGRyaXZlci4gVGhlIENEWCAoQ29tcG9zYWJsZSBETUEgZVhwcmVzcykgYnVzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgYnVzIGZvciBBTUQvWGlsaW54IFZlcnNhbCBkZXZpY2VzIHRoYXQgcmVsaWVzIG9uIE1DREkgZmlybXdhcmUgbWVzc2FnZXMgb3ZlciBSUE1TRyB0byBhIHJlbW90ZSBwcm9jZXNzb3IgKFI1IGNvcmUpIHRvIHNjYW4gYW5kIGRpc2NvdmVyIGRldmljZXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtb2NrIGRyaXZlciBmb3IgdGhlIENEWCBidXMgb3IgaXRzIGZpcm13YXJlIGluIHRoZSBrZXJuZWwuIENvbnNlcXVlbnRseSwgaXQgaXMgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBDRFggZGV2aWNlIG9yIGJpbmQgaXQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlNTU2YzNkZjExYTExYTY1ZWQzODkwOTNmYjUyOGJlYThjMDc2Y2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwOTowNjo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbmluZGV4IGIzMWVkNGJlN2JkYzEuLmI2YjE3YTZhNDY4MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xuKysrIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbkBAIC0yODUsNiArMjg1LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdCAgICAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9XUklURSkpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4rXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbitcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4rXHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuK1xuIFx0cmV0dXJuIHZmaW9fY2R4X21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjQ0LjA1NDE2NzYwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMzY4MjE2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZJTyBDRFggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpcyB3aXRoaW4gYHZmaW9fY2R4X21tYXBgLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjazpcblxuYGBgY1xuXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cblx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcblx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmBgYFxuXG5CYXNpY2FsbHksIGlmIGEgcmVnaW9uIGlzIHJlYWQtb25seSwgaXQncyBwcmV2ZW50aW5nIGBtcHJvdGVjdCgpYCBmcm9tIGJlaW5nIHVzZWQgdG8gZXNjYWxhdGUgaXRzIHBlcm1pc3Npb25zIHRvIHdyaXRlYWJsZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2Ugd2l0aGluIGB2ZmlvX2NkeF9tbWFwYCwgd2hpY2ggaXMgZ29vZC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBob3cgY3JpdGljYWwgaXMgdGhpcz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBJcyBgdmZpby9jZHhgIHNvbWV0aGluZyBjb21tb25seSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gTGV0IG1lIGdvIGNoZWNrIGlmIGB2ZmlvL2NkeGAgaXMgZXZlbiByZWFjaGFibGUuIFdoYXQgdGhlIGhlY2sgZG9lcyBDRFggZXZlbiAqc3RhbmQqIGZvcj8gSXQncyBzb21ldGhpbmcgbGlrZSBcIkNvbXBvc2FibGUgRE1BIGVYcHJlc3NcIiwgcmlnaHQ/IExldCdzIGNoZWNrIGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgIG9yIGBkcml2ZXJzL2NkeC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhbnkgY29udGV4dCBJIGNhbiBnYXRoZXIgYWJvdXQgaXRzIHB1cnBvc2UgYW5kIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjQ5LjM5MDk5MjIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5Njg3ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX0NEWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTctXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnOjg6Y29uZmlnIFZGSU9fQ0RYXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNjo0OS40NzA2ODUxMjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIxNzkwNTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYFZGSU9fQ0RYYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBWRklPX0NEWGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gZGVwZW5kZW5jaWVzIGZvciB0aGlzPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gcG9pbnRzIGFuZCBob3cgaXQgcmVsaWVzIG9uIG9yIGltcGFjdHMgb3RoZXIgVkZJTyBjb21wb25lbnRzIG9yIHRoZSBicm9hZGVyIGtlcm5lbC4gSSBuZWVkIHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBjaGFuZ2VzIGluIGBWRklPX0NEWGAgY291bGQgcmlwcGxlIG91dHdhcmRzLiBBcmUgdGhlcmUgc3BlY2lmaWMgZHJpdmVycyBvciBzdWJzeXN0ZW1zIGl0J3MgcGFydGljdWxhcmx5IGludGVydHdpbmVkIHdpdGg/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLCBpbmNsdWRlIGZpbGVzLCBhbmQgYW55IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gaXRzIGFyY2hpdGVjdHVyZSBhbmQgZW5zdXJlIEknbSBhd2FyZSBvZiB0aGUgZnVsbCBjb250ZXh0IHdoZW4gSSBzdGFydCB0byBhbmFseXplIHRoZSBjb2RlLiBUaGlzIGlzIHN0ZXAgb25lLCBiZWZvcmUgSSBldmVuIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNjo1Mi41OTI0NzkwOTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwODMwNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnPTg9Y29uZmlnIFZGSU9fQ0RYXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzoxMDpcXHRkZXBlbmRzIG9uIENEWF9CVVNcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWctMTEtXFx0c2VsZWN0IEVWRU5URkRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTIuNjcwNTY2OTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNjYzNzY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBDRFhfQlVTKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgc3RydWN0dXJlIHJlbGF0ZWQgdG8gYENEWF9CVVNgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhpcyB3aWxsIGxpa2VseSBpbnZvbHZlIGRpZ2dpbmcgaW50byBjb25maWd1cmF0aW9uIGZpbGVzLCBwZXJoYXBzIGV4YW1pbmluZyBidWlsZCBzY3JpcHRzIChpZiB0aGlzIGlzIGEgc29mdHdhcmUgc3lzdGVtKSwgb3IgZXZlbiBxdWVyeWluZyBhIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBgQ0RYX0JVU2AgcmVsaWVzIHVwb24g4oCTIHRoaXMgY291bGQgaW5jbHVkZSBzaGFyZWQgbGlicmFyaWVzLCBvdGhlciBtb2R1bGVzLCBleHRlcm5hbCBzZXJ2aWNlcywgb3Igc3BlY2lmaWMgaGFyZHdhcmUvZmlybXdhcmUgaWYgd2UncmUgZGVhbGluZyB3aXRoIGFuIGVtYmVkZGVkIHN5c3RlbS4gSSB3YW50IHRvIGJ1aWxkIGEgcXVpY2sgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkIHNvIEkgdW5kZXJzdGFuZCB0aGUgbGlrZWx5IGltcGFjdCBvZiBhbnkgY2hhbmdlcy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgYXJ0aWZhY3RzIGFuZCB0aGVpciB2ZXJzaW9ucy4gTGV0J3Mgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA2OjU2LjE5NzIwODc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNzQ0NzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRFhfQlVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTYuMjcwOTU3MzQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3MjkyNjA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDRFhfQlVTIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYENEWF9CVVNgLiBHaXZlbiBteSBleGlzdGluZyBrbm93bGVkZ2Ugb2YgdGhlIHBsYXRmb3JtIGFuZCB0aGUgYnJvYWRlciBidWlsZCBzeXN0ZW0sIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBDRFggZHJpdmVyLiBUaGF0J3MgYWxtb3N0IGFsd2F5cyB3aGVyZSB0aGUgY3J1Y2lhbCBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIHJlc2lkZXMuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgZm9yIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBkZWNsYXJlZCBmb3IgYENEWF9CVVNgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLCBhbnkgY29uZGl0aW9uYWwgZGVmaW5pdGlvbnMgKGxpa2UgYGlmYCBzdGF0ZW1lbnRzKSwgYW5kIGFueSBvdGhlciBidWlsZC10aW1lIHJlbGF0aW9uc2hpcHMgdGhhdCBkaWN0YXRlIHdoZW4gYW5kIGhvdyBgQ0RYX0JVU2AgZ2V0cyBpbmNsdWRlZCBpbiB0aGUgZmluYWwgaW1hZ2UuIFRoaXMgcXVpY2sgZGl2ZSBpbnRvIEtjb25maWcgc2hvdWxkIGdpdmUgbWUgdGhlIGZvdW5kYXRpb25hbCBjb250ZXh0IEkgbmVlZCB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTkuNjQzODg2MTU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvY2R4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBidXMgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgQ0RYX0JVU1xcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiQ0RYIEJ1cyBkcml2ZXJcXFwiXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEFSTTY0IHx8IENPTVBJTEVfVEVTVFxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIENvbXBvc2FibGUgRE1BIFRyYW5zZmVyKENEWCkgQnVzLiBDRFggYnVzXFxuICAxMzpcXHRcXHQgIGV4cG9zZXMgRmFicmljIGRldmljZXMgd2hpY2ggdXNlcyBjb21wb3NhYmxlIERNQSBJUCB0byB0aGVcXG4gIDE0OlxcdFxcdCAgQVBVLiBDRFggYnVzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBzY2FubmluZyBhbmQgcHJvYmluZ1xcbiAgMTU6XFx0XFx0ICBvZiBDRFggZGV2aWNlcy4gQ0RYIGRldmljZXMgYXJlIG1lbW9yeSBtYXBwZWQgb24gc3lzdGVtIGJ1c1xcbiAgMTY6XFx0XFx0ICBmb3IgZW1iZWRkZWQgQ1BVcy4gQ0RYIGJ1cyB1c2VzIENEWCBjb250cm9sbGVyIGFuZCBmaXJtd2FyZVxcbiAgMTc6XFx0XFx0ICB0byBzY2FuIHRoZXNlIENEWCBkZXZpY2VzLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDY6NTkuNjQzOTg1MDAzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTUyNjExMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDRFhfQlVTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBDRFhfQlVTYCB0aGluZyBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0IGhpbmdlcyBvbiBgT0YgXHUwMDI2XHUwMDI2IEFSTTY0IHx8IENPTVBJTEVfVEVTVGAuIFJpZ2h0LCB0aGF0IG5hcnJvd3MgaXQgZG93biBhIGJpdCDigJMgbGlrZWx5IGRlYWxpbmcgd2l0aCBkZXZpY2VzIG9uIEFSTTY0IHN5c3RlbXMgd2l0aCBkZXZpY2UgdHJlZSBzdXBwb3J0LCBvciB1c2VkIGZvciBidWlsZCB0ZXN0aW5nLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCdzIGFib3V0IFwiQ29tcG9zYWJsZSBETUEgVHJhbnNmZXIoQ0RYKSBCdXMsXCIgd2hpY2ggbWFrZXMgc2Vuc2UuIEl0J3MgZXhwb3NpbmcgRmFicmljIGRldmljZXMgdGhhdCB1dGlsaXplIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZSBBUFUuXG5cblRoZSB0ZXh0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IFwiQ0RYIGRldmljZXMgYXJlIG1lbW9yeSBtYXBwZWQgb24gc3lzdGVtIGJ1cyBmb3IgZW1iZWRkZWQgQ1BVcyxcIiBhbmQgdGhhdCBpdCBcInVzZXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGZpcm13YXJlIHRvIHNjYW4gdGhlc2UgQ0RYIGRldmljZXMuXCIgVGhhdCBjb25maXJtcyBteSBpbml0aWFsIHN1c3BpY2lvbjogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cywgYW5kIGl0IHNvdW5kcyBsaWtlIGl0J3MgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBBTUQgZW1iZWRkZWQgQ1BVcywgc3BlY2lmaWNhbGx5IEFQVXMuXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBpcywgY2FuIHdlIGVtdWxhdGUgYW55IG9mIHRoaXMgaW4gUUVNVT8gSXMgdGhlcmUgYW55IGV4aXN0aW5nIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBDRFggYnVzIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgdGhlIENEWCBkZXZpY2VzIHRoZW1zZWx2ZXM/IEkgbmVlZCB0byBjaGVjayBpbnRvIHRoYXQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb21tdW5pdHkgc3VwcG9ydCBvciBleGlzdGluZyB3b3JrIGluIHRoaXMgYXJlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc1NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjAzLjY5OTI0OTA4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzOTUwMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5NjQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvY2R4L0tjb25maWc9OD1jb25maWcgQ0RYX0JVU1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL2NkeC9LY29uZmlnOjE5OnNvdXJjZSBcXFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU9OD1jY2ZsYWdzLXkgKz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9J1xcXCJDRFhfQlVTXFxcIidcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHgubyBjb250cm9sbGVyL1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgKz0gY2R4X21zaS5vXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZHIuaFxcdTAwM2VcXG5kcml2ZXJzL2NkeC9jZHguYzo2ODojaW5jbHVkZSBcXHUwMDNjbGludXgvY2R4L2NkeF9idXMuaFxcdTAwM2VcXG5kcml2ZXJzL2NkeC9jZHguYy02OS0jaW5jbHVkZSBcXHUwMDNjbGludXgvaW9tbXUuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTcxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcXHUwMDNlXFxuZHJpdmVycy9jZHgvY2R4LmM6NzI6I2luY2x1ZGUgXFxcImNkeC5oXFxcIlxcbmRyaXZlcnMvY2R4L2NkeC5jLTczLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk6c3RhdGljIERFRklORV9JREEoY2R4X2NvbnRyb2xsZXJfaWRhKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjgyOi8qIERlYnVnZnMgZGlyIGZvciBjZHggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6ODM6c3RhdGljIHN0cnVjdCBkZW50cnkgKmNkeF9kZWJ1Z2ZzX2RpcjtcXG5kcml2ZXJzL2NkeC9jZHguYy04NC1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NTpzdGF0aWMgY2hhciAqY29tcGF0X25vZGVfbmFtZSA9IFxcXCJ4bG54LHZlcnNhbC1uZXQtY2R4XFxcIjtcXG5kcml2ZXJzL2NkeC9jZHguYy04Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NzpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODgtXFxuZHJpdmVycy9jZHgvY2R4LmMtODktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6OTA6ICogY2R4X2Rldl9yZXNldCAtIFJlc2V0IGEgQ0RYIGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy05Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6OTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTk6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XFxuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDM6XFx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEwNC1cXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA1OlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTA2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA3LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEwOC1cXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTA5OlxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExMS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMjpcXHRcXHRkZXZfZXJyKGRldiwgXFxcImNkeCBkZXZpY2UgcmVzZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMTMtXFxuZHJpdmVycy9jZHgvY2R4LmMtMTE0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgcmVzZXQgaXMgY29tcGxldGUgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMTU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMTY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfZG9uZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTktfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMDpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZGV2X3Jlc2V0KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjEtXFxuZHJpdmVycy9jZHgvY2R4LmMtMTIyLS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTI0LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMzE6c3RhdGljIGludCByZXNldF9jZHhfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMzpcXHRyZXR1cm4gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNC19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMzYtLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTM3OiAqIGNkeF91bnJlZ2lzdGVyX2RldmljZSAtIFVucmVnaXN0ZXIgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtMTM4LSAqIEBkZXY6IENEWCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0MC0gKlxcdCAgYnV0IGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlIGJ1c19mb3JfZWFjaF9kZXYoKSBBUEkgZXhwZWN0c1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0MTogKlxcdCAgdGhlIHBhc3NlZCBmdW5jdGlvbiAoY2R4X3VucmVnaXN0ZXJfZGV2aWNlKSB0byBoYXZlIHRoaXNcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDItICpcXHQgIGFzIGFuIGFyZ3VtZW50Llxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE0NjpzdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ3LVxcdFxcdFxcdFxcdCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE0OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTUyOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTM6XFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTQ6XFx0XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NTpcXHRcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTc6XFx0XFx0Y2R4X2Rlc3Ryb3lfcmVzX2F0dHIoY2R4X2RldiwgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTKTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNTg6XFx0XFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNTktXFx0fVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTYxLVxcdC8qXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYyOlxcdCAqIERvIG5vdCBmcmVlIGNkeF9kZXYgaGVyZSBhcyBpdCB3b3VsZCBiZSBmcmVlZCBpblxcbmRyaXZlcnMvY2R4L2NkeC5jOjE2MzpcXHQgKiBjZHhfZGV2aWNlX3JlbGVhc2UoKSBjYWxsZWQgZnJvbSB3aXRoaW4gcHV0X2RldmljZSgpLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE2NC1cXHQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNjU6XFx0ZGV2aWNlX2RlbChcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjY6XFx0cHV0X2RldmljZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNjctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MTcxOnN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTcyLXtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNzM6XFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzQ6XFx0YnVzX2Zvcl9lYWNoX2RldihidXMsIE5VTEwsIE5VTEwsIGNkeF91bnJlZ2lzdGVyX2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTc1LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3Ny0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxNzg6ICogY2R4X21hdGNoX29uZV9kZXZpY2UgLSBUZWxsIGlmIGEgQ0RYIGRldmljZSBzdHJ1Y3R1cmUgaGFzIGEgbWF0Y2hpbmdcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzktICpcXHRcXHRcXHQgIENEWCBkZXZpY2UgaWQgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xODItICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODM6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4NC0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxODU6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTg2OmNkeF9tYXRjaF9vbmVfZGV2aWNlKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZCxcXG5kcml2ZXJzL2NkeC9jZHguYzoxODc6XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4OC17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xOTktLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjAwOiAqIGNkeF9tYXRjaF9pZCAtIFNlZSBpZiBhIENEWCBkZXZpY2UgbWF0Y2hlcyBhIGdpdmVuIGNkeF9pZCB0YWJsZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwMS0gKiBAaWRzOiBhcnJheSBvZiBDRFggZGV2aWNlIElEIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDQtICogVXNlZCBieSBhIGRyaXZlciB0byBjaGVjayB3aGV0aGVyIGEgQ0RYIGRldmljZSBpcyBpbiBpdHMgbGlzdCBvZlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwNTogKiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3JcXG5kcml2ZXJzL2NkeC9jZHguYy0yMDYtICogTlVMTCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cXG5kcml2ZXJzL2NkeC9jZHguYy0yMDctICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDg6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwOS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoyMTA6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXFxuZHJpdmVycy9jZHgvY2R4LmM6MjExOmNkeF9tYXRjaF9pZChjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzLCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMTQtXFx0XFx0d2hpbGUgKGlkcy1cXHUwMDNldmVuZG9yIHx8IGlkcy1cXHUwMDNlZGV2aWNlKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjE1OlxcdFxcdFxcdGlmIChjZHhfbWF0Y2hfb25lX2RldmljZShpZHMsIGRldikpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjE2LVxcdFxcdFxcdFxcdHJldHVybiBpZHM7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMjItXFxuZHJpdmVycy9jZHgvY2R4LmM6MjIzOmludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMjY6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI3LVxcdGludCByZXQgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzMC1cXHRkZXZfY29uZmlnLmJ1c19tYXN0ZXJfZW5hYmxlID0gdHJ1ZTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzE6XFx0aWYgKGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMjpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0sXFxuZHJpdmVycy9jZHgvY2R4LmM6MjMzOlxcdFxcdFxcdFxcdFxcdCAgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0sIFxcdTAwMjZkZXZfY29uZmlnKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzQtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yMzYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjM4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzOTppbnQgY2R4X2NsZWFyX21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDI6XFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVxcdGludCByZXQgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0Ni1cXHRkZXZfY29uZmlnLmJ1c19tYXN0ZXJfZW5hYmxlID0gZmFsc2U7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ3OlxcdGlmIChjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcXHRcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjUwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2NsZWFyX21hc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI1NS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyNTY6ICogY2R4X2J1c19tYXRjaCAtIGRldmljZSB0byBkcml2ZXIgbWF0Y2hpbmcgY2FsbGJhY2tcXG5kcml2ZXJzL2NkeC9jZHguYzoyNTc6ICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1ODogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGNkeCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTktICogc3RydWN0dXJlc1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjYyLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2MzpzdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI2NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjg6XFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNjktXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjcxOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjcyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzMtXFxuZHJpdmVycy9jZHgvY2R4LmM6Mjc0OlxcdGlkcyA9IGNkeF9kcnYtXFx1MDAzZW1hdGNoX2lkX3RhYmxlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI4MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyODE6XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yODItXFx0aWYgKCFmb3VuZF9pZClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI5NS1cXHRcXHRpZHMgPSBmb3VuZF9pZCArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mjk2OlxcdFxcdGZvdW5kX2lkID0gY2R4X21hdGNoX2lkKGlkcywgY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjk3LVxcdH0gd2hpbGUgKGZvdW5kX2lkKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMS1cXG5kcml2ZXJzL2NkeC9jZHguYzozMDI6c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA0OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMwNjpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDctXFx0aW50IGVycm9yO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzEyLVxcdCAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMxMzpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfR0VORVJJQ19NU0lfSVJRKSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW1zaV9kb21haW4pIHtcXG5kcml2ZXJzL2NkeC9jZHguYzozMTQ6XFx0XFx0ZXJyb3IgPSBtc2lfc2V0dXBfZGV2aWNlX2RhdGEoXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzE1LVxcdFxcdGlmIChlcnJvcilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMxOC1cXG5kcml2ZXJzL2NkeC9jZHguYzozMTk6XFx0ZXJyb3IgPSBjZHhfZHJ2LVxcdTAwM2Vwcm9iZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMjAtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMjctXFxuZHJpdmVycy9jZHgvY2R4LmM6MzI4OnN0YXRpYyB2b2lkIGNkeF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMyOS17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzMxOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMzMi1cXG5kcml2ZXJzL2NkeC9jZHguYzozMzM6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVtb3ZlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzNDpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VyZW1vdmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzM1LX1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMzYtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzM3OnN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzM4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzk6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDA6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNDM6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cyBcXHUwMDI2XFx1MDAyNiBjZHhfZGV2LVxcdTAwM2VlbmFibGVkIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzozNDQ6XFx0XFx0Y2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ1OlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXNodXRkb3duKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NjpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VzaHV0ZG93bihjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNDctfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM0OC1cXG5kcml2ZXJzL2NkeC9jZHguYzozNDk6c3RhdGljIGludCBjZHhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzUwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTE6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUzOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1NDpcXHR1MzIgaW5wdXRfaWQgPSBjZHhfZGV2LVxcdTAwM2VyZXFfaWQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzU1LVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzU2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM1NzpcXHRyZXQgPSBvZl9kbWFfY29uZmlndXJlX2lkKGRldiwgY2R4LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIDAsIFxcdTAwMjZpbnB1dF9pZCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzU4LVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FUFJPQkVfREVGRVIpIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM2Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNjM6XFx0LyogQGNkeF9kcnYgbWF5IG5vdCBiZSB2YWxpZCB3aGVuIHdlJ3JlIGNhbGxlZCBmcm9tIHRoZSBJT01NVSBsYXllciAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM2NDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRyaXZlciBcXHUwMDI2XFx1MDAyNiAhY2R4X2Rydi1cXHUwMDNlZHJpdmVyX21hbmFnZWRfZG1hKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzY1LVxcdFxcdHJldCA9IGlvbW11X2RldmljZV91c2VfZGVmYXVsdF9kb21haW4oZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Mi1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzM6c3RhdGljIHZvaWQgY2R4X2RtYV9jbGVhbnVwKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzozNzc6XFx0aWYgKCFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzc4LVxcdFxcdGlvbW11X2RldmljZV91bnVzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgxLS8qIHNob3cgY29uZmlndXJhdGlvbiBmaWVsZHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzozODI6I2RlZmluZSBjZHhfY29uZmlnX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpXFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4My1zdGF0aWMgc3NpemVfdFxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYz0zODQ9ZmllbGQjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg1LXtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM6Mzg2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBmb3JtYXRfc3RyaW5nLCBjZHhfZGV2LVxcdTAwM2VmaWVsZCk7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4OC19XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4OT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmllbGQpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MTpjZHhfY29uZmlnX2F0dHIodmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTI6Y2R4X2NvbmZpZ19hdHRyKGRldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzkzOmNkeF9jb25maWdfYXR0cihzdWJzeXN0ZW1fdmVuZG9yLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTQ6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV9kZXZpY2UsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NTpjZHhfY29uZmlnX2F0dHIocmV2aXNpb24sIFxcXCIweCUwMnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NjpjZHhfY29uZmlnX2F0dHIoY2xhc3MsIFxcXCIweCUwNnhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM5Ny1cXG5kcml2ZXJzL2NkeC9jZHguYz0zOTg9c3RhdGljIHNzaXplX3QgcmVtb3ZlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQxMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MTM6XFx0XFx0cmV0ID0gY2R4X3VucmVnaXN0ZXJfZGV2aWNlKGRldiwgTlVMTCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDE0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00MjI9c3RhdGljIHNzaXplX3QgcmVzZXRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDI1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQyNi1cXHRib29sIHZhbDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo0MzU6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYzo0MzY6XFx0XFx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzc6XFx0XFx0cmV0ID0gZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKGRldiwgTlVMTCwgcmVzZXRfY2R4X2RldmljZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDM4LVxcdGVsc2VcXG5kcml2ZXJzL2NkeC9jZHguYzo0Mzk6XFx0XFx0cmV0ID0gY2R4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ0NT1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NDcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ0ODpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NDktXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUwOlxcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXFxcImNkeDp2JTA0WGQlMDRYc3YlMDRYc2QlMDRYYyUwNlhcXFxcblxcXCIsIGNkeF9kZXYtXFx1MDAzZXZlbmRvcixcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTE6XFx0XFx0XFx0Y2R4X2Rldi1cXHUwMDNlZGV2aWNlLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBjZHhfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MjpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VjbGFzcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDUzLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ1OC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDU5OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NjYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDY3OlxcdGlmIChlbmFibGUgPT0gY2R4X2Rldi1cXHUwMDNlZW5hYmxlZClcXG5kcml2ZXJzL2NkeC9jZHguYy00NjgtXFx0XFx0cmV0dXJuIGNvdW50O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0NzA6XFx0aWYgKGVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2VuYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19lbmFibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzI6XFx0ZWxzZSBpZiAoIWVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDc4OlxcdFxcdGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgPSBlbmFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDgzPXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDg3OlxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODgtfVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDkxOnN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XFxuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDk2OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDk3OlxcdGlmICghY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5OC1cXHRcXHRyZXR1cm4gYS1cXHUwMDNlbW9kZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDM6c3RhdGljIHVtb2RlX3QgY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXFxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDUtXFx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTA2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XFx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1MDk6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy01MTAtXFx0XFx0cmV0dXJuIGEtXFx1MDAzZW1vZGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTE1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVxcdFxcdTAwMjZkZXZfYXR0cl9yZW1vdmUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjg6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2Rldl9ncm91cCA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XFx0LmF0dHJzID0gY2R4X2Rldl9hdHRycyxcXG5kcml2ZXJzL2NkeC9jZHguYzo1MzA6XFx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMS19O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTM0LVxcdFxcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzOC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTQwOlxcdC5hdHRycyA9IGNkeF9idXNfZGV2X2F0dHJzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcXHQuaXNfdmlzaWJsZSA9IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQyLX07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqY2R4X2Rldl9ncm91cHNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDU6XFx0XFx1MDAyNmNkeF9kZXZfZ3JvdXAsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ2OlxcdFxcdTAwMjZjZHhfYnVzX2Rldl9ncm91cCxcXG5kcml2ZXJzL2NkeC9jZHguYy01NDctXFx0TlVMTCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU1NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTOyBpKyspIHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXMgPSAgXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tpXTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NjItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU2MzpERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTY3OlxcdGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpLCBjZHhfZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU2ODpcXHRpZiAoSVNfRVJSKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKSlcXG5kcml2ZXJzL2NkeC9jZHguYy01NjktXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicmVzb3VyY2VcXFwiLCAwNDQ0LCBjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpciwgY2R4X2RldixcXG5kcml2ZXJzL2NkeC9jZHguYzo1NzI6XFx0XFx0XFx0ICAgIFxcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTczLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01Nzcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzktXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01ODctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTg4OlxcdGd1YXJkKG11dGV4KShcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU5MC1cXHQvKiBVbnJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlxcdGNkeF91bnJlZ2lzdGVyX2RldmljZXMoXFx1MDAyNmNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTk4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU5OTpcXHRcXHRjZHggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZCk7XFxuZHJpdmVycy9jZHgvY2R4LmM6NjAwOlxcdFxcdGlmIChjZHggXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2Vjb250cm9sbGVyX3JlZ2lzdGVyZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZXNjYW4pXFxuZHJpdmVycy9jZHgvY2R4LmM6NjAxOlxcdFxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VzY2FuKGNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjAyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MTA6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXFx0XFx1MDAyNmJ1c19hdHRyX3Jlc2Nhbi5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjE0OkFUVFJJQlVURV9HUk9VUFMoY2R4X2J1cyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNzpcXHQubmFtZVxcdFxcdD0gXFxcImNkeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjE4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcXHQubWF0Y2hcXHRcXHQ9IGNkeF9idXNfbWF0Y2gsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIwOlxcdC5wcm9iZVxcdFxcdD0gY2R4X3Byb2JlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcXHQucmVtb3ZlXFx0XFx0PSBjZHhfcmVtb3ZlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcXHQuc2h1dGRvd25cXHQ9IGNkeF9zaHV0ZG93bixcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XFx0LmRtYV9jb25maWd1cmVcXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcXHQuZG1hX2NsZWFudXBcXHQ9IGNkeF9kbWFfY2xlYW51cCxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XFx0LmJ1c19ncm91cHNcXHQ9IGNkeF9idXNfZ3JvdXBzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcXHQuZGV2X2dyb3Vwc1xcdD0gY2R4X2Rldl9ncm91cHMsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjI4OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNTpcXHRjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MzY6XFx0Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZjZHhfYnVzX3R5cGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcXHRlcnJvciA9IGRyaXZlcl9yZWdpc3RlcihcXHUwMDI2Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MzktXFx0aWYgKGVycm9yKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVxcdFxcdHByX2VycihcXFwiZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjQxOlxcdFxcdCAgICAgICBjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIubmFtZSwgZXJyb3IpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cXHRcXHRyZXR1cm4gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjUwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XFx0ZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmNkeF9kcml2ZXItXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjU2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcXHRrZnJlZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NjAtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYzLSNpZmRlZiBDT05GSUdfSEFWRV9JT1JFTUFQX1BST1RcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo2Njk6ICogY2R4X21tYXBfcmVzb3VyY2UgLSBtYXAgYSBDRFggcmVzb3VyY2UgaW50byB1c2VyIG1lbW9yeSBzcGFjZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NzktICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XFxuZHJpdmVycy9jZHgvY2R4LmM6Njg0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShrb2JqX3RvX2Rldihrb2JqKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVxcdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVxcdTAwM2Vwcml2YXRlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OTpcXHRyZXMgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW251bV07XFxuZHJpdmVycy9jZHgvY2R4LmMtNjkwLVxcdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVxcdTAwM2VzdGFydCkpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXFx0LyogTWFrZSBzdXJlIHRoZSBjYWxsZXIgaXMgbWFwcGluZyBhIHZhbGlkIHJlc291cmNlIGZvciB0aGlzIGRldmljZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY5NDpcXHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjk1LVxcdGlmICh2bWEtXFx1MDAzZXZtX3Bnb2ZmICsgdm1hX3BhZ2VzKHZtYSkgXFx1MDAzZSBzaXplKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzowMy43Njg2NDk0OThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzNDY5MTI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBDRFggQnVzIEVtdWxhdGlvbiBpbiBRRU1VKipcblxuT2theSwgc28gdGhlIENEWCBidXMgZHJpdmVyIGluIHRoaXMgY29udGV4dCBpcyBkZXBlbmRlbnQgb24gZWl0aGVyIGBPRiBcdTAwMjZcdTAwMjYgQVJNNjRgIG9yIGBDT01QSUxFX1RFU1RgLiBUaGlzIHRlbGxzIG1lIHRoZSBjb3JlIHJlcXVpcmVtZW50IG9yIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IG9wZXJhdGVzLiBUaGUgZmFjdCB0aGF0IHRoZSBgdmZpby9jZHhgIGRyaXZlciBleGlzdHMsIHNwZWNpZmljYWxseSBmb3IgVkZJTyBzdXBwb3J0LCBpcyBpbnRlcmVzdGluZy4gVGhpcyBpbW1lZGlhdGVseSBzcGFya3MgdGhlIHF1ZXN0aW9uOiBjYW4gd2UgZW11bGF0ZSB0aGVzZSBDRFggZGV2aWNlcyB3aXRoaW4gUUVNVT8gVGhhdCdzIHRoZSByZWFsIGdvYWwgaGVyZS4gVG8gZmlndXJlIG91dCBpZiBpdCdzIHBvc3NpYmxlLlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhvdWdodCBpcyB0byBzZWUgd2hhdCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSB0byB0aGUgQ0RYIGJ1cy4gSXMgdGhlcmUgYSBzb2Z0d2FyZSBkcml2ZXIgdGhhdCB3ZSBjYW4gYWN0dWFsbHkgcHJvYmU/IElmIHdlIGNhbiBmaW5kIG9uZSwgdGhhdCB3aWxsIGdpdmUgdXMgYSBzdHJvbmcgYmFzaXMgZm9yIGVtdWxhdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIHBsYWNlIHRvIHN0YXJ0LiBTcGVjaWZpY2FsbHksIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdgIGlzIGxpa2VseSB0byBiZSB0aGUgcmlnaHQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyNjgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzowOC40MDMzNDMzOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0aWYgQ0RYX0JVU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQ0RYX0NPTlRST0xMRVJcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJDRFggYnVzIGNvbnRyb2xsZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRU1PVEVQUk9DXFxuICAxNDpcXHRcXHRzZWxlY3QgUlBNU0dcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ0RYIGNvbnRyb2xsZXIgZHJpdmVzIHRoZSBDRFggYnVzLiBJdCBpbnRlcmFjdHMgd2l0aFxcbiAgMTc6XFx0XFx0ICBmaXJtd2FyZSB0byBnZXQgdGhlIGhhcmR3YXJlIGRldmljZXMgYW5kIHJlZ2lzdGVycyB3aXRoXFxuICAxODpcXHRcXHQgIHRoZSBDRFggYnVzLiBTYXkgWSB0byBlbmFibGUgdGhlIENEWCBoYXJkd2FyZSBkcml2ZXIuXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MDguNDAzNDAwMjkyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjExMzI1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBDRFggQ29udHJvbGxlciBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyBpdCBob29rcyBpbnRvIHRoZSBoYXJkd2FyZS4gSXQncyBjbGVhciB0aGF0IGl0IHJlbGllcyBvbiBmaXJtd2FyZSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgZGV2aWNlcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gaG93IHRoYXQncyBvcmNoZXN0cmF0ZWQsIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llczogYEhBU19ETUFgLCBgUkVNT1RFUFJPQ2AsIGFuZCBgUlBNU0dgLiBUaGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBhIHJlYWxpc3RpYyB3YXkgdG8gbW9jayBhbnkgb2YgdGhlIENEWCBoYXJkd2FyZSBmb3IgdGVzdGluZy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdG8gY2hlY2sgd2l0aGluIHRoZSBkcml2ZXIgZGlyZWN0b3J5IGZvciBgY2R4YCwgZm9jdXNpbmcgaW4gdGhlIGBjb250cm9sbGVyYCBzdWJkaXJlY3RvcnksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBjZHhfY29udHJvbGxlci5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW50ZXJhY3Rpb24gbG9naWMuIEknbGwgbmVlZCB0byBzZWUgaWYgYW55IG1lY2hhbmlzbXMgaGF2ZSBiZWVuIGRldmVsb3BlZCB0byBoYW5kbGUgdmlydHVhbCBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgzMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MTUuMDI0NTM1MDk4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ3MzUzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfY29udHJvbGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0NEWF9DT05UUk9MTEVSKSArPSBjZHgtY29udHJvbGxlci5vXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9NYWtlZmlsZTo5OmNkeC1jb250cm9sbGVyLW9ianMgOj0gY2R4X2NvbnRyb2xsZXIubyBjZHhfcnBtc2cubyBtY2RpLm8gbWNkaV9mdW5jdGlvbnMub1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTEyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMzojaW5jbHVkZSBcXFwiY2R4X2NvbnRyb2xsZXIuaFxcXCJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2R4X21jZGlfb3BzIG1jZGlfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTM1LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzozNjpzdGF0aWMgaW50IGNkeF9idXNfZW5hYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0zNy17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQxOnN0YXRpYyBpbnQgY2R4X2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Mi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ2OnZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01Mi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NTM6dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTQte1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTU4LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1OTpzdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cXHRcXHRcXHRcXHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTkyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo5MzpzdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk0LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0xNjQ9c3RhdGljIGludCB4bG54X2NkeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjUte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNjY6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE2Ny1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTIyMj1zdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjIzLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIyNS1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oLTEzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNDp2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oOjE2OnZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTY6I2luY2x1ZGUgXFxcImNkeF9jb250cm9sbGVyLmhcXFwiXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNy0jaW5jbHVkZSBcXFwibWNkaV9mdW5jdGlvbnMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9NDY9c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTQ4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6NDk6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTUwLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTg1PXN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg2LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjg3OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy04OC1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz05Nz1zdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtOTkte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTAwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTAxLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTExPXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTEyLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjExMzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTE0LVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTEyMT1zdGF0aWMgaW50IGNkeF9ycG1zZ19wcm9iZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTIzLVxcdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvID0gezB9O1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjUtXFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNzpcXHRjZHhfYyA9IChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKiljZHhfcnBtc2dfaWRfdGFibGVbMF0uZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjgtXFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTQ5PXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19yZW1vdmUoc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTUxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUyLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTY5PWludCBjZHhfc2V0dXBfcnBtc2coc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNzE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3Mi1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzoxNS4wNzIwMTI1MzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg4MTMzODI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENEWCBDb250cm9sbGVyKipcblxuT2theSwgc28gdGhlIENEWCBjb250cm9sbGVyIGlzIFJQTVNHIGJhc2VkLCBhbmQgaXQncyB1c2luZyBgcnByb2NgIOKAkyB0aGF0IGByZW1vdGVwcm9jYCB0aGluZyDigJMgdG8gdGFsayB0byBhIHJlbW90ZSBwcm9jZXNzb3IsIHNwZWNpZmljYWxseSBhbiBSNSBjb3JlLiBUaGlzIGltbWVkaWF0ZWx5IGZlZWxzIHByZXR0eSBoYXJkd2FyZS1zcGVjaWZpYy4gSSdtIHdvbmRlcmluZyBpZiB3ZSBjYW4gbW9jayBpdC4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgYW55dGhpbmcgZm9yIHRoYXQ/IExpa2UgYHN5el9ycG1zZ19jcmVhdGVgPyBOb3BlLCBub3RoaW5nIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgQ0RYLiBIbW0sIGZydXN0cmF0aW5nLlxuXG5XYWl0IGEgc2Vjb25kLi4uIHRoZSByZWxldmFudCBwYXRjaCBpcyByaWdodCB0aGVyZSBpbiBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBPa2F5LCB0aGF0IGdpdmVzIG1lIGEgY29uY3JldGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3Mgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGB2ZmlvX2NkeF9tbWFwYC4gSXMgdGhlIGBWRklPX0NEWGAgZHJpdmVyIGV2ZW4gdGVzdGFibGU/IEkgZ3Vlc3MgdGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGFuZCBmaWd1cmUgdGhpcyBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludHMgYW5kIHNlZSB3aGF0IHBvc3NpYmlsaXRpZXMgZXhpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzM1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjIxLjk1MzM1NDIxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NDEwODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19jZHhfbW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0yMjM9c3RhdGljIGxvbmcgdmZpb19jZHhfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNDMtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjQ0OnN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI0NS1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI2My1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzoyNjQ6c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI2NS1cXHRcXHRcXHQgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yOTEtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjkyOlxcdHJldHVybiB2ZmlvX2NkeF9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjkzLX1cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMDMtXFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19jZHhfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozMDQ6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fY2R4X21tYXAsXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzA1LVxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzoyMS45OTc3OTk2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIyMzMzMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTyBDRFggYW5kIG1tYXAqKlxuXG5Pa2F5LCBzbyBgdmZpb19jZHhfbW1hcGAgaXMgdGhlIGBtbWFwYCBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIG9wZXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgYHZmaW9fY2R4YCBkcml2ZXIuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCB0aGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHRoaXMgZnVuY3Rpb25hbGl0eSBvbmx5IGJlY29tZXMgcmVsZXZhbnQgd2hlbiBhIENEWCBkZXZpY2UgaXMgYWN0dWFsbHkgYm91bmQgdG8gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLiBJJ20gd29uZGVyaW5nLi4uIGlzIHRoZXJlIGEgd2F5IHRvIGNyZWF0ZSBhIENEWCBkZXZpY2UgdmlydHVhbGx5LCB3aXRoaW4gc29mdHdhcmU/IEknbSB0aGlua2luZyBvZiBzY2VuYXJpb3MgZm9yIHRlc3Rpbmcgb3IgcHJvdG90eXBpbmcgd2hlcmUgSSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gaXMsIGFyZSB0aGVyZSBhbnkgbW9jayBvciB0ZXN0IGRyaXZlcnMgb3V0IHRoZXJlIHNwZWNpZmljYWxseSBmb3IgQ0RYPyBJZiBzbywgdGhhdCB3b3VsZCBiZSBhIGZhbnRhc3RpYyBzaG9ydGN1dCB0byB3b3JraW5nIHdpdGggYHZmaW9fY2R4YCB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCBhdmVudWUgZnVydGhlciwgaXQgY291bGQgYmUgYSByZWFsIHRpbWUgc2F2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTk5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MjYuNTIwMTM1Mjc2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI2MzQzNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ0b29scy90ZXN0aW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MjYuNjIyNzc3MjA0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM2OTY3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6XG5cbioqQ2hlY2tpbmcgZm9yIGEgTW9jayBpbiBgZHJpdmVycy9jZHgvYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBzZWUgaWYgd2UndmUgZ290IGEgbW9jayBpbXBsZW1lbnRhdGlvbiBhbnl3aGVyZSBpbiB0aGUgYGRyaXZlcnMvY2R4L2AgZGlyZWN0b3J5LiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGRyaXZlcnMg4oCTIG1vY2tzIGFyZSAqaW5jcmVkaWJseSogdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBpc29sYXRpb24sIHdoZXRoZXIgd2UncmUgdGFsa2luZyB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgZXZlbiBqdXN0IGRlYnVnZ2luZy4gVGhleSBsZXQgdXMgY29udHJvbCB0aGUgZW52aXJvbm1lbnQsIHNpbXVsYXRlIGhhcmR3YXJlLCBhbmQgdmVyaWZ5IG91ciBjb2RlJ3MgaW50ZXJhY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHJlbHkgb24gdGhlIGFjdHVhbCwgc29tZXRpbWVzIHVucmVsaWFibGUsIGRyaXZlciBoYXJkd2FyZS4gUGx1cywgbW9ja3MgbWFrZSB0ZXN0aW5nIHNvIG11Y2ggZmFzdGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlLiBMZXQncyBzZWUgaWYgdGhlIHRlYW0gaGFzIGJlZW4gZm9sbG93aW5nIGJlc3QgcHJhY3RpY2VzLCBvciBpZiB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkLiBJIGtub3cgKkknZCogcHJlZmVyIGEgZ29vZCBtb2NrIHRvIGtlZXAgdGhpbmdzIG1vdmluZy4gVGltZSB0byBkaXZlIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUwNSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjMxLjA1NjQ3Njk0MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjMxMTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jZHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzozMS4xMDE3NTI4MjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4NTM5MzkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIGZvciBNb2NrIGBjZHhgIGluIERyaXZlcnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGlmIHdlJ3ZlIGdvdCBhbnkgbW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgYGNkeGAgbHVya2luZyBpbiB0aGUgYGRyaXZlcnMvYCBkaXJlY3RvcnkuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlIGJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgY2hhbmdlcywganVzdCB0byBlbnN1cmUgdGhhdCBJJ20gbm90IG92ZXJsb29raW5nIGEgdGVzdCBzZXR1cCBvciBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRvIG1ha2UgdXBkYXRlcyB0byB0aG9zZSB0b28sIG9yIHdoZXRoZXIgdGhleSdyZSBldmVuIHJlbGV2YW50IHRvIHdoYXQgSSdtIGRvaW5nLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4ndCBhZmZvcmQgdG8gYnJlYWsgZXhpc3RpbmcgbW9ja2luZyBpbXBsZW1lbnRhdGlvbnMuIFRoYXQgd291bGQgY2F1c2UgdW50b2xkIGlzc3Vlcy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBjbGVhci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzozNS4xODcxNTE3MzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MDc1ODUxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNTQ2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL0tjb25maWc9MjUwPXNvdXJjZSBcXFwiZHJpdmVycy9odGUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL0tjb25maWctMjUxLVxcbmRyaXZlcnMvS2NvbmZpZzoyNTI6c291cmNlIFxcXCJkcml2ZXJzL2NkeC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvS2NvbmZpZy0yNTMtXFxuLS1cXG5kcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVxcdFxcdCs9IGFjY2VsL1xcbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVxcdFxcdCs9IGNkeC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcXHRcXHQrPSBkcGxsL1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZz04PWNvbmZpZyBDRFhfQlVTXFxuLS1cXG5kcml2ZXJzL2NkeC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6MTk6c291cmNlIFxcXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL2NkeC9NYWtlZmlsZT04PWNjZmxhZ3MteSArPSAtRERFRkFVTFRfU1lNQk9MX05BTUVTUEFDRT0nXFxcIkNEWF9CVVNcXFwiJ1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTktXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0NEWF9CVVMpICs9IGNkeC5vIGNvbnRyb2xsZXIvXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU9MTI9aWZkZWYgQ09ORklHX0dFTkVSSUNfTVNJX0lSUVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHhfbXNpLm9cXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb21tdS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlYnVnZnMuaFxcdTAwM2VcXG5kcml2ZXJzL2NkeC9jZHguYzo3MjojaW5jbHVkZSBcXFwiY2R4LmhcXFwiXFxuZHJpdmVycy9jZHgvY2R4LmMtNzMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgwLS8qIExvY2sgdG8gcHJvdGVjdCBjb250cm9sbGVyIG9wcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmM6ODI6LyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MzpzdGF0aWMgc3RydWN0IGRlbnRyeSAqY2R4X2RlYnVnZnNfZGlyO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg1OnN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OC1cXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo5MDogKiBjZHhfZGV2X3Jlc2V0IC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTQtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo5NzpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZyA9IHswfTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAxLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEwMzpcXHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXFxuZHJpdmVycy9jZHgvY2R4LmMtMTA4LVxcdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTExLVxcdGlmIChyZXQpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTEyOlxcdFxcdGRldl9lcnIoZGV2LCBcXFwiY2R4IGRldmljZSByZXNldCBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExMy1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTQtXFx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSByZXNldCBpcyBjb21wbGV0ZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjExNjpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTExOS19XFxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEyMS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMjItLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMi17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlxcdHJldHVybiBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTM0LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNi0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxMzc6ICogY2R4X3VucmVnaXN0ZXJfZGV2aWNlIC0gVW5yZWdpc3RlciBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQwLSAqXFx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQxOiAqXFx0ICB0aGUgcGFzc2VkIGZ1bmN0aW9uIChjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGhhdmUgdGhpc1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlxcdCAgYXMgYW4gYXJndW1lbnQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ2OnN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDctXFx0XFx0XFx0XFx0IHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNTI6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cykge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MzpcXHRcXHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NDpcXHRcXHRpZiAoY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTU1OlxcdFxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NzpcXHRcXHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1ODpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNjEtXFx0LypcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjI6XFx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlxcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHdpdGhpbiBwdXRfZGV2aWNlKCkuXFxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVxcdCAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NTpcXHRkZXZpY2VfZGVsKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NjpcXHRwdXRfZGV2aWNlKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE3MzpcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE3NDpcXHRidXNfZm9yX2VhY2hfZGV2KGJ1cywgTlVMTCwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTc3LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE3OS0gKlxcdFxcdFxcdCAgQ0RYIGRldmljZSBpZCBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE5OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDA6ICogY2R4X21hdGNoX2lkIC0gU2VlIGlmIGEgQ0RYIGRldmljZSBtYXRjaGVzIGEgZ2l2ZW4gY2R4X2lkIHRhYmxlXFxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXFxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cXHRcXHR3aGlsZSAoaWRzLVxcdTAwM2V2ZW5kb3IgfHwgaWRzLVxcdTAwM2VkZXZpY2UpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTU6XFx0XFx0XFx0aWYgKGNkeF9tYXRjaF9vbmVfZGV2aWNlKGlkcywgZGV2KSlcXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXFx0XFx0XFx0XFx0cmV0dXJuIGlkcztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjI1OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjMwLVxcdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSB0cnVlO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMTpcXHRpZiAoY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSxcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgY2R4X2Rldi1cXHUwMDNlZGV2X251bSwgXFx1MDAyNmRldl9jb25maWcpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIzNi19XFxuZHJpdmVycy9jZHgvY2R4LmM6MjM3OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9zZXRfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MjM5OmludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yNDMtXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjQ2LVxcdGRldl9jb25maWcuYnVzX21hc3Rlcl9lbmFibGUgPSBmYWxzZTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDc6XFx0aWYgKGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0ODpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0sXFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0sIFxcdTAwMjZkZXZfY29uZmlnKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTAtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfY2xlYXJfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTQtXFxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NjogKiBjZHhfYnVzX21hdGNoIC0gZGV2aWNlIHRvIGRyaXZlciBtYXRjaGluZyBjYWxsYmFja1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NzogKiBAZGV2OiB0aGUgY2R4IGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuZHJpdmVycy9jZHgvY2R4LmM6MjU4OiAqIEBkcnY6IHRoZSBkZXZpY2UgZHJpdmVyIHRvIHNlYXJjaCBmb3IgbWF0Y2hpbmcgY2R4IGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI1OS0gKiBzdHJ1Y3R1cmVzXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNjItICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY2OlxcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzE6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3My1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzQ6XFx0aWRzID0gY2R4X2Rydi1cXHUwMDNlbWF0Y2hfaWRfdGFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjc1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjgwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI4MTpcXHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI4Mi1cXHRpZiAoIWZvdW5kX2lkKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjk1LVxcdFxcdGlkcyA9IGZvdW5kX2lkICsgMTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XFx0XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXFx0fSB3aGlsZSAoZm91bmRfaWQpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMwMjpzdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA2OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cXHRpbnQgZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMTItXFx0ICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MzEzOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlbXNpX2RvbWFpbikge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMxNDpcXHRcXHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXFx0XFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzE4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMxOTpcXHRlcnJvciA9IGNkeF9kcnYtXFx1MDAzZXByb2JlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMyMC1cXHRpZiAoZXJyb3IpIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzE6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzMyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMzpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZW1vdmUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MzM0OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXJlbW92ZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzUtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cXG5kcml2ZXJzL2NkeC9jZHguYzozMzc6c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzIFxcdTAwMjZcXHUwMDI2IGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NDpcXHRcXHRjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlc2h1dGRvd24pXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2OlxcdFxcdGNkeF9kcnYtXFx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Ny19XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTM6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzU0OlxcdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXFx1MDAzZXJlcV9pZDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTUtXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTYtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzU3OlxcdHJldCA9IG9mX2RtYV9jb25maWd1cmVfaWQoZGV2LCBjZHgtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgMCwgXFx1MDAyNmlucHV0X2lkKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTgtXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVQUk9CRV9ERUZFUikge1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzYyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM2MzpcXHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UncmUgY2FsbGVkIGZyb20gdGhlIElPTU1VIGxheWVyICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MzY0OlxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZHJpdmVyIFxcdTAwMjZcXHUwMDI2ICFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpIHtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNjUtXFx0XFx0cmV0ID0gaW9tbXVfZGV2aWNlX3VzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3MzpzdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzc1OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NzpcXHRpZiAoIWNkeF9kcnYtXFx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzgtXFx0XFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zODEtLyogc2hvdyBjb25maWd1cmF0aW9uIGZpZWxkcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgzLXN0YXRpYyBzc2l6ZV90XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXFx1MDAzZWZpZWxkKTtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg5PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmaWVsZClcXG5kcml2ZXJzL2NkeC9jZHguYy0zOTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MjpjZHhfY29uZmlnX2F0dHIoZGV2aWNlLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTM6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV92ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk1OmNkeF9jb25maWdfYXR0cihyZXZpc2lvbiwgXFxcIjB4JTAyeFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk2OmNkeF9jb25maWdfYXR0cihjbGFzcywgXFxcIjB4JTA2eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM5OD1zdGF0aWMgc3NpemVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQxMzpcXHRcXHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MTQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQyMj1zdGF0aWMgc3NpemVfdCByZXNldF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0MjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVxcdGJvb2wgdmFsO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNTpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNjpcXHRcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcXHRcXHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXFx0ZWxzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzOTpcXHRcXHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDQwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDQ4OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XFx0cmV0dXJuIHNwcmludGYoYnVmLCBcXFwiY2R4OnYlMDRYZCUwNFhzdiUwNFhzZCUwNFhjJTA2WFxcXFxuXFxcIiwgY2R4X2Rldi1cXHUwMDNldmVuZG9yLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MTpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VkZXZpY2UsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUyOlxcdFxcdFxcdGNkeF9kZXYtXFx1MDAzZWNsYXNzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NTMtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDYwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MS1cXHRib29sIGVuYWJsZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XFx0aWYgKGVuYWJsZSA9PSBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cXHRcXHRyZXR1cm4gY291bnQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDY5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MDpcXHRpZiAoZW5hYmxlIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZW5hYmxlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MTpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2VuYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3MjpcXHRlbHNlIGlmICghZW5hYmxlIFxcdTAwMjZcXHUwMDI2IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzM6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cXHUwMDNlYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDc0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3Ny1cXHRpZiAoIXJldClcXG5kcml2ZXJzL2NkeC9jZHguYzo0Nzg6XFx0XFx0Y2R4X2Rldi1cXHUwMDNlZW5hYmxlZCA9IGVuYWJsZTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NzktXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz00ODM9c3RhdGljIHNzaXplX3QgZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDg1OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo0ODc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJXVcXFxcblxcXCIsIGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ4OC19XFxuZHJpdmVycy9jZHgvY2R4LmM9NDg5PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhlbmFibGUpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo0OTE6c3RhdGljIHVtb2RlX3QgY2R4X2Rldl9hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXFxuZHJpdmVycy9jZHgvY2R4LmMtNDkyLXtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDk0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5NS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0OTY6XFx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo0OTc6XFx0aWYgKCFjZHhfZGV2LVxcdTAwM2Vpc19idXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNDk4LVxcdFxcdHJldHVybiBhLVxcdTAwM2Vtb2RlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUwMzpzdGF0aWMgdW1vZGVfdCBjZHhfYnVzX2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcXG5kcml2ZXJzL2NkeC9jZHguYy01MDQte1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1MDY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTA3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUwODpcXHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUwOTpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUxMC1cXHRcXHRyZXR1cm4gYS1cXHUwMDNlbW9kZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUxNC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy01MTYtXFx0XFx1MDAyNmRldl9hdHRyX3JlbW92ZS5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTI3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfZGV2X2dyb3VwID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjUyOTpcXHQuYXR0cnMgPSBjZHhfZGV2X2F0dHJzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzMDpcXHQuaXNfdmlzaWJsZSA9IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTMxLX07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTMyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzMzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy01MzQtXFx0XFx1MDAyNmRldl9hdHRyX2VuYWJsZS5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTM4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjUzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjZHhfYnVzX2Rldl9ncm91cCA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDA6XFx0LmF0dHJzID0gY2R4X2J1c19kZXZfYXR0cnMsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQxOlxcdC5pc192aXNpYmxlID0gY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZSxcXG5kcml2ZXJzL2NkeC9jZHguYy01NDItfTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NDMtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpjZHhfZGV2X2dyb3Vwc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NTpcXHRcXHUwMDI2Y2R4X2Rldl9ncm91cCxcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDY6XFx0XFx1MDAyNmNkeF9idXNfZGV2X2dyb3VwLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Ny1cXHROVUxMLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU1MDpzdGF0aWMgaW50IGNkeF9kZWJ1Z19yZXNvdXJjZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2NkeC9jZHguYy01NTEte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU1MjpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTUzLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTU1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfQ0RYX0RFVl9SRVNPVVJDRVM7IGkrKykge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU1NjpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW2ldO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1Ny1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Mi19XFxuZHJpdmVycy9jZHgvY2R4LmM6NTYzOkRFRklORV9TSE9XX0FUVFJJQlVURShjZHhfZGVidWdfcmVzb3VyY2UpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU2NC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NjU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTY2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Njc6XFx0Y2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldiksIGNkeF9kZWJ1Z2ZzX2Rpcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTY4OlxcdGlmIChJU19FUlIoY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIpKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2OS1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9jZHgvY2R4LmMtNTcwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU3MTpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJyZXNvdXJjZVxcXCIsIDA0NDQsIGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyLCBjZHhfZGV2LFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU3MjpcXHRcXHRcXHQgICAgXFx1MDAyNmNkeF9kZWJ1Z19yZXNvdXJjZV9mb3BzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzMtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NTc1PXN0YXRpYyBzc2l6ZV90IHJlc2Nhbl9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU3Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTc4OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3OS1cXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU4Ny1cXG5kcml2ZXJzL2NkeC9jZHguYzo1ODg6XFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01ODktXFxuZHJpdmVycy9jZHgvY2R4LmMtNTkwLVxcdC8qIFVucmVnaXN0ZXIgYWxsIHRoZSBkZXZpY2VzIG9uIHRoZSBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo1OTE6XFx0Y2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhcXHUwMDI2Y2R4X2J1c190eXBlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01OTItXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01OTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTk5OlxcdFxcdGNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MDA6XFx0XFx0aWYgKGNkeCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlc2NhbilcXG5kcml2ZXJzL2NkeC9jZHguYzo2MDE6XFx0XFx0XFx0Y2R4LVxcdTAwM2VvcHMtXFx1MDAzZXNjYW4oY2R4KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MDItXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz02MDg9c3RhdGljIEJVU19BVFRSX1dPKHJlc2Nhbik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjA5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxMDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19hdHRyc1tdID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYxMS1cXHRcXHUwMDI2YnVzX2F0dHJfcmVzY2FuLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02MTMtfTtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MTQ6QVRUUklCVVRFX0dST1VQUyhjZHhfYnVzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjE2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBjZHhfYnVzX3R5cGUgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NjE3OlxcdC5uYW1lXFx0XFx0PSBcXFwiY2R4XFxcIixcXG5kcml2ZXJzL2NkeC9jZHguYy02MTgtXFx0LmRyaXZlcl9vdmVycmlkZSA9IHRydWUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjE5OlxcdC5tYXRjaFxcdFxcdD0gY2R4X2J1c19tYXRjaCxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjA6XFx0LnByb2JlXFx0XFx0PSBjZHhfcHJvYmUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIxOlxcdC5yZW1vdmVcXHRcXHQ9IGNkeF9yZW1vdmUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIyOlxcdC5zaHV0ZG93blxcdD0gY2R4X3NodXRkb3duLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMzpcXHQuZG1hX2NvbmZpZ3VyZVxcdD0gY2R4X2RtYV9jb25maWd1cmUsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjI0OlxcdC5kbWFfY2xlYW51cFxcdD0gY2R4X2RtYV9jbGVhbnVwLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNTpcXHQuYnVzX2dyb3Vwc1xcdD0gY2R4X2J1c19ncm91cHMsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjI2OlxcdC5kZXZfZ3JvdXBzXFx0PSBjZHhfZGV2X2dyb3VwcyxcXG5kcml2ZXJzL2NkeC9jZHguYy02MjctfTtcXG5kcml2ZXJzL2NkeC9jZHguYzo2Mjg6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MjktXFxuZHJpdmVycy9jZHgvY2R4LmM6NjMwOmludCBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVxcdFxcdFxcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02MzQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjM1OlxcdGNkeF9kcml2ZXItXFx1MDAzZWRyaXZlci5vd25lciA9IG93bmVyO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNjpcXHRjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIuYnVzID0gXFx1MDAyNmNkeF9idXNfdHlwZTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MzctXFxuZHJpdmVycy9jZHgvY2R4LmM6NjM4OlxcdGVycm9yID0gZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYzOS1cXHRpZiAoZXJyb3IpIHtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDAtXFx0XFx0cHJfZXJyKFxcXCJkcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yICVzOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL2NkeC9jZHguYzo2NDE6XFx0XFx0ICAgICAgIGNkeF9kcml2ZXItXFx1MDAzZWRyaXZlci5uYW1lLCBlcnJvcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQyLVxcdFxcdHJldHVybiBlcnJvcjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Ni19XFxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY1MTpcXHRkcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY1NC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy02NTYte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY1NzpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU5OlxcdGtmcmVlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MC19XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYxLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGNkeF9waHlzX3ZtX29wcyA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02NjMtI2lmZGVmIENPTkZJR19IQVZFX0lPUkVNQVBfUFJPVFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjY4LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjY2OTogKiBjZHhfbW1hcF9yZXNvdXJjZSAtIG1hcCBhIENEWCByZXNvdXJjZSBpbnRvIHVzZXIgbWVtb3J5IHNwYWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtNjcwLSAqIEBmcDogRmlsZSBwb2ludGVyLiBOb3QgdXNlZCBpbiB0aGlzIGZ1bmN0aW9uLCBidXQgcmVxdWlyZWQgd2hlcmVcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3OS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo2ODA6c3RhdGljIGludCBjZHhfbW1hcF9yZXNvdXJjZShzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4MS1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjgzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2ODQ6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGtvYmpfdG9fZGV2KGtvYmopKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6MzUuOTI3OTE3Mzg0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mzg3MTUzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ0RYIEJ1cyBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgQ0RYIGJ1c+KApiByaWdodCwgdGhhdCdzIHNwZWNpZmljIHRvIHRob3NlIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgKGB4bG54LHZlcnNhbC1uZXQtY2R4YCkuIE5vdCBhIHdpZGVseS11c2VkIHN0YW5kYXJkLCBkZWZpbml0ZWx5IGhhcmR3YXJlLWRlcGVuZGVudC4gQW5kIHRoZSBwcm9ibGVtIGlzLCBpdCByZXF1aXJlcyAqYWN0dWFsKiBoYXJkd2FyZSBvciBhIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHJlbW90ZXByb2MgdG8gZXZlbiBzY2FuIGZvciBkZXZpY2VzLiBObyBtb2NrIGRyaXZlciBpbiB0aGUga2VybmVsLCB3aGljaCBpcyBhIHJlYWwgbGltaXRhdGlvbi5cblxuU28sIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhhdCBgdmZpb19jZHhfbW1hcGAgcGF0aCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIHdpdGhvdXQgc29tZSBkZWRpY2F0ZWQgaGFyZHdhcmUgZW11bGF0aW9uLiBBbmQgUUVNVSwgYXMgZmFyIGFzIEkga25vdywgZG9lc24ndCBoYXZlIHN0YW5kYXJkIHN1cHBvcnQgZm9yIGVtdWxhdGluZyB0aGUgQ0RYIGJ1cy4gSXQncyBub3QgbGlrZSB0aGUgbWFjODAyMTFfaHdzaW0gd2hlcmUgdGhlcmUncyBhIGdlbmVyaWMgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZS5cblxuV2FpdCBhIHNlY29uZOKApiBjYW4gSSB0cmljayB0aGUgc3lzdGVtPyBDYW4gSSBjcmVhdGUgYSBcImZha2VcIiBDRFggZGV2aWNlIHRocm91Z2ggc3lzZnMgb3IgY29uZmlnZnM/IFBlcmhhcHMgSSBjb3VsZCBjcmFmdCBzb21ldGhpbmcgdG8gc2ltdWxhdGUgaXRzIHByZXNlbmNlLCBldmVuIGlmIGl0J3Mgbm90IHRydWx5IGNvbm5lY3RlZCB0byBhbnkgcGh5c2ljYWwgaGFyZHdhcmUuIFRoYXQgd291bGQgYmUgYSB3YXkgdG8gYnlwYXNzIHRoaXMgcmVxdWlyZW1lbnQgZm9yIGhhcmR3YXJlL3JlbW90ZXByb2MuIExldCBtZSBnbyBjaGVjayBpZiB0aGVyZSdzIGFueSB3YXkgdG8gY3JlYXRlIHRoYXQgQ0RYIGRldmljZSBmcm9tIHVzZXJzcGFjZS4gVGhhdCBtaWdodCBiZSBhIHZpYWJsZSB3b3JrYXJvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzo0MS40NjY2MzU4NjdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTI2NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kZXZpY2VfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jZHguYz03Mjc9c3RhdGljIGludCBjZHhfY3JlYXRlX3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzU1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjc1NjppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy04NDEtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXFxcIkNEWF9CVVNfQ09OVFJPTExFUlxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oPTYyPXZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC02NC0vKipcXG5kcml2ZXJzL2NkeC9jZHguaDo2NTogKiBjZHhfZGV2aWNlX2FkZCAtIEFkZCBhIENEWCBkZXZpY2UuIFRoaXMgZnVuY3Rpb24gYWRkcyBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguaC02Ni0gKlxcdFxcdG9uIHRoZSBDRFggYnVzIGFzIHBlciB0aGUgZGV2aWNlIHBhcmFtZXRlcnMgcHJvdmlkZWRcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTcyLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjczOmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpO1xcbmRyaXZlcnMvY2R4L2NkeC5oLTc0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTkzPXN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDEtXFx0XFx0XFx0LyogQWRkIHRoZSBkZXZpY2UgdG8gdGhlIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MTQyOlxcdFxcdFxcdHJldCA9IGNkeF9kZXZpY2VfYWRkKFxcdTAwMjZkZXZfcGFyYW1zKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQzLVxcdFxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDk6MDc6NDEuNTExNTY1NjMxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwODQwODQ0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQ0RYIERldmljZSBBZGRpdGlvbioqXG5cbk9rYXksIHNvIGhlcmUncyB3aGF0IEkndmUgZ290IGJvdW5jaW5nIGFyb3VuZCBpbiBteSBoZWFkIGFib3V0IHRoaXMgYGNkeF9kZXZpY2VfYWRkYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHRpZ2h0bHkgY291cGxlZDsgZnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlIG9ubHkgcGxhY2UgaXQncyBldmVyIGNhbGxlZCBpcyBkaXJlY3RseSB3aXRoaW4gYGNkeF9zY2FuX2RldmljZXNgIHdoaWNoIHJlc2lkZXMgaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIG1lYW5pbmcgbXkgaW52ZXN0aWdhdGlvbiBjYW4gYmUgcHJldHR5IGZvY3VzZWQuIE5vdywgd2hlbiBpcyBgY2R4X3NjYW5fZGV2aWNlc2AgdHJpZ2dlcmVkPyBJdCBoYXBwZW5zIHdoZW4gdGhlIENEWCBjb250cm9sbGVyIGl0c2VsZiBpcyBwcm9iZWQg4oCTIHdoaWNoIG1ha2VzIHNlbnNlIOKAkyBvciB3aGVuIGEgcmVzY2FubmluZyBvcGVyYXRpb24gaXMgaW5pdGlhdGVkLiBUaGUgQ0RYIGNvbnRyb2xsZXIsIHJlbWVtYmVyLCBpcyBzZXQgdXAgYXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHNwZWNpZmljYWxseSB0aGUgYHhsbnhfY2R4X3Byb2JlYCB0eXBlLlxuXG5UaGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXM6IGNhbiBhIHVzZXIsIGZvciBzb21lIHJlYXNvbiwgY3JlYXRlICphbm90aGVyKiBwbGF0Zm9ybSBkZXZpY2UgZm9yIGB4bG54X2NkeF9wcm9iZWA/IE15IGluaXRpYWwgdGhvdWdodCBpcyBtYXliZSwgcG90ZW50aWFsbHksIHRocm91Z2ggYSBkZXZpY2UgdHJlZSBvdmVybGF5LCByaWdodD8gVGhhdCBzZWVtcyBwbGF1c2libGUuIEhvd2V2ZXIsIGV2ZW4gaWYgdGhleSBjb3VsZCwgdGhlIHJlYWwgYm90dGxlbmVjaywgdGhlIHJlYWwgZGVwZW5kZW5jeSwgYXBwZWFycyB0byBiZSB0aGUgTUNESSAoTWFuYWdlbWVudCBDb250cm9sbGVyIERyaXZlciBJbnRlcmZhY2UpIG92ZXIgUlBNU0cuIElmIHRoZXJlJ3Mgbm8gd29ya2luZyBSUE1TRyBlbmRwb2ludCB0aGF0J3MgYWN0dWFsbHkgcmVzcG9uZGluZyB0byB0aG9zZSBNQ0RJIGNvbW1hbmRzLCBgY2R4X3NjYW5fZGV2aWNlc2AgaXMgZ29pbmcgdG8gdWx0aW1hdGVseSBmYWlsIGF0IGZpbmRpbmcgYW55IGRldmljZXMuIEl0IGRvZXNuJ3QgbWF0dGVyIGhvdyBtYW55IHBsYXRmb3JtIGRldmljZXMgd2UgbWlnaHQgYmUgYWJsZSB0byBjb25qdXJlIHVwLiBJdOKAmXMgYWxsIGFib3V0IHRoZSB1bmRlcmx5aW5nIGNvbW11bmljYXRpb24uXG5cblNvLCB3aGVyZSBkbyBJIGdvIGZyb20gaGVyZT8gR2l2ZW4gdGhlIGNlbnRyYWxpdHkgb2YgYGNkeF9zY2FuX2RldmljZXNgLCBpdCBzZWVtcyBsaWtlIGNoZWNraW5nIGl0cyBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCB0aGUgZGV0YWlscyBvZiB0aGlzIHByb2Nlc3MsIHJpZ2h0PyBUaGUgZGV0YWlscyBhcmUgaW4gdGhlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gZGlnIGluIGFuZCBzZWUgZXhhY3RseSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFJQTVNHIGxheWVyIGFuZCBNQ0RJLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk2MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzo0Ny41OTU2NTIxMzVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkzLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkzOlxcdHN0YXRpYyBpbnQgY2R4X3NjYW5fZGV2aWNlcyhzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXFx1MDAzZXByaXY7XFxuICA5NjpcXHRcXHR1OCBidXNfbnVtLCBkZXZfbnVtLCBudW1fY2R4X2J1cztcXG4gIDk3OlxcdFxcdGludCByZXQ7XFxuICA5ODpcXHRcXG4gIDk5OlxcdFxcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXFxuIDEwMDpcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcXG4gMTAxOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDEwMjpcXHRcXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LFxcbiAxMDM6XFx0XFx0XFx0XFx0XFxcIkdldCBudW1iZXIgb2YgQ0RYIGJ1c2VzIGZhaWxlZDogJWRcXFxcblxcXCIsIHJldCk7XFxuIDEwNDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMDU6XFx0XFx0fVxcbiAxMDY6XFx0XFx0bnVtX2NkeF9idXMgPSAodTgpcmV0O1xcbiAxMDc6XFx0XFxuIDEwODpcXHRcXHRmb3IgKGJ1c19udW0gPSAwOyBidXNfbnVtIFxcdTAwM2MgbnVtX2NkeF9idXM7IGJ1c19udW0rKykge1xcbiAxMDk6XFx0XFx0XFx0c3RydWN0IGRldmljZSAqYnVzX2RldjtcXG4gMTEwOlxcdFxcdFxcdHU4IG51bV9jZHhfZGV2O1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHRcXHQvKiBBZGQgdGhlIGJ1cyBvbiBjZHggc3Vic3lzdGVtICovXFxuIDExMzpcXHRcXHRcXHRidXNfZGV2ID0gY2R4X2J1c19hZGQoY2R4LCBidXNfbnVtKTtcXG4gMTE0OlxcdFxcdFxcdGlmICghYnVzX2RldilcXG4gMTE1OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRcXHQvKiBNQ0RJIEZXIFJlYWQ6IEZldGNoIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBwcmVzZW50ICovXFxuIDExODpcXHRcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2RldnMoY2R4X21jZGksIGJ1c19udW0pO1xcbiAxMTk6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gMTIwOlxcdFxcdFxcdFxcdGRldl9lcnIoY2R4LVxcdTAwM2VkZXYsXFxuIDEyMTpcXHRcXHRcXHRcXHRcXHRcXFwiR2V0IGRldmljZXMgb24gQ0RYIGJ1cyAlZCBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBidXNfbnVtLCByZXQpO1xcbiAxMjI6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDEyMzpcXHRcXHRcXHR9XFxuIDEyNDpcXHRcXHRcXHRudW1fY2R4X2RldiA9ICh1OClyZXQ7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdFxcdGZvciAoZGV2X251bSA9IDA7IGRldl9udW0gXFx1MDAzYyBudW1fY2R4X2RldjsgZGV2X251bSsrKSB7XFxuIDEyNzpcXHRcXHRcXHRcXHRzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgZGV2X3BhcmFtcztcXG4gMTI4OlxcdFxcbiAxMjk6XFx0XFx0XFx0XFx0LyogTUNESSBGVzogR2V0IHRoZSBkZXZpY2UgY29uZmlnICovXFxuIDEzMDpcXHRcXHRcXHRcXHRyZXQgPSBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhjZHhfbWNkaSwgYnVzX251bSxcXG4gMTMxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGRldl9udW0sIFxcdTAwMjZkZXZfcGFyYW1zKTtcXG4gMTMyOlxcdFxcdFxcdFxcdGlmIChyZXQpIHtcXG4gMTMzOlxcdFxcdFxcdFxcdFxcdGRldl9lcnIoY2R4LVxcdTAwM2VkZXYsXFxuIDEzNDpcXHRcXHRcXHRcXHRcXHRcXHRcXFwiQ0RYIGRldmljZSBjb25maWcgZ2V0IGZhaWxlZCBmb3IgJWQoYnVzKTolZChkZXYpLCAlZFxcXFxuXFxcIixcXG4gMTM1OlxcdFxcdFxcdFxcdFxcdFxcdGJ1c19udW0sIGRldl9udW0sIHJldCk7XFxuIDEzNjpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMTM3OlxcdFxcdFxcdFxcdH1cXG4gMTM4OlxcdFxcdFxcdFxcdGRldl9wYXJhbXMuY2R4ID0gY2R4O1xcbiAxMzk6XFx0XFx0XFx0XFx0ZGV2X3BhcmFtcy5wYXJlbnQgPSBidXNfZGV2O1xcbiAxNDA6XFx0XFxuIDE0MTpcXHRcXHRcXHRcXHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xcbiAxNDI6XFx0XFx0XFx0XFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXFx1MDAyNmRldl9wYXJhbXMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowNzo0Ny41OTU3MzQzMjVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwMjkzMzEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHZmaW8tY2R4YCBEcml2ZXIgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgdmZpby1jZHhgIGRyaXZlciwgYW5kIEkndmUgZ290IGEgcHJvYmxlbS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiB0aGVzZSBNQ0RJIGZpcm13YXJlIHJlYWRzLCBzcGVjaWZpY2FsbHkgYGNkeF9tY2RpX2dldF9udW1fYnVzZXNgLCBgY2R4X21jZGlfZ2V0X251bV9kZXZzYCwgYW5kIGBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZ2AuIFRoZXNlIGZ1bmN0aW9ucyBkZXBlbmQgb24gc2VuZGluZyBtZXNzYWdlcyBvdmVyIFJQTVNHIHRvIHRoZSBmaXJtd2FyZS4gVGhlIGlzc3VlIGlzLCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHdpdGhvdXQgYSBtb2NrIFJQTVNHIGVuZHBvaW50IHRoYXQgKmFjdHMqIGxpa2UgdGhlIGZpcm13YXJlLCB0aG9zZSBgY2R4X21jZGlfKmAgY2FsbHMgYXJlIGdvaW5nIHRvIGZhaWwuIFRoZXknbGwgZWl0aGVyIHRpbWVvdXQgb3IgcmV0dXJuIGVycm9ycy5cblxuQW5kIGlmIHRob3NlIGNhbGxzIGZhaWwsIGJvb20sIG5vIENEWCBkZXZpY2VzIGFyZSBjcmVhdGVkLiBJZiB0aGVyZSBhcmUgbm8gQ0RYIGRldmljZXMsIHRoZW4gdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLCBuYXR1cmFsbHksIGNhbid0IGJlIGJvdW5kIHRvIGFueXRoaW5nLiBUaGF0IG1lYW5zIGB2ZmlvX2NkeF9tbWFwYCDigJMgdGhlIGZ1bmN0aW9uIEknbSByZWFsbHkgaW50ZXJlc3RlZCBpbiDigJMgaXMgbmV2ZXIgZ29pbmcgdG8gYmUgcmVhY2hlZC5cblxuVGhpcyBzZWVtcyB0byBmYWxsIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeSB3ZSd2ZSBiZWVuIHRhbGtpbmcgYWJvdXQ6IGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gVGhpbmsgYWJvdXQgdGhpbmdzIGxpa2UgVVNCIGdhZGdldCBzZXR1cHMgb3IgYG1hYzgwMjExX2h3c2ltYCDigJMgeW91IGNhbiBlbXVsYXRlIHRoZSBoYXJkd2FyZSwgYnV0IGlmIHRoZSB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcyBhcmVuJ3QgdGhlcmUsIHlvdSdyZSBzdHVjay5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmTigKYgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IGB2ZmlvX2NkeF9tbWFwYCBjb3VsZCBiZSBjYWxsZWQ/IExldCBtZSByZXRyYWNlIG15IHN0ZXBzLi4uIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIGRlZmluZWQgcmlnaHQgdGhlcmUgaW4gYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIGl0J3MgYXNzaWduZWQgdG8gYHZmaW9fY2R4X29wcy5tbWFwYC4gQWgsIHllcywgcmlnaHQuIGB2ZmlvX2NkeF9vcHNgIGlzIHVzZWQgaW4gYHZmaW9fY2R4X3Byb2JlYC4gU28gaXQgYXBwZWFycyB0aGVyZSBhcmUgbm8gb3RoZXIgb2J2aW91cyBtZXRob2RzIGZvciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG5cbkFscmlnaHQsIGxvb2tzIGxpa2UgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHNvbGlkLiBMZXQncyBzZWUgaWYgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSBicm9hZGVyIHZpcnR1YWxpemF0aW9uIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQwOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjU1LjM5ODY2OTgyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2MTQ0MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fY2R4X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9jZHgvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zMDktXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzEwOnN0YXRpYyBpbnQgdmZpb19jZHhfcHJvYmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzExLXtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM1Mj1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM1MzpcXHQucHJvYmVcXHRcXHQ9IHZmaW9fY2R4X3Byb2JlLFxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1NC1cXHQucmVtb3ZlXFx0XFx0PSB2ZmlvX2NkeF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA3OjU2LjE2NDgxODg3OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODI4MTQ3NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gVkZJTy1DRFggUHJvYmUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYHZmaW9fY2R4X3Byb2JlYC4gVGhpcyBnZXRzIGNhbGxlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgZ2V0cyBib3VuZCB0byB0aGUgYHZmaW9fY2R4X2RyaXZlcmAuIFRoZSB0aGluZyBpcywgd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGNyZWF0aW5nIGEgYGNkeF9kZXZpY2VgIGlzIGltcG9zc2libGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuIFdlIGNhbid0IGFjdHVhbGx5IHByb2JlIHRoZSBkcml2ZXIgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcywgYW5kIHRoYXQgbWVhbnMgd2UncmUgbmV2ZXIgaGl0dGluZyB0aGUgbW1hcCBmdW5jdGlvbiwgZWl0aGVyLiBHaXZlbiB0aGlzLCBpdCBsb29rcyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgd2l0aGluIHN5emthbGxlci9RRU1VJ3MgY29uZmlndXJhdGlvbi4gSXQncyBhIGRlYWQgZW5kLCBwbGFpbiBhbmQgc2ltcGxlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IGV4aXN0aW5nIG1vY2tzIGZvciBNQ0RJIG9yIENEWCBpbiB0aGUga2VybmVsLCBqdXN0IGluIGNhc2UgdGhlcmUncyBzb21lIG9ic2N1cmUgY29ybmVyIGNhc2UgSSdtIG1pc3NpbmcsIGJ1dCBJJ20gcHJldHR5IGNvbmZpZGVudCBpbiBteSBpbml0aWFsIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDE4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA4OjA0Ljk5Mjk2ODg4NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczOTcyNzQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfbWNkaV9nZXRfbnVtX2J1c2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk5LVxcdC8qIE1DREkgRlcgUmVhZDogRmV0Y2ggdGhlIG51bWJlciBvZiBDRFggYnVzZXMgb24gdGhpcyBjb250cm9sbGVyICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjEwMDpcXHRyZXQgPSBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKGNkeF9tY2RpKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTAxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA6aW50IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoc3RydWN0IGNkeF9tY2RpICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuaC0xNS0vKipcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmg6MTY6ICogY2R4X21jZGlfZ2V0X251bV9idXNlcyAtIEdldCB0aGUgdG90YWwgbnVtYmVyIG9mIGJ1c2VzIG9uXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oLTE3LSAqXFx0dGhlIGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmgtMjItICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5oOjIzOmludCBjZHhfbWNkaV9nZXRfbnVtX2J1c2VzKHN0cnVjdCBjZHhfbWNkaSAqY2R4KTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmgtMjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA4OjA2LjczMjcwMjM5N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDQxMDM0MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQncyBwcmV0dHkgY2xlYXI6IG5vIG1vY2sgaXMgZ29pbmcgdG8gY3V0IGl0IGhlcmUuIFRoaXMgd2hvbGUgdGhpbmcgaGluZ2VzIG9uIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGgsIGluIHBhcnRpY3VsYXIsIHJlbGllcyBvbiB0aGUgQ0RYIGJ1cywgd2hpY2gsIGFzIEkgcmVjYWxsLCBuZWVkcyBhIHZlcnkgcGFydGljdWxhciBzZXR1cCDigJMgTUNESSBjb21tdW5pY2F0aW9uIG92ZXIgUlBNU0csIGxlYWRpbmcgdG8gYW4gUjUgY29yZS4gQW5kIGZyYW5rbHksIHRoaXMgc2V0dXAgaXNu4oCZdCBzb21ldGhpbmcgUUVNVSwgb3IgYW55IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LCBlbXVsYXRlcy5cblxuVGhlcmVmb3JlLCBmcm9tIGEgcHJhY3RpY2FsIHBlcnNwZWN0aXZlLCBpdCdzIGEgZGVhZCBlbmQuIEZ1enppbmcgdGhpcyBwYXJ0aWN1bGFyIGNoYW5nZSB3b3VsZCBiZSBhbiBleGVyY2lzZSBpbiBmdXRpbGl0eS4gSXQgc2ltcGx5IHdvbid0IGJlIHJlYWNoYWJsZS4gSSdtIGdvaW5nIHRvIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlbiwgSSdsbCBwcm92aWRlIGEgY29uY2lzZSBhbmQgdGVjaG5pY2FsbHkgc291bmQgZXhwbGFuYXRpb24uIEknbGwgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIGB2ZmlvX2NkeF9tbWFwYCBmdW5jdGlvbiBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIENEWCBidXMgYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmljIHRvIGEgaGFyZHdhcmUvZmlybXdhcmUgYXJyYW5nZW1lbnQgKE1DREkgdmlhIFJQTVNHIHRvIGFuIFI1IGNvcmUpIHdoaWNoIGlzbid0IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0IHNob3VsZCBiZSBjbGVhciBhbmQgbGVhdmUgbm8gcm9vbSBmb3IgbWlzdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxNzEsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA5OjA4OjE0LjE3MzczODk1NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2NkeF9tbWFwYCBpbiB0aGUgVkZJTyBDRFggZHJpdmVyLiBUaGUgQ0RYIChDb21wb3NhYmxlIERNQSBlWHByZXNzKSBidXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBidXMgZm9yIEFNRC9YaWxpbnggVmVyc2FsIGRldmljZXMgdGhhdCByZWxpZXMgb24gTUNESSBmaXJtd2FyZSBtZXNzYWdlcyBvdmVyIFJQTVNHIHRvIGEgcmVtb3RlIHByb2Nlc3NvciAoUjUgY29yZSkgdG8gc2NhbiBhbmQgZGlzY292ZXIgZGV2aWNlcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9yIG1vY2sgZHJpdmVyIGZvciB0aGUgQ0RYIGJ1cyBvciBpdHMgZmlybXdhcmUgaW4gdGhlIGtlcm5lbC4gQ29uc2VxdWVudGx5LCBpdCBpcyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhIENEWCBkZXZpY2Ugb3IgYmluZCBpdCB0byB0aGUgYHZmaW8tY2R4YCBkcml2ZXIgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fY2R4X21tYXBgIGluIHRoZSBWRklPIENEWCBkcml2ZXIuIFRoZSBDRFggKENvbXBvc2FibGUgRE1BIGVYcHJlc3MpIGJ1cyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGJ1cyBmb3IgQU1EL1hpbGlueCBWZXJzYWwgZGV2aWNlcyB0aGF0IHJlbGllcyBvbiBNQ0RJIGZpcm13YXJlIG1lc3NhZ2VzIG92ZXIgUlBNU0cgdG8gYSByZW1vdGUgcHJvY2Vzc29yIChSNSBjb3JlKSB0byBzY2FuIGFuZCBkaXNjb3ZlciBkZXZpY2VzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgbW9jayBkcml2ZXIgZm9yIHRoZSBDRFggYnVzIG9yIGl0cyBmaXJtd2FyZSBpbiB0aGUga2VybmVsLiBDb25zZXF1ZW50bHksIGl0IGlzIGltcG9zc2libGUgdG8gY3JlYXRlIGEgQ0RYIGRldmljZSBvciBiaW5kIGl0IHRvIHRoZSBgdmZpby1jZHhgIGRyaXZlciBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwOTowODoxNC4xNzM3NjcxOTVaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvlqzw[1] Phase: Running StartedAt: 2026-08-19 09:08:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvlqzw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-19 09:08:25 +0000 UTC FinishedAt: 2026-08-19 09:08:41 +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,}