Name: series-workflowctlq4 Phase: Failed StartedAt: 2026-09-14 21:32:24 +0000 UTC FinishedAt: 2026-09-14 22:26:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowctlq4[0] Phase: Succeeded StartedAt: 2026-09-14 21:32:24 +0000 UTC FinishedAt: 2026-09-14 22:25:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowctlq4[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 21:32:24 +0000 UTC FinishedAt: 2026-09-14 22:25:58 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMRUQgcG9sYXJpdHkgY29uZmlndXJhdGlvbiBzdXBwb3J0IChtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KSB0byB0aGUgTWFydmVsbCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jKSBmb3IgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcywgYW5kIHJlcGxhY2VzIGEgaGFyZGNvZGVkIGJvdW5kIHdpdGggTTg4RTEzMThTX01BWF9MRURTIGluIG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldC4gVGhlc2UgUEhZcyBhcmUgcGh5c2ljYWwgdHJhbnNjZWl2ZXIgY2hpcHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIGxlZF9wb2xhcml0eV9zZXQgaXMgb25seSBpbnZva2VkIGR1cmluZyBEZXZpY2UgVHJlZSAoT3BlbiBGaXJtd2FyZSkgcHJvYmluZyBvZiBQSFkgTEVEcyAob2ZfcGh5X2xlZCgpKSwgd2hpY2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIGFtZDY0IGZ1enppbmcgdGFyZ2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYmYzYmIyMWNlY2VmZmFhYzY0NDQ3MGE5ZmY2ZDcyODA5M2NmMjgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMjI6MjQ6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcbmluZGV4IGY3MWNmZmE4ODQwNjIuLjQzMmFkMzY0ZWZkODAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jXG5AQCAtMTQ5LDYgJiM0MzsxNDksOCBAQFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19PTlx0XHQoMHg5KVxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19ISV9aXHRcdCgweGEpXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9GVU5DX0JMSU5LXHRcdCgweGIpXG4mIzQzOyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MXHRcdDB4MTFcbiYjNDM7I2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xfQUNUX0hJR0goaWR4KVx0KDEgXHUwMDNjXHUwMDNjIDIgKiAoaWR4KSlcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUlx0XHQweDEyXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9UQ1JfRk9SQ0VfSU5UXHRCSVQoMTUpXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9UQ1JfSU5Ubl9FTkFCTEVcdEJJVCg3KVxuQEAgLTMwNCw2ICYjNDM7MzA2LDggQEBcbiAjZGVmaW5lIE5CX0ZJQkVSX1NUQVRTXHQxXG4gI2RlZmluZSBOQl9TVEFUX01BWFx0M1xuIFxuJiM0MzsjZGVmaW5lIE04OEUxMzE4U19NQVhfTEVEU1x0M1xuJiM0MztcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWFydmVsbCBQSFkgZHJpdmVyXCYjMzQ7KTtcbiBNT0RVTEVfQVVUSE9SKFwmIzM0O0FuZHkgRmxlbWluZ1wmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbkBAIC0zNTcyLDcgJiM0MzszNTc2LDcgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4ge1xuIFx0aW50IG1vZGUsIHJlZztcbiBcbi1cdGlmIChpbmRleCBcdTAwM2UgMilcbiYjNDM7XHRpZiAoaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0cmVnID0gcGh5X3JlYWRfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcbkBAIC0zNTg1LDYgJiM0MzszNTg5LDQxIEBAIHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIFx0cmV0dXJuIG1hcnZlbGxfZ2V0X2xlZF9ydWxlcyhpbmRleCwgcnVsZXMsIG1vZGUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbiYjNDM7XHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4mIzQzO3tcbiYjNDM7XHRib29sIGZvcmNlX2FjdGl2ZV9sb3cgPSBmYWxzZSwgZm9yY2VfYWN0aXZlX2hpZ2ggPSBmYWxzZTtcbiYjNDM7XHR1MzIgbW9kZTtcbiYjNDM7XG4mIzQzO1x0aWYgKGluZGV4IFx1MDAzZT0gTTg4RTEzMThTX01BWF9MRURTKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQobW9kZSwgXHUwMDI2bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHtcbiYjNDM7XHRcdHN3aXRjaCAobW9kZSkge1xuJiM0MztcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4mIzQzO1x0XHRcdGZvcmNlX2FjdGl2ZV9sb3cgPSB0cnVlO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcbiYjNDM7XHRcdFx0Zm9yY2VfYWN0aXZlX2hpZ2ggPSB0cnVlO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdGRlZmF1bHQ6XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGZvcmNlX2FjdGl2ZV9sb3cpXG4mIzQzO1x0XHRyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuJiM0MztcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MLFxuJiM0MztcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSwgMCk7XG4mIzQzO1xuJiM0MztcdGlmIChmb3JjZV9hY3RpdmVfaGlnaClcbiYjNDM7XHRcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXG4mIzQzO1x0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsIDAsXG4mIzQzO1x0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xfQUNUX0hJR0goaW5kZXgpKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IG1hcnZlbGxfcHJpdiAqcHJpdjtcbkBAIC0zODMzLDYgJiM0MzszODcyLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xuIFx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG4mIzQzO1x0XHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXG4gXHR9LFxuIFx0e1xuIFx0XHQucGh5X2lkID0gTUFSVkVMTF9QSFlfSURfODhFMTE0NSxcbkBAIC0zOTQ3LDYgJiM0MzszOTg3LDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xuIFx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG4mIzQzO1x0XHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXG4gXHRcdC5hdHRhY2hfbWlpX3BvcnQgPSBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQsXG4gXHR9LFxuIFx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCAobTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCkgdG8gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYykgZm9yIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMsIGFuZCByZXBsYWNlcyBhIGhhcmRjb2RlZCBib3VuZCB3aXRoIE04OEUxMzE4U19NQVhfTEVEUyBpbiBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQuIFRoZXNlIFBIWXMgYXJlIHBoeXNpY2FsIHRyYW5zY2VpdmVyIGNoaXBzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBhbWQ2NCBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCBsZWRfcG9sYXJpdHlfc2V0IGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgRGV2aWNlIFRyZWUgKE9wZW4gRmlybXdhcmUpIHByb2Jpbmcgb2YgUEhZIExFRHMgKG9mX3BoeV9sZWQoKSksIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCBmdXp6aW5nIHRhcmdldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWJmM2JiMjFjZWNlZmZhYWM2NDQ0NzBhOWZmNmQ3MjgwOTNjZjI4MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDIyOjI0OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMKaW5kZXggZjcxY2ZmYTg4NDA2Mi4uNDMyYWQzNjRlZmQ4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jCkBAIC0xNDksNiAmIzQzOzE0OSw4IEBACiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfT04JCSgweDkpCiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfSElfWgkJKDB4YSkKICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19CTElOSwkJKDB4YikKJiM0MzsjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTAkJMHgxMQomIzQzOyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGlkeCkJKDEgJmx0OyZsdDsgMiAqIChpZHgpKQogI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9UQ1IJCTB4MTIKICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSX0ZPUkNFX0lOVAlCSVQoMTUpCiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9JTlRuX0VOQUJMRQlCSVQoNykKQEAgLTMwNCw2ICYjNDM7MzA2LDggQEAKICNkZWZpbmUgTkJfRklCRVJfU1RBVFMJMQogI2RlZmluZSBOQl9TVEFUX01BWAkzCiAKJiM0MzsjZGVmaW5lIE04OEUxMzE4U19NQVhfTEVEUwkzCiYjNDM7CiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtNYXJ2ZWxsIFBIWSBkcml2ZXImIzM0Oyk7CiBNT0RVTEVfQVVUSE9SKCYjMzQ7QW5keSBGbGVtaW5nJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CkBAIC0zNTcyLDcgJiM0MzszNTc2LDcgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsCiB7CiAJaW50IG1vZGUsIHJlZzsKIAotCWlmIChpbmRleCAmZ3Q7IDIpCiYjNDM7CWlmIChpbmRleCAmZ3Q7PSBNODhFMTMxOFNfTUFYX0xFRFMpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJcmVnID0gcGh5X3JlYWRfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSwKQEAgLTM1ODUsNiAmIzQzOzM1ODksNDEgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsCiAJcmV0dXJuIG1hcnZlbGxfZ2V0X2xlZF9ydWxlcyhpbmRleCwgcnVsZXMsIG1vZGUpOwogfQogCiYjNDM7c3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKJiM0MzsJCQkJICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKQomIzQzO3sKJiM0MzsJYm9vbCBmb3JjZV9hY3RpdmVfbG93ID0gZmFsc2UsIGZvcmNlX2FjdGl2ZV9oaWdoID0gZmFsc2U7CiYjNDM7CXUzMiBtb2RlOwomIzQzOwomIzQzOwlpZiAoaW5kZXggJmd0Oz0gTTg4RTEzMThTX01BWF9MRURTKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3NldF9iaXQobW9kZSwgJmFtcDttb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkgewomIzQzOwkJc3dpdGNoIChtb2RlKSB7CiYjNDM7CQljYXNlIFBIWV9MRURfQUNUSVZFX0xPVzoKJiM0MzsJCQlmb3JjZV9hY3RpdmVfbG93ID0gdHJ1ZTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDoKJiM0MzsJCQlmb3JjZV9hY3RpdmVfaGlnaCA9IHRydWU7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQlkZWZhdWx0OgomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChmb3JjZV9hY3RpdmVfbG93KQomIzQzOwkJcmV0dXJuIHBoeV9tb2RpZnlfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSwKJiM0MzsJCQkJCU1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwKJiM0MzsJCQkJCU1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCksIDApOwomIzQzOwomIzQzOwlpZiAoZm9yY2VfYWN0aXZlX2hpZ2gpCiYjNDM7CQlyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLAomIzQzOwkJCQkJTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MLCAwLAomIzQzOwkJCQkJTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSk7CiYjNDM7CiYjNDM7CXJldHVybiAtRUlOVkFMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWFydmVsbF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBtYXJ2ZWxsX3ByaXYgKnByaXY7CkBAIC0zODMzLDYgJiM0MzszODcyLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0gewogCQkubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsCiAJCS5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsCiAJCS5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsCiYjNDM7CQkubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsCiAJfSwKIAl7CiAJCS5waHlfaWQgPSBNQVJWRUxMX1BIWV9JRF84OEUxMTQ1LApAQCAtMzk0Nyw2ICYjNDM7Mzk4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHsKIAkJLmxlZF9od19pc19zdXBwb3J0ZWQgPSBtODhlMTMxOF9sZWRfaHdfaXNfc3VwcG9ydGVkLAogCQkubGVkX2h3X2NvbnRyb2xfc2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfc2V0LAogCQkubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LAomIzQzOwkJLmxlZF9wb2xhcml0eV9zZXQgPSBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0LAogCQkuYXR0YWNoX21paV9wb3J0ID0gbTg4ZTE1MTBfYXR0YWNoX21paV9wb3J0LAogCX0sCiAJewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDU2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIE1hcnZlbGwgUEhZIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGFza2VkIHRvIGxvb2sgb3ZlciBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY2AuIEl0IHNlZW1zIHRvIGFkZCBhIGZ1bmN0aW9uLCBgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldGAsIHdpdGhpbiB0aGUgTWFydmVsbCBQSFkgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhdCB0aGUgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcyBvciBzaW1pbGFyIHZhcmlhbnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBwcmFjdGljYWxpdHkg4oCTIGNhbiBJIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5PyBDYW4gSSwgZm9yIGV4YW1wbGUsIGluc3RhbnRpYXRlIG9yIHByb2JlIHRoaXMgZHJpdmVyIGFuZCB0aGUgc3BlY2lmaWVkIFBIWXMgd2l0aGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gVGhhdCB3b3VsZCBiZSBpZGVhbC4gSSB3YW50IHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBzcGVjaWFsaXplZCBoYXJkd2FyZSB3aGVuIEkmIzM5O20gYXNzZXNzaW5nIHNvbWV0aGluZy4KCk15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGludmVzdGlnYXRlIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCBpbiBtb3JlIGRldGFpbC4gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIHJvbGU7IGlzIHRoaXMsIGFzIEkgc3VzcGVjdCwgYW4gTURJTyBQSFkgZHJpdmVyPyBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgc2NlbmFyaW8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4gSSBzaG91bGQgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGtub3duIG1ldGhvZHMgZm9yIHJlYWNoaW5nIG9yIGVtdWxhdGluZyB0aGVzZSBzcGVjaWZpYyBNYXJ2ZWxsIFBIWXMsIG9yIGF0IGxlYXN0IGlmIFBIWSBkcml2ZXJzIGluIGdlbmVyYWwgYXJlIHJlYWNoYWJsZSBvciB0ZXN0YWJsZSB2aWEgc3l6a2FsbGVyIG9yIHNpbWlsYXIgZnV6emluZyB0b29scy4gSXQgd291bGQgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lIGlmIEkgY2FuIGF1dG9tYXRlIHRoZSBwcm9jZXNzLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGF0LCB0aG91Z2gsIEkmIzM5O2xsIGRvIGEgcXVpY2sgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHJlcG9zaXRvcnkgaXRzZWxmIHRvIGdldCBhIHNlbnNlIG9mIGhvdyB0aGlzIFBIWSBpcyBnZW5lcmFsbHkgaGFuZGxlZCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBlY29zeXN0ZW0uIEEgc2VhcmNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01BUlZFTExfUEhZJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZz01ND1DT05GSUdfR0VNSU5JX0VUSEVSTkVUPXlcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZzo1NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnLTU2LUNPTkZJR19NRElPX0JJVEJBTkc9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTEzMj1DT05GSUdfVElfS0VZU1RPTkVfTkVUQ1BfRVRIU1M9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6MTMzOkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy0xMzQtQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnPTk0PUNPTkZJR19EQVZJQ09NX1BIWT15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y1X2RlZmNvbmZpZzo5NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctOTYtQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTI4OD1DT05GSUdfSUNQTFVTX1BIWT15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyODk6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI5MC1DT05GSUdfQVQ4MDNYX1BIWT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZpZz01NT1DT05GSUdfTVY2NDNYWF9FVEg9eVxuYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZpZy01Ni0jIENPTkZJR19JTlBVVF9NT1VTRURFViBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnOjU3OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnLTU4LUNPTkZJR19JTlBVVF9FVkRFVj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92NV9kZWZjb25maWc9NzM9Q09ORklHX1I4MTY5PXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnOjc0OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZy03NS1DT05GSUdfTElCRVJUQVM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnPTY1PUNPTkZJR19TRlA9eVxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWc6NjY6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnLTY3LUNPTkZJR19NV0lGSUVYPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnPTU4PUNPTkZJR19NVjY0M1hYX0VUSD15XG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnOjU5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnLTYwLSMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9MTg0PUNPTkZJR19GSVhFRF9QSFk9bVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnLTE4Ni1DT05GSUdfQVQ4MDNYX1BIWT1tXG4tLVxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZz02Nz1DT05GSUdfU1RNTUFDX0VUSD15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnOjY4OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTY5LUNPTkZJR19NSUNSRUxfUEhZPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTQ2Mj1DT05GSUdfQkNNNTQxNDBfUEhZPW1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDYzOkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ2NC1DT05GSUdfTUFSVkVMTF8xMEdfUEhZPXlcbi0tXG5hcmNoL21pY3JvYmxhemUvY29uZmlncy9tbXVfZGVmY29uZmlnPTQ2PUNPTkZJR19YSUxJTlhfTExfVEVNQUM9eVxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZzo0NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZy00OC0jIENPTkZJR19JTlBVVCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc9OTU9Q09ORklHX0JST0FEQ09NX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZzo5NjpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWctOTctIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTU4PUNPTkZJR19NQUNCPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZzo1OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTYwLUNPTkZJR19NSUNSRUxfUEhZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc9NjA9Q09ORklHX01BQ0I9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnOjYxOkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWctNjItQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTU5PUNPTkZJR19NQUNCPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnOjYwOkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZy02MS1DT05GSUdfTUlDUkVMX1BIWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZnVsb29uZzJlX2RlZmNvbmZpZz0xMTE9Q09ORklHX0xYVF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZnVsb29uZzJlX2RlZmNvbmZpZzoxMTI6Q09ORklHX01BUlZFTExfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWctMTEzLUNPTkZJR19RU0VNSV9QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc9MTU3PUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc6MTU4OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTE1OS1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZz0yMDU9Q09ORklHX0xYVF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MjA2OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0yMDctQ09ORklHX1FTRU1JX1BIWT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9MTcxPUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjE3MjpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTczLUNPTkZJR19OQVRJT05BTF9QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yODA9Q09ORklHX0xYVF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI4MTpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTI4Mi1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI4Nz1DT05GSUdfTFhUX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjI4ODpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0yODktQ09ORklHX1FTRU1JX1BIWT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTI4Nj1DT05GSUdfTFhUX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6Mjg3OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjg4LUNPTkZJR19RU0VNSV9QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTI3MT1DT05GSUdfTFhUX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzoyNzI6Q09ORklHX01BUlZFTExfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTI3My1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9MjI1PUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoyMjY6Q09ORklHX01BUlZFTExfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy0yMjctQ09ORklHX1FTRU1JX1BIWT1tXG4tLVxuYXJjaC9uaW9zMi9jb25maWdzLzEwbTUwX2RlZmNvbmZpZz00Nz1DT05GSUdfQUxURVJBX1RTRT15XG5hcmNoL25pb3MyL2NvbmZpZ3MvMTBtNTBfZGVmY29uZmlnOjQ4OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL25pb3MyL2NvbmZpZ3MvMTBtNTBfZGVmY29uZmlnLTQ5LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxuLS1cbmFyY2gvbmlvczIvY29uZmlncy8zYzEyMF9kZWZjb25maWc9NTA9Q09ORklHX0FMVEVSQV9UU0U9eVxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZzo1MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZy01Mi0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTEzOT1DT05GSUdfTFNJX0VUMTAxMUNfUEhZPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MTQwOkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTE0MS1DT05GSUdfTkFUSU9OQUxfUEhZPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWc9NDg9Q09ORklHX0xYVF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9tb3Rpb25wcm9fZGVmY29uZmlnOjQ5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWctNTAtQ09ORklHX1FTRU1JX1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZz00Mj1DT05GSUdfVUNDX0dFVEg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZzo0MzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZy00NC1DT05GSUdfUFBQPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZz0zOD1DT05GSUdfR0lBTkZBUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZzozOTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9tcGM4Mzd4X3JkYl9kZWZjb25maWctNDAtQ09ORklHX0lOUFVUX0ZGX01FTUxFU1M9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgtaHcuY29uZmlnPTU1PUNPTkZJR19JTlBVVF9GRl9NRU1MRVNTPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZy01OC0jIENPTkZJR19JTlBVVF9NT1VTRSBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZzo1OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC1ody5jb25maWctNjAtQ09ORklHX01ESU9fQlVTX01VWF9HUElPPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnPTQwPUNPTkZJR19HSUFORkFSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgva3NpODU2MF9kZWZjb25maWc6NDE6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgva3NpODU2MF9kZWZjb25maWctNDItIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvcHBhODU0OF9kZWZjb25maWc9MzM9Q09ORklHX0dJQU5GQVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZzozNDpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZy0zNS1DT05GSUdfU0VSSUFMXzgyNTA9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnPTQzPUNPTkZJR19HSUFORkFSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnOjQ0OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3NvY3JhdGVzX2RlZmNvbmZpZy00NS1DT05GSUdfSU5QVVRfRVZERVY9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc3R4X2dwM19kZWZjb25maWc9Mzk9Q09ORklHX0dJQU5GQVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZzo0MDpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZy00MS1DT05GSUdfSU5QVVRfSk9ZREVWPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZz02Mz1DT05GSUdfTFhUX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZzo2NDpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTEyeF9kZWZjb25maWctNjUtQ09ORklHX05BVElPTkFMX1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWc9NTY9Q09ORklHX0lDUExVU19QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWc6NTc6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnLTU4LUNPTkZJR19WSVRFU1NFX1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZz04ND1DT05GSUdfUEFTRU1JX01BQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjg1OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnLTg2LUNPTkZJR19JTlBVVF9KT1lERVY9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0yMjY9Q09ORklHX0JST0FEQ09NX1BIWT1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MjI3OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMjI4LUNPTkZJR19QUFA9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MTA0PUNPTkZJR19CUk9BRENPTV9QSFk9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZzoxMDU6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMTA2LUNPTkZJR19QUFA9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NDY0PUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6NDY1OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTQ2Ni1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnPTE2Mj1DT05GSUdfUEhZTElCPW1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTYzOkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTE2NC1DT05GSUdfREFWSUNPTV9QSFk9bVxuLS1cbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz02MD1DT05GSUdfUEhZTElCPXlcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZzo2MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnLTYyLUNPTkZJR19ORVRfRVRIRVJORVQ9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTY0PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzo3NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctNzgtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUREVWSUNFUz15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy03NC0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnOjc1OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnLTc2LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZzo3NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctNzgtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctNzgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjc5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctODAtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnPTU2PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctNjgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnOjY5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctNzAtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jPTE1NTE9bXY2NDN4eF9ldGhfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjItXHRpZiAoZXJyID09IC1FT1BOT1RTVVBQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jOjE1NjM6XHRcdG5ldGRldl9pbmZvKGRldiwgXCYjMzQ7VGhlIFBIWSBkb2VzIG5vdCBzdXBwb3J0IHNldF93b2wsIHdhcyBDT05GSUdfTUFSVkVMTF9QSFkgZW5hYmxlZD9cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjQtXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT03MT1vYmotJChDT05GSUdfTUFSVkVMTF8xMEdfUEhZKVx0JiM0Mzs9IG1hcnZlbGwxMGcub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19NQVJWRUxMX1BIWSlcdCYjNDM7PSBtYXJ2ZWxsLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS03My1vYmotJChDT05GSUdfTUFSVkVMTF84OFEyWFhYX1BIWSlcdCYjNDM7PSBtYXJ2ZWxsLTg4cTJ4eHgub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzk5MD1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2Nvbm5lY3RfcGh5KHZvaWQgKnVwc3RyZWFtLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk5Ni1cdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVx1MDAzZXBoeV9pZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5OTc6XHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDtEcml2ZXJzIHdoaWNoIGhhbmRsZSBrbm93biBjb21tb24gY2FzZXM6IENPTkZJR19CQ004NDg4MV9QSFksIENPTkZJR19NQVJWRUxMX1BIWVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5OTgtXHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NzYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBgbGVkX3BvbGFyaXR5X3NldGAgQ2FsbHMgd2l0aGluIHRoZSBLZXJuZWwqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgdGhlIGBsZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBvbiBhIFBIWSBkZXZpY2UuIFRpbWUgdG8gZ2V0IGRvd24gdG8gYnVzaW5lc3MuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvIGEgZGlyZWN0IHNlYXJjaCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgY29kZS4gU28sIEkmIzM5O2xsIHVzZSB0aGUgc2VhcmNoIHRvb2wgYW5kIGxvb2sgZm9yIHRoZSBmdW5jdGlvbiYjMzk7cyBuYW1lLCBgbGVkX3BvbGFyaXR5X3NldGAuIFRoYXQgc2hvdWxkIHJldmVhbCBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMga2luZCBvZiBzeXN0ZW1hdGljIGFwcHJvYWNoIGlzIHRoZSBtb3N0IGVmZmljaWVudCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIHV0aWxpemVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHNlYXJjaCByZXN1bHRzIHR1cm4gdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGVkX3BvbGFyaXR5X3NldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTQ1Mz1zdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNDc5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo0ODA6c3RhdGljIGludCBhbjg4MDFyX2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00ODEtXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2Rlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTExMjI9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFpcm9oYV9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTExNDMtXHQubGVkX2h3X2NvbnRyb2xfZ2V0XHQ9IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMTQ0Olx0LmxlZF9wb2xhcml0eV9zZXRcdD0gYW44ODAxcl9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMTQ1LX0gfTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWEuaD0yNTQ9aW50IGFxcl9waHlfbGVkX2FjdGl2ZV9sb3dfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhLmg6MjU1OmludCBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhLmgtMjU2LVx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBtb2Rlcyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2xlZHMuYz0xMjA9aW50IGFxcl9waHlfbGVkX2FjdGl2ZV9sb3dfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2xlZHMuYy0xMjYtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jOjEyNzppbnQgYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgdW5zaWduZWQgbG9uZyBtb2RlcylcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9sZWRzLmMtMTI4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTExODE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFxcl9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNDAtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyNDE6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI0Mi1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNjctXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyNjg6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI2OS1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyOTQtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyOTU6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI5Ni1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMjEtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzMjI6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMyMy1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzNTctXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzNTg6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTM1OS1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjUtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0MjY6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQyNy1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NTEtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0NTI6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ1My1cdC5pbmJhbmRfY2FwcyAgICA9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ3OC1cdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQ3OTpcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDgwLVx0LmluYmFuZF9jYXBzICAgID0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTA1LVx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTA2Olx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MDctXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTMyLVx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTMzOlx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MzQtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTU4LVx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTU5Olx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NjAtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz04MjY9c3RhdGljIGludCBhczIxeHh4X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTg0Ni1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6ODQ3OnN0YXRpYyBpbnQgYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtODQ4LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz05NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFzMjF4eHhfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTY2LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk2NzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk2OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NzgtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTc5Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTgwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk5MC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo5OTE6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05OTItXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAwMi1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDAzOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAwNC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE0LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwMTU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMjYtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAyNzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMjgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAzOC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDM5Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA0MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUwLVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwNTE6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNjItXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTA2MzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNjQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA3NC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDc1Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA3Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMDg2PXN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTQwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTQxOnN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTE0Mi1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MTE4Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg2N19kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMTUtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIxNjpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMTctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTM4Nj1zdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNDMwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjQzMTpzdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy00MzItXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz05Mzk9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODN0ZDUxMF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtOTY0LVx0LmxlZF9od19jb250cm9sX2dldCA9IGRwODN0ZDUxMF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6OTY1Olx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzdGQ1MTBfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy05NjYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz00OTA9c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNTI3LVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo1Mjg6c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTUyOS1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz01ODQ9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHh3YXlfZ3BoeVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjAwLVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjAxOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MDItXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTYxOS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IHh3YXlfZ3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjYyMDpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjIxLVx0XHQudXBkYXRlX3N0YXRzXHQ9IHh3YXlfZ3BoeV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MzgtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo2Mzk6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTY0MC1cdFx0LnVwZGF0ZV9zdGF0c1x0PSB4d2F5X2dwaHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjU3LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjU4Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NTktXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTY3NS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IHh3YXlfZ3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjY3NjpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjc3LVx0XHQudXBkYXRlX3N0YXRzXHQ9IHh3YXlfZ3BoeV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02OTMtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo2OTQ6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTY5NS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSB4d2F5X2dwaHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzExLVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzEyOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03MTMtXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTcyOS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IHh3YXlfZ3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjczMDpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzMxLVx0XHQudXBkYXRlX3N0YXRzXHQ9IHh3YXlfZ3BoeV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NDctXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo3NDg6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTc0OS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSB4d2F5X2dwaHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzY1LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzY2Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NjctXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTM1NzQ9c3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zNTkxLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozNTkyOnN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM1OTMtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYz0zNzA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM4NzQtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjM4NzU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzg3Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zOTg5LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozOTkwOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM5OTEtXHRcdC5hdHRhY2hfbWlpX3BvcnQgPSBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDMwPXN0YXRpYyBpbnQgYW43NTgxX3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ0OS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ1MDpzdGF0aWMgaW50IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0NTEtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBtb2Rlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jPTE0OTU9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG10a19zb2NwaHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTM5LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1NDA6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYW43NTgxX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTQxLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTItXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU1MzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2NC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNTY1Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYz05ODI9c3RhdGljIGludCBncHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTAyNC1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTAyNTpzdGF0aWMgaW50IGdweV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTAyNi1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYz0xMTAyPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBncHlfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTEyNC1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExMjU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExMjYtXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExNTEtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxMTUyOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMTUzLVx0XHQudXBkYXRlX3N0YXRzXHQ9IGdweV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMTc3LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTE3ODpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTE3OS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSBncHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTIwNC1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyMDU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMDYtXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMzAtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxMjMxOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMjMyLVx0XHQudXBkYXRlX3N0YXRzXHQ9IGdweV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMjU3LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTI1ODpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI1OS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSBncHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI4My1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyODQ6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyODUtXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEzMTAtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxMzExOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMzEyLVx0XHQudXBkYXRlX3N0YXRzXHQ9IGdweV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMzM2LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTMzNzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTMzOC1cdFx0LnVwZGF0ZV9zdGF0c1x0PSBncHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQyNS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0MjY6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0MjctXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NTEtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxNDUyOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xNDUzLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NzUtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxNDc2Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xNDc3LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTMzNzk9c3RhdGljIGludCBvZl9waHlfbGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE1LVx0XHQvKiBSZXR1cm4gZXJyb3IgaWYgYXNrZWQgdG8gc2V0IHBvbGFyaXR5IG1vZGVzIGJ1dCBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM0MTY6XHRcdGlmICghcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfcG9sYXJpdHlfc2V0KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE3LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE4LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDE5Olx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWxlZF9wb2xhcml0eV9zZXQocGh5ZGV2LCBpbmRleCwgbW9kZXMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDIwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz01ODE9c3RhdGljIGludCBxY2E4MDh4X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5My1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1OTQ6c3RhdGljIGludCBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5NS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY3My1cdC5sZWRfaHdfY29udHJvbF9nZXRcdD0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc0Olx0LmxlZF9wb2xhcml0eV9zZXRcdD0gcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY3NS1cdC51cGRhdGVfc3RhdHNcdFx0PSBxY2E4MDh4X3VwZGF0ZV9zdGF0cyxcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExNDg9c3RydWN0IHBoeV9kcml2ZXIge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMTUyOC1cdC8qKlxuaW5jbHVkZS9saW51eC9waHkuaDoxNTI5Olx0ICogQGxlZF9wb2xhcml0eV9zZXQ6IFNldCB0aGUgTEVEIHBvbGFyaXR5IG1vZGVzXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1MzAtXHQgKiBAZGV2OiBQSFkgZGV2aWNlIHdoaWNoIGhhcyB0aGUgTEVEXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xNTM4LVx0ICovXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1Mzk6XHRpbnQgKCpsZWRfcG9sYXJpdHlfc2V0KShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2LCBpbnQgaW5kZXgsXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1NDAtXHRcdFx0XHR1bnNpZ25lZCBsb25nIG1vZGVzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZIERldmljZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgcGh5c2ljYWwgbGF5ZXIgZGV2aWNlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBvZl9waHlfbGVkYCBwcm9wZXJ0eSBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJiMzOTttIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGZpbGUuIFRoaXMgbG9va3MgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoYXQgZmlsZSBhbmQgZ2V0IG15IGJlYXJpbmdzLiBMZXQmIzM5O3Mgc2VlLi4uIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBJIGV4cGVjdCBJIHNob3VsZCBiZSBsb29raW5nIGFyb3VuZCBsaW5lIDMzNzkuIFRoYXQgbGlrZWx5IG1hcmtzIHRoZSBzcG90IHdoZXJlIHRoZSBkZXZpY2UgdHJlZSAoRFQpIGluZm9ybWF0aW9uIGlzIHBhcnNlZCBhbmQgdGhpcyBwYXJ0aWN1bGFyIHByb3BlcnR5IGlzIGJlaW5nIGludGVycHJldGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgYG9mX3BoeV9sZWRgIGlzIGJlaW5nIHVzZWQsIHdoYXQgdGhlIGRyaXZlciBpcyBleHBlY3RpbmcgZnJvbSB0aGUgRFQgYmluZGluZywgYW5kIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIExFRCBjb250cm9sIG1lY2hhbmlzbSB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGluaXRpYWxpemF0aW9uLiBUaGlzIHNlY3Rpb24gd2lsbCBob3BlZnVsbHkgaWxsdW1pbmF0ZSBob3cgdGhlIHN5c3RlbSBjb25maWd1cmVzIExFRHMgYWNjb3JkaW5nIHRvIHRoZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM3MDpcdHtcbjMzNzE6XHRcdHN0cnVjdCBwaHlfbGVkICpwaHlsZWQsICp0bXA7XG4zMzcyOlx0XG4zMzczOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGh5bGVkLCB0bXAsIFx1MDAyNnBoeWRldi1cdTAwM2VsZWRzLCBsaXN0KSB7XG4zMzc0Olx0XHRcdGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKFx1MDAyNnBoeWxlZC1cdTAwM2VsZWRfY2Rldik7XG4zMzc1Olx0XHRcdGxpc3RfZGVsKFx1MDAyNnBoeWxlZC1cdTAwM2VsaXN0KTtcbjMzNzY6XHRcdH1cbjMzNzc6XHR9XG4zMzc4Olx0XG4zMzc5Olx0c3RhdGljIGludCBvZl9waHlfbGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4zMzgwOlx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbGVkKVxuMzM4MTpcdHtcbjMzODI6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldjtcbjMzODM6XHRcdHN0cnVjdCBsZWRfaW5pdF9kYXRhIGluaXRfZGF0YSA9IHt9O1xuMzM4NDpcdFx0c3RydWN0IGxlZF9jbGFzc2RldiAqY2RldjtcbjMzODU6XHRcdHVuc2lnbmVkIGxvbmcgbW9kZXMgPSAwO1xuMzM4NjpcdFx0c3RydWN0IHBoeV9sZWQgKnBoeWxlZDtcbjMzODc6XHRcdHUzMiBpbmRleDtcbjMzODg6XHRcdGludCBlcnI7XG4zMzg5Olx0XG4zMzkwOlx0XHRwaHlsZWQgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBoeWxlZCksIEdGUF9LRVJORUwpO1xuMzM5MTpcdFx0aWYgKCFwaHlsZWQpXG4zMzkyOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzM5MzpcdFxuMzM5NDpcdFx0Y2RldiA9IFx1MDAyNnBoeWxlZC1cdTAwM2VsZWRfY2RldjtcbjMzOTU6XHRcdHBoeWxlZC1cdTAwM2VwaHlkZXYgPSBwaHlkZXY7XG4zMzk2Olx0XG4zMzk3Olx0XHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihsZWQsIFwmIzM0O3JlZ1wmIzM0OywgXHUwMDI2aW5kZXgpO1xuMzM5ODpcdFx0aWYgKGVycilcbjMzOTk6XHRcdFx0cmV0dXJuIGVycjtcbjM0MDA6XHRcdGlmIChpbmRleCBcdTAwM2UgVThfTUFYKVxuMzQwMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjM0MDI6XHRcbjM0MDM6XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobGVkLCBcJiMzNDthY3RpdmUtaGlnaFwmIzM0OykpXG4zNDA0Olx0XHRcdHNldF9iaXQoUEhZX0xFRF9BQ1RJVkVfSElHSCwgXHUwMDI2bW9kZXMpO1xuMzQwNTpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChsZWQsIFwmIzM0O2FjdGl2ZS1sb3dcJiMzNDspKVxuMzQwNjpcdFx0XHRzZXRfYml0KFBIWV9MRURfQUNUSVZFX0xPVywgXHUwMDI2bW9kZXMpO1xuMzQwNzpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChsZWQsIFwmIzM0O2luYWN0aXZlLWhpZ2gtaW1wZWRhbmNlXCYjMzQ7KSlcbjM0MDg6XHRcdFx0c2V0X2JpdChQSFlfTEVEX0lOQUNUSVZFX0hJR0hfSU1QRURBTkNFLCBcdTAwMjZtb2Rlcyk7XG4zNDA5Olx0XG4zNDEwOlx0XHRpZiAoV0FSTl9PTihtb2RlcyBcdTAwMjYgQklUKFBIWV9MRURfQUNUSVZFX0xPVykgXHUwMDI2XHUwMDI2XG4zNDExOlx0XHRcdCAgICBtb2RlcyBcdTAwMjYgQklUKFBIWV9MRURfQUNUSVZFX0hJR0gpKSlcbjM0MTI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNDEzOlx0XG4zNDE0Olx0XHRpZiAobW9kZXMpIHtcbjM0MTU6XHRcdFx0LyogUmV0dXJuIGVycm9yIGlmIGFza2VkIHRvIHNldCBwb2xhcml0eSBtb2RlcyBidXQgbm90IHN1cHBvcnRlZCAqL1xuMzQxNjpcdFx0XHRpZiAoIXBoeWRldi1cdTAwM2VkcnYtXHUwMDNlbGVkX3BvbGFyaXR5X3NldClcbjM0MTc6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjM0MTg6XHRcbjM0MTk6XHRcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfcG9sYXJpdHlfc2V0KHBoeWRldiwgaW5kZXgsIG1vZGVzKTtcbjM0MjA6XHRcdFx0aWYgKGVycilcbjM0MjE6XHRcdFx0XHRyZXR1cm4gZXJyO1xuMzQyMjpcdFx0fVxuMzQyMzpcdFxuMzQyNDpcdFx0cGh5bGVkLVx1MDAzZWluZGV4ID0gaW5kZXg7XG4zNDI1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfYnJpZ2h0bmVzc19zZXQpXG4zNDI2Olx0XHRcdGNkZXYtXHUwMDNlYnJpZ2h0bmVzc19zZXRfYmxvY2tpbmcgPSBwaHlfbGVkX3NldF9icmlnaHRuZXNzO1xuMzQyNzpcdFx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlbGVkX2JsaW5rX3NldClcbjM0Mjg6XHRcdFx0Y2Rldi1cdTAwM2VibGlua19zZXQgPSBwaHlfbGVkX2JsaW5rX3NldDtcbjM0Mjk6XHRcbjM0MzA6XHQjaWZkZWYgQ09ORklHX0xFRFNfVFJJR0dFUlNcbjM0MzE6XHRcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWxlZF9od19pc19zdXBwb3J0ZWQgXHUwMDI2XHUwMDI2XG4zNDMyOlx0XHQgICAgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfaHdfY29udHJvbF9zZXQgXHUwMDI2XHUwMDI2XG4zNDMzOlx0XHQgICAgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfaHdfY29udHJvbF9nZXQpIHtcbjM0MzQ6XHRcdFx0Y2Rldi1cdTAwM2Vod19jb250cm9sX2lzX3N1cHBvcnRlZCA9IHBoeV9sZWRfaHdfaXNfc3VwcG9ydGVkO1xuMzQzNTpcdFx0XHRjZGV2LVx1MDAzZWh3X2NvbnRyb2xfc2V0ID0gcGh5X2xlZF9od19jb250cm9sX3NldDtcbjM0MzY6XHRcdFx0Y2Rldi1cdTAwM2Vod19jb250cm9sX2dldCA9IHBoeV9sZWRfaHdfY29udHJvbF9nZXQ7XG4zNDM3Olx0XHRcdGNkZXYtXHUwMDNlaHdfY29udHJvbF90cmlnZ2VyID0gXCYjMzQ7bmV0ZGV2XCYjMzQ7O1xuMzQzODpcdFx0fVxuMzQzOTpcdFxuMzQ0MDpcdFx0Y2Rldi1cdTAwM2Vod19jb250cm9sX2dldF9kZXZpY2UgPSBwaHlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZTtcbjM0NDE6XHQjZW5kaWZcbjM0NDI6XHRcdGNkZXYtXHUwMDNlbWF4X2JyaWdodG5lc3MgPSAxO1xuMzQ0MzpcdFx0aW5pdF9kYXRhLmRldmljZW5hbWUgPSBkZXZfbmFtZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMzQ0NDpcdFx0aW5pdF9kYXRhLmZ3bm9kZSA9IG9mX2Z3bm9kZV9oYW5kbGUobGVkKTtcbjM0NDU6XHRcdGluaXRfZGF0YS5kZXZuYW1lX21hbmRhdG9yeSA9IHRydWU7XG4zNDQ2Olx0XG4zNDQ3Olx0XHRlcnIgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0KGRldiwgY2RldiwgXHUwMDI2aW5pdF9kYXRhKTtcbjM0NDg6XHRcdGlmIChlcnIpXG4zNDQ5Olx0XHRcdHJldHVybiBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MjcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOgoKKipPRiBQSFkgTEVEIEluaXRpYWxpemF0aW9uIC0gRGlnZ2luZyBJbioqCgpSaWdodCwgYG9mX3BoeV9sZWRgIGlzIGZpcmluZyB1cCBkdXJpbmcgdGhlIERldmljZSBUcmVlIHByb2JpbmcgcGhhc2UsIHNwZWNpZmljYWxseSBmb3IgUEhZIExFRHMuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIGd1dCByZWFjdGlvbiBpcyB0byBpbW1lZGlhdGVseSB0cmFjZSB0aGUgY2FsbCBzdGFjayBvZiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IG9mIGhvdyB0aGlzIGlzIGFsbCB3aXJlZCB1cC4gVW5kZXJzdGFuZGluZyB0aGUgRGV2aWNlIFRyZWUgYmluZGluZ3MgaXMgY3J1Y2lhbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgZXhlY3V0aW9uIHBhdGguIFRpbWUgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgb2ZfcGh5X2xlZGAgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29udmVudGlvbnM/IFdoYXQgc3RydWN0dXJlcyBhcmUgYmVpbmcgcGFzc2VkPyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfcGh5X2xlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTMzNjk9c3RhdGljIHZvaWQgcGh5X2xlZHNfdW5yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzM3OC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzM3OTpzdGF0aWMgaW50IG9mX3BoeV9sZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzM4MC1cdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpsZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDU1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDU2OnN0YXRpYyBpbnQgb2ZfcGh5X2xlZHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ1Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDgyLVx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGVfc2NvcGVkKGxlZHMsIGxlZCkge1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDgzOlx0XHRlcnIgPSBvZl9waHlfbGVkKHBoeWRldiwgbGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ4NC1cdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzc0Mz1zdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODYxLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzg2MjpcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg2My1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0NzAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIGBsZWRfcG9sYXJpdHlfc2V0YCBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBvZl9waHlfbGVkYCBmdW5jdGlvbiBiZWNhdXNlIHNvbWV0aGluZyBmZWVscyBvZmYuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBpdCYjMzk7cyBvbmx5IGludm9rZWQgZHVyaW5nIGRldmljZSBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBwaHlfcHJvYmVgLCBhbmQgb25seSB3aGVuIGEgYGxlZHNgIGRldmljZSB0cmVlIG5vZGUgaXMgcHJlc2VudC4gIEJ1dCBJIG5lZWQgdG8gYmUgKnN1cmUqLiAgCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgaWYgYGxlZF9wb2xhcml0eV9zZXRgIGlzIGNhbGxlZCAqYW55d2hlcmUqIGVsc2UgaW4gdGhlIGtlcm5lbC4gIEl0IHNlZW1zIHVubGlrZWx5LCBidXQgSSYjMzk7bSBub3QgZ29pbmcgdG8gYXNzdW1lIGFueXRoaW5nLiBTbywgSSByYW4gYSBncmVwIHRvIGZpbmQgZXZlcnkgaW5zdGFuY2UuCgpUaGUgcmVzdWx0cyBhcmUgcHJldHR5IGNvbmNsdXNpdmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIGEgKmxvdCogb2YgZHJpdmVycyBjYWxsaW5nIGEgYCpfbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24uIFRoZSBncmVwIHNob3dzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgdXNlZCBpbnNpZGUgZWFjaCBwaHkgZHJpdmVyOiBgZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuY2AsIGBkcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jYCwgYGRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmNgLCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY2AsIGBkcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmNgLCBgZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuY2AsIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCwgYGRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNgLCBgZHJpdmVycy9uZXQvcGh5L214bC1ncHkuY2AsIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgLiBBbmQgYSBkZWZpbml0aW9uIGZvciBpdCBpbiBgaW5jbHVkZS9saW51eC9waHkuaGAgcGx1cyBhIGNhbGwgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLgoKQWhhISBgcGh5ZGV2LSZndDtkcnYtJmd0O2xlZF9wb2xhcml0eV9zZXRgIGlzICpvbmx5KiBjYWxsZWQgZnJvbSBgb2ZfcGh5X2xlZGAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBBbmQgYG9mX3BoeV9sZWRgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSBgb2ZfcGh5X2xlZHMoKWAuIEFuZCBgb2ZfcGh5X2xlZHNgIGlzIG9ubHkgY2FsbGVkIGJ5IGBwaHlfcHJvYmUoKWAuICBUaGlzIGNvbmZpcm1zIG15IHN1c3BpY2lvbiDigJMgaXQmIzM5O3MgYWxsIHBhcnQgb2YgdGhlIGRldmljZSBwcm9iZS9pbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gIFRoZSBjb2RlIGluIGBwaHlfcHJvYmUoKWAgY2hlY2tzIGBDT05GSUdfUEhZTElCX0xFRFNgIGFuZCB0aGVuIGF0dGVtcHRzIHRvIHVzZSBgb2ZfcGh5X2xlZHNgIHRvIGluaXRpYWxpemUgbGVkcy4KCkJ1dCB3YWl0LCB0aGlzIGhhcyBtZSB0aGlua2luZyBhYm91dCBob3cgTWFydmVsbCBQSFlzIGFyZSBhY3R1YWxseSB1c2VkIGluIHRoZSByZWFsIHdvcmxkLi4uIExldCYjMzk7cyB1c2UgdGhlIE1hcnZlbGwgZXhhbXBsZSB0byB0ZXN0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY2hhaW4gaXMgcmVhY2hhYmxlLiBEb2VzIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgaXRzZWxmIGhhdmUgYW55IGV4dGVybmFsIHdheXMgdG8gYmUgdXNlZD8KClNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBRRU1VLiAgQXJlIHRoZXJlIGFueSB2aXJ0dWFsIE1ESU8gb3IgTWFydmVsbCBQSFlzIGVtdWxhdGVkIHRoZXJlPyAgSSYjMzk7bSBydW5uaW5nIGEgbG90IG9mIHRlc3Rpbmcgd2l0aCBRRU1VLCBzbyBpdCYjMzk7cyBhIHBlcnRpbmVudCBxdWVzdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gIE9uIGFtZDY0ICh3aGljaCBpcyBteSB0YXJnZXQgYXJjaCkgaW4gUUVNVSwgdGhlIHN0YW5kYXJkIGVtdWxhdGVkIE5JQ3MgYXJlIHRoaW5ncyBsaWtlIEludGVsIGUxMDAwLCBlMTAwMGUsIGlnYiwgdmlydGlvLW5ldCwgcnRsODEzOSwgYW5kIGEgZmV3IG90aGVycy4gIE5vbmUgb2YgdGhlbSAoYXMgZmFyIGFzIEkga25vdykgaGF2ZSBhIHBoeWxpYiBQSFkgYXR0YWNoZWQgdmlhIGFuIE1ESU8gYnVzIG9yIGV2ZW4gYW4gZXh0ZXJuYWwgUEhZLgoKQ291bGQgTWFydmVsbCBQSFkgYmUgaW5zdGFudGlhdGVkIHZpYSBzeXNmcywgb3IgVVNCLCBvciBzb21lIHNvcnQgb2YgbW9jayBvciB2aXJ0dWFsIE1ESU8gc2V0dXA/IEkgbmVlZCB0byBsb29rIGludG8gd2hldGhlciB0aGVyZSBhcmUgYW55IG9mIHRob3NlIHNjZW5hcmlvcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiAgVGhpcyBjb3VsZCBiZSByZWFsbHkgY3JpdGljYWwgZm9yIGRlYnVnZ2luZywgYmVjYXVzZSBpZiB0aGVyZSYjMzk7cyBhIGRpc2Nvbm5lY3QgYmV0d2VlbiB3aGF0IHRoZSBrZXJuZWwgKnRoaW5rcyogaXMgaGFwcGVuaW5nIGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCwgaXQgY291bGQgY2F1c2Ugc3RyYW5nZSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcnZlbGxfZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTM2OTQ9c3RhdGljIGludCBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zNzA1LVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozNzA2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzcwNy1cdHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTQyMTctXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjQyMTg6bW9kdWxlX3BoeV9kcml2ZXIobWFydmVsbF9kcml2ZXJzKTtcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtNDIxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyOTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlciBBdHRhY2htZW50IFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtb2R1bGVfcGh5X2RyaXZlcihtYXJ2ZWxsX2RyaXZlcnMpO2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGV4YWN0bHkgZG9lcyB0aGlzIFBIWSBkcml2ZXIgZ2V0IGxpbmtlZCB3aXRoIGEgUEhZIGRldmljZT8gVGhlIHByb2Nlc3Mgc2VlbXMgdG8gYmUgdGhpczogdGhlIE1ESU8gYnVzLCBkdXJpbmcgaXRzIHByb2JpbmcgcGhhc2UsIHJlYWRzIHRoZSBgTUlJX1BIWVNJRDFgIGFuZCBgTUlJX1BIWVNJRDJgIHJlZ2lzdGVycyBmcm9tIHRoZSBQSFkuIEl0IHRoZW4gY2hlY2tzIGlmIHRoZSBQSFkgSUQgbWF0Y2hlcyBhbnkgb2YgdGhlIGBtYXJ2ZWxsX2RyaXZlcnNbaV0ucGh5X2lkYCwgY29uc2lkZXJpbmcgdGhlIGBwaHlfaWRfbWFza2AuIElmIHRoZXJlJiMzOTtzIGEgbWF0Y2gsIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiwgcHJlc3VtYWJseSBgcGh5X3Byb2JlKClgLCBpcyBjYWxsZWQuCgpOb3csIGR1cmluZyB0aGlzIGBwaHlfcHJvYmUoKWAgSSBzZWUgdGhhdCBgb2ZfcGh5X2xlZHMoKWAgaXMgYmVpbmcgY2FsbGVkLiBCdXQgaG9sZCBvbiwgdGhpcyBicmluZ3MgdXAgYW5vdGhlciBjb25jZXJuLiBXaGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIGRldmljZSBub2RlIGluIHRoZSBmaXJzdCBwbGFjZSBvbiBhbiBhbWQ2NCBvciB4ODZfNjQgc3lzdGVtPyBNeSBleHBlcmllbmNlIGlzIHRoYXQgeDg2IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGRvbiYjMzk7dCB1dGlsaXplIGRldmljZSB0cmVlIGZvciBzdGFuZGFyZCBjb25maWd1cmF0aW9ucywgZXhjZXB0IHBlcmhhcHMgaW4gc29tZSBuaWNoZSBlbWJlZGRlZCB4ODYgYm9hcmRzIG9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGludm9sdmluZyBkZXZpY2UgdHJlZSBvdmVybGF5cy4KCkNvdWxkIGl0IGJlIHRoYXQgT0Ygbm9kZXMgYXJlIGxvYWRlZCBkeW5hbWljYWxseSB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLCBwYXJ0aWN1bGFybHkgd2l0aCBgQ09ORklHX09GX09WRVJMQVlgPyBFdmVuIGlmIHRoYXQgd2VyZSBwb3NzaWJsZSB2aWEgY29uZmlnZnMsIHdoaWNoIGlzIGFscmVhZHkgYSBzdHJldGNoLi4uCgpIZXJlJiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYWN0dWFsbHkgYSAqcGh5c2ljYWwqIE1hcnZlbGwgODhFMTMxOFMgb3IgODhFMTUxMCBQSFkgcHJlc2VudCBvbiB0aGlzIGFtZDY0IHN5c3RlbSwgZXNwZWNpYWxseSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IE5vLCBJJiMzOTttIHByZXR0eSBzdXJlIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRob3NlIHNwZWNpZmljIE1hcnZlbGwgUEhZcy4KCk9rYXksIHNvIG1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgaXMgYSB1c2VyLW1vZGUgdGhpbmc/IFBlcmhhcHMgaXQmIzM5O3MgYmVlbiBjcmVhdGVkIGZyb20gdXNlcnNwYWNlPyBMZXQmIzM5O3MgY2hlY2sgd2hldGhlciBvciBub3QgdGhlIE1ESU8gYnVzIGNhbiBiZSBjcmVhdGVkIGJ5IGEgdXNlcnNwYWNlIHByb2dyYW0sIHBlcmhhcHMgdGhyb3VnaCBuZXRsaW5rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2J1c19jbGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0yMzY9X19BVFRSSUJVVEVfR1JPVVBTKG1kaW9fYnVzX3N0YXRpc3RpY3MpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM3LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM4OmNvbnN0IHN0cnVjdCBjbGFzcyBtZGlvX2J1c19jbGFzcyA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzOS1cdC5uYW1lXHRcdD0gXCYjMzQ7bWRpb19idXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgwLVx0YnVzLVx1MDAzZWRldi5wYXJlbnQgPSBidXMtXHUwMDNlcGFyZW50O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTgxOlx0YnVzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgyLVx0YnVzLVx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTcyNz1zdHJ1Y3QgbWlpX2J1cyAqbWRpb19maW5kX2J1cyhjb25zdCBjaGFyICptZGlvX25hbWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzMwLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzMxOlx0ZCA9IGNsYXNzX2ZpbmRfZGV2aWNlX2J5X25hbWUoXHUwMDI2bWRpb19idXNfY2xhc3MsIG1kaW9fbmFtZSk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzItXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTc1MD1zdHJ1Y3QgbWlpX2J1cyAqb2ZfbWRpb19maW5kX2J1cyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fYnVzX25wKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1Ni1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1NzpcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFx1MDAyNm1kaW9fYnVzX2NsYXNzLCBtZGlvX2J1c19ucCk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTgtXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NDAzOD1zdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA0MS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NDA0MjpcdHJjID0gY2xhc3NfcmVnaXN0ZXIoXHUwMDI2bWRpb19idXNfY2xhc3MpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDQzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA3OS1lcnJfY2xhc3M6XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjQwODA6XHRjbGFzc191bnJlZ2lzdGVyKFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA4MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTQwODU9c3RhdGljIHZvaWQgX19leGl0IHBoeV9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDkzLVx0YnVzX3VucmVnaXN0ZXIoXHUwMDI2bWRpb19idXNfdHlwZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjQwOTQ6XHRjbGFzc191bnJlZ2lzdGVyKFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA5NS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oPTEyPWV4dGVybiBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDoxMzpleHRlcm4gY29uc3Qgc3RydWN0IGNsYXNzIG1kaW9fYnVzX2NsYXNzO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oLTE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk2OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgTWFydmVsbCBFdGhlcm5ldCBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgTWFydmVsbCBFdGhlcm5ldCBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmVkLiBUaGUgaW5pdGlhbCBxdWVzdGlvbiBpcyAmIzM0O1doaWNoIEV0aGVybmV0IGRyaXZlcnMgb3V0IHRoZXJlIGluIHRoZSBrZXJuZWwgdXRpbGl6ZSBgbWFydmVsbC5jYD8mIzM0Oy4gVGhhdCYjMzk7cyB0aGUgY29yZSBwb2ludCBvZiB0aGUgaW52ZXN0aWdhdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBDT05GSUdfTUFSVkVMTF9QSFlgIG9wdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucyBvZiB0aGUgTWFydmVsbCBQSFkgc3VwcG9ydCBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIGl04oCZbGwgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxpbmtlZC4gVWx0aW1hdGVseSwgdGhpcyB3aWxsIHJldmVhbCB3aGF0IGNvbXBvbmVudHMgcmVseSBvbiB0aGUgYG1hcnZlbGwuY2AgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BUlZFTExfUEhZJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTI3Mz1jb25maWcgTFNJX0VUMTAxMUNfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMjc3LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Mjc4OmNvbmZpZyBNQVJWRUxMX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMjc5LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBBbGFza2EgUEhZc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI1NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBQSFkgS2NvbmZpZyBGaWxlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gbGluZXMgMjcwIHRocm91Z2ggMzAwIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHNlY3Rpb24gdG8gbGlrZWx5IGRlZmluZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIFBIWSBkcml2ZXIgb3IgYSBncm91cCBvZiBkcml2ZXJzLCBwZXJoYXBzIHdpdGggYSBjb21tb24gZmVhdHVyZSBzZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZCB0aHJvdWdoIHRoZSBgS2NvbmZpZ2Agc3lzdGVtLCBhbmQgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBQSFkgY29uZmlndXJhdGlvbi4gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXM/IEFyZSB0aGVyZSBhbnkgZGV2aWNlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIGVuY29kZWQgaGVyZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIG9wdGltaXphdGlvbnM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ2hvaWNlIG9wdGlvbnMqKjogQXJlIHdlIHByZXNlbnRlZCB3aXRoIGEgc2VyaWVzIG9mIFBIWSBkcml2ZXIgc2VsZWN0aW9ucz8KKiAgICoqRGVwZW5kZW5jaWVzKio6IFdoYXQgb3RoZXIga2VybmVsIG1vZHVsZXMgb3Igb3B0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaW5jb21wYXRpYmxlPwoqICAgKipUcmlzdGF0ZSBPcHRpb25zKio6IEFyZSBtb2R1bGVzIGNvbXBpbGVkIGluIG9yIGFzIGJ1aWx0LWluIGJhc2VkIG9uIGNvbmRpdGlvbnM/CiogICAqKkRlZmF1bHRzKio6IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgd2h5PyBBbnkgb2J2aW91cyBhcmNoaXRlY3R1cmFsIGRlc2lnbiBjaG9pY2VzIG1hZGUgaGVyZT8KKiAgICoqRG9jdW1lbnRhdGlvbiBTdHJpbmdzKio6IEFyZSB0aGUgaGVscCB0ZXh0cyBjbGVhciBhbmQgYWNjdXJhdGU/IEkmIzM5O2xsIGJlIG1lbnRhbGx5IHBhcnNpbmcgdGhlbSwgYXMgSSBtYXkgYmUgbmVlZGluZyB0byByZWZlcmVuY2UgdGhlbSBsYXRlciB0byBleHBsYWluIHRoaXMgY29uZmlndXJhdGlvbiB0byBvdGhlcnMuCiogICAqKlN5bWJvbCBuYW1lcyoqOiBXaGF0IG5hbWluZyBjb252ZW50aW9ucyBhcmUgdXNlZCBhbmQgYXJlIHRoZXkgY29uc2lzdGVudCB3aXRoIHdoYXQgSSYjMzk7dmUgc2VlbiBlbHNld2hlcmUuCgpUaGUgZ29hbCBpcyB0byByYXBpZGx5IGZvcm0gYSBtZW50YWwgbW9kZWwgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgd2l0aGluIHRoaXMgc2VjdGlvbiwgYWxsb3dpbmcgbWUgdG8gYW5zd2VyIGFueSBxdWVzdGlvbnMgYWJvdXQgc3VwcG9ydGVkIFBIWXMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgb3IgcG90ZW50aWFsIGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlLiBUaGlzIGlzIGZvdW5kYXRpb25hbCB0byBhbnkgc3Vic2VxdWVudCBQSFktcmVsYXRlZCB3b3JrIG9yIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjc1Olx0XHRoZWxwXG4gMjc2Olx0XHQgIFN1cHBvcnRzIHRoZSBMU0kgRVQxMDExQyBQSFkuXG4gMjc3Olx0XG4gMjc4Olx0Y29uZmlnIE1BUlZFTExfUEhZXG4gMjc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIEFsYXNrYSBQSFlzXCYjMzQ7XG4gMjgwOlx0XHRoZWxwXG4gMjgxOlx0XHQgIEN1cnJlbnRseSBoYXMgYSBkcml2ZXIgZm9yIHRoZSA4OEUxWFhYXG4gMjgyOlx0XG4gMjgzOlx0Y29uZmlnIE1BUlZFTExfMTBHX1BIWVxuIDI4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBBbGFza2EgMTBHYml0IFBIWXNcJiMzNDtcbiAyODU6XHRcdGhlbHBcbiAyODY6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1hcnZlbGwgQWxhc2thIE1WODhYMzMxMCBhbmQgY29tcGF0aWJsZSBQSFlzLlxuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBNQVJWRUxMXzg4UTJYWFhfUEhZXG4gMjg5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIDg4UTJYWFggUEhZXCYjMzQ7XG4gMjkwOlx0XHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cbiAyOTE6XHRcdGhlbHBcbiAyOTI6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1hcnZlbGwgODhRMlhYWCAxMDAvMTAwMEJBU0UtVDEgQXV0b21vdGl2ZSBFdGhlcm5ldFxuIDI5MzpcdFx0ICBQSFlzLlxuIDI5NDpcdFxuIDI5NTpcdGNvbmZpZyBNQVJWRUxMXzg4WDIyMjJfUEhZXG4gMjk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIDg4WDIyMjIgUEhZXCYjMzQ7XG4gMjk3Olx0XHRoZWxwXG4gMjk4Olx0XHQgIFN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIDg4WDIyMjIgRHVhbC1wb3J0IE11bHRpLXNwZWVkIEV0aGVybmV0XG4gMjk5Olx0XHQgIFRyYW5zY2VpdmVyLlxuIDMwMDpcdFxuIDMwMTpcdGNvbmZpZyBNQVhMSU5FQVJfR1BIWVxuIDMwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWF4bGluZWFyIEV0aGVybmV0IFBIWXNcJiMzNDtcbiAzMDM6XHRcdHNlbGVjdCBQT0xZTk9NSUFMIGlmIEhXTU9OXG4gMzA0Olx0XHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cbiAzMDU6XHRcdGhlbHBcbiAzMDY6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1heGxpbmVhciBHUFkxMTUsIEdQWTIxMSwgR1BZMjEyLCBHUFkyMTUsXG4gMzA3Olx0XHQgIEdQWTI0MSwgR1BZMjQ1IFBIWXMuXG4gMzA4Olx0XG4gMzA5Olx0Y29uZmlnIE1BWExJTkVBUl84NjExMF9QSFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyNDQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1hcnZlbGwgQWxhc2thIFBIWSBEcml2ZXIgQXR0YWNobWVudHMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyB0eXBpY2FsbHkgaW50ZXJmYWNlIHdpdGggTWFydmVsbCBBbGFza2EgUEhZcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBtZW50YWwgcnVuZG93bjogKm12NjQzeHhfZXRoKiwgKnN0bW1hYyosICpnaWFuZmFyKiwgKm1hY2IqLCAqYWx0ZXJhIHRzZSosICp0aSBrZXlzdG9uZSBuZXRjcCouLi4gcmlnaHQsIHRoZSB1c3VhbCBzdXNwZWN0cy4gRW1iZWRkZWQgQVJNL01JUFMvUG93ZXJQQyBTb0MgRXRoZXJuZXQgY29udHJvbGxlcnMgYW5kIHNwZWNpZmljIGRpc2NyZXRlIE1hcnZlbGwgY29udHJvbGxlcnMuIEdvdCBpdC4gTm93LCB3aGF0IGFib3V0IHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucz8gSSByZWNhbGwgc2VlaW5nIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGFuZCBgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldGAgYmVpbmcgdHdlYWtlZCBpbiByZWxhdGlvbiB0byB0aGVzZS4gT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQmIzM5O3MgcHVsbCB1cCBgZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY2AgYW5kIHplcm8gaW4gb24gbGluZXMgMzU3MCB0aHJvdWdoIDM2MzAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDY1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1NzA6XHRcdHJldHVybiBwaHlfd3JpdGVfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcbjM1NzE6XHRcdFx0XHQgICAgICAgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQywgcmVnKTtcbjM1NzI6XHR9XG4zNTczOlx0XG4zNTc0Olx0c3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4zNTc1Olx0XHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyAqcnVsZXMpXG4zNTc2Olx0e1xuMzU3NzpcdFx0aW50IG1vZGUsIHJlZztcbjM1Nzg6XHRcbjM1Nzk6XHRcdGlmIChpbmRleCBcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcbjM1ODA6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNTgxOlx0XG4zNTgyOlx0XHRyZWcgPSBwaHlfcmVhZF9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuMzU4MzpcdFx0XHRcdCAgICAgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQyk7XG4zNTg0Olx0XHRpZiAocmVnIFx1MDAzYyAwKVxuMzU4NTpcdFx0XHRyZXR1cm4gcmVnO1xuMzU4NjpcdFxuMzU4NzpcdFx0bW9kZSA9IChyZWcgXHUwMDNlXHUwMDNlICg0ICogaW5kZXgpKSBcdTAwMjYgMHhmO1xuMzU4ODpcdFxuMzU4OTpcdFx0cmV0dXJuIG1hcnZlbGxfZ2V0X2xlZF9ydWxlcyhpbmRleCwgcnVsZXMsIG1vZGUpO1xuMzU5MDpcdH1cbjM1OTE6XHRcbjM1OTI6XHRzdGF0aWMgaW50IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuMzU5MzpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuMzU5NDpcdHtcbjM1OTU6XHRcdGJvb2wgZm9yY2VfYWN0aXZlX2xvdyA9IGZhbHNlLCBmb3JjZV9hY3RpdmVfaGlnaCA9IGZhbHNlO1xuMzU5NjpcdFx0dTMyIG1vZGU7XG4zNTk3Olx0XG4zNTk4Olx0XHRpZiAoaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXG4zNTk5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzYwMDpcdFxuMzYwMTpcdFx0Zm9yX2VhY2hfc2V0X2JpdChtb2RlLCBcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xuMzYwMjpcdFx0XHRzd2l0Y2ggKG1vZGUpIHtcbjM2MDM6XHRcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4zNjA0Olx0XHRcdFx0Zm9yY2VfYWN0aXZlX2xvdyA9IHRydWU7XG4zNjA1Olx0XHRcdFx0YnJlYWs7XG4zNjA2Olx0XHRcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcbjM2MDc6XHRcdFx0XHRmb3JjZV9hY3RpdmVfaGlnaCA9IHRydWU7XG4zNjA4Olx0XHRcdFx0YnJlYWs7XG4zNjA5Olx0XHRcdGRlZmF1bHQ6XG4zNjEwOlx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNjExOlx0XHRcdH1cbjM2MTI6XHRcdH1cbjM2MTM6XHRcbjM2MTQ6XHRcdGlmIChmb3JjZV9hY3RpdmVfbG93KVxuMzYxNTpcdFx0XHRyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuMzYxNjpcdFx0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsXG4zNjE3Olx0XHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCksIDApO1xuMzYxODpcdFxuMzYxOTpcdFx0aWYgKGZvcmNlX2FjdGl2ZV9oaWdoKVxuMzYyMDpcdFx0XHRyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuMzYyMTpcdFx0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsIDAsXG4zNjIyOlx0XHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCkpO1xuMzYyMzpcdFxuMzYyNDpcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNjI1Olx0fVxuMzYyNjpcdFxuMzYyNzpcdHN0YXRpYyBpbnQgbWFydmVsbF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMzYyODpcdHtcbjM2Mjk6XHRcdHN0cnVjdCBtYXJ2ZWxsX3ByaXYgKnByaXY7XG4zNjMwOlx0XG4zNjMxOlx0XHRwcml2ID0gZGV2bV9remFsbG9jKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XG4zNjMyOlx0XHRpZiAoIXByaXYpXG4zNjMzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzYzNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY2MgoJCQkJCQkJb3V0cHV0OiAxOTcKCQkJCQkJCXRob3VnaHRzOiAyMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFVucmVhY2hhYmxlIENvZGUgYW5kIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24uIEkmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBjaGFuZ2VzIGluIHRoZSBNYXJ2ZWxsIEV0aGVybmV0IFBIWSBkcml2ZXIgdGhhdCBpbnZvbHZlIHRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gYW5kIGEgbWlub3IgdHdlYWsgaW4gYG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldGAuIFNwZWNpZmljYWxseSwgYGxlZF9wb2xhcml0eV9zZXRgIGlzIGFkZGVkIHRvIHRoZSBkcml2ZXIgc3RydWN0dXJlcyBmb3IgYm90aCB0aGUgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcy4gIExvb2tpbmcgZGVlcGVyIGludG8gdGhlIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGZ1bmN0aW9uLCB0aGUgY2hlY2sgYGluZGV4ICZndDsgMmAgd2FzIGNoYW5nZWQgdG8gYGluZGV4ICZndDs9IE04OEUxMzE4U19NQVhfTEVEU2Agd2hlcmUgYE04OEUxMzE4U19NQVhfTEVEU2AgaXMgMywgd2hpY2ggYXJlIGNvbXBsZXRlbHkgZXF1aXZhbGVudCBkdWUgdG8gYGluZGV4YCBiZWluZyBhIHU4LgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiBleGVjdXRlZCBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gIFRoZSBndWlkZWxpbmVzIGNsZWFybHkgc3RhdGUgdGhhdCBmdXp6aW5nIHNob3VsZCBvbmx5IHRhcmdldCBjb2RlIHJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgpBIHF1aWNrIHJldmlldyBvZiBRRU1VJiMzOTtzIHN1cHBvcnRlZCBuZXR3b3JrIGRldmljZXMgcmV2ZWFscyB0aGF0IG5vbmUgb2YgdGhlIHN0YW5kYXJkIGRldmljZXMgZW11bGF0ZSB0aGUgTWFydmVsbCA4OEUxMzE4UyBvciA4OEUxNTEwLiAgVGhlIGBsZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBjYWxsZWQgKmV4Y2x1c2l2ZWx5KiBieSBgb2ZfcGh5X2xlZGAgaW4gYHBoeV9kZXZpY2UuY2AuICBgb2ZfcGh5X2xlZGAgcmVsaWVzIG9uIHBhcnNpbmcgdGhlIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBub2RlIGZvciBMRUQgY29uZmlndXJhdGlvbi4gT24gYW1kNjQgKHg4Nl82NCksIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBvcGVyYXRpbmcgb24sIERldmljZSBUcmVlIGlzIGdlbmVyYWxseSAqbm90KiB1c2VkOyBBQ1BJIGlzLiBBbmQsIHRoZXJlIHdvbiYjMzk7dCBiZSBhIERldmljZSBUcmVlIG5vZGUgZm9yIGEgTWFydmVsbCBQSFkgTEVEIQoKSSBjb25maXJtZWQgdGhhdCB0aGVyZSBhcmUgbm8gY2FsbHMgdG8gYGxlZF9wb2xhcml0eV9zZXRgIHRocm91Z2ggZXRodG9vbCwgc3lzZnMsIGlvY3RsLCBvciBuZXRsaW5rLiBJdCBpcyBzdHJpY3RseSB0aWVkIHRvIERldmljZSBUcmVlIHByb2JpbmcgYW5kIGluc3RhbnRpYXRpb24gb2YgYSBQSFkgZGV2aWNlIHdpdGggYSBwYXJ0aWN1bGFyIGRldmljZSB0cmVlIG5vZGUuCgpFdmVuIGlmIHNvbWVob3cgYSBQSFkgZGV2aWNlIGNvdWxkIGJlIGNyZWF0ZWQsIGBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0YCByZXF1aXJlcyBhbiBPRiAoRGV2aWNlIFRyZWUpIG5vZGUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgbGFjayBvZiBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uLgoKSW4gc3VtbWFyeSwgdGhlIG1vZGlmaWVkIGNvZGUgY29uY2VybnMgcGh5c2ljYWwgTWFydmVsbCBQSFkgdHJhbnNjZWl2ZXJzIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgdGhlIGBsZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgaW52b2tlZCB2aWEgYSBEZXZpY2UgVHJlZS4gVGhlIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGNoYW5nZSBpcyBsb2dpY2FsbHkgZXF1aXZhbGVudCBhbmQgYWxzbyBzaXRzIGluIHVucmVhY2hhYmxlIGNvZGUuIEJlY2F1c2Ugb2YgdGhlc2UgZmFjdG9ycywgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBJdCBNVVNUIE5PVCBiZSBmdXp6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMRUQgcG9sYXJpdHkgY29uZmlndXJhdGlvbiBzdXBwb3J0IChtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KSB0byB0aGUgTWFydmVsbCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jKSBmb3IgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcywgYW5kIHJlcGxhY2VzIGEgaGFyZGNvZGVkIGJvdW5kIHdpdGggTTg4RTEzMThTX01BWF9MRURTIGluIG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldC4gVGhlc2UgUEhZcyBhcmUgcGh5c2ljYWwgdHJhbnNjZWl2ZXIgY2hpcHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIGxlZF9wb2xhcml0eV9zZXQgaXMgb25seSBpbnZva2VkIGR1cmluZyBEZXZpY2UgVHJlZSAoT3BlbiBGaXJtd2FyZSkgcHJvYmluZyBvZiBQSFkgTEVEcyAob2ZfcGh5X2xlZCgpKSwgd2hpY2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIGFtZDY0IGZ1enppbmcgdGFyZ2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCAobTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCkgdG8gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYykgZm9yIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMsIGFuZCByZXBsYWNlcyBhIGhhcmRjb2RlZCBib3VuZCB3aXRoIE04OEUxMzE4U19NQVhfTEVEUyBpbiBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQuIFRoZXNlIFBIWXMgYXJlIHBoeXNpY2FsIHRyYW5zY2VpdmVyIGNoaXBzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBhbWQ2NCBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCBsZWRfcG9sYXJpdHlfc2V0IGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgRGV2aWNlIFRyZWUgKE9wZW4gRmlybXdhcmUpIHByb2Jpbmcgb2YgUEhZIExFRHMgKG9mX3BoeV9sZWQoKSksIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCBmdXp6aW5nIHRhcmdldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjQ6NDYuMTgwOTQ5NzU2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMDgxODg0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIExFRCBwb2xhcml0eSBjb25maWd1cmF0aW9uIHN1cHBvcnQgKG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQpIHRvIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMpIGZvciA4OEUxMzE4UyBhbmQgODhFMTUxMCBQSFlzLCBhbmQgcmVwbGFjZXMgYSBoYXJkY29kZWQgYm91bmQgd2l0aCBNODhFMTMxOFNfTUFYX0xFRFMgaW4gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LiBUaGVzZSBQSFlzIGFyZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBjaGlwcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgbGVkX3BvbGFyaXR5X3NldCBpcyBvbmx5IGludm9rZWQgZHVyaW5nIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBwcm9iaW5nIG9mIFBIWSBMRURzIChvZl9waHlfbGVkKCkpLCB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgZnV6emluZyB0YXJnZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjQ6NDYuMTgwOTU0ODg2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgzMjA5OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWJmM2JiMjFjZWNlZmZhYWM2NDQ0NzBhOWZmNmQ3MjgwOTNjZjI4MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAyMjoyNDo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jIGIvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY1xcbmluZGV4IGY3MWNmZmE4ODQwNjIuLjQzMmFkMzY0ZWZkODAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcXG5AQCAtMTQ5LDYgKzE0OSw4IEBAXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19PTlxcdFxcdCgweDkpXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19ISV9aXFx0XFx0KDB4YSlcXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9GVU5DX0JMSU5LXFx0XFx0KDB4YilcXG4rI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xcXHRcXHQweDExXFxuKyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGlkeClcXHQoMSBcXHUwMDNjXFx1MDAzYyAyICogKGlkeCkpXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSXFx0XFx0MHgxMlxcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9GT1JDRV9JTlRcXHRCSVQoMTUpXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSX0lOVG5fRU5BQkxFXFx0QklUKDcpXFxuQEAgLTMwNCw2ICszMDYsOCBAQFxcbiAjZGVmaW5lIE5CX0ZJQkVSX1NUQVRTXFx0MVxcbiAjZGVmaW5lIE5CX1NUQVRfTUFYXFx0M1xcbiBcXG4rI2RlZmluZSBNODhFMTMxOFNfTUFYX0xFRFNcXHQzXFxuK1xcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1hcnZlbGwgUEhZIGRyaXZlclxcXCIpO1xcbiBNT0RVTEVfQVVUSE9SKFxcXCJBbmR5IEZsZW1pbmdcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbkBAIC0zNTcyLDcgKzM1NzYsNyBAQCBzdGF0aWMgaW50IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4ge1xcbiBcXHRpbnQgbW9kZSwgcmVnO1xcbiBcXG4tXFx0aWYgKGluZGV4IFxcdTAwM2UgMilcXG4rXFx0aWYgKGluZGV4IFxcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHRyZWcgPSBwaHlfcmVhZF9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxcbkBAIC0zNTg1LDYgKzM1ODksNDEgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuIFxcdHJldHVybiBtYXJ2ZWxsX2dldF9sZWRfcnVsZXMoaW5kZXgsIHJ1bGVzLCBtb2RlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG4rXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbit7XFxuK1xcdGJvb2wgZm9yY2VfYWN0aXZlX2xvdyA9IGZhbHNlLCBmb3JjZV9hY3RpdmVfaGlnaCA9IGZhbHNlO1xcbitcXHR1MzIgbW9kZTtcXG4rXFxuK1xcdGlmIChpbmRleCBcXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0Zm9yX2VhY2hfc2V0X2JpdChtb2RlLCBcXHUwMDI2bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHtcXG4rXFx0XFx0c3dpdGNoIChtb2RlKSB7XFxuK1xcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfTE9XOlxcbitcXHRcXHRcXHRmb3JjZV9hY3RpdmVfbG93ID0gdHJ1ZTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcXG4rXFx0XFx0XFx0Zm9yY2VfYWN0aXZlX2hpZ2ggPSB0cnVlO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0aWYgKGZvcmNlX2FjdGl2ZV9sb3cpXFxuK1xcdFxcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXFxuK1xcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCxcXG4rXFx0XFx0XFx0XFx0XFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSwgMCk7XFxuK1xcbitcXHRpZiAoZm9yY2VfYWN0aXZlX2hpZ2gpXFxuK1xcdFxcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXFxuK1xcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwgMCxcXG4rXFx0XFx0XFx0XFx0XFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSk7XFxuK1xcbitcXHRyZXR1cm4gLUVJTlZBTDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHtcXG4gXFx0c3RydWN0IG1hcnZlbGxfcHJpdiAqcHJpdjtcXG5AQCAtMzgzMyw2ICszODcyLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xcbiBcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXFxuK1xcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQucGh5X2lkID0gTUFSVkVMTF9QSFlfSURfODhFMTE0NSxcXG5AQCAtMzk0Nyw2ICszOTg3LDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xcbiBcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXFxuK1xcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcXG4gXFx0XFx0LmF0dGFjaF9taWlfcG9ydCA9IG04OGUxNTEwX2F0dGFjaF9taWlfcG9ydCxcXG4gXFx0fSxcXG4gXFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNDo0Ny44NjQ5MjAyNzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU5NjI0MjA1OTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIExFRCBwb2xhcml0eSBjb25maWd1cmF0aW9uIHN1cHBvcnQgKG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQpIHRvIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMpIGZvciA4OEUxMzE4UyBhbmQgODhFMTUxMCBQSFlzLCBhbmQgcmVwbGFjZXMgYSBoYXJkY29kZWQgYm91bmQgd2l0aCBNODhFMTMxOFNfTUFYX0xFRFMgaW4gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LiBUaGVzZSBQSFlzIGFyZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBjaGlwcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgbGVkX3BvbGFyaXR5X3NldCBpcyBvbmx5IGludm9rZWQgZHVyaW5nIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBwcm9iaW5nIG9mIFBIWSBMRURzIChvZl9waHlfbGVkKCkpLCB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgZnV6emluZyB0YXJnZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlYmYzYmIyMWNlY2VmZmFhYzY0NDQ3MGE5ZmY2ZDcyODA5M2NmMjgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMjI6MjQ6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jIGIvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY1xuaW5kZXggZjcxY2ZmYTg4NDA2Mi4uNDMyYWQzNjRlZmQ4MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcbkBAIC0xNDksNiArMTQ5LDggQEBcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfT05cdFx0KDB4OSlcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfSElfWlx0XHQoMHhhKVxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19CTElOS1x0XHQoMHhiKVxuKyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MXHRcdDB4MTFcbisjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpZHgpXHQoMSBcdTAwM2NcdTAwM2MgMiAqIChpZHgpKVxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSXHRcdDB4MTJcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9GT1JDRV9JTlRcdEJJVCgxNSlcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9JTlRuX0VOQUJMRVx0QklUKDcpXG5AQCAtMzA0LDYgKzMwNiw4IEBAXG4gI2RlZmluZSBOQl9GSUJFUl9TVEFUU1x0MVxuICNkZWZpbmUgTkJfU1RBVF9NQVhcdDNcbiBcbisjZGVmaW5lIE04OEUxMzE4U19NQVhfTEVEU1x0M1xuK1xuIE1PRFVMRV9ERVNDUklQVElPTihcIk1hcnZlbGwgUEhZIGRyaXZlclwiKTtcbiBNT0RVTEVfQVVUSE9SKFwiQW5keSBGbGVtaW5nXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuQEAgLTM1NzIsNyArMzU3Niw3IEBAIHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIHtcbiBcdGludCBtb2RlLCByZWc7XG4gXG4tXHRpZiAoaW5kZXggXHUwMDNlIDIpXG4rXHRpZiAoaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0cmVnID0gcGh5X3JlYWRfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcbkBAIC0zNTg1LDYgKzM1ODksNDEgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gXHRyZXR1cm4gbWFydmVsbF9nZXRfbGVkX3J1bGVzKGluZGV4LCBydWxlcywgbW9kZSk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4rXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4re1xuK1x0Ym9vbCBmb3JjZV9hY3RpdmVfbG93ID0gZmFsc2UsIGZvcmNlX2FjdGl2ZV9oaWdoID0gZmFsc2U7XG4rXHR1MzIgbW9kZTtcbitcbitcdGlmIChpbmRleCBcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XG4rXHRcdHN3aXRjaCAobW9kZSkge1xuK1x0XHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcbitcdFx0XHRmb3JjZV9hY3RpdmVfbG93ID0gdHJ1ZTtcbitcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9ISUdIOlxuK1x0XHRcdGZvcmNlX2FjdGl2ZV9oaWdoID0gdHJ1ZTtcbitcdFx0XHRicmVhaztcbitcdFx0ZGVmYXVsdDpcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1x0fVxuK1xuK1x0aWYgKGZvcmNlX2FjdGl2ZV9sb3cpXG4rXHRcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXG4rXHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCxcbitcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSwgMCk7XG4rXG4rXHRpZiAoZm9yY2VfYWN0aXZlX2hpZ2gpXG4rXHRcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXG4rXHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwgMCxcbitcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSk7XG4rXG4rXHRyZXR1cm4gLUVJTlZBTDtcbit9XG4rXG4gc3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IG1hcnZlbGxfcHJpdiAqcHJpdjtcbkBAIC0zODMzLDYgKzM4NzIsNyBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWFydmVsbF9kcml2ZXJzW10gPSB7XG4gXHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gbTg4ZTEzMThfbGVkX2h3X2lzX3N1cHBvcnRlZCxcbiBcdFx0LmxlZF9od19jb250cm9sX3NldCA9IG04OGUxMzE4X2xlZF9od19jb250cm9sX3NldCxcbiBcdFx0LmxlZF9od19jb250cm9sX2dldCA9IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldCxcbitcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0LFxuIFx0fSxcbiBcdHtcbiBcdFx0LnBoeV9pZCA9IE1BUlZFTExfUEhZX0lEXzg4RTExNDUsXG5AQCAtMzk0Nyw2ICszOTg3LDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xuIFx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG4rXHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcbiBcdFx0LmF0dGFjaF9taWlfcG9ydCA9IG04OGUxNTEwX2F0dGFjaF9taWlfcG9ydCxcbiBcdH0sXG4gXHR7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNDo0Ny44NjQ5MjIxMDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3MjE2NjgyNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIE1hcnZlbGwgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBhc2tlZCB0byBsb29rIG92ZXIgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNgLiBJdCBzZWVtcyB0byBhZGQgYSBmdW5jdGlvbiwgYG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXRgLCB3aXRoaW4gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQgYXQgdGhlIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMgb3Igc2ltaWxhciB2YXJpYW50cy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcHJhY3RpY2FsaXR5IOKAkyBjYW4gSSBhY3R1YWxseSAqdGVzdCogdGhpcyBlZmZlY3RpdmVseT8gQ2FuIEksIGZvciBleGFtcGxlLCBpbnN0YW50aWF0ZSBvciBwcm9iZSB0aGlzIGRyaXZlciBhbmQgdGhlIHNwZWNpZmllZCBQSFlzIHdpdGhpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoYXQgd291bGQgYmUgaWRlYWwuIEkgd2FudCB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgd2hlbiBJJ20gYXNzZXNzaW5nIHNvbWV0aGluZy5cblxuTXkgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gaW52ZXN0aWdhdGUgYGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNgIGluIG1vcmUgZGV0YWlsLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgcm9sZTsgaXMgdGhpcywgYXMgSSBzdXNwZWN0LCBhbiBNRElPIFBIWSBkcml2ZXI/IFRoYXQncyB0aGUgbGlrZWx5IHNjZW5hcmlvLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0uIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBrbm93biBtZXRob2RzIGZvciByZWFjaGluZyBvciBlbXVsYXRpbmcgdGhlc2Ugc3BlY2lmaWMgTWFydmVsbCBQSFlzLCBvciBhdCBsZWFzdCBpZiBQSFkgZHJpdmVycyBpbiBnZW5lcmFsIGFyZSByZWFjaGFibGUgb3IgdGVzdGFibGUgdmlhIHN5emthbGxlciBvciBzaW1pbGFyIGZ1enppbmcgdG9vbHMuIEl0IHdvdWxkIHNhdmUgbWUgYSBsb3Qgb2YgdGltZSBpZiBJIGNhbiBhdXRvbWF0ZSB0aGUgcHJvY2Vzcy4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhhdCwgdGhvdWdoLCBJJ2xsIGRvIGEgcXVpY2sgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHJlcG9zaXRvcnkgaXRzZWxmIHRvIGdldCBhIHNlbnNlIG9mIGhvdyB0aGlzIFBIWSBpcyBnZW5lcmFsbHkgaGFuZGxlZCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBlY29zeXN0ZW0uIEEgc2VhcmNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNDo1NS4wODE2MDY4MTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMDY4NTI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUFSVkVMTF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnPTU0PUNPTkZJR19HRU1JTklfRVRIRVJORVQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZzo1NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZy01Ni1DT05GSUdfTURJT19CSVRCQU5HPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTEzMj1DT05GSUdfVElfS0VZU1RPTkVfTkVUQ1BfRVRIU1M9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnOjEzMzpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnLTEzNC1DT05GSUdfTUlDUkVMX1BIWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y1X2RlZmNvbmZpZz05ND1DT05GSUdfREFWSUNPTV9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnOjk1OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctOTYtQ09ORklHX01JQ1JFTF9QSFk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9Mjg4PUNPTkZJR19JQ1BMVVNfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyODk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0yOTAtQ09ORklHX0FUODAzWF9QSFk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZpZz01NT1DT05GSUdfTVY2NDNYWF9FVEg9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9kZWZjb25maWctNTYtIyBDT05GSUdfSU5QVVRfTU9VU0VERVYgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9kZWZjb25maWc6NTc6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnLTU4LUNPTkZJR19JTlBVVF9FVkRFVj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZz03Mz1DT05GSUdfUjgxNjk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnOjc0OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92NV9kZWZjb25maWctNzUtQ09ORklHX0xJQkVSVEFTPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnPTY1PUNPTkZJR19TRlA9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnOjY2OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWctNjctQ09ORklHX01XSUZJRVg9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZz01OD1DT05GSUdfTVY2NDNYWF9FVEg9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb3Jpb241eF9kZWZjb25maWc6NTk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnLTYwLSMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz0xODQ9Q09ORklHX0ZJWEVEX1BIWT1tXFxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy0xODYtQ09ORklHX0FUODAzWF9QSFk9bVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZz02Nz1DT05GSUdfU1RNTUFDX0VUSD15XFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZzo2ODpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWctNjktQ09ORklHX01JQ1JFTF9QSFk9eVxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NjI9Q09ORklHX0JDTTU0MTQwX1BIWT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NjM6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ2NC1DT05GSUdfTUFSVkVMTF8xMEdfUEhZPXlcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWc9NDY9Q09ORklHX1hJTElOWF9MTF9URU1BQz15XFxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZzo0NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWctNDgtIyBDT05GSUdfSU5QVVQgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc9OTU9Q09ORklHX0JST0FEQ09NX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc6OTY6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy05Ny0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZz01OD1DT05GSUdfTUFDQj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjU5OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTYwLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZz02MD1DT05GSUdfTUFDQj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnOjYxOkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTYyLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTU5PUNPTkZJR19NQUNCPXlcXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZzo2MDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTYxLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWc9MTExPUNPTkZJR19MWFRfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnOjExMjpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWctMTEzLUNPTkZJR19RU0VNSV9QSFk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZz0xNTc9Q09ORklHX0xYVF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc6MTU4OkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZy0xNTktQ09ORklHX1FTRU1JX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZz0yMDU9Q09ORklHX0xYVF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjIwNjpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTIwNy1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTE3MT1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6MTcyOkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTczLUNPTkZJR19OQVRJT05BTF9QSFk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI4MD1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI4MTpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yODItQ09ORklHX1FTRU1JX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI4Nz1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoyODg6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTI4OS1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yODY9Q09ORklHX0xYVF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzoyODc6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjg4LUNPTkZJR19RU0VNSV9QSFk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc9MjcxPUNPTkZJR19MWFRfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzoyNzI6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZy0yNzMtQ09ORklHX1FTRU1JX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9MjI1PUNPTkZJR19MWFRfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc6MjI2OkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTIyNy1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvbmlvczIvY29uZmlncy8xMG01MF9kZWZjb25maWc9NDc9Q09ORklHX0FMVEVSQV9UU0U9eVxcbmFyY2gvbmlvczIvY29uZmlncy8xMG01MF9kZWZjb25maWc6NDg6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL25pb3MyL2NvbmZpZ3MvMTBtNTBfZGVmY29uZmlnLTQ5LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZz01MD1DT05GSUdfQUxURVJBX1RTRT15XFxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZzo1MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvbmlvczIvY29uZmlncy8zYzEyMF9kZWZjb25maWctNTItIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTEzOT1DT05GSUdfTFNJX0VUMTAxMUNfUEhZPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE0MDpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctMTQxLUNPTkZJR19OQVRJT05BTF9QSFk9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9tb3Rpb25wcm9fZGVmY29uZmlnPTQ4PUNPTkZJR19MWFRfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWc6NDk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWctNTAtQ09ORklHX1FTRU1JX1BIWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L2ttZXRlcjFfZGVmY29uZmlnPTQyPUNPTkZJR19VQ0NfR0VUSD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZzo0MzpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzgzeHgva21ldGVyMV9kZWZjb25maWctNDQtQ09ORklHX1BQUD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZz0zOD1DT05GSUdfR0lBTkZBUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9tcGM4Mzd4X3JkYl9kZWZjb25maWc6Mzk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZy00MC1DT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZz01NT1DT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZy01OC0jIENPTkZJR19JTlBVVF9NT1VTRSBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC1ody5jb25maWc6NTk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZy02MC1DT05GSUdfTURJT19CVVNfTVVYX0dQSU89eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZz00MD1DT05GSUdfR0lBTkZBUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZzo0MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgva3NpODU2MF9kZWZjb25maWctNDItIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZz0zMz1DT05GSUdfR0lBTkZBUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZzozNDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvcHBhODU0OF9kZWZjb25maWctMzUtQ09ORklHX1NFUklBTF84MjUwPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnPTQzPUNPTkZJR19HSUFORkFSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3NvY3JhdGVzX2RlZmNvbmZpZzo0NDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnLTQ1LUNPTkZJR19JTlBVVF9FVkRFVj15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnPTM5PUNPTkZJR19HSUFORkFSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnOjQwOkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZy00MS1DT05GSUdfSU5QVVRfSk9ZREVWPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnPTYzPUNPTkZJR19MWFRfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZzo2NDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnLTY1LUNPTkZJR19OQVRJT05BTF9QSFk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWc9NTY9Q09ORklHX0lDUExVU19QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnOjU3OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWctNTgtQ09ORklHX1ZJVEVTU0VfUEhZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc9ODQ9Q09ORklHX1BBU0VNSV9NQUM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc6ODU6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnLTg2LUNPTkZJR19JTlBVVF9KT1lERVY9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTIyNj1DT05GSUdfQlJPQURDT01fUEhZPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MjI3OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTIyOC1DT05GSUdfUFBQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MTA0PUNPTkZJR19CUk9BRENPTV9QSFk9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6MTA1OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZy0xMDYtQ09ORklHX1BQUD1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTQ2ND1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo0NjU6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTQ2Ni1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MTYyPUNPTkZJR19QSFlMSUI9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTYzOkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZy0xNjQtQ09ORklHX0RBVklDT01fUEhZPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz02MD1DT05GSUdfUEhZTElCPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWc6NjE6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctNjItQ09ORklHX05FVF9FVEhFUk5FVD15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZz02ND1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWc6Nzc6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZy03OC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9NjI9Q09ORklHX05FVERFVklDRVM9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy03NC0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZzo3NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctNzYtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZz02Nj1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWc6Nzc6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZy03OC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZz02Nj1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctNzgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZzo3OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZy04MC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZz01Nj1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctNjgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZzo2OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy03MC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYz0xNTUxPW12NjQzeHhfZXRoX3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjItXFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212NjQzeHhfZXRoLmM6MTU2MzpcXHRcXHRuZXRkZXZfaW5mbyhkZXYsIFxcXCJUaGUgUEhZIGRvZXMgbm90IHN1cHBvcnQgc2V0X3dvbCwgd2FzIENPTkZJR19NQVJWRUxMX1BIWSBlbmFibGVkP1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjQtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT03MT1vYmotJChDT05GSUdfTUFSVkVMTF8xMEdfUEhZKVxcdCs9IG1hcnZlbGwxMGcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfTUFSVkVMTF9QSFkpXFx0Kz0gbWFydmVsbC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTczLW9iai0kKENPTkZJR19NQVJWRUxMXzg4UTJYWFhfUEhZKVxcdCs9IG1hcnZlbGwtODhxMnh4eC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5OTA9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk5Ni1cXHRcXHRcXHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVxcdTAwM2VwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzk5NzpcXHRcXHRwaHlsaW5rX2VycihwbCwgXFxcIkRyaXZlcnMgd2hpY2ggaGFuZGxlIGtub3duIGNvbW1vbiBjYXNlczogQ09ORklHX0JDTTg0ODgxX1BIWSwgQ09ORklHX01BUlZFTExfUEhZXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5OTgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI0OjU2LjgwMjMwMTE4OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQyNzc2NzA4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIGBsZWRfcG9sYXJpdHlfc2V0YCBDYWxscyB3aXRoaW4gdGhlIEtlcm5lbCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gb24gYSBQSFkgZGV2aWNlLiBUaW1lIHRvIGdldCBkb3duIHRvIGJ1c2luZXNzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkbyBhIGRpcmVjdCBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuIFNvLCBJJ2xsIHVzZSB0aGUgc2VhcmNoIHRvb2wgYW5kIGxvb2sgZm9yIHRoZSBmdW5jdGlvbidzIG5hbWUsIGBsZWRfcG9sYXJpdHlfc2V0YC4gVGhhdCBzaG91bGQgcmV2ZWFsIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gVGhpcyBraW5kIG9mIHN5c3RlbWF0aWMgYXBwcm9hY2ggaXMgdGhlIG1vc3QgZWZmaWNpZW50IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgdXRpbGl6ZWQuIExldCdzIHNlZSB3aGF0IHRoZSBzZWFyY2ggcmVzdWx0cyB0dXJuIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTc2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDEuMDc5OTc0NjQzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTQ1NDc5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGVkX3BvbGFyaXR5X3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTQ1Mz1zdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NzktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo0ODA6c3RhdGljIGludCBhbjg4MDFyX2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNDgxLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz0xMTIyPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhaXJvaGFfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTExNDMtXFx0LmxlZF9od19jb250cm9sX2dldFxcdD0gYW44ODAxcl9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMTQ0OlxcdC5sZWRfcG9sYXJpdHlfc2V0XFx0PSBhbjg4MDFyX2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMTQ1LX0gfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYS5oPTI1ND1pbnQgYXFyX3BoeV9sZWRfYWN0aXZlX2xvd19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhLmg6MjU1OmludCBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYS5oLTI1Ni1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2xlZHMuYz0xMjA9aW50IGFxcl9waHlfbGVkX2FjdGl2ZV9sb3dfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jLTEyNi1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jOjEyNzppbnQgYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgdW5zaWduZWQgbG9uZyBtb2RlcylcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jLTEyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTExODE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFxcl9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI0MC1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMjQxOlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI0Mi1cXHQuaW5iYW5kX2NhcHNcXHQ9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjY3LVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyNjg6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjY5LVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyOTQtXFx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTI5NTpcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyOTYtXFx0LmluYmFuZF9jYXBzXFx0PSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMyMS1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzIyOlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMyMy1cXHQuaW5iYW5kX2NhcHNcXHQ9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzU3LVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzNTg6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzU5LVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjUtXFx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQyNjpcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjctXFx0LmluYmFuZF9jYXBzXFx0PSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ1MS1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDUyOlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ1My1cXHQuaW5iYW5kX2NhcHMgICAgPSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ3OC1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDc5OlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ4MC1cXHQuaW5iYW5kX2NhcHMgICAgPSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUwNS1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTA2OlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUwNy1cXHQuaW5iYW5kX2NhcHNcXHQ9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTMyLVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE1MzM6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTM0LVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NTgtXFx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTU1OTpcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NjAtXFx0LmluYmFuZF9jYXBzXFx0PSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9ODI2PXN0YXRpYyBpbnQgYXMyMXh4eF9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTg0Ni1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjg0NzpzdGF0aWMgaW50IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy04NDgtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTk0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXMyMXh4eF9kcml2ZXJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk2Ni1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo5Njc6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NjgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTc4LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk3OTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk4MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05OTAtXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTkxOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTkyLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMDItXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAwMzpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMDQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAxNC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDE1OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAxNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDI2LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwMjc6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDI4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMzgtXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAzOTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNDAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA1MC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDUxOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA1Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDYyLVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwNjM6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNzQtXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTA3NTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNzYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MTA4Nj1zdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTQwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE0MTpzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTQyLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMTgzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODY3X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjE1LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyMTY6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjE3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTM4Nj1zdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy00MzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjQzMTpzdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNDMyLVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM9OTM5PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzdGQ1MTBfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtOTY0LVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzdGQ1MTBfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo5NjU6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzdGQ1MTBfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtOTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz00OTA9c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy01MjctXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo1Mjg6c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy01MjktXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9NTg0PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciB4d2F5X2dwaHlbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjAwLVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjAxOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MDItXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjE5LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjIwOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MjEtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjM4LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjM5OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NDAtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjU3LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjU4OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NTktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjc1LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Njc2OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NzctXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjkzLVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Njk0OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02OTUtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzExLVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzEyOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03MTMtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzI5LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzMwOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03MzEtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzQ3LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzQ4OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NDktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzY1LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzY2OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NjctXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM9MzU3ND1zdGF0aWMgaW50IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzU5MS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjM1OTI6c3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM1OTMtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYz0zNzA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzg3NC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM6Mzg3NTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zODc2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM5ODktXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjM5OTA6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzk5MS1cXHRcXHQuYXR0YWNoX21paV9wb3J0ID0gbTg4ZTE1MTBfYXR0YWNoX21paV9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDMwPXN0YXRpYyBpbnQgYW43NTgxX3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNDQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ1MDpzdGF0aWMgaW50IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNDUxLVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDk1PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTM5LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1NDA6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTQxLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTItXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU1MzpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2NC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNTY1OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYW43NTgxX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYz05ODI9c3RhdGljIGludCBncHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMDI0LVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTAyNTpzdGF0aWMgaW50IGdweV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEwMjYtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBtb2RlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM9MTEwMj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZ3B5X2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTEyNC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExMjU6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExMjYtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTE1MS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExNTI6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExNTMtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTE3Ny1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExNzg6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExNzktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTIwNC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyMDU6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMDYtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTIzMC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyMzE6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMzItXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI1Ny1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyNTg6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyNTktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI4My1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyODQ6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyODUtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTMxMC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEzMTE6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEzMTItXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTMzNi1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEzMzc6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEzMzgtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQyNS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0MjY6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0MjctXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQ1MS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0NTI6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NTMtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQ3NS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0NzY6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NzctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzM3OT1zdGF0aWMgaW50IG9mX3BoeV9sZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQxNS1cXHRcXHQvKiBSZXR1cm4gZXJyb3IgaWYgYXNrZWQgdG8gc2V0IHBvbGFyaXR5IG1vZGVzIGJ1dCBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDE2OlxcdFxcdGlmICghcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWxlZF9wb2xhcml0eV9zZXQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE3LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQxOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM0MTk6XFx0XFx0ZXJyID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWxlZF9wb2xhcml0eV9zZXQocGh5ZGV2LCBpbmRleCwgbW9kZXMpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQyMC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTU4MT1zdGF0aWMgaW50IHFjYTgwOHhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTMtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU5NDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5NS1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjczLVxcdC5sZWRfaHdfY29udHJvbF9nZXRcXHQ9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzQ6XFx0LmxlZF9wb2xhcml0eV9zZXRcXHQ9IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjc1LVxcdC51cGRhdGVfc3RhdHNcXHRcXHQ9IHFjYTgwOHhfdXBkYXRlX3N0YXRzLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ4PXN0cnVjdCBwaHlfZHJpdmVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTUyOC1cXHQvKipcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1Mjk6XFx0ICogQGxlZF9wb2xhcml0eV9zZXQ6IFNldCB0aGUgTEVEIHBvbGFyaXR5IG1vZGVzXFxuaW5jbHVkZS9saW51eC9waHkuaC0xNTMwLVxcdCAqIEBkZXY6IFBIWSBkZXZpY2Ugd2hpY2ggaGFzIHRoZSBMRURcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTUzOC1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1Mzk6XFx0aW50ICgqbGVkX3BvbGFyaXR5X3NldCkoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgaW50IGluZGV4LFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTU0MC1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG1vZGVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDIuODk0NTI5MDE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTk3ODAxMDA2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBQSFkgRGV2aWNlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGUgcGh5c2ljYWwgbGF5ZXIgZGV2aWNlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBvZl9waHlfbGVkYCBwcm9wZXJ0eSBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBmaWxlLiBUaGlzIGxvb2tzIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoYXQgZmlsZSBhbmQgZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBzZWUuLi4gYmFzZWQgb24gdGhlIGNvbnRleHQsIEkgZXhwZWN0IEkgc2hvdWxkIGJlIGxvb2tpbmcgYXJvdW5kIGxpbmUgMzM3OS4gVGhhdCBsaWtlbHkgbWFya3MgdGhlIHNwb3Qgd2hlcmUgdGhlIGRldmljZSB0cmVlIChEVCkgaW5mb3JtYXRpb24gaXMgcGFyc2VkIGFuZCB0aGlzIHBhcnRpY3VsYXIgcHJvcGVydHkgaXMgYmVpbmcgaW50ZXJwcmV0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBgb2ZfcGh5X2xlZGAgaXMgYmVpbmcgdXNlZCwgd2hhdCB0aGUgZHJpdmVyIGlzIGV4cGVjdGluZyBmcm9tIHRoZSBEVCBiaW5kaW5nLCBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCB3aXRoIHRoZSBMRUQgY29udHJvbCBtZWNoYW5pc20gd2l0aGluIHRoZSBicm9hZGVyIFBIWSBpbml0aWFsaXphdGlvbi4gVGhpcyBzZWN0aW9uIHdpbGwgaG9wZWZ1bGx5IGlsbHVtaW5hdGUgaG93IHRoZSBzeXN0ZW0gY29uZmlndXJlcyBMRURzIGFjY29yZGluZyB0byB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxOTQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNTowNC44NzI1NDE0NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzcwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzcwOlxcdHtcXG4zMzcxOlxcdFxcdHN0cnVjdCBwaHlfbGVkICpwaHlsZWQsICp0bXA7XFxuMzM3MjpcXHRcXG4zMzczOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwaHlsZWQsIHRtcCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlbGVkcywgbGlzdCkge1xcbjMzNzQ6XFx0XFx0XFx0bGVkX2NsYXNzZGV2X3VucmVnaXN0ZXIoXFx1MDAyNnBoeWxlZC1cXHUwMDNlbGVkX2NkZXYpO1xcbjMzNzU6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnBoeWxlZC1cXHUwMDNlbGlzdCk7XFxuMzM3NjpcXHRcXHR9XFxuMzM3NzpcXHR9XFxuMzM3ODpcXHRcXG4zMzc5OlxcdHN0YXRpYyBpbnQgb2ZfcGh5X2xlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbjMzODA6XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpsZWQpXFxuMzM4MTpcXHR7XFxuMzM4MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldjtcXG4zMzgzOlxcdFxcdHN0cnVjdCBsZWRfaW5pdF9kYXRhIGluaXRfZGF0YSA9IHt9O1xcbjMzODQ6XFx0XFx0c3RydWN0IGxlZF9jbGFzc2RldiAqY2RldjtcXG4zMzg1OlxcdFxcdHVuc2lnbmVkIGxvbmcgbW9kZXMgPSAwO1xcbjMzODY6XFx0XFx0c3RydWN0IHBoeV9sZWQgKnBoeWxlZDtcXG4zMzg3OlxcdFxcdHUzMiBpbmRleDtcXG4zMzg4OlxcdFxcdGludCBlcnI7XFxuMzM4OTpcXHRcXG4zMzkwOlxcdFxcdHBoeWxlZCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcGh5bGVkKSwgR0ZQX0tFUk5FTCk7XFxuMzM5MTpcXHRcXHRpZiAoIXBoeWxlZClcXG4zMzkyOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjMzOTM6XFx0XFxuMzM5NDpcXHRcXHRjZGV2ID0gXFx1MDAyNnBoeWxlZC1cXHUwMDNlbGVkX2NkZXY7XFxuMzM5NTpcXHRcXHRwaHlsZWQtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4zMzk2OlxcdFxcbjMzOTc6XFx0XFx0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobGVkLCBcXFwicmVnXFxcIiwgXFx1MDAyNmluZGV4KTtcXG4zMzk4OlxcdFxcdGlmIChlcnIpXFxuMzM5OTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM0MDA6XFx0XFx0aWYgKGluZGV4IFxcdTAwM2UgVThfTUFYKVxcbjM0MDE6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzQwMjpcXHRcXG4zNDAzOlxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobGVkLCBcXFwiYWN0aXZlLWhpZ2hcXFwiKSlcXG4zNDA0OlxcdFxcdFxcdHNldF9iaXQoUEhZX0xFRF9BQ1RJVkVfSElHSCwgXFx1MDAyNm1vZGVzKTtcXG4zNDA1OlxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobGVkLCBcXFwiYWN0aXZlLWxvd1xcXCIpKVxcbjM0MDY6XFx0XFx0XFx0c2V0X2JpdChQSFlfTEVEX0FDVElWRV9MT1csIFxcdTAwMjZtb2Rlcyk7XFxuMzQwNzpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKGxlZCwgXFxcImluYWN0aXZlLWhpZ2gtaW1wZWRhbmNlXFxcIikpXFxuMzQwODpcXHRcXHRcXHRzZXRfYml0KFBIWV9MRURfSU5BQ1RJVkVfSElHSF9JTVBFREFOQ0UsIFxcdTAwMjZtb2Rlcyk7XFxuMzQwOTpcXHRcXG4zNDEwOlxcdFxcdGlmIChXQVJOX09OKG1vZGVzIFxcdTAwMjYgQklUKFBIWV9MRURfQUNUSVZFX0xPVykgXFx1MDAyNlxcdTAwMjZcXG4zNDExOlxcdFxcdFxcdCAgICBtb2RlcyBcXHUwMDI2IEJJVChQSFlfTEVEX0FDVElWRV9ISUdIKSkpXFxuMzQxMjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNDEzOlxcdFxcbjM0MTQ6XFx0XFx0aWYgKG1vZGVzKSB7XFxuMzQxNTpcXHRcXHRcXHQvKiBSZXR1cm4gZXJyb3IgaWYgYXNrZWQgdG8gc2V0IHBvbGFyaXR5IG1vZGVzIGJ1dCBub3Qgc3VwcG9ydGVkICovXFxuMzQxNjpcXHRcXHRcXHRpZiAoIXBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VsZWRfcG9sYXJpdHlfc2V0KVxcbjM0MTc6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzQxODpcXHRcXG4zNDE5OlxcdFxcdFxcdGVyciA9IHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VsZWRfcG9sYXJpdHlfc2V0KHBoeWRldiwgaW5kZXgsIG1vZGVzKTtcXG4zNDIwOlxcdFxcdFxcdGlmIChlcnIpXFxuMzQyMTpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM0MjI6XFx0XFx0fVxcbjM0MjM6XFx0XFxuMzQyNDpcXHRcXHRwaHlsZWQtXFx1MDAzZWluZGV4ID0gaW5kZXg7XFxuMzQyNTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWxlZF9icmlnaHRuZXNzX3NldClcXG4zNDI2OlxcdFxcdFxcdGNkZXYtXFx1MDAzZWJyaWdodG5lc3Nfc2V0X2Jsb2NraW5nID0gcGh5X2xlZF9zZXRfYnJpZ2h0bmVzcztcXG4zNDI3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGVkX2JsaW5rX3NldClcXG4zNDI4OlxcdFxcdFxcdGNkZXYtXFx1MDAzZWJsaW5rX3NldCA9IHBoeV9sZWRfYmxpbmtfc2V0O1xcbjM0Mjk6XFx0XFxuMzQzMDpcXHQjaWZkZWYgQ09ORklHX0xFRFNfVFJJR0dFUlNcXG4zNDMxOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGVkX2h3X2lzX3N1cHBvcnRlZCBcXHUwMDI2XFx1MDAyNlxcbjM0MzI6XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VsZWRfaHdfY29udHJvbF9zZXQgXFx1MDAyNlxcdTAwMjZcXG4zNDMzOlxcdFxcdCAgICBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGVkX2h3X2NvbnRyb2xfZ2V0KSB7XFxuMzQzNDpcXHRcXHRcXHRjZGV2LVxcdTAwM2Vod19jb250cm9sX2lzX3N1cHBvcnRlZCA9IHBoeV9sZWRfaHdfaXNfc3VwcG9ydGVkO1xcbjM0MzU6XFx0XFx0XFx0Y2Rldi1cXHUwMDNlaHdfY29udHJvbF9zZXQgPSBwaHlfbGVkX2h3X2NvbnRyb2xfc2V0O1xcbjM0MzY6XFx0XFx0XFx0Y2Rldi1cXHUwMDNlaHdfY29udHJvbF9nZXQgPSBwaHlfbGVkX2h3X2NvbnRyb2xfZ2V0O1xcbjM0Mzc6XFx0XFx0XFx0Y2Rldi1cXHUwMDNlaHdfY29udHJvbF90cmlnZ2VyID0gXFxcIm5ldGRldlxcXCI7XFxuMzQzODpcXHRcXHR9XFxuMzQzOTpcXHRcXG4zNDQwOlxcdFxcdGNkZXYtXFx1MDAzZWh3X2NvbnRyb2xfZ2V0X2RldmljZSA9IHBoeV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlO1xcbjM0NDE6XFx0I2VuZGlmXFxuMzQ0MjpcXHRcXHRjZGV2LVxcdTAwM2VtYXhfYnJpZ2h0bmVzcyA9IDE7XFxuMzQ0MzpcXHRcXHRpbml0X2RhdGEuZGV2aWNlbmFtZSA9IGRldl9uYW1lKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4zNDQ0OlxcdFxcdGluaXRfZGF0YS5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKGxlZCk7XFxuMzQ0NTpcXHRcXHRpbml0X2RhdGEuZGV2bmFtZV9tYW5kYXRvcnkgPSB0cnVlO1xcbjM0NDY6XFx0XFxuMzQ0NzpcXHRcXHRlcnIgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0KGRldiwgY2RldiwgXFx1MDAyNmluaXRfZGF0YSk7XFxuMzQ0ODpcXHRcXHRpZiAoZXJyKVxcbjM0NDk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDQuODcyNzk5NzE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY1MTAwNjg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqT0YgUEhZIExFRCBJbml0aWFsaXphdGlvbiAtIERpZ2dpbmcgSW4qKlxuXG5SaWdodCwgYG9mX3BoeV9sZWRgIGlzIGZpcmluZyB1cCBkdXJpbmcgdGhlIERldmljZSBUcmVlIHByb2JpbmcgcGhhc2UsIHNwZWNpZmljYWxseSBmb3IgUEhZIExFRHMuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIGd1dCByZWFjdGlvbiBpcyB0byBpbW1lZGlhdGVseSB0cmFjZSB0aGUgY2FsbCBzdGFjayBvZiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IG9mIGhvdyB0aGlzIGlzIGFsbCB3aXJlZCB1cC4gVW5kZXJzdGFuZGluZyB0aGUgRGV2aWNlIFRyZWUgYmluZGluZ3MgaXMgY3J1Y2lhbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgZXhlY3V0aW9uIHBhdGguIFRpbWUgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgb2ZfcGh5X2xlZGAgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29udmVudGlvbnM/IFdoYXQgc3RydWN0dXJlcyBhcmUgYmVpbmcgcGFzc2VkPyBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTgyNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDYuNTIzODE3MzY3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc4MDIwNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX3BoeV9sZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zMzY5PXN0YXRpYyB2b2lkIHBoeV9sZWRzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzM3OC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjMzNzk6c3RhdGljIGludCBvZl9waHlfbGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMzgwLVxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDU1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzQ1NjpzdGF0aWMgaW50IG9mX3BoeV9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ4Mi1cXHRmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQobGVkcywgbGVkKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDgzOlxcdFxcdGVyciA9IG9mX3BoeV9sZWQocGh5ZGV2LCBsZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ4NC1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM3NDM9c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODYxLVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4NjI6XFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NjMtXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDguMjAxODUzNDMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYyNTcwNjA3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIGBsZWRfcG9sYXJpdHlfc2V0YCBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgb2ZfcGh5X2xlZGAgZnVuY3Rpb24gYmVjYXVzZSBzb21ldGhpbmcgZmVlbHMgb2ZmLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaXQncyBvbmx5IGludm9rZWQgZHVyaW5nIGRldmljZSBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBwaHlfcHJvYmVgLCBhbmQgb25seSB3aGVuIGEgYGxlZHNgIGRldmljZSB0cmVlIG5vZGUgaXMgcHJlc2VudC4gIEJ1dCBJIG5lZWQgdG8gYmUgKnN1cmUqLiAgXG5cbkZpcnN0LCBJIG5lZWQgdG8ga25vdyBpZiBgbGVkX3BvbGFyaXR5X3NldGAgaXMgY2FsbGVkICphbnl3aGVyZSogZWxzZSBpbiB0aGUga2VybmVsLiAgSXQgc2VlbXMgdW5saWtlbHksIGJ1dCBJJ20gbm90IGdvaW5nIHRvIGFzc3VtZSBhbnl0aGluZy4gU28sIEkgcmFuIGEgZ3JlcCB0byBmaW5kIGV2ZXJ5IGluc3RhbmNlLlxuXG5UaGUgcmVzdWx0cyBhcmUgcHJldHR5IGNvbmNsdXNpdmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIGEgKmxvdCogb2YgZHJpdmVycyBjYWxsaW5nIGEgYCpfbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24uIFRoZSBncmVwIHNob3dzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgdXNlZCBpbnNpZGUgZWFjaCBwaHkgZHJpdmVyOiBgZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuY2AsIGBkcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jYCwgYGRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmNgLCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY2AsIGBkcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmNgLCBgZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuY2AsIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCwgYGRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNgLCBgZHJpdmVycy9uZXQvcGh5L214bC1ncHkuY2AsIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgLiBBbmQgYSBkZWZpbml0aW9uIGZvciBpdCBpbiBgaW5jbHVkZS9saW51eC9waHkuaGAgcGx1cyBhIGNhbGwgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLlxuXG5BaGEhIGBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWxlZF9wb2xhcml0eV9zZXRgIGlzICpvbmx5KiBjYWxsZWQgZnJvbSBgb2ZfcGh5X2xlZGAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBBbmQgYG9mX3BoeV9sZWRgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSBgb2ZfcGh5X2xlZHMoKWAuIEFuZCBgb2ZfcGh5X2xlZHNgIGlzIG9ubHkgY2FsbGVkIGJ5IGBwaHlfcHJvYmUoKWAuICBUaGlzIGNvbmZpcm1zIG15IHN1c3BpY2lvbiDigJMgaXQncyBhbGwgcGFydCBvZiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHNlcXVlbmNlLiAgVGhlIGNvZGUgaW4gYHBoeV9wcm9iZSgpYCBjaGVja3MgYENPTkZJR19QSFlMSUJfTEVEU2AgYW5kIHRoZW4gYXR0ZW1wdHMgdG8gdXNlIGBvZl9waHlfbGVkc2AgdG8gaW5pdGlhbGl6ZSBsZWRzLlxuXG5CdXQgd2FpdCwgdGhpcyBoYXMgbWUgdGhpbmtpbmcgYWJvdXQgaG93IE1hcnZlbGwgUEhZcyBhcmUgYWN0dWFsbHkgdXNlZCBpbiB0aGUgcmVhbCB3b3JsZC4uLiBMZXQncyB1c2UgdGhlIE1hcnZlbGwgZXhhbXBsZSB0byB0ZXN0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY2hhaW4gaXMgcmVhY2hhYmxlLiBEb2VzIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgaXRzZWxmIGhhdmUgYW55IGV4dGVybmFsIHdheXMgdG8gYmUgdXNlZD9cblxuU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgUUVNVS4gIEFyZSB0aGVyZSBhbnkgdmlydHVhbCBNRElPIG9yIE1hcnZlbGwgUEhZcyBlbXVsYXRlZCB0aGVyZT8gIEknbSBydW5uaW5nIGEgbG90IG9mIHRlc3Rpbmcgd2l0aCBRRU1VLCBzbyBpdCdzIGEgcGVydGluZW50IHF1ZXN0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGF2YWlsYWJsZS4gIE9uIGFtZDY0ICh3aGljaCBpcyBteSB0YXJnZXQgYXJjaCkgaW4gUUVNVSwgdGhlIHN0YW5kYXJkIGVtdWxhdGVkIE5JQ3MgYXJlIHRoaW5ncyBsaWtlIEludGVsIGUxMDAwLCBlMTAwMGUsIGlnYiwgdmlydGlvLW5ldCwgcnRsODEzOSwgYW5kIGEgZmV3IG90aGVycy4gIE5vbmUgb2YgdGhlbSAoYXMgZmFyIGFzIEkga25vdykgaGF2ZSBhIHBoeWxpYiBQSFkgYXR0YWNoZWQgdmlhIGFuIE1ESU8gYnVzIG9yIGV2ZW4gYW4gZXh0ZXJuYWwgUEhZLlxuXG5Db3VsZCBNYXJ2ZWxsIFBIWSBiZSBpbnN0YW50aWF0ZWQgdmlhIHN5c2ZzLCBvciBVU0IsIG9yIHNvbWUgc29ydCBvZiBtb2NrIG9yIHZpcnR1YWwgTURJTyBzZXR1cD8gSSBuZWVkIHRvIGxvb2sgaW50byB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb2YgdGhvc2Ugc2NlbmFyaW9zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuICBUaGlzIGNvdWxkIGJlIHJlYWxseSBjcml0aWNhbCBmb3IgZGVidWdnaW5nLCBiZWNhdXNlIGlmIHRoZXJlJ3MgYSBkaXNjb25uZWN0IGJldHdlZW4gd2hhdCB0aGUga2VybmVsICp0aGlua3MqIGlzIGhhcHBlbmluZyBhbmQgd2hhdCdzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCwgaXQgY291bGQgY2F1c2Ugc3RyYW5nZSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDcwLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjE0LjQ1ODkxNzUzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA5MTY0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcnZlbGxfZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTM2OTQ9c3RhdGljIGludCBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM3MDUtXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozNzA2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM3MDctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy00MjE3LVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM6NDIxODptb2R1bGVfcGh5X2RyaXZlcihtYXJ2ZWxsX2RyaXZlcnMpO1xcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtNDIxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MTYuMDY4MDkxMzc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM4MDc5NTExNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlciBBdHRhY2htZW50IFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW9kdWxlX3BoeV9kcml2ZXIobWFydmVsbF9kcml2ZXJzKTtgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBleGFjdGx5IGRvZXMgdGhpcyBQSFkgZHJpdmVyIGdldCBsaW5rZWQgd2l0aCBhIFBIWSBkZXZpY2U/IFRoZSBwcm9jZXNzIHNlZW1zIHRvIGJlIHRoaXM6IHRoZSBNRElPIGJ1cywgZHVyaW5nIGl0cyBwcm9iaW5nIHBoYXNlLCByZWFkcyB0aGUgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCByZWdpc3RlcnMgZnJvbSB0aGUgUEhZLiBJdCB0aGVuIGNoZWNrcyBpZiB0aGUgUEhZIElEIG1hdGNoZXMgYW55IG9mIHRoZSBgbWFydmVsbF9kcml2ZXJzW2ldLnBoeV9pZGAsIGNvbnNpZGVyaW5nIHRoZSBgcGh5X2lkX21hc2tgLiBJZiB0aGVyZSdzIGEgbWF0Y2gsIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCBwcmVzdW1hYmx5IGBwaHlfcHJvYmUoKWAsIGlzIGNhbGxlZC5cblxuTm93LCBkdXJpbmcgdGhpcyBgcGh5X3Byb2JlKClgIEkgc2VlIHRoYXQgYG9mX3BoeV9sZWRzKClgIGlzIGJlaW5nIGNhbGxlZC4gQnV0IGhvbGQgb24sIHRoaXMgYnJpbmdzIHVwIGFub3RoZXIgY29uY2Vybi4gV2hhdCdzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIGRldmljZSBub2RlIGluIHRoZSBmaXJzdCBwbGFjZSBvbiBhbiBhbWQ2NCBvciB4ODZfNjQgc3lzdGVtPyBNeSBleHBlcmllbmNlIGlzIHRoYXQgeDg2IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGRvbid0IHV0aWxpemUgZGV2aWNlIHRyZWUgZm9yIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLCBleGNlcHQgcGVyaGFwcyBpbiBzb21lIG5pY2hlIGVtYmVkZGVkIHg4NiBib2FyZHMgb3Igc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgaW52b2x2aW5nIGRldmljZSB0cmVlIG92ZXJsYXlzLlxuXG5Db3VsZCBpdCBiZSB0aGF0IE9GIG5vZGVzIGFyZSBsb2FkZWQgZHluYW1pY2FsbHkgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgcGFydGljdWxhcmx5IHdpdGggYENPTkZJR19PRl9PVkVSTEFZYD8gRXZlbiBpZiB0aGF0IHdlcmUgcG9zc2libGUgdmlhIGNvbmZpZ2ZzLCB3aGljaCBpcyBhbHJlYWR5IGEgc3RyZXRjaC4uLlxuXG5IZXJlJ3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhY3R1YWxseSBhICpwaHlzaWNhbCogTWFydmVsbCA4OEUxMzE4UyBvciA4OEUxNTEwIFBIWSBwcmVzZW50IG9uIHRoaXMgYW1kNjQgc3lzdGVtLCBlc3BlY2lhbGx5IGluIGEgUUVNVSBlbnZpcm9ubWVudD8gTm8sIEknbSBwcmV0dHkgc3VyZSBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSB0aG9zZSBzcGVjaWZpYyBNYXJ2ZWxsIFBIWXMuXG5cbk9rYXksIHNvIG1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgaXMgYSB1c2VyLW1vZGUgdGhpbmc/IFBlcmhhcHMgaXQncyBiZWVuIGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2U/IExldCdzIGNoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSBNRElPIGJ1cyBjYW4gYmUgY3JlYXRlZCBieSBhIHVzZXJzcGFjZSBwcm9ncmFtLCBwZXJoYXBzIHRocm91Z2ggbmV0bGluay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyOTAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MTkuODc2MDQ1Mzk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc3MTExNjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9fYnVzX2NsYXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTIzNj1fX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfc3RhdGlzdGljcyk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM3LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzODpjb25zdCBzdHJ1Y3QgY2xhc3MgbWRpb19idXNfY2xhc3MgPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM5LVxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01ODAtXFx0YnVzLVxcdTAwM2VkZXYucGFyZW50ID0gYnVzLVxcdTAwM2VwYXJlbnQ7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTgxOlxcdGJ1cy1cXHUwMDNlZGV2LmNsYXNzID0gXFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU4Mi1cXHRidXMtXFx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NzI3PXN0cnVjdCBtaWlfYnVzICptZGlvX2ZpbmRfYnVzKGNvbnN0IGNoYXIgKm1kaW9fbmFtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTczMC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo3MzE6XFx0ZCA9IGNsYXNzX2ZpbmRfZGV2aWNlX2J5X25hbWUoXFx1MDAyNm1kaW9fYnVzX2NsYXNzLCBtZGlvX25hbWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTczMi1cXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NzUwPXN0cnVjdCBtaWlfYnVzICpvZl9tZGlvX2ZpbmRfYnVzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19idXNfbnApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzU3OlxcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFxcdTAwMjZtZGlvX2J1c19jbGFzcywgbWRpb19idXNfbnApO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1OC1cXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz00MDM4PXN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwNDEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo0MDQyOlxcdHJjID0gY2xhc3NfcmVnaXN0ZXIoXFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwNDMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDc5LWVycl9jbGFzczpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjQwODA6XFx0Y2xhc3NfdW5yZWdpc3RlcihcXHUwMDI2bWRpb19idXNfY2xhc3MpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NDA4NT1zdGF0aWMgdm9pZCBfX2V4aXQgcGh5X2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA5My1cXHRidXNfdW5yZWdpc3RlcihcXHUwMDI2bWRpb19idXNfdHlwZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo0MDk0OlxcdGNsYXNzX3VucmVnaXN0ZXIoXFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwOTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oPTEyPWV4dGVybiBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBjbGFzcyBtZGlvX2J1c19jbGFzcztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjIyLjM1MzE2NTg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjkwMzQwNzkwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgTWFydmVsbCBFdGhlcm5ldCBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIE1hcnZlbGwgRXRoZXJuZXQgZHJpdmVycyBhcmUgc3RydWN0dXJlZC4gVGhlIGluaXRpYWwgcXVlc3Rpb24gaXMgXCJXaGljaCBFdGhlcm5ldCBkcml2ZXJzIG91dCB0aGVyZSBpbiB0aGUga2VybmVsIHV0aWxpemUgYG1hcnZlbGwuY2A/XCIuIFRoYXQncyB0aGUgY29yZSBwb2ludCBvZiB0aGUgaW52ZXN0aWdhdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBDT05GSUdfTUFSVkVMTF9QSFlgIG9wdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucyBvZiB0aGUgTWFydmVsbCBQSFkgc3VwcG9ydCBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIGl04oCZbGwgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxpbmtlZC4gVWx0aW1hdGVseSwgdGhpcyB3aWxsIHJldmVhbCB3aGF0IGNvbXBvbmVudHMgcmVseSBvbiB0aGUgYG1hcnZlbGwuY2AgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5NjgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNTozMS4zODcyNDgwMzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTY0MzE3OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BUlZFTExfUEhZXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTI3Mz1jb25maWcgTFNJX0VUMTAxMUNfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yNzctXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Mjc4OmNvbmZpZyBNQVJWRUxMX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTI3OS1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBBbGFza2EgUEhZc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MzMuMDAzNjg2NDA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3NjY5NzMyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBQSFkgS2NvbmZpZyBGaWxlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGxpbmVzIDI3MCB0aHJvdWdoIDMwMCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYSwgSSdtIGV4cGVjdGluZyB0aGlzIHNlY3Rpb24gdG8gbGlrZWx5IGRlZmluZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIFBIWSBkcml2ZXIgb3IgYSBncm91cCBvZiBkcml2ZXJzLCBwZXJoYXBzIHdpdGggYSBjb21tb24gZmVhdHVyZSBzZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkIHRocm91Z2ggdGhlIGBLY29uZmlnYCBzeXN0ZW0sIGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIFBIWSBjb25maWd1cmF0aW9uLiBBcmUgdGhlcmUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcz8gQXJlIHRoZXJlIGFueSBkZXZpY2Utc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgZW5jb2RlZCBoZXJlPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHBvdGVudGlhbCBjb25mbGljdHMgb3Igb3B0aW1pemF0aW9ucz8gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqQ2hvaWNlIG9wdGlvbnMqKjogQXJlIHdlIHByZXNlbnRlZCB3aXRoIGEgc2VyaWVzIG9mIFBIWSBkcml2ZXIgc2VsZWN0aW9ucz9cbiogICAqKkRlcGVuZGVuY2llcyoqOiBXaGF0IG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIG9wdGlvbnMgYXJlIHJlcXVpcmVkIG9yIGluY29tcGF0aWJsZT9cbiogICAqKlRyaXN0YXRlIE9wdGlvbnMqKjogQXJlIG1vZHVsZXMgY29tcGlsZWQgaW4gb3IgYXMgYnVpbHQtaW4gYmFzZWQgb24gY29uZGl0aW9ucz9cbiogICAqKkRlZmF1bHRzKio6IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgd2h5PyBBbnkgb2J2aW91cyBhcmNoaXRlY3R1cmFsIGRlc2lnbiBjaG9pY2VzIG1hZGUgaGVyZT9cbiogICAqKkRvY3VtZW50YXRpb24gU3RyaW5ncyoqOiBBcmUgdGhlIGhlbHAgdGV4dHMgY2xlYXIgYW5kIGFjY3VyYXRlPyBJJ2xsIGJlIG1lbnRhbGx5IHBhcnNpbmcgdGhlbSwgYXMgSSBtYXkgYmUgbmVlZGluZyB0byByZWZlcmVuY2UgdGhlbSBsYXRlciB0byBleHBsYWluIHRoaXMgY29uZmlndXJhdGlvbiB0byBvdGhlcnMuXG4qICAgKipTeW1ib2wgbmFtZXMqKjogV2hhdCBuYW1pbmcgY29udmVudGlvbnMgYXJlIHVzZWQgYW5kIGFyZSB0aGV5IGNvbnNpc3RlbnQgd2l0aCB3aGF0IEkndmUgc2VlbiBlbHNld2hlcmUuXG5cblRoZSBnb2FsIGlzIHRvIHJhcGlkbHkgZm9ybSBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyB3aXRoaW4gdGhpcyBzZWN0aW9uLCBhbGxvd2luZyBtZSB0byBhbnN3ZXIgYW55IHF1ZXN0aW9ucyBhYm91dCBzdXBwb3J0ZWQgUEhZcywgY29uZmlndXJhdGlvbiBvcHRpb25zLCBvciBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UuIFRoaXMgaXMgZm91bmRhdGlvbmFsIHRvIGFueSBzdWJzZXF1ZW50IFBIWS1yZWxhdGVkIHdvcmsgb3IgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjM1Ljc3MDY2MjU3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzU6XFx0XFx0aGVscFxcbiAyNzY6XFx0XFx0ICBTdXBwb3J0cyB0aGUgTFNJIEVUMTAxMUMgUEhZLlxcbiAyNzc6XFx0XFxuIDI3ODpcXHRjb25maWcgTUFSVkVMTF9QSFlcXG4gMjc5OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIEFsYXNrYSBQSFlzXFxcIlxcbiAyODA6XFx0XFx0aGVscFxcbiAyODE6XFx0XFx0ICBDdXJyZW50bHkgaGFzIGEgZHJpdmVyIGZvciB0aGUgODhFMVhYWFxcbiAyODI6XFx0XFxuIDI4MzpcXHRjb25maWcgTUFSVkVMTF8xMEdfUEhZXFxuIDI4NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBBbGFza2EgMTBHYml0IFBIWXNcXFwiXFxuIDI4NTpcXHRcXHRoZWxwXFxuIDI4NjpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIEFsYXNrYSBNVjg4WDMzMTAgYW5kIGNvbXBhdGlibGUgUEhZcy5cXG4gMjg3OlxcdFxcbiAyODg6XFx0Y29uZmlnIE1BUlZFTExfODhRMlhYWF9QSFlcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4UTJYWFggUEhZXFxcIlxcbiAyOTA6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXFxuIDI5MTpcXHRcXHRoZWxwXFxuIDI5MjpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIDg4UTJYWFggMTAwLzEwMDBCQVNFLVQxIEF1dG9tb3RpdmUgRXRoZXJuZXRcXG4gMjkzOlxcdFxcdCAgUEhZcy5cXG4gMjk0OlxcdFxcbiAyOTU6XFx0Y29uZmlnIE1BUlZFTExfODhYMjIyMl9QSFlcXG4gMjk2OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4WDIyMjIgUEhZXFxcIlxcbiAyOTc6XFx0XFx0aGVscFxcbiAyOTg6XFx0XFx0ICBTdXBwb3J0IGZvciB0aGUgTWFydmVsbCA4OFgyMjIyIER1YWwtcG9ydCBNdWx0aS1zcGVlZCBFdGhlcm5ldFxcbiAyOTk6XFx0XFx0ICBUcmFuc2NlaXZlci5cXG4gMzAwOlxcdFxcbiAzMDE6XFx0Y29uZmlnIE1BWExJTkVBUl9HUEhZXFxuIDMwMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWF4bGluZWFyIEV0aGVybmV0IFBIWXNcXFwiXFxuIDMwMzpcXHRcXHRzZWxlY3QgUE9MWU5PTUlBTCBpZiBIV01PTlxcbiAzMDQ6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXFxuIDMwNTpcXHRcXHRoZWxwXFxuIDMwNjpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNYXhsaW5lYXIgR1BZMTE1LCBHUFkyMTEsIEdQWTIxMiwgR1BZMjE1LFxcbiAzMDc6XFx0XFx0ICBHUFkyNDEsIEdQWTI0NSBQSFlzLlxcbiAzMDg6XFx0XFxuIDMwOTpcXHRjb25maWcgTUFYTElORUFSXzg2MTEwX1BIWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNTozNS43NzA3NDU5OTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjE4NTY1ODQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWFydmVsbCBBbGFza2EgUEhZIERyaXZlciBBdHRhY2htZW50cyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgdHlwaWNhbGx5IGludGVyZmFjZSB3aXRoIE1hcnZlbGwgQWxhc2thIFBIWXMuIExldCdzIHN0YXJ0IHdpdGggYSBtZW50YWwgcnVuZG93bjogKm12NjQzeHhfZXRoKiwgKnN0bW1hYyosICpnaWFuZmFyKiwgKm1hY2IqLCAqYWx0ZXJhIHRzZSosICp0aSBrZXlzdG9uZSBuZXRjcCouLi4gcmlnaHQsIHRoZSB1c3VhbCBzdXNwZWN0cy4gRW1iZWRkZWQgQVJNL01JUFMvUG93ZXJQQyBTb0MgRXRoZXJuZXQgY29udHJvbGxlcnMgYW5kIHNwZWNpZmljIGRpc2NyZXRlIE1hcnZlbGwgY29udHJvbGxlcnMuIEdvdCBpdC4gTm93LCB3aGF0IGFib3V0IHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucz8gSSByZWNhbGwgc2VlaW5nIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGFuZCBgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldGAgYmVpbmcgdHdlYWtlZCBpbiByZWxhdGlvbiB0byB0aGVzZS4gT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBwdWxsIHVwIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCBhbmQgemVybyBpbiBvbiBsaW5lcyAzNTcwIHRocm91Z2ggMzYzMC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjQ0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MzcuOTU2NDA3ODQyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1NzAsXG4gIFwiTGluZUNvdW50XCI6IDY1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1NzA6XFx0XFx0cmV0dXJuIHBoeV93cml0ZV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxcbjM1NzE6XFx0XFx0XFx0XFx0ICAgICAgIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkMsIHJlZyk7XFxuMzU3MjpcXHR9XFxuMzU3MzpcXHRcXG4zNTc0OlxcdHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbjM1NzU6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgKnJ1bGVzKVxcbjM1NzY6XFx0e1xcbjM1Nzc6XFx0XFx0aW50IG1vZGUsIHJlZztcXG4zNTc4OlxcdFxcbjM1Nzk6XFx0XFx0aWYgKGluZGV4IFxcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcXG4zNTgwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjM1ODE6XFx0XFxuMzU4MjpcXHRcXHRyZWcgPSBwaHlfcmVhZF9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxcbjM1ODM6XFx0XFx0XFx0XFx0ICAgICBNSUlfODhFMTMxOFNfUEhZX0xFRF9GVU5DKTtcXG4zNTg0OlxcdFxcdGlmIChyZWcgXFx1MDAzYyAwKVxcbjM1ODU6XFx0XFx0XFx0cmV0dXJuIHJlZztcXG4zNTg2OlxcdFxcbjM1ODc6XFx0XFx0bW9kZSA9IChyZWcgXFx1MDAzZVxcdTAwM2UgKDQgKiBpbmRleCkpIFxcdTAwMjYgMHhmO1xcbjM1ODg6XFx0XFxuMzU4OTpcXHRcXHRyZXR1cm4gbWFydmVsbF9nZXRfbGVkX3J1bGVzKGluZGV4LCBydWxlcywgbW9kZSk7XFxuMzU5MDpcXHR9XFxuMzU5MTpcXHRcXG4zNTkyOlxcdHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuMzU5MzpcXHRcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuMzU5NDpcXHR7XFxuMzU5NTpcXHRcXHRib29sIGZvcmNlX2FjdGl2ZV9sb3cgPSBmYWxzZSwgZm9yY2VfYWN0aXZlX2hpZ2ggPSBmYWxzZTtcXG4zNTk2OlxcdFxcdHUzMiBtb2RlO1xcbjM1OTc6XFx0XFxuMzU5ODpcXHRcXHRpZiAoaW5kZXggXFx1MDAzZT0gTTg4RTEzMThTX01BWF9MRURTKVxcbjM1OTk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzYwMDpcXHRcXG4zNjAxOlxcdFxcdGZvcl9lYWNoX3NldF9iaXQobW9kZSwgXFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XFxuMzYwMjpcXHRcXHRcXHRzd2l0Y2ggKG1vZGUpIHtcXG4zNjAzOlxcdFxcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfTE9XOlxcbjM2MDQ6XFx0XFx0XFx0XFx0Zm9yY2VfYWN0aXZlX2xvdyA9IHRydWU7XFxuMzYwNTpcXHRcXHRcXHRcXHRicmVhaztcXG4zNjA2OlxcdFxcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcXG4zNjA3OlxcdFxcdFxcdFxcdGZvcmNlX2FjdGl2ZV9oaWdoID0gdHJ1ZTtcXG4zNjA4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM2MDk6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zNjEwOlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjM2MTE6XFx0XFx0XFx0fVxcbjM2MTI6XFx0XFx0fVxcbjM2MTM6XFx0XFxuMzYxNDpcXHRcXHRpZiAoZm9yY2VfYWN0aXZlX2xvdylcXG4zNjE1OlxcdFxcdFxcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXFxuMzYxNjpcXHRcXHRcXHRcXHRcXHRcXHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsXFxuMzYxNzpcXHRcXHRcXHRcXHRcXHRcXHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xfQUNUX0hJR0goaW5kZXgpLCAwKTtcXG4zNjE4OlxcdFxcbjM2MTk6XFx0XFx0aWYgKGZvcmNlX2FjdGl2ZV9oaWdoKVxcbjM2MjA6XFx0XFx0XFx0cmV0dXJuIHBoeV9tb2RpZnlfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcXG4zNjIxOlxcdFxcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwgMCxcXG4zNjIyOlxcdFxcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCkpO1xcbjM2MjM6XFx0XFxuMzYyNDpcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNjI1OlxcdH1cXG4zNjI2OlxcdFxcbjM2Mjc6XFx0c3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMzYyODpcXHR7XFxuMzYyOTpcXHRcXHRzdHJ1Y3QgbWFydmVsbF9wcml2ICpwcml2O1xcbjM2MzA6XFx0XFxuMzYzMTpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4zNjMyOlxcdFxcdGlmICghcHJpdilcXG4zNjMzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM2MzQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjM3Ljk1NzE0Njk5MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo5NTMxOTQxMjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFVucmVhY2hhYmxlIENvZGUgYW5kIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBJJ3ZlIGdvdCBhIGNvdXBsZSBvZiBjaGFuZ2VzIGluIHRoZSBNYXJ2ZWxsIEV0aGVybmV0IFBIWSBkcml2ZXIgdGhhdCBpbnZvbHZlIHRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gYW5kIGEgbWlub3IgdHdlYWsgaW4gYG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldGAuIFNwZWNpZmljYWxseSwgYGxlZF9wb2xhcml0eV9zZXRgIGlzIGFkZGVkIHRvIHRoZSBkcml2ZXIgc3RydWN0dXJlcyBmb3IgYm90aCB0aGUgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcy4gIExvb2tpbmcgZGVlcGVyIGludG8gdGhlIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGZ1bmN0aW9uLCB0aGUgY2hlY2sgYGluZGV4IFx1MDAzZSAyYCB3YXMgY2hhbmdlZCB0byBgaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFNgIHdoZXJlIGBNODhFMTMxOFNfTUFYX0xFRFNgIGlzIDMsIHdoaWNoIGFyZSBjb21wbGV0ZWx5IGVxdWl2YWxlbnQgZHVlIHRvIGBpbmRleGAgYmVpbmcgYSB1OC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiBleGVjdXRlZCBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gIFRoZSBndWlkZWxpbmVzIGNsZWFybHkgc3RhdGUgdGhhdCBmdXp6aW5nIHNob3VsZCBvbmx5IHRhcmdldCBjb2RlIHJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXG5cbkEgcXVpY2sgcmV2aWV3IG9mIFFFTVUncyBzdXBwb3J0ZWQgbmV0d29yayBkZXZpY2VzIHJldmVhbHMgdGhhdCBub25lIG9mIHRoZSBzdGFuZGFyZCBkZXZpY2VzIGVtdWxhdGUgdGhlIE1hcnZlbGwgODhFMTMxOFMgb3IgODhFMTUxMC4gIFRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gaXMgY2FsbGVkICpleGNsdXNpdmVseSogYnkgYG9mX3BoeV9sZWRgIGluIGBwaHlfZGV2aWNlLmNgLiAgYG9mX3BoeV9sZWRgIHJlbGllcyBvbiBwYXJzaW5nIHRoZSBEZXZpY2UgVHJlZSAoT3BlbiBGaXJtd2FyZSkgbm9kZSBmb3IgTEVEIGNvbmZpZ3VyYXRpb24uIE9uIGFtZDY0ICh4ODZfNjQpLCB3aGljaCBpcyB3aGF0IEknbSBvcGVyYXRpbmcgb24sIERldmljZSBUcmVlIGlzIGdlbmVyYWxseSAqbm90KiB1c2VkOyBBQ1BJIGlzLiBBbmQsIHRoZXJlIHdvbid0IGJlIGEgRGV2aWNlIFRyZWUgbm9kZSBmb3IgYSBNYXJ2ZWxsIFBIWSBMRUQhXG5cbkkgY29uZmlybWVkIHRoYXQgdGhlcmUgYXJlIG5vIGNhbGxzIHRvIGBsZWRfcG9sYXJpdHlfc2V0YCB0aHJvdWdoIGV0aHRvb2wsIHN5c2ZzLCBpb2N0bCwgb3IgbmV0bGluay4gSXQgaXMgc3RyaWN0bHkgdGllZCB0byBEZXZpY2UgVHJlZSBwcm9iaW5nIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgUEhZIGRldmljZSB3aXRoIGEgcGFydGljdWxhciBkZXZpY2UgdHJlZSBub2RlLlxuXG5FdmVuIGlmIHNvbWVob3cgYSBQSFkgZGV2aWNlIGNvdWxkIGJlIGNyZWF0ZWQsIGBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0YCByZXF1aXJlcyBhbiBPRiAoRGV2aWNlIFRyZWUpIG5vZGUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgbGFjayBvZiBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uLlxuXG5JbiBzdW1tYXJ5LCB0aGUgbW9kaWZpZWQgY29kZSBjb25jZXJucyBwaHlzaWNhbCBNYXJ2ZWxsIFBIWSB0cmFuc2NlaXZlcnMgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgYGxlZF9wb2xhcml0eV9zZXRgIGZ1bmN0aW9uIGlzIG9ubHkgZXZlciBpbnZva2VkIHZpYSBhIERldmljZSBUcmVlLiBUaGUgYG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldGAgY2hhbmdlIGlzIGxvZ2ljYWxseSBlcXVpdmFsZW50IGFuZCBhbHNvIHNpdHMgaW4gdW5yZWFjaGFibGUgY29kZS4gQmVjYXVzZSBvZiB0aGVzZSBmYWN0b3JzLCB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0IE1VU1QgTk9UIGJlIGZ1enplZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NjIsIk91dHB1dFRva2VucyI6MTk3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjQ3LjQ4OTA5MTIwMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCAobTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCkgdG8gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYykgZm9yIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMsIGFuZCByZXBsYWNlcyBhIGhhcmRjb2RlZCBib3VuZCB3aXRoIE04OEUxMzE4U19NQVhfTEVEUyBpbiBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQuIFRoZXNlIFBIWXMgYXJlIHBoeXNpY2FsIHRyYW5zY2VpdmVyIGNoaXBzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBhbWQ2NCBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCBsZWRfcG9sYXJpdHlfc2V0IGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgRGV2aWNlIFRyZWUgKE9wZW4gRmlybXdhcmUpIHByb2Jpbmcgb2YgUEhZIExFRHMgKG9mX3BoeV9sZWQoKSksIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCBmdXp6aW5nIHRhcmdldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIExFRCBwb2xhcml0eSBjb25maWd1cmF0aW9uIHN1cHBvcnQgKG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQpIHRvIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMpIGZvciA4OEUxMzE4UyBhbmQgODhFMTUxMCBQSFlzLCBhbmQgcmVwbGFjZXMgYSBoYXJkY29kZWQgYm91bmQgd2l0aCBNODhFMTMxOFNfTUFYX0xFRFMgaW4gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LiBUaGVzZSBQSFlzIGFyZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBjaGlwcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgbGVkX3BvbGFyaXR5X3NldCBpcyBvbmx5IGludm9rZWQgZHVyaW5nIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBwcm9iaW5nIG9mIFBIWSBMRURzIChvZl9waHlfbGVkKCkpLCB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgZnV6emluZyB0YXJnZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6NDcuNDg5MTI4MjczWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowctlq4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 21:32:24 +0000 UTC FinishedAt: 2026-09-14 22:25:48 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMRUQgcG9sYXJpdHkgY29uZmlndXJhdGlvbiBzdXBwb3J0IChtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KSB0byB0aGUgTWFydmVsbCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jKSBmb3IgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcywgYW5kIHJlcGxhY2VzIGEgaGFyZGNvZGVkIGJvdW5kIHdpdGggTTg4RTEzMThTX01BWF9MRURTIGluIG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldC4gVGhlc2UgUEhZcyBhcmUgcGh5c2ljYWwgdHJhbnNjZWl2ZXIgY2hpcHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIGxlZF9wb2xhcml0eV9zZXQgaXMgb25seSBpbnZva2VkIGR1cmluZyBEZXZpY2UgVHJlZSAoT3BlbiBGaXJtd2FyZSkgcHJvYmluZyBvZiBQSFkgTEVEcyAob2ZfcGh5X2xlZCgpKSwgd2hpY2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIGFtZDY0IGZ1enppbmcgdGFyZ2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYmYzYmIyMWNlY2VmZmFhYzY0NDQ3MGE5ZmY2ZDcyODA5M2NmMjgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMjI6MjQ6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcbmluZGV4IGY3MWNmZmE4ODQwNjIuLjQzMmFkMzY0ZWZkODAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jXG5AQCAtMTQ5LDYgJiM0MzsxNDksOCBAQFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19PTlx0XHQoMHg5KVxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19ISV9aXHRcdCgweGEpXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9GVU5DX0JMSU5LXHRcdCgweGIpXG4mIzQzOyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MXHRcdDB4MTFcbiYjNDM7I2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xfQUNUX0hJR0goaWR4KVx0KDEgXHUwMDNjXHUwMDNjIDIgKiAoaWR4KSlcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUlx0XHQweDEyXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9UQ1JfRk9SQ0VfSU5UXHRCSVQoMTUpXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9UQ1JfSU5Ubl9FTkFCTEVcdEJJVCg3KVxuQEAgLTMwNCw2ICYjNDM7MzA2LDggQEBcbiAjZGVmaW5lIE5CX0ZJQkVSX1NUQVRTXHQxXG4gI2RlZmluZSBOQl9TVEFUX01BWFx0M1xuIFxuJiM0MzsjZGVmaW5lIE04OEUxMzE4U19NQVhfTEVEU1x0M1xuJiM0MztcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWFydmVsbCBQSFkgZHJpdmVyXCYjMzQ7KTtcbiBNT0RVTEVfQVVUSE9SKFwmIzM0O0FuZHkgRmxlbWluZ1wmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbkBAIC0zNTcyLDcgJiM0MzszNTc2LDcgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4ge1xuIFx0aW50IG1vZGUsIHJlZztcbiBcbi1cdGlmIChpbmRleCBcdTAwM2UgMilcbiYjNDM7XHRpZiAoaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0cmVnID0gcGh5X3JlYWRfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcbkBAIC0zNTg1LDYgJiM0MzszNTg5LDQxIEBAIHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIFx0cmV0dXJuIG1hcnZlbGxfZ2V0X2xlZF9ydWxlcyhpbmRleCwgcnVsZXMsIG1vZGUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbiYjNDM7XHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4mIzQzO3tcbiYjNDM7XHRib29sIGZvcmNlX2FjdGl2ZV9sb3cgPSBmYWxzZSwgZm9yY2VfYWN0aXZlX2hpZ2ggPSBmYWxzZTtcbiYjNDM7XHR1MzIgbW9kZTtcbiYjNDM7XG4mIzQzO1x0aWYgKGluZGV4IFx1MDAzZT0gTTg4RTEzMThTX01BWF9MRURTKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQobW9kZSwgXHUwMDI2bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHtcbiYjNDM7XHRcdHN3aXRjaCAobW9kZSkge1xuJiM0MztcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4mIzQzO1x0XHRcdGZvcmNlX2FjdGl2ZV9sb3cgPSB0cnVlO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcbiYjNDM7XHRcdFx0Zm9yY2VfYWN0aXZlX2hpZ2ggPSB0cnVlO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdGRlZmF1bHQ6XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGZvcmNlX2FjdGl2ZV9sb3cpXG4mIzQzO1x0XHRyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuJiM0MztcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MLFxuJiM0MztcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSwgMCk7XG4mIzQzO1xuJiM0MztcdGlmIChmb3JjZV9hY3RpdmVfaGlnaClcbiYjNDM7XHRcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXG4mIzQzO1x0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsIDAsXG4mIzQzO1x0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xfQUNUX0hJR0goaW5kZXgpKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IG1hcnZlbGxfcHJpdiAqcHJpdjtcbkBAIC0zODMzLDYgJiM0MzszODcyLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xuIFx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG4mIzQzO1x0XHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXG4gXHR9LFxuIFx0e1xuIFx0XHQucGh5X2lkID0gTUFSVkVMTF9QSFlfSURfODhFMTE0NSxcbkBAIC0zOTQ3LDYgJiM0MzszOTg3LDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xuIFx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG4mIzQzO1x0XHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXG4gXHRcdC5hdHRhY2hfbWlpX3BvcnQgPSBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQsXG4gXHR9LFxuIFx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCAobTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCkgdG8gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYykgZm9yIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMsIGFuZCByZXBsYWNlcyBhIGhhcmRjb2RlZCBib3VuZCB3aXRoIE04OEUxMzE4U19NQVhfTEVEUyBpbiBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQuIFRoZXNlIFBIWXMgYXJlIHBoeXNpY2FsIHRyYW5zY2VpdmVyIGNoaXBzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBhbWQ2NCBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCBsZWRfcG9sYXJpdHlfc2V0IGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgRGV2aWNlIFRyZWUgKE9wZW4gRmlybXdhcmUpIHByb2Jpbmcgb2YgUEhZIExFRHMgKG9mX3BoeV9sZWQoKSksIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCBmdXp6aW5nIHRhcmdldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWJmM2JiMjFjZWNlZmZhYWM2NDQ0NzBhOWZmNmQ3MjgwOTNjZjI4MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDIyOjI0OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMKaW5kZXggZjcxY2ZmYTg4NDA2Mi4uNDMyYWQzNjRlZmQ4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jCkBAIC0xNDksNiAmIzQzOzE0OSw4IEBACiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfT04JCSgweDkpCiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfSElfWgkJKDB4YSkKICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19CTElOSwkJKDB4YikKJiM0MzsjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTAkJMHgxMQomIzQzOyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGlkeCkJKDEgJmx0OyZsdDsgMiAqIChpZHgpKQogI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9UQ1IJCTB4MTIKICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSX0ZPUkNFX0lOVAlCSVQoMTUpCiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9JTlRuX0VOQUJMRQlCSVQoNykKQEAgLTMwNCw2ICYjNDM7MzA2LDggQEAKICNkZWZpbmUgTkJfRklCRVJfU1RBVFMJMQogI2RlZmluZSBOQl9TVEFUX01BWAkzCiAKJiM0MzsjZGVmaW5lIE04OEUxMzE4U19NQVhfTEVEUwkzCiYjNDM7CiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtNYXJ2ZWxsIFBIWSBkcml2ZXImIzM0Oyk7CiBNT0RVTEVfQVVUSE9SKCYjMzQ7QW5keSBGbGVtaW5nJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CkBAIC0zNTcyLDcgJiM0MzszNTc2LDcgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsCiB7CiAJaW50IG1vZGUsIHJlZzsKIAotCWlmIChpbmRleCAmZ3Q7IDIpCiYjNDM7CWlmIChpbmRleCAmZ3Q7PSBNODhFMTMxOFNfTUFYX0xFRFMpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJcmVnID0gcGh5X3JlYWRfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSwKQEAgLTM1ODUsNiAmIzQzOzM1ODksNDEgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsCiAJcmV0dXJuIG1hcnZlbGxfZ2V0X2xlZF9ydWxlcyhpbmRleCwgcnVsZXMsIG1vZGUpOwogfQogCiYjNDM7c3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKJiM0MzsJCQkJICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKQomIzQzO3sKJiM0MzsJYm9vbCBmb3JjZV9hY3RpdmVfbG93ID0gZmFsc2UsIGZvcmNlX2FjdGl2ZV9oaWdoID0gZmFsc2U7CiYjNDM7CXUzMiBtb2RlOwomIzQzOwomIzQzOwlpZiAoaW5kZXggJmd0Oz0gTTg4RTEzMThTX01BWF9MRURTKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3NldF9iaXQobW9kZSwgJmFtcDttb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkgewomIzQzOwkJc3dpdGNoIChtb2RlKSB7CiYjNDM7CQljYXNlIFBIWV9MRURfQUNUSVZFX0xPVzoKJiM0MzsJCQlmb3JjZV9hY3RpdmVfbG93ID0gdHJ1ZTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDoKJiM0MzsJCQlmb3JjZV9hY3RpdmVfaGlnaCA9IHRydWU7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQlkZWZhdWx0OgomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChmb3JjZV9hY3RpdmVfbG93KQomIzQzOwkJcmV0dXJuIHBoeV9tb2RpZnlfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSwKJiM0MzsJCQkJCU1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwKJiM0MzsJCQkJCU1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCksIDApOwomIzQzOwomIzQzOwlpZiAoZm9yY2VfYWN0aXZlX2hpZ2gpCiYjNDM7CQlyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLAomIzQzOwkJCQkJTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MLCAwLAomIzQzOwkJCQkJTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSk7CiYjNDM7CiYjNDM7CXJldHVybiAtRUlOVkFMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWFydmVsbF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBtYXJ2ZWxsX3ByaXYgKnByaXY7CkBAIC0zODMzLDYgJiM0MzszODcyLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0gewogCQkubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsCiAJCS5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsCiAJCS5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsCiYjNDM7CQkubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsCiAJfSwKIAl7CiAJCS5waHlfaWQgPSBNQVJWRUxMX1BIWV9JRF84OEUxMTQ1LApAQCAtMzk0Nyw2ICYjNDM7Mzk4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHsKIAkJLmxlZF9od19pc19zdXBwb3J0ZWQgPSBtODhlMTMxOF9sZWRfaHdfaXNfc3VwcG9ydGVkLAogCQkubGVkX2h3X2NvbnRyb2xfc2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfc2V0LAogCQkubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LAomIzQzOwkJLmxlZF9wb2xhcml0eV9zZXQgPSBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0LAogCQkuYXR0YWNoX21paV9wb3J0ID0gbTg4ZTE1MTBfYXR0YWNoX21paV9wb3J0LAogCX0sCiAJewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDU2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIE1hcnZlbGwgUEhZIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGFza2VkIHRvIGxvb2sgb3ZlciBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY2AuIEl0IHNlZW1zIHRvIGFkZCBhIGZ1bmN0aW9uLCBgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldGAsIHdpdGhpbiB0aGUgTWFydmVsbCBQSFkgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhdCB0aGUgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcyBvciBzaW1pbGFyIHZhcmlhbnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBwcmFjdGljYWxpdHkg4oCTIGNhbiBJIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5PyBDYW4gSSwgZm9yIGV4YW1wbGUsIGluc3RhbnRpYXRlIG9yIHByb2JlIHRoaXMgZHJpdmVyIGFuZCB0aGUgc3BlY2lmaWVkIFBIWXMgd2l0aGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gVGhhdCB3b3VsZCBiZSBpZGVhbC4gSSB3YW50IHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBzcGVjaWFsaXplZCBoYXJkd2FyZSB3aGVuIEkmIzM5O20gYXNzZXNzaW5nIHNvbWV0aGluZy4KCk15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGludmVzdGlnYXRlIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCBpbiBtb3JlIGRldGFpbC4gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIHJvbGU7IGlzIHRoaXMsIGFzIEkgc3VzcGVjdCwgYW4gTURJTyBQSFkgZHJpdmVyPyBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgc2NlbmFyaW8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4gSSBzaG91bGQgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGtub3duIG1ldGhvZHMgZm9yIHJlYWNoaW5nIG9yIGVtdWxhdGluZyB0aGVzZSBzcGVjaWZpYyBNYXJ2ZWxsIFBIWXMsIG9yIGF0IGxlYXN0IGlmIFBIWSBkcml2ZXJzIGluIGdlbmVyYWwgYXJlIHJlYWNoYWJsZSBvciB0ZXN0YWJsZSB2aWEgc3l6a2FsbGVyIG9yIHNpbWlsYXIgZnV6emluZyB0b29scy4gSXQgd291bGQgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lIGlmIEkgY2FuIGF1dG9tYXRlIHRoZSBwcm9jZXNzLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGF0LCB0aG91Z2gsIEkmIzM5O2xsIGRvIGEgcXVpY2sgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHJlcG9zaXRvcnkgaXRzZWxmIHRvIGdldCBhIHNlbnNlIG9mIGhvdyB0aGlzIFBIWSBpcyBnZW5lcmFsbHkgaGFuZGxlZCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBlY29zeXN0ZW0uIEEgc2VhcmNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01BUlZFTExfUEhZJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZz01ND1DT05GSUdfR0VNSU5JX0VUSEVSTkVUPXlcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZzo1NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnLTU2LUNPTkZJR19NRElPX0JJVEJBTkc9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTEzMj1DT05GSUdfVElfS0VZU1RPTkVfTkVUQ1BfRVRIU1M9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6MTMzOkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy0xMzQtQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnPTk0PUNPTkZJR19EQVZJQ09NX1BIWT15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y1X2RlZmNvbmZpZzo5NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctOTYtQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTI4OD1DT05GSUdfSUNQTFVTX1BIWT15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyODk6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI5MC1DT05GSUdfQVQ4MDNYX1BIWT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZpZz01NT1DT05GSUdfTVY2NDNYWF9FVEg9eVxuYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZpZy01Ni0jIENPTkZJR19JTlBVVF9NT1VTRURFViBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnOjU3OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnLTU4LUNPTkZJR19JTlBVVF9FVkRFVj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92NV9kZWZjb25maWc9NzM9Q09ORklHX1I4MTY5PXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnOjc0OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZy03NS1DT05GSUdfTElCRVJUQVM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnPTY1PUNPTkZJR19TRlA9eVxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWc6NjY6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnLTY3LUNPTkZJR19NV0lGSUVYPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnPTU4PUNPTkZJR19NVjY0M1hYX0VUSD15XG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnOjU5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnLTYwLSMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9MTg0PUNPTkZJR19GSVhFRF9QSFk9bVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnLTE4Ni1DT05GSUdfQVQ4MDNYX1BIWT1tXG4tLVxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZz02Nz1DT05GSUdfU1RNTUFDX0VUSD15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnOjY4OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTY5LUNPTkZJR19NSUNSRUxfUEhZPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTQ2Mj1DT05GSUdfQkNNNTQxNDBfUEhZPW1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDYzOkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ2NC1DT05GSUdfTUFSVkVMTF8xMEdfUEhZPXlcbi0tXG5hcmNoL21pY3JvYmxhemUvY29uZmlncy9tbXVfZGVmY29uZmlnPTQ2PUNPTkZJR19YSUxJTlhfTExfVEVNQUM9eVxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZzo0NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZy00OC0jIENPTkZJR19JTlBVVCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc9OTU9Q09ORklHX0JST0FEQ09NX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZzo5NjpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWctOTctIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTU4PUNPTkZJR19NQUNCPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZzo1OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTYwLUNPTkZJR19NSUNSRUxfUEhZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc9NjA9Q09ORklHX01BQ0I9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnOjYxOkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWctNjItQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTU5PUNPTkZJR19NQUNCPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnOjYwOkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZy02MS1DT05GSUdfTUlDUkVMX1BIWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZnVsb29uZzJlX2RlZmNvbmZpZz0xMTE9Q09ORklHX0xYVF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZnVsb29uZzJlX2RlZmNvbmZpZzoxMTI6Q09ORklHX01BUlZFTExfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWctMTEzLUNPTkZJR19RU0VNSV9QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc9MTU3PUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc6MTU4OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTE1OS1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZz0yMDU9Q09ORklHX0xYVF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MjA2OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0yMDctQ09ORklHX1FTRU1JX1BIWT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9MTcxPUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjE3MjpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTczLUNPTkZJR19OQVRJT05BTF9QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yODA9Q09ORklHX0xYVF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI4MTpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTI4Mi1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI4Nz1DT05GSUdfTFhUX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjI4ODpDT05GSUdfTUFSVkVMTF9QSFk9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0yODktQ09ORklHX1FTRU1JX1BIWT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTI4Nj1DT05GSUdfTFhUX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6Mjg3OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjg4LUNPTkZJR19RU0VNSV9QSFk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTI3MT1DT05GSUdfTFhUX1BIWT1tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzoyNzI6Q09ORklHX01BUlZFTExfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTI3My1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9MjI1PUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoyMjY6Q09ORklHX01BUlZFTExfUEhZPW1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy0yMjctQ09ORklHX1FTRU1JX1BIWT1tXG4tLVxuYXJjaC9uaW9zMi9jb25maWdzLzEwbTUwX2RlZmNvbmZpZz00Nz1DT05GSUdfQUxURVJBX1RTRT15XG5hcmNoL25pb3MyL2NvbmZpZ3MvMTBtNTBfZGVmY29uZmlnOjQ4OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL25pb3MyL2NvbmZpZ3MvMTBtNTBfZGVmY29uZmlnLTQ5LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxuLS1cbmFyY2gvbmlvczIvY29uZmlncy8zYzEyMF9kZWZjb25maWc9NTA9Q09ORklHX0FMVEVSQV9UU0U9eVxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZzo1MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZy01Mi0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTEzOT1DT05GSUdfTFNJX0VUMTAxMUNfUEhZPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MTQwOkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTE0MS1DT05GSUdfTkFUSU9OQUxfUEhZPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWc9NDg9Q09ORklHX0xYVF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9tb3Rpb25wcm9fZGVmY29uZmlnOjQ5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWctNTAtQ09ORklHX1FTRU1JX1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZz00Mj1DT05GSUdfVUNDX0dFVEg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZzo0MzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZy00NC1DT05GSUdfUFBQPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZz0zOD1DT05GSUdfR0lBTkZBUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZzozOTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9tcGM4Mzd4X3JkYl9kZWZjb25maWctNDAtQ09ORklHX0lOUFVUX0ZGX01FTUxFU1M9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgtaHcuY29uZmlnPTU1PUNPTkZJR19JTlBVVF9GRl9NRU1MRVNTPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZy01OC0jIENPTkZJR19JTlBVVF9NT1VTRSBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZzo1OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC1ody5jb25maWctNjAtQ09ORklHX01ESU9fQlVTX01VWF9HUElPPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnPTQwPUNPTkZJR19HSUFORkFSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgva3NpODU2MF9kZWZjb25maWc6NDE6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgva3NpODU2MF9kZWZjb25maWctNDItIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvcHBhODU0OF9kZWZjb25maWc9MzM9Q09ORklHX0dJQU5GQVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZzozNDpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZy0zNS1DT05GSUdfU0VSSUFMXzgyNTA9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnPTQzPUNPTkZJR19HSUFORkFSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnOjQ0OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3NvY3JhdGVzX2RlZmNvbmZpZy00NS1DT05GSUdfSU5QVVRfRVZERVY9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc3R4X2dwM19kZWZjb25maWc9Mzk9Q09ORklHX0dJQU5GQVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZzo0MDpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZy00MS1DT05GSUdfSU5QVVRfSk9ZREVWPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZz02Mz1DT05GSUdfTFhUX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZzo2NDpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTEyeF9kZWZjb25maWctNjUtQ09ORklHX05BVElPTkFMX1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWc9NTY9Q09ORklHX0lDUExVU19QSFk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWc6NTc6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnLTU4LUNPTkZJR19WSVRFU1NFX1BIWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZz04ND1DT05GSUdfUEFTRU1JX01BQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjg1OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnLTg2LUNPTkZJR19JTlBVVF9KT1lERVY9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0yMjY9Q09ORklHX0JST0FEQ09NX1BIWT1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MjI3OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctMjI4LUNPTkZJR19QUFA9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MTA0PUNPTkZJR19CUk9BRENPTV9QSFk9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZzoxMDU6Q09ORklHX01BUlZFTExfUEhZPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMTA2LUNPTkZJR19QUFA9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NDY0PUNPTkZJR19MWFRfUEhZPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6NDY1OkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTQ2Ni1DT05GSUdfUVNFTUlfUEhZPW1cbi0tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnPTE2Mj1DT05GSUdfUEhZTElCPW1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTYzOkNPTkZJR19NQVJWRUxMX1BIWT1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTE2NC1DT05GSUdfREFWSUNPTV9QSFk9bVxuLS1cbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz02MD1DT05GSUdfUEhZTElCPXlcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZzo2MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnLTYyLUNPTkZJR19ORVRfRVRIRVJORVQ9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTY0PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzo3NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctNzgtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUREVWSUNFUz15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy03NC0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnOjc1OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnLTc2LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZzo3NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctNzgtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctNzgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjc5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctODAtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnPTU2PUNPTkZJR19ORVRERVZJQ0VTPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctNjgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnOjY5OkNPTkZJR19NQVJWRUxMX1BIWT15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctNzAtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jPTE1NTE9bXY2NDN4eF9ldGhfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjItXHRpZiAoZXJyID09IC1FT1BOT1RTVVBQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jOjE1NjM6XHRcdG5ldGRldl9pbmZvKGRldiwgXCYjMzQ7VGhlIFBIWSBkb2VzIG5vdCBzdXBwb3J0IHNldF93b2wsIHdhcyBDT05GSUdfTUFSVkVMTF9QSFkgZW5hYmxlZD9cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjQtXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT03MT1vYmotJChDT05GSUdfTUFSVkVMTF8xMEdfUEhZKVx0JiM0Mzs9IG1hcnZlbGwxMGcub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19NQVJWRUxMX1BIWSlcdCYjNDM7PSBtYXJ2ZWxsLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS03My1vYmotJChDT05GSUdfTUFSVkVMTF84OFEyWFhYX1BIWSlcdCYjNDM7PSBtYXJ2ZWxsLTg4cTJ4eHgub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzk5MD1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2Nvbm5lY3RfcGh5KHZvaWQgKnVwc3RyZWFtLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk5Ni1cdFx0XHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVx1MDAzZXBoeV9pZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5OTc6XHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDtEcml2ZXJzIHdoaWNoIGhhbmRsZSBrbm93biBjb21tb24gY2FzZXM6IENPTkZJR19CQ004NDg4MV9QSFksIENPTkZJR19NQVJWRUxMX1BIWVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5OTgtXHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NzYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBgbGVkX3BvbGFyaXR5X3NldGAgQ2FsbHMgd2l0aGluIHRoZSBLZXJuZWwqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGFydHMgb2YgdGhlIGtlcm5lbCBhcmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgdGhlIGBsZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBvbiBhIFBIWSBkZXZpY2UuIFRpbWUgdG8gZ2V0IGRvd24gdG8gYnVzaW5lc3MuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvIGEgZGlyZWN0IHNlYXJjaCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgY29kZS4gU28sIEkmIzM5O2xsIHVzZSB0aGUgc2VhcmNoIHRvb2wgYW5kIGxvb2sgZm9yIHRoZSBmdW5jdGlvbiYjMzk7cyBuYW1lLCBgbGVkX3BvbGFyaXR5X3NldGAuIFRoYXQgc2hvdWxkIHJldmVhbCBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMga2luZCBvZiBzeXN0ZW1hdGljIGFwcHJvYWNoIGlzIHRoZSBtb3N0IGVmZmljaWVudCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIHV0aWxpemVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHNlYXJjaCByZXN1bHRzIHR1cm4gdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGVkX3BvbGFyaXR5X3NldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTQ1Mz1zdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNDc5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo0ODA6c3RhdGljIGludCBhbjg4MDFyX2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00ODEtXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2Rlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTExMjI9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFpcm9oYV9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTExNDMtXHQubGVkX2h3X2NvbnRyb2xfZ2V0XHQ9IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMTQ0Olx0LmxlZF9wb2xhcml0eV9zZXRcdD0gYW44ODAxcl9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMTQ1LX0gfTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWEuaD0yNTQ9aW50IGFxcl9waHlfbGVkX2FjdGl2ZV9sb3dfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhLmg6MjU1OmludCBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhLmgtMjU2LVx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBtb2Rlcyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2xlZHMuYz0xMjA9aW50IGFxcl9waHlfbGVkX2FjdGl2ZV9sb3dfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2xlZHMuYy0xMjYtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jOjEyNzppbnQgYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgdW5zaWduZWQgbG9uZyBtb2RlcylcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9sZWRzLmMtMTI4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTExODE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFxcl9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNDAtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyNDE6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI0Mi1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNjctXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyNjg6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI2OS1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyOTQtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyOTU6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI5Ni1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMjEtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzMjI6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMyMy1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzNTctXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzNTg6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTM1OS1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjUtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0MjY6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQyNy1cdC5pbmJhbmRfY2Fwc1x0PSBhcXJfZ2VuMl9pbmJhbmRfY2Fwcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NTEtXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0NTI6XHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ1My1cdC5pbmJhbmRfY2FwcyAgICA9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ3OC1cdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQ3OTpcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDgwLVx0LmluYmFuZF9jYXBzICAgID0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTA1LVx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTA2Olx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MDctXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTMyLVx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTMzOlx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MzQtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTU4LVx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTU5Olx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NjAtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz04MjY9c3RhdGljIGludCBhczIxeHh4X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTg0Ni1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6ODQ3OnN0YXRpYyBpbnQgYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtODQ4LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz05NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFzMjF4eHhfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTY2LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk2NzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk2OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NzgtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTc5Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTgwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk5MC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo5OTE6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05OTItXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAwMi1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDAzOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAwNC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE0LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwMTU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMjYtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAyNzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMjgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAzOC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDM5Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA0MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUwLVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwNTE6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNjItXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTA2MzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNjQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA3NC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDc1Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA3Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMDg2PXN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTQwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTQxOnN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTE0Mi1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MTE4Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg2N19kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMTUtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIxNjpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMTctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTM4Nj1zdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNDMwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjQzMTpzdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy00MzItXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz05Mzk9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODN0ZDUxMF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtOTY0LVx0LmxlZF9od19jb250cm9sX2dldCA9IGRwODN0ZDUxMF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6OTY1Olx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzdGQ1MTBfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy05NjYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz00OTA9c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNTI3LVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo1Mjg6c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTUyOS1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz01ODQ9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHh3YXlfZ3BoeVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjAwLVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjAxOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MDItXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTYxOS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IHh3YXlfZ3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjYyMDpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjIxLVx0XHQudXBkYXRlX3N0YXRzXHQ9IHh3YXlfZ3BoeV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MzgtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo2Mzk6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTY0MC1cdFx0LnVwZGF0ZV9zdGF0c1x0PSB4d2F5X2dwaHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjU3LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjU4Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NTktXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTY3NS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IHh3YXlfZ3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjY3NjpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjc3LVx0XHQudXBkYXRlX3N0YXRzXHQ9IHh3YXlfZ3BoeV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02OTMtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo2OTQ6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTY5NS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSB4d2F5X2dwaHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzExLVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzEyOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03MTMtXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTcyOS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IHh3YXlfZ3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjczMDpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzMxLVx0XHQudXBkYXRlX3N0YXRzXHQ9IHh3YXlfZ3BoeV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NDctXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo3NDg6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTc0OS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSB4d2F5X2dwaHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzY1LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0geHdheV9ncGh5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzY2Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IHh3YXlfZ3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NjctXHRcdC51cGRhdGVfc3RhdHNcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTM1NzQ9c3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zNTkxLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozNTkyOnN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM1OTMtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYz0zNzA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM4NzQtXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjM4NzU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzg3Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zOTg5LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozOTkwOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM5OTEtXHRcdC5hdHRhY2hfbWlpX3BvcnQgPSBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDMwPXN0YXRpYyBpbnQgYW43NTgxX3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ0OS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ1MDpzdGF0aWMgaW50IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0NTEtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBtb2Rlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jPTE0OTU9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG10a19zb2NwaHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTM5LVx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1NDA6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYW43NTgxX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTQxLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTItXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU1MzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2NC1cdFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNTY1Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYz05ODI9c3RhdGljIGludCBncHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTAyNC1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTAyNTpzdGF0aWMgaW50IGdweV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTAyNi1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYz0xMTAyPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBncHlfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTEyNC1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExMjU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExMjYtXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExNTEtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxMTUyOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMTUzLVx0XHQudXBkYXRlX3N0YXRzXHQ9IGdweV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMTc3LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTE3ODpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTE3OS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSBncHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTIwNC1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyMDU6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMDYtXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMzAtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxMjMxOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMjMyLVx0XHQudXBkYXRlX3N0YXRzXHQ9IGdweV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMjU3LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTI1ODpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI1OS1cdFx0LnVwZGF0ZV9zdGF0c1x0PSBncHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI4My1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyODQ6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyODUtXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEzMTAtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxMzExOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMzEyLVx0XHQudXBkYXRlX3N0YXRzXHQ9IGdweV91cGRhdGVfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMzM2LVx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTMzNzpcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTMzOC1cdFx0LnVwZGF0ZV9zdGF0c1x0PSBncHlfdXBkYXRlX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQyNS1cdFx0LmxlZF9od19jb250cm9sX3NldCA9IGdweV9sZWRfaHdfY29udHJvbF9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0MjY6XHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZ3B5X2xlZF9wb2xhcml0eV9zZXQsXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0MjctXHRcdC51cGRhdGVfc3RhdHNcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NTEtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxNDUyOlx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xNDUzLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NzUtXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBncHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYzoxNDc2Olx0XHQubGVkX3BvbGFyaXR5X3NldCA9IGdweV9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xNDc3LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTMzNzk9c3RhdGljIGludCBvZl9waHlfbGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE1LVx0XHQvKiBSZXR1cm4gZXJyb3IgaWYgYXNrZWQgdG8gc2V0IHBvbGFyaXR5IG1vZGVzIGJ1dCBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM0MTY6XHRcdGlmICghcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfcG9sYXJpdHlfc2V0KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE3LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE4LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDE5Olx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWxlZF9wb2xhcml0eV9zZXQocGh5ZGV2LCBpbmRleCwgbW9kZXMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDIwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz01ODE9c3RhdGljIGludCBxY2E4MDh4X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5My1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo1OTQ6c3RhdGljIGludCBxY2E4MDh4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5NS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY3My1cdC5sZWRfaHdfY29udHJvbF9nZXRcdD0gcWNhODA4eF9sZWRfaHdfY29udHJvbF9nZXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6Njc0Olx0LmxlZF9wb2xhcml0eV9zZXRcdD0gcWNhODA4eF9sZWRfcG9sYXJpdHlfc2V0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY3NS1cdC51cGRhdGVfc3RhdHNcdFx0PSBxY2E4MDh4X3VwZGF0ZV9zdGF0cyxcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExNDg9c3RydWN0IHBoeV9kcml2ZXIge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMTUyOC1cdC8qKlxuaW5jbHVkZS9saW51eC9waHkuaDoxNTI5Olx0ICogQGxlZF9wb2xhcml0eV9zZXQ6IFNldCB0aGUgTEVEIHBvbGFyaXR5IG1vZGVzXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1MzAtXHQgKiBAZGV2OiBQSFkgZGV2aWNlIHdoaWNoIGhhcyB0aGUgTEVEXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xNTM4LVx0ICovXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1Mzk6XHRpbnQgKCpsZWRfcG9sYXJpdHlfc2V0KShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2LCBpbnQgaW5kZXgsXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1NDAtXHRcdFx0XHR1bnNpZ25lZCBsb25nIG1vZGVzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZIERldmljZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgcGh5c2ljYWwgbGF5ZXIgZGV2aWNlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBvZl9waHlfbGVkYCBwcm9wZXJ0eSBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJiMzOTttIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGZpbGUuIFRoaXMgbG9va3MgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoYXQgZmlsZSBhbmQgZ2V0IG15IGJlYXJpbmdzLiBMZXQmIzM5O3Mgc2VlLi4uIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBJIGV4cGVjdCBJIHNob3VsZCBiZSBsb29raW5nIGFyb3VuZCBsaW5lIDMzNzkuIFRoYXQgbGlrZWx5IG1hcmtzIHRoZSBzcG90IHdoZXJlIHRoZSBkZXZpY2UgdHJlZSAoRFQpIGluZm9ybWF0aW9uIGlzIHBhcnNlZCBhbmQgdGhpcyBwYXJ0aWN1bGFyIHByb3BlcnR5IGlzIGJlaW5nIGludGVycHJldGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgYG9mX3BoeV9sZWRgIGlzIGJlaW5nIHVzZWQsIHdoYXQgdGhlIGRyaXZlciBpcyBleHBlY3RpbmcgZnJvbSB0aGUgRFQgYmluZGluZywgYW5kIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIExFRCBjb250cm9sIG1lY2hhbmlzbSB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGluaXRpYWxpemF0aW9uLiBUaGlzIHNlY3Rpb24gd2lsbCBob3BlZnVsbHkgaWxsdW1pbmF0ZSBob3cgdGhlIHN5c3RlbSBjb25maWd1cmVzIExFRHMgYWNjb3JkaW5nIHRvIHRoZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM3MDpcdHtcbjMzNzE6XHRcdHN0cnVjdCBwaHlfbGVkICpwaHlsZWQsICp0bXA7XG4zMzcyOlx0XG4zMzczOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGh5bGVkLCB0bXAsIFx1MDAyNnBoeWRldi1cdTAwM2VsZWRzLCBsaXN0KSB7XG4zMzc0Olx0XHRcdGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKFx1MDAyNnBoeWxlZC1cdTAwM2VsZWRfY2Rldik7XG4zMzc1Olx0XHRcdGxpc3RfZGVsKFx1MDAyNnBoeWxlZC1cdTAwM2VsaXN0KTtcbjMzNzY6XHRcdH1cbjMzNzc6XHR9XG4zMzc4Olx0XG4zMzc5Olx0c3RhdGljIGludCBvZl9waHlfbGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4zMzgwOlx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbGVkKVxuMzM4MTpcdHtcbjMzODI6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldjtcbjMzODM6XHRcdHN0cnVjdCBsZWRfaW5pdF9kYXRhIGluaXRfZGF0YSA9IHt9O1xuMzM4NDpcdFx0c3RydWN0IGxlZF9jbGFzc2RldiAqY2RldjtcbjMzODU6XHRcdHVuc2lnbmVkIGxvbmcgbW9kZXMgPSAwO1xuMzM4NjpcdFx0c3RydWN0IHBoeV9sZWQgKnBoeWxlZDtcbjMzODc6XHRcdHUzMiBpbmRleDtcbjMzODg6XHRcdGludCBlcnI7XG4zMzg5Olx0XG4zMzkwOlx0XHRwaHlsZWQgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBoeWxlZCksIEdGUF9LRVJORUwpO1xuMzM5MTpcdFx0aWYgKCFwaHlsZWQpXG4zMzkyOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzM5MzpcdFxuMzM5NDpcdFx0Y2RldiA9IFx1MDAyNnBoeWxlZC1cdTAwM2VsZWRfY2RldjtcbjMzOTU6XHRcdHBoeWxlZC1cdTAwM2VwaHlkZXYgPSBwaHlkZXY7XG4zMzk2Olx0XG4zMzk3Olx0XHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihsZWQsIFwmIzM0O3JlZ1wmIzM0OywgXHUwMDI2aW5kZXgpO1xuMzM5ODpcdFx0aWYgKGVycilcbjMzOTk6XHRcdFx0cmV0dXJuIGVycjtcbjM0MDA6XHRcdGlmIChpbmRleCBcdTAwM2UgVThfTUFYKVxuMzQwMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjM0MDI6XHRcbjM0MDM6XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobGVkLCBcJiMzNDthY3RpdmUtaGlnaFwmIzM0OykpXG4zNDA0Olx0XHRcdHNldF9iaXQoUEhZX0xFRF9BQ1RJVkVfSElHSCwgXHUwMDI2bW9kZXMpO1xuMzQwNTpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChsZWQsIFwmIzM0O2FjdGl2ZS1sb3dcJiMzNDspKVxuMzQwNjpcdFx0XHRzZXRfYml0KFBIWV9MRURfQUNUSVZFX0xPVywgXHUwMDI2bW9kZXMpO1xuMzQwNzpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChsZWQsIFwmIzM0O2luYWN0aXZlLWhpZ2gtaW1wZWRhbmNlXCYjMzQ7KSlcbjM0MDg6XHRcdFx0c2V0X2JpdChQSFlfTEVEX0lOQUNUSVZFX0hJR0hfSU1QRURBTkNFLCBcdTAwMjZtb2Rlcyk7XG4zNDA5Olx0XG4zNDEwOlx0XHRpZiAoV0FSTl9PTihtb2RlcyBcdTAwMjYgQklUKFBIWV9MRURfQUNUSVZFX0xPVykgXHUwMDI2XHUwMDI2XG4zNDExOlx0XHRcdCAgICBtb2RlcyBcdTAwMjYgQklUKFBIWV9MRURfQUNUSVZFX0hJR0gpKSlcbjM0MTI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNDEzOlx0XG4zNDE0Olx0XHRpZiAobW9kZXMpIHtcbjM0MTU6XHRcdFx0LyogUmV0dXJuIGVycm9yIGlmIGFza2VkIHRvIHNldCBwb2xhcml0eSBtb2RlcyBidXQgbm90IHN1cHBvcnRlZCAqL1xuMzQxNjpcdFx0XHRpZiAoIXBoeWRldi1cdTAwM2VkcnYtXHUwMDNlbGVkX3BvbGFyaXR5X3NldClcbjM0MTc6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjM0MTg6XHRcbjM0MTk6XHRcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfcG9sYXJpdHlfc2V0KHBoeWRldiwgaW5kZXgsIG1vZGVzKTtcbjM0MjA6XHRcdFx0aWYgKGVycilcbjM0MjE6XHRcdFx0XHRyZXR1cm4gZXJyO1xuMzQyMjpcdFx0fVxuMzQyMzpcdFxuMzQyNDpcdFx0cGh5bGVkLVx1MDAzZWluZGV4ID0gaW5kZXg7XG4zNDI1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfYnJpZ2h0bmVzc19zZXQpXG4zNDI2Olx0XHRcdGNkZXYtXHUwMDNlYnJpZ2h0bmVzc19zZXRfYmxvY2tpbmcgPSBwaHlfbGVkX3NldF9icmlnaHRuZXNzO1xuMzQyNzpcdFx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlbGVkX2JsaW5rX3NldClcbjM0Mjg6XHRcdFx0Y2Rldi1cdTAwM2VibGlua19zZXQgPSBwaHlfbGVkX2JsaW5rX3NldDtcbjM0Mjk6XHRcbjM0MzA6XHQjaWZkZWYgQ09ORklHX0xFRFNfVFJJR0dFUlNcbjM0MzE6XHRcdGlmIChwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWxlZF9od19pc19zdXBwb3J0ZWQgXHUwMDI2XHUwMDI2XG4zNDMyOlx0XHQgICAgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfaHdfY29udHJvbF9zZXQgXHUwMDI2XHUwMDI2XG4zNDMzOlx0XHQgICAgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsZWRfaHdfY29udHJvbF9nZXQpIHtcbjM0MzQ6XHRcdFx0Y2Rldi1cdTAwM2Vod19jb250cm9sX2lzX3N1cHBvcnRlZCA9IHBoeV9sZWRfaHdfaXNfc3VwcG9ydGVkO1xuMzQzNTpcdFx0XHRjZGV2LVx1MDAzZWh3X2NvbnRyb2xfc2V0ID0gcGh5X2xlZF9od19jb250cm9sX3NldDtcbjM0MzY6XHRcdFx0Y2Rldi1cdTAwM2Vod19jb250cm9sX2dldCA9IHBoeV9sZWRfaHdfY29udHJvbF9nZXQ7XG4zNDM3Olx0XHRcdGNkZXYtXHUwMDNlaHdfY29udHJvbF90cmlnZ2VyID0gXCYjMzQ7bmV0ZGV2XCYjMzQ7O1xuMzQzODpcdFx0fVxuMzQzOTpcdFxuMzQ0MDpcdFx0Y2Rldi1cdTAwM2Vod19jb250cm9sX2dldF9kZXZpY2UgPSBwaHlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZTtcbjM0NDE6XHQjZW5kaWZcbjM0NDI6XHRcdGNkZXYtXHUwMDNlbWF4X2JyaWdodG5lc3MgPSAxO1xuMzQ0MzpcdFx0aW5pdF9kYXRhLmRldmljZW5hbWUgPSBkZXZfbmFtZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMzQ0NDpcdFx0aW5pdF9kYXRhLmZ3bm9kZSA9IG9mX2Z3bm9kZV9oYW5kbGUobGVkKTtcbjM0NDU6XHRcdGluaXRfZGF0YS5kZXZuYW1lX21hbmRhdG9yeSA9IHRydWU7XG4zNDQ2Olx0XG4zNDQ3Olx0XHRlcnIgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0KGRldiwgY2RldiwgXHUwMDI2aW5pdF9kYXRhKTtcbjM0NDg6XHRcdGlmIChlcnIpXG4zNDQ5Olx0XHRcdHJldHVybiBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MjcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOgoKKipPRiBQSFkgTEVEIEluaXRpYWxpemF0aW9uIC0gRGlnZ2luZyBJbioqCgpSaWdodCwgYG9mX3BoeV9sZWRgIGlzIGZpcmluZyB1cCBkdXJpbmcgdGhlIERldmljZSBUcmVlIHByb2JpbmcgcGhhc2UsIHNwZWNpZmljYWxseSBmb3IgUEhZIExFRHMuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIGd1dCByZWFjdGlvbiBpcyB0byBpbW1lZGlhdGVseSB0cmFjZSB0aGUgY2FsbCBzdGFjayBvZiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IG9mIGhvdyB0aGlzIGlzIGFsbCB3aXJlZCB1cC4gVW5kZXJzdGFuZGluZyB0aGUgRGV2aWNlIFRyZWUgYmluZGluZ3MgaXMgY3J1Y2lhbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgZXhlY3V0aW9uIHBhdGguIFRpbWUgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgb2ZfcGh5X2xlZGAgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29udmVudGlvbnM/IFdoYXQgc3RydWN0dXJlcyBhcmUgYmVpbmcgcGFzc2VkPyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfcGh5X2xlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTMzNjk9c3RhdGljIHZvaWQgcGh5X2xlZHNfdW5yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzM3OC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzM3OTpzdGF0aWMgaW50IG9mX3BoeV9sZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzM4MC1cdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpsZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDU1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDU2OnN0YXRpYyBpbnQgb2ZfcGh5X2xlZHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ1Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDgyLVx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGVfc2NvcGVkKGxlZHMsIGxlZCkge1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDgzOlx0XHRlcnIgPSBvZl9waHlfbGVkKHBoeWRldiwgbGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ4NC1cdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzc0Mz1zdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODYxLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcdTAwMjZcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzg2MjpcdFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg2My1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0NzAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIGBsZWRfcG9sYXJpdHlfc2V0YCBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBvZl9waHlfbGVkYCBmdW5jdGlvbiBiZWNhdXNlIHNvbWV0aGluZyBmZWVscyBvZmYuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBpdCYjMzk7cyBvbmx5IGludm9rZWQgZHVyaW5nIGRldmljZSBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBwaHlfcHJvYmVgLCBhbmQgb25seSB3aGVuIGEgYGxlZHNgIGRldmljZSB0cmVlIG5vZGUgaXMgcHJlc2VudC4gIEJ1dCBJIG5lZWQgdG8gYmUgKnN1cmUqLiAgCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgaWYgYGxlZF9wb2xhcml0eV9zZXRgIGlzIGNhbGxlZCAqYW55d2hlcmUqIGVsc2UgaW4gdGhlIGtlcm5lbC4gIEl0IHNlZW1zIHVubGlrZWx5LCBidXQgSSYjMzk7bSBub3QgZ29pbmcgdG8gYXNzdW1lIGFueXRoaW5nLiBTbywgSSByYW4gYSBncmVwIHRvIGZpbmQgZXZlcnkgaW5zdGFuY2UuCgpUaGUgcmVzdWx0cyBhcmUgcHJldHR5IGNvbmNsdXNpdmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIGEgKmxvdCogb2YgZHJpdmVycyBjYWxsaW5nIGEgYCpfbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24uIFRoZSBncmVwIHNob3dzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgdXNlZCBpbnNpZGUgZWFjaCBwaHkgZHJpdmVyOiBgZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuY2AsIGBkcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jYCwgYGRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmNgLCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY2AsIGBkcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmNgLCBgZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuY2AsIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCwgYGRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNgLCBgZHJpdmVycy9uZXQvcGh5L214bC1ncHkuY2AsIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgLiBBbmQgYSBkZWZpbml0aW9uIGZvciBpdCBpbiBgaW5jbHVkZS9saW51eC9waHkuaGAgcGx1cyBhIGNhbGwgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLgoKQWhhISBgcGh5ZGV2LSZndDtkcnYtJmd0O2xlZF9wb2xhcml0eV9zZXRgIGlzICpvbmx5KiBjYWxsZWQgZnJvbSBgb2ZfcGh5X2xlZGAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBBbmQgYG9mX3BoeV9sZWRgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSBgb2ZfcGh5X2xlZHMoKWAuIEFuZCBgb2ZfcGh5X2xlZHNgIGlzIG9ubHkgY2FsbGVkIGJ5IGBwaHlfcHJvYmUoKWAuICBUaGlzIGNvbmZpcm1zIG15IHN1c3BpY2lvbiDigJMgaXQmIzM5O3MgYWxsIHBhcnQgb2YgdGhlIGRldmljZSBwcm9iZS9pbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gIFRoZSBjb2RlIGluIGBwaHlfcHJvYmUoKWAgY2hlY2tzIGBDT05GSUdfUEhZTElCX0xFRFNgIGFuZCB0aGVuIGF0dGVtcHRzIHRvIHVzZSBgb2ZfcGh5X2xlZHNgIHRvIGluaXRpYWxpemUgbGVkcy4KCkJ1dCB3YWl0LCB0aGlzIGhhcyBtZSB0aGlua2luZyBhYm91dCBob3cgTWFydmVsbCBQSFlzIGFyZSBhY3R1YWxseSB1c2VkIGluIHRoZSByZWFsIHdvcmxkLi4uIExldCYjMzk7cyB1c2UgdGhlIE1hcnZlbGwgZXhhbXBsZSB0byB0ZXN0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY2hhaW4gaXMgcmVhY2hhYmxlLiBEb2VzIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgaXRzZWxmIGhhdmUgYW55IGV4dGVybmFsIHdheXMgdG8gYmUgdXNlZD8KClNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBRRU1VLiAgQXJlIHRoZXJlIGFueSB2aXJ0dWFsIE1ESU8gb3IgTWFydmVsbCBQSFlzIGVtdWxhdGVkIHRoZXJlPyAgSSYjMzk7bSBydW5uaW5nIGEgbG90IG9mIHRlc3Rpbmcgd2l0aCBRRU1VLCBzbyBpdCYjMzk7cyBhIHBlcnRpbmVudCBxdWVzdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gIE9uIGFtZDY0ICh3aGljaCBpcyBteSB0YXJnZXQgYXJjaCkgaW4gUUVNVSwgdGhlIHN0YW5kYXJkIGVtdWxhdGVkIE5JQ3MgYXJlIHRoaW5ncyBsaWtlIEludGVsIGUxMDAwLCBlMTAwMGUsIGlnYiwgdmlydGlvLW5ldCwgcnRsODEzOSwgYW5kIGEgZmV3IG90aGVycy4gIE5vbmUgb2YgdGhlbSAoYXMgZmFyIGFzIEkga25vdykgaGF2ZSBhIHBoeWxpYiBQSFkgYXR0YWNoZWQgdmlhIGFuIE1ESU8gYnVzIG9yIGV2ZW4gYW4gZXh0ZXJuYWwgUEhZLgoKQ291bGQgTWFydmVsbCBQSFkgYmUgaW5zdGFudGlhdGVkIHZpYSBzeXNmcywgb3IgVVNCLCBvciBzb21lIHNvcnQgb2YgbW9jayBvciB2aXJ0dWFsIE1ESU8gc2V0dXA/IEkgbmVlZCB0byBsb29rIGludG8gd2hldGhlciB0aGVyZSBhcmUgYW55IG9mIHRob3NlIHNjZW5hcmlvcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiAgVGhpcyBjb3VsZCBiZSByZWFsbHkgY3JpdGljYWwgZm9yIGRlYnVnZ2luZywgYmVjYXVzZSBpZiB0aGVyZSYjMzk7cyBhIGRpc2Nvbm5lY3QgYmV0d2VlbiB3aGF0IHRoZSBrZXJuZWwgKnRoaW5rcyogaXMgaGFwcGVuaW5nIGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCwgaXQgY291bGQgY2F1c2Ugc3RyYW5nZSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcnZlbGxfZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTM2OTQ9c3RhdGljIGludCBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zNzA1LVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozNzA2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzcwNy1cdHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTQyMTctXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjQyMTg6bW9kdWxlX3BoeV9kcml2ZXIobWFydmVsbF9kcml2ZXJzKTtcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtNDIxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyOTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlciBBdHRhY2htZW50IFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtb2R1bGVfcGh5X2RyaXZlcihtYXJ2ZWxsX2RyaXZlcnMpO2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGV4YWN0bHkgZG9lcyB0aGlzIFBIWSBkcml2ZXIgZ2V0IGxpbmtlZCB3aXRoIGEgUEhZIGRldmljZT8gVGhlIHByb2Nlc3Mgc2VlbXMgdG8gYmUgdGhpczogdGhlIE1ESU8gYnVzLCBkdXJpbmcgaXRzIHByb2JpbmcgcGhhc2UsIHJlYWRzIHRoZSBgTUlJX1BIWVNJRDFgIGFuZCBgTUlJX1BIWVNJRDJgIHJlZ2lzdGVycyBmcm9tIHRoZSBQSFkuIEl0IHRoZW4gY2hlY2tzIGlmIHRoZSBQSFkgSUQgbWF0Y2hlcyBhbnkgb2YgdGhlIGBtYXJ2ZWxsX2RyaXZlcnNbaV0ucGh5X2lkYCwgY29uc2lkZXJpbmcgdGhlIGBwaHlfaWRfbWFza2AuIElmIHRoZXJlJiMzOTtzIGEgbWF0Y2gsIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiwgcHJlc3VtYWJseSBgcGh5X3Byb2JlKClgLCBpcyBjYWxsZWQuCgpOb3csIGR1cmluZyB0aGlzIGBwaHlfcHJvYmUoKWAgSSBzZWUgdGhhdCBgb2ZfcGh5X2xlZHMoKWAgaXMgYmVpbmcgY2FsbGVkLiBCdXQgaG9sZCBvbiwgdGhpcyBicmluZ3MgdXAgYW5vdGhlciBjb25jZXJuLiBXaGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIGRldmljZSBub2RlIGluIHRoZSBmaXJzdCBwbGFjZSBvbiBhbiBhbWQ2NCBvciB4ODZfNjQgc3lzdGVtPyBNeSBleHBlcmllbmNlIGlzIHRoYXQgeDg2IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGRvbiYjMzk7dCB1dGlsaXplIGRldmljZSB0cmVlIGZvciBzdGFuZGFyZCBjb25maWd1cmF0aW9ucywgZXhjZXB0IHBlcmhhcHMgaW4gc29tZSBuaWNoZSBlbWJlZGRlZCB4ODYgYm9hcmRzIG9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGludm9sdmluZyBkZXZpY2UgdHJlZSBvdmVybGF5cy4KCkNvdWxkIGl0IGJlIHRoYXQgT0Ygbm9kZXMgYXJlIGxvYWRlZCBkeW5hbWljYWxseSB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLCBwYXJ0aWN1bGFybHkgd2l0aCBgQ09ORklHX09GX09WRVJMQVlgPyBFdmVuIGlmIHRoYXQgd2VyZSBwb3NzaWJsZSB2aWEgY29uZmlnZnMsIHdoaWNoIGlzIGFscmVhZHkgYSBzdHJldGNoLi4uCgpIZXJlJiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYWN0dWFsbHkgYSAqcGh5c2ljYWwqIE1hcnZlbGwgODhFMTMxOFMgb3IgODhFMTUxMCBQSFkgcHJlc2VudCBvbiB0aGlzIGFtZDY0IHN5c3RlbSwgZXNwZWNpYWxseSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IE5vLCBJJiMzOTttIHByZXR0eSBzdXJlIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRob3NlIHNwZWNpZmljIE1hcnZlbGwgUEhZcy4KCk9rYXksIHNvIG1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgaXMgYSB1c2VyLW1vZGUgdGhpbmc/IFBlcmhhcHMgaXQmIzM5O3MgYmVlbiBjcmVhdGVkIGZyb20gdXNlcnNwYWNlPyBMZXQmIzM5O3MgY2hlY2sgd2hldGhlciBvciBub3QgdGhlIE1ESU8gYnVzIGNhbiBiZSBjcmVhdGVkIGJ5IGEgdXNlcnNwYWNlIHByb2dyYW0sIHBlcmhhcHMgdGhyb3VnaCBuZXRsaW5rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2J1c19jbGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0yMzY9X19BVFRSSUJVVEVfR1JPVVBTKG1kaW9fYnVzX3N0YXRpc3RpY3MpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM3LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6MjM4OmNvbnN0IHN0cnVjdCBjbGFzcyBtZGlvX2J1c19jbGFzcyA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTIzOS1cdC5uYW1lXHRcdD0gXCYjMzQ7bWRpb19idXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgwLVx0YnVzLVx1MDAzZWRldi5wYXJlbnQgPSBidXMtXHUwMDNlcGFyZW50O1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTgxOlx0YnVzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTgyLVx0YnVzLVx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTcyNz1zdHJ1Y3QgbWlpX2J1cyAqbWRpb19maW5kX2J1cyhjb25zdCBjaGFyICptZGlvX25hbWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNzMwLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzMxOlx0ZCA9IGNsYXNzX2ZpbmRfZGV2aWNlX2J5X25hbWUoXHUwMDI2bWRpb19idXNfY2xhc3MsIG1kaW9fbmFtZSk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03MzItXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTc1MD1zdHJ1Y3QgbWlpX2J1cyAqb2ZfbWRpb19maW5kX2J1cyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fYnVzX25wKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1Ni1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjc1NzpcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFx1MDAyNm1kaW9fYnVzX2NsYXNzLCBtZGlvX2J1c19ucCk7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTgtXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NDAzOD1zdGF0aWMgaW50IF9faW5pdCBwaHlfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA0MS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NDA0MjpcdHJjID0gY2xhc3NfcmVnaXN0ZXIoXHUwMDI2bWRpb19idXNfY2xhc3MpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDQzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA3OS1lcnJfY2xhc3M6XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjQwODA6XHRjbGFzc191bnJlZ2lzdGVyKFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA4MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTQwODU9c3RhdGljIHZvaWQgX19leGl0IHBoeV9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDkzLVx0YnVzX3VucmVnaXN0ZXIoXHUwMDI2bWRpb19idXNfdHlwZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjQwOTQ6XHRjbGFzc191bnJlZ2lzdGVyKFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA5NS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oPTEyPWV4dGVybiBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDoxMzpleHRlcm4gY29uc3Qgc3RydWN0IGNsYXNzIG1kaW9fYnVzX2NsYXNzO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oLTE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk2OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgTWFydmVsbCBFdGhlcm5ldCBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgTWFydmVsbCBFdGhlcm5ldCBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmVkLiBUaGUgaW5pdGlhbCBxdWVzdGlvbiBpcyAmIzM0O1doaWNoIEV0aGVybmV0IGRyaXZlcnMgb3V0IHRoZXJlIGluIHRoZSBrZXJuZWwgdXRpbGl6ZSBgbWFydmVsbC5jYD8mIzM0Oy4gVGhhdCYjMzk7cyB0aGUgY29yZSBwb2ludCBvZiB0aGUgaW52ZXN0aWdhdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBDT05GSUdfTUFSVkVMTF9QSFlgIG9wdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucyBvZiB0aGUgTWFydmVsbCBQSFkgc3VwcG9ydCBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIGl04oCZbGwgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxpbmtlZC4gVWx0aW1hdGVseSwgdGhpcyB3aWxsIHJldmVhbCB3aGF0IGNvbXBvbmVudHMgcmVseSBvbiB0aGUgYG1hcnZlbGwuY2AgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BUlZFTExfUEhZJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTI3Mz1jb25maWcgTFNJX0VUMTAxMUNfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMjc3LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Mjc4OmNvbmZpZyBNQVJWRUxMX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMjc5LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBBbGFza2EgUEhZc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI1NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBQSFkgS2NvbmZpZyBGaWxlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gbGluZXMgMjcwIHRocm91Z2ggMzAwIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHNlY3Rpb24gdG8gbGlrZWx5IGRlZmluZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIFBIWSBkcml2ZXIgb3IgYSBncm91cCBvZiBkcml2ZXJzLCBwZXJoYXBzIHdpdGggYSBjb21tb24gZmVhdHVyZSBzZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZCB0aHJvdWdoIHRoZSBgS2NvbmZpZ2Agc3lzdGVtLCBhbmQgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBQSFkgY29uZmlndXJhdGlvbi4gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXM/IEFyZSB0aGVyZSBhbnkgZGV2aWNlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIGVuY29kZWQgaGVyZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIG9wdGltaXphdGlvbnM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ2hvaWNlIG9wdGlvbnMqKjogQXJlIHdlIHByZXNlbnRlZCB3aXRoIGEgc2VyaWVzIG9mIFBIWSBkcml2ZXIgc2VsZWN0aW9ucz8KKiAgICoqRGVwZW5kZW5jaWVzKio6IFdoYXQgb3RoZXIga2VybmVsIG1vZHVsZXMgb3Igb3B0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaW5jb21wYXRpYmxlPwoqICAgKipUcmlzdGF0ZSBPcHRpb25zKio6IEFyZSBtb2R1bGVzIGNvbXBpbGVkIGluIG9yIGFzIGJ1aWx0LWluIGJhc2VkIG9uIGNvbmRpdGlvbnM/CiogICAqKkRlZmF1bHRzKio6IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgd2h5PyBBbnkgb2J2aW91cyBhcmNoaXRlY3R1cmFsIGRlc2lnbiBjaG9pY2VzIG1hZGUgaGVyZT8KKiAgICoqRG9jdW1lbnRhdGlvbiBTdHJpbmdzKio6IEFyZSB0aGUgaGVscCB0ZXh0cyBjbGVhciBhbmQgYWNjdXJhdGU/IEkmIzM5O2xsIGJlIG1lbnRhbGx5IHBhcnNpbmcgdGhlbSwgYXMgSSBtYXkgYmUgbmVlZGluZyB0byByZWZlcmVuY2UgdGhlbSBsYXRlciB0byBleHBsYWluIHRoaXMgY29uZmlndXJhdGlvbiB0byBvdGhlcnMuCiogICAqKlN5bWJvbCBuYW1lcyoqOiBXaGF0IG5hbWluZyBjb252ZW50aW9ucyBhcmUgdXNlZCBhbmQgYXJlIHRoZXkgY29uc2lzdGVudCB3aXRoIHdoYXQgSSYjMzk7dmUgc2VlbiBlbHNld2hlcmUuCgpUaGUgZ29hbCBpcyB0byByYXBpZGx5IGZvcm0gYSBtZW50YWwgbW9kZWwgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgd2l0aGluIHRoaXMgc2VjdGlvbiwgYWxsb3dpbmcgbWUgdG8gYW5zd2VyIGFueSBxdWVzdGlvbnMgYWJvdXQgc3VwcG9ydGVkIFBIWXMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgb3IgcG90ZW50aWFsIGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlLiBUaGlzIGlzIGZvdW5kYXRpb25hbCB0byBhbnkgc3Vic2VxdWVudCBQSFktcmVsYXRlZCB3b3JrIG9yIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjc1Olx0XHRoZWxwXG4gMjc2Olx0XHQgIFN1cHBvcnRzIHRoZSBMU0kgRVQxMDExQyBQSFkuXG4gMjc3Olx0XG4gMjc4Olx0Y29uZmlnIE1BUlZFTExfUEhZXG4gMjc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIEFsYXNrYSBQSFlzXCYjMzQ7XG4gMjgwOlx0XHRoZWxwXG4gMjgxOlx0XHQgIEN1cnJlbnRseSBoYXMgYSBkcml2ZXIgZm9yIHRoZSA4OEUxWFhYXG4gMjgyOlx0XG4gMjgzOlx0Y29uZmlnIE1BUlZFTExfMTBHX1BIWVxuIDI4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBBbGFza2EgMTBHYml0IFBIWXNcJiMzNDtcbiAyODU6XHRcdGhlbHBcbiAyODY6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1hcnZlbGwgQWxhc2thIE1WODhYMzMxMCBhbmQgY29tcGF0aWJsZSBQSFlzLlxuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBNQVJWRUxMXzg4UTJYWFhfUEhZXG4gMjg5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIDg4UTJYWFggUEhZXCYjMzQ7XG4gMjkwOlx0XHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cbiAyOTE6XHRcdGhlbHBcbiAyOTI6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1hcnZlbGwgODhRMlhYWCAxMDAvMTAwMEJBU0UtVDEgQXV0b21vdGl2ZSBFdGhlcm5ldFxuIDI5MzpcdFx0ICBQSFlzLlxuIDI5NDpcdFxuIDI5NTpcdGNvbmZpZyBNQVJWRUxMXzg4WDIyMjJfUEhZXG4gMjk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIDg4WDIyMjIgUEhZXCYjMzQ7XG4gMjk3Olx0XHRoZWxwXG4gMjk4Olx0XHQgIFN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIDg4WDIyMjIgRHVhbC1wb3J0IE11bHRpLXNwZWVkIEV0aGVybmV0XG4gMjk5Olx0XHQgIFRyYW5zY2VpdmVyLlxuIDMwMDpcdFxuIDMwMTpcdGNvbmZpZyBNQVhMSU5FQVJfR1BIWVxuIDMwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWF4bGluZWFyIEV0aGVybmV0IFBIWXNcJiMzNDtcbiAzMDM6XHRcdHNlbGVjdCBQT0xZTk9NSUFMIGlmIEhXTU9OXG4gMzA0Olx0XHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cbiAzMDU6XHRcdGhlbHBcbiAzMDY6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1heGxpbmVhciBHUFkxMTUsIEdQWTIxMSwgR1BZMjEyLCBHUFkyMTUsXG4gMzA3Olx0XHQgIEdQWTI0MSwgR1BZMjQ1IFBIWXMuXG4gMzA4Olx0XG4gMzA5Olx0Y29uZmlnIE1BWExJTkVBUl84NjExMF9QSFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyNDQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1hcnZlbGwgQWxhc2thIFBIWSBEcml2ZXIgQXR0YWNobWVudHMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyB0eXBpY2FsbHkgaW50ZXJmYWNlIHdpdGggTWFydmVsbCBBbGFza2EgUEhZcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBtZW50YWwgcnVuZG93bjogKm12NjQzeHhfZXRoKiwgKnN0bW1hYyosICpnaWFuZmFyKiwgKm1hY2IqLCAqYWx0ZXJhIHRzZSosICp0aSBrZXlzdG9uZSBuZXRjcCouLi4gcmlnaHQsIHRoZSB1c3VhbCBzdXNwZWN0cy4gRW1iZWRkZWQgQVJNL01JUFMvUG93ZXJQQyBTb0MgRXRoZXJuZXQgY29udHJvbGxlcnMgYW5kIHNwZWNpZmljIGRpc2NyZXRlIE1hcnZlbGwgY29udHJvbGxlcnMuIEdvdCBpdC4gTm93LCB3aGF0IGFib3V0IHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucz8gSSByZWNhbGwgc2VlaW5nIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGFuZCBgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldGAgYmVpbmcgdHdlYWtlZCBpbiByZWxhdGlvbiB0byB0aGVzZS4gT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQmIzM5O3MgcHVsbCB1cCBgZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY2AgYW5kIHplcm8gaW4gb24gbGluZXMgMzU3MCB0aHJvdWdoIDM2MzAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDY1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1NzA6XHRcdHJldHVybiBwaHlfd3JpdGVfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcbjM1NzE6XHRcdFx0XHQgICAgICAgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQywgcmVnKTtcbjM1NzI6XHR9XG4zNTczOlx0XG4zNTc0Olx0c3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4zNTc1Olx0XHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyAqcnVsZXMpXG4zNTc2Olx0e1xuMzU3NzpcdFx0aW50IG1vZGUsIHJlZztcbjM1Nzg6XHRcbjM1Nzk6XHRcdGlmIChpbmRleCBcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcbjM1ODA6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNTgxOlx0XG4zNTgyOlx0XHRyZWcgPSBwaHlfcmVhZF9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuMzU4MzpcdFx0XHRcdCAgICAgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQyk7XG4zNTg0Olx0XHRpZiAocmVnIFx1MDAzYyAwKVxuMzU4NTpcdFx0XHRyZXR1cm4gcmVnO1xuMzU4NjpcdFxuMzU4NzpcdFx0bW9kZSA9IChyZWcgXHUwMDNlXHUwMDNlICg0ICogaW5kZXgpKSBcdTAwMjYgMHhmO1xuMzU4ODpcdFxuMzU4OTpcdFx0cmV0dXJuIG1hcnZlbGxfZ2V0X2xlZF9ydWxlcyhpbmRleCwgcnVsZXMsIG1vZGUpO1xuMzU5MDpcdH1cbjM1OTE6XHRcbjM1OTI6XHRzdGF0aWMgaW50IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuMzU5MzpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuMzU5NDpcdHtcbjM1OTU6XHRcdGJvb2wgZm9yY2VfYWN0aXZlX2xvdyA9IGZhbHNlLCBmb3JjZV9hY3RpdmVfaGlnaCA9IGZhbHNlO1xuMzU5NjpcdFx0dTMyIG1vZGU7XG4zNTk3Olx0XG4zNTk4Olx0XHRpZiAoaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXG4zNTk5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzYwMDpcdFxuMzYwMTpcdFx0Zm9yX2VhY2hfc2V0X2JpdChtb2RlLCBcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xuMzYwMjpcdFx0XHRzd2l0Y2ggKG1vZGUpIHtcbjM2MDM6XHRcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9MT1c6XG4zNjA0Olx0XHRcdFx0Zm9yY2VfYWN0aXZlX2xvdyA9IHRydWU7XG4zNjA1Olx0XHRcdFx0YnJlYWs7XG4zNjA2Olx0XHRcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcbjM2MDc6XHRcdFx0XHRmb3JjZV9hY3RpdmVfaGlnaCA9IHRydWU7XG4zNjA4Olx0XHRcdFx0YnJlYWs7XG4zNjA5Olx0XHRcdGRlZmF1bHQ6XG4zNjEwOlx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNjExOlx0XHRcdH1cbjM2MTI6XHRcdH1cbjM2MTM6XHRcbjM2MTQ6XHRcdGlmIChmb3JjZV9hY3RpdmVfbG93KVxuMzYxNTpcdFx0XHRyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuMzYxNjpcdFx0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsXG4zNjE3Olx0XHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCksIDApO1xuMzYxODpcdFxuMzYxOTpcdFx0aWYgKGZvcmNlX2FjdGl2ZV9oaWdoKVxuMzYyMDpcdFx0XHRyZXR1cm4gcGh5X21vZGlmeV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxuMzYyMTpcdFx0XHRcdFx0XHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsIDAsXG4zNjIyOlx0XHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCkpO1xuMzYyMzpcdFxuMzYyNDpcdFx0cmV0dXJuIC1FSU5WQUw7XG4zNjI1Olx0fVxuMzYyNjpcdFxuMzYyNzpcdHN0YXRpYyBpbnQgbWFydmVsbF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMzYyODpcdHtcbjM2Mjk6XHRcdHN0cnVjdCBtYXJ2ZWxsX3ByaXYgKnByaXY7XG4zNjMwOlx0XG4zNjMxOlx0XHRwcml2ID0gZGV2bV9remFsbG9jKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XG4zNjMyOlx0XHRpZiAoIXByaXYpXG4zNjMzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzYzNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY2MgoJCQkJCQkJb3V0cHV0OiAxOTcKCQkJCQkJCXRob3VnaHRzOiAyMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFVucmVhY2hhYmxlIENvZGUgYW5kIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24uIEkmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBjaGFuZ2VzIGluIHRoZSBNYXJ2ZWxsIEV0aGVybmV0IFBIWSBkcml2ZXIgdGhhdCBpbnZvbHZlIHRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gYW5kIGEgbWlub3IgdHdlYWsgaW4gYG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldGAuIFNwZWNpZmljYWxseSwgYGxlZF9wb2xhcml0eV9zZXRgIGlzIGFkZGVkIHRvIHRoZSBkcml2ZXIgc3RydWN0dXJlcyBmb3IgYm90aCB0aGUgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcy4gIExvb2tpbmcgZGVlcGVyIGludG8gdGhlIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGZ1bmN0aW9uLCB0aGUgY2hlY2sgYGluZGV4ICZndDsgMmAgd2FzIGNoYW5nZWQgdG8gYGluZGV4ICZndDs9IE04OEUxMzE4U19NQVhfTEVEU2Agd2hlcmUgYE04OEUxMzE4U19NQVhfTEVEU2AgaXMgMywgd2hpY2ggYXJlIGNvbXBsZXRlbHkgZXF1aXZhbGVudCBkdWUgdG8gYGluZGV4YCBiZWluZyBhIHU4LgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiBleGVjdXRlZCBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gIFRoZSBndWlkZWxpbmVzIGNsZWFybHkgc3RhdGUgdGhhdCBmdXp6aW5nIHNob3VsZCBvbmx5IHRhcmdldCBjb2RlIHJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgpBIHF1aWNrIHJldmlldyBvZiBRRU1VJiMzOTtzIHN1cHBvcnRlZCBuZXR3b3JrIGRldmljZXMgcmV2ZWFscyB0aGF0IG5vbmUgb2YgdGhlIHN0YW5kYXJkIGRldmljZXMgZW11bGF0ZSB0aGUgTWFydmVsbCA4OEUxMzE4UyBvciA4OEUxNTEwLiAgVGhlIGBsZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBjYWxsZWQgKmV4Y2x1c2l2ZWx5KiBieSBgb2ZfcGh5X2xlZGAgaW4gYHBoeV9kZXZpY2UuY2AuICBgb2ZfcGh5X2xlZGAgcmVsaWVzIG9uIHBhcnNpbmcgdGhlIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBub2RlIGZvciBMRUQgY29uZmlndXJhdGlvbi4gT24gYW1kNjQgKHg4Nl82NCksIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBvcGVyYXRpbmcgb24sIERldmljZSBUcmVlIGlzIGdlbmVyYWxseSAqbm90KiB1c2VkOyBBQ1BJIGlzLiBBbmQsIHRoZXJlIHdvbiYjMzk7dCBiZSBhIERldmljZSBUcmVlIG5vZGUgZm9yIGEgTWFydmVsbCBQSFkgTEVEIQoKSSBjb25maXJtZWQgdGhhdCB0aGVyZSBhcmUgbm8gY2FsbHMgdG8gYGxlZF9wb2xhcml0eV9zZXRgIHRocm91Z2ggZXRodG9vbCwgc3lzZnMsIGlvY3RsLCBvciBuZXRsaW5rLiBJdCBpcyBzdHJpY3RseSB0aWVkIHRvIERldmljZSBUcmVlIHByb2JpbmcgYW5kIGluc3RhbnRpYXRpb24gb2YgYSBQSFkgZGV2aWNlIHdpdGggYSBwYXJ0aWN1bGFyIGRldmljZSB0cmVlIG5vZGUuCgpFdmVuIGlmIHNvbWVob3cgYSBQSFkgZGV2aWNlIGNvdWxkIGJlIGNyZWF0ZWQsIGBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0YCByZXF1aXJlcyBhbiBPRiAoRGV2aWNlIFRyZWUpIG5vZGUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgbGFjayBvZiBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uLgoKSW4gc3VtbWFyeSwgdGhlIG1vZGlmaWVkIGNvZGUgY29uY2VybnMgcGh5c2ljYWwgTWFydmVsbCBQSFkgdHJhbnNjZWl2ZXJzIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgdGhlIGBsZWRfcG9sYXJpdHlfc2V0YCBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgaW52b2tlZCB2aWEgYSBEZXZpY2UgVHJlZS4gVGhlIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGNoYW5nZSBpcyBsb2dpY2FsbHkgZXF1aXZhbGVudCBhbmQgYWxzbyBzaXRzIGluIHVucmVhY2hhYmxlIGNvZGUuIEJlY2F1c2Ugb2YgdGhlc2UgZmFjdG9ycywgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBJdCBNVVNUIE5PVCBiZSBmdXp6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBMRUQgcG9sYXJpdHkgY29uZmlndXJhdGlvbiBzdXBwb3J0IChtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KSB0byB0aGUgTWFydmVsbCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jKSBmb3IgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcywgYW5kIHJlcGxhY2VzIGEgaGFyZGNvZGVkIGJvdW5kIHdpdGggTTg4RTEzMThTX01BWF9MRURTIGluIG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldC4gVGhlc2UgUEhZcyBhcmUgcGh5c2ljYWwgdHJhbnNjZWl2ZXIgY2hpcHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIGxlZF9wb2xhcml0eV9zZXQgaXMgb25seSBpbnZva2VkIGR1cmluZyBEZXZpY2UgVHJlZSAoT3BlbiBGaXJtd2FyZSkgcHJvYmluZyBvZiBQSFkgTEVEcyAob2ZfcGh5X2xlZCgpKSwgd2hpY2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIGFtZDY0IGZ1enppbmcgdGFyZ2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCAobTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCkgdG8gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYykgZm9yIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMsIGFuZCByZXBsYWNlcyBhIGhhcmRjb2RlZCBib3VuZCB3aXRoIE04OEUxMzE4U19NQVhfTEVEUyBpbiBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQuIFRoZXNlIFBIWXMgYXJlIHBoeXNpY2FsIHRyYW5zY2VpdmVyIGNoaXBzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBhbWQ2NCBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCBsZWRfcG9sYXJpdHlfc2V0IGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgRGV2aWNlIFRyZWUgKE9wZW4gRmlybXdhcmUpIHByb2Jpbmcgb2YgUEhZIExFRHMgKG9mX3BoeV9sZWQoKSksIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCBmdXp6aW5nIHRhcmdldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMjoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjQ6NDYuMTgwOTQ5NzU2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMDgxODg0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIExFRCBwb2xhcml0eSBjb25maWd1cmF0aW9uIHN1cHBvcnQgKG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQpIHRvIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMpIGZvciA4OEUxMzE4UyBhbmQgODhFMTUxMCBQSFlzLCBhbmQgcmVwbGFjZXMgYSBoYXJkY29kZWQgYm91bmQgd2l0aCBNODhFMTMxOFNfTUFYX0xFRFMgaW4gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LiBUaGVzZSBQSFlzIGFyZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBjaGlwcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgbGVkX3BvbGFyaXR5X3NldCBpcyBvbmx5IGludm9rZWQgZHVyaW5nIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBwcm9iaW5nIG9mIFBIWSBMRURzIChvZl9waHlfbGVkKCkpLCB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgZnV6emluZyB0YXJnZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjQ6NDYuMTgwOTU0ODg2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgzMjA5OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWJmM2JiMjFjZWNlZmZhYWM2NDQ0NzBhOWZmNmQ3MjgwOTNjZjI4MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAyMjoyNDo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jIGIvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY1xcbmluZGV4IGY3MWNmZmE4ODQwNjIuLjQzMmFkMzY0ZWZkODAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcXG5AQCAtMTQ5LDYgKzE0OSw4IEBAXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19PTlxcdFxcdCgweDkpXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19ISV9aXFx0XFx0KDB4YSlcXG4gI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9GVU5DX0JMSU5LXFx0XFx0KDB4YilcXG4rI2RlZmluZSBNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xcXHRcXHQweDExXFxuKyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGlkeClcXHQoMSBcXHUwMDNjXFx1MDAzYyAyICogKGlkeCkpXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSXFx0XFx0MHgxMlxcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9GT1JDRV9JTlRcXHRCSVQoMTUpXFxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSX0lOVG5fRU5BQkxFXFx0QklUKDcpXFxuQEAgLTMwNCw2ICszMDYsOCBAQFxcbiAjZGVmaW5lIE5CX0ZJQkVSX1NUQVRTXFx0MVxcbiAjZGVmaW5lIE5CX1NUQVRfTUFYXFx0M1xcbiBcXG4rI2RlZmluZSBNODhFMTMxOFNfTUFYX0xFRFNcXHQzXFxuK1xcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1hcnZlbGwgUEhZIGRyaXZlclxcXCIpO1xcbiBNT0RVTEVfQVVUSE9SKFxcXCJBbmR5IEZsZW1pbmdcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbkBAIC0zNTcyLDcgKzM1NzYsNyBAQCBzdGF0aWMgaW50IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4ge1xcbiBcXHRpbnQgbW9kZSwgcmVnO1xcbiBcXG4tXFx0aWYgKGluZGV4IFxcdTAwM2UgMilcXG4rXFx0aWYgKGluZGV4IFxcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBcXHRyZWcgPSBwaHlfcmVhZF9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxcbkBAIC0zNTg1LDYgKzM1ODksNDEgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuIFxcdHJldHVybiBtYXJ2ZWxsX2dldF9sZWRfcnVsZXMoaW5kZXgsIHJ1bGVzLCBtb2RlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG4rXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbit7XFxuK1xcdGJvb2wgZm9yY2VfYWN0aXZlX2xvdyA9IGZhbHNlLCBmb3JjZV9hY3RpdmVfaGlnaCA9IGZhbHNlO1xcbitcXHR1MzIgbW9kZTtcXG4rXFxuK1xcdGlmIChpbmRleCBcXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0Zm9yX2VhY2hfc2V0X2JpdChtb2RlLCBcXHUwMDI2bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHtcXG4rXFx0XFx0c3dpdGNoIChtb2RlKSB7XFxuK1xcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfTE9XOlxcbitcXHRcXHRcXHRmb3JjZV9hY3RpdmVfbG93ID0gdHJ1ZTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcXG4rXFx0XFx0XFx0Zm9yY2VfYWN0aXZlX2hpZ2ggPSB0cnVlO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0aWYgKGZvcmNlX2FjdGl2ZV9sb3cpXFxuK1xcdFxcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXFxuK1xcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCxcXG4rXFx0XFx0XFx0XFx0XFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSwgMCk7XFxuK1xcbitcXHRpZiAoZm9yY2VfYWN0aXZlX2hpZ2gpXFxuK1xcdFxcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXFxuK1xcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwgMCxcXG4rXFx0XFx0XFx0XFx0XFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSk7XFxuK1xcbitcXHRyZXR1cm4gLUVJTlZBTDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHtcXG4gXFx0c3RydWN0IG1hcnZlbGxfcHJpdiAqcHJpdjtcXG5AQCAtMzgzMyw2ICszODcyLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xcbiBcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXFxuK1xcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQucGh5X2lkID0gTUFSVkVMTF9QSFlfSURfODhFMTE0NSxcXG5AQCAtMzk0Nyw2ICszOTg3LDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xcbiBcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXFxuIFxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXFxuK1xcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcXG4gXFx0XFx0LmF0dGFjaF9taWlfcG9ydCA9IG04OGUxNTEwX2F0dGFjaF9taWlfcG9ydCxcXG4gXFx0fSxcXG4gXFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNDo0Ny44NjQ5MjAyNzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU5NjI0MjA1OTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIExFRCBwb2xhcml0eSBjb25maWd1cmF0aW9uIHN1cHBvcnQgKG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQpIHRvIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMpIGZvciA4OEUxMzE4UyBhbmQgODhFMTUxMCBQSFlzLCBhbmQgcmVwbGFjZXMgYSBoYXJkY29kZWQgYm91bmQgd2l0aCBNODhFMTMxOFNfTUFYX0xFRFMgaW4gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LiBUaGVzZSBQSFlzIGFyZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBjaGlwcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgbGVkX3BvbGFyaXR5X3NldCBpcyBvbmx5IGludm9rZWQgZHVyaW5nIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBwcm9iaW5nIG9mIFBIWSBMRURzIChvZl9waHlfbGVkKCkpLCB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgZnV6emluZyB0YXJnZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlYmYzYmIyMWNlY2VmZmFhYzY0NDQ3MGE5ZmY2ZDcyODA5M2NmMjgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMjI6MjQ6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jIGIvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuY1xuaW5kZXggZjcxY2ZmYTg4NDA2Mi4uNDMyYWQzNjRlZmQ4MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNcbkBAIC0xNDksNiArMTQ5LDggQEBcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfT05cdFx0KDB4OSlcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkNfSElfWlx0XHQoMHhhKVxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfRlVOQ19CTElOS1x0XHQoMHhiKVxuKyNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfUE9MXHRcdDB4MTFcbisjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpZHgpXHQoMSBcdTAwM2NcdTAwM2MgMiAqIChpZHgpKVxuICNkZWZpbmUgTUlJXzg4RTEzMThTX1BIWV9MRURfVENSXHRcdDB4MTJcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9GT1JDRV9JTlRcdEJJVCgxNSlcbiAjZGVmaW5lIE1JSV84OEUxMzE4U19QSFlfTEVEX1RDUl9JTlRuX0VOQUJMRVx0QklUKDcpXG5AQCAtMzA0LDYgKzMwNiw4IEBAXG4gI2RlZmluZSBOQl9GSUJFUl9TVEFUU1x0MVxuICNkZWZpbmUgTkJfU1RBVF9NQVhcdDNcbiBcbisjZGVmaW5lIE04OEUxMzE4U19NQVhfTEVEU1x0M1xuK1xuIE1PRFVMRV9ERVNDUklQVElPTihcIk1hcnZlbGwgUEhZIGRyaXZlclwiKTtcbiBNT0RVTEVfQVVUSE9SKFwiQW5keSBGbGVtaW5nXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuQEAgLTM1NzIsNyArMzU3Niw3IEBAIHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIHtcbiBcdGludCBtb2RlLCByZWc7XG4gXG4tXHRpZiAoaW5kZXggXHUwMDNlIDIpXG4rXHRpZiAoaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0cmVnID0gcGh5X3JlYWRfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcbkBAIC0zNTg1LDYgKzM1ODksNDEgQEAgc3RhdGljIGludCBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gXHRyZXR1cm4gbWFydmVsbF9nZXRfbGVkX3J1bGVzKGluZGV4LCBydWxlcywgbW9kZSk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4rXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4re1xuK1x0Ym9vbCBmb3JjZV9hY3RpdmVfbG93ID0gZmFsc2UsIGZvcmNlX2FjdGl2ZV9oaWdoID0gZmFsc2U7XG4rXHR1MzIgbW9kZTtcbitcbitcdGlmIChpbmRleCBcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XG4rXHRcdHN3aXRjaCAobW9kZSkge1xuK1x0XHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcbitcdFx0XHRmb3JjZV9hY3RpdmVfbG93ID0gdHJ1ZTtcbitcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBQSFlfTEVEX0FDVElWRV9ISUdIOlxuK1x0XHRcdGZvcmNlX2FjdGl2ZV9oaWdoID0gdHJ1ZTtcbitcdFx0XHRicmVhaztcbitcdFx0ZGVmYXVsdDpcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1x0fVxuK1xuK1x0aWYgKGZvcmNlX2FjdGl2ZV9sb3cpXG4rXHRcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXG4rXHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCxcbitcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSwgMCk7XG4rXG4rXHRpZiAoZm9yY2VfYWN0aXZlX2hpZ2gpXG4rXHRcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXG4rXHRcdFx0XHRcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwgMCxcbitcdFx0XHRcdFx0TUlJXzg4RTEzMThTX1BIWV9MRURfUE9MX0FDVF9ISUdIKGluZGV4KSk7XG4rXG4rXHRyZXR1cm4gLUVJTlZBTDtcbit9XG4rXG4gc3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IG1hcnZlbGxfcHJpdiAqcHJpdjtcbkBAIC0zODMzLDYgKzM4NzIsNyBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWFydmVsbF9kcml2ZXJzW10gPSB7XG4gXHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gbTg4ZTEzMThfbGVkX2h3X2lzX3N1cHBvcnRlZCxcbiBcdFx0LmxlZF9od19jb250cm9sX3NldCA9IG04OGUxMzE4X2xlZF9od19jb250cm9sX3NldCxcbiBcdFx0LmxlZF9od19jb250cm9sX2dldCA9IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldCxcbitcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0LFxuIFx0fSxcbiBcdHtcbiBcdFx0LnBoeV9pZCA9IE1BUlZFTExfUEhZX0lEXzg4RTExNDUsXG5AQCAtMzk0Nyw2ICszOTg3LDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1hcnZlbGxfZHJpdmVyc1tdID0ge1xuIFx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG04OGUxMzE4X2xlZF9od19pc19zdXBwb3J0ZWQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9zZXQsXG4gXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQsXG4rXHRcdC5sZWRfcG9sYXJpdHlfc2V0ID0gbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCxcbiBcdFx0LmF0dGFjaF9taWlfcG9ydCA9IG04OGUxNTEwX2F0dGFjaF9taWlfcG9ydCxcbiBcdH0sXG4gXHR7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNDo0Ny44NjQ5MjIxMDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3MjE2NjgyNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIE1hcnZlbGwgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBhc2tlZCB0byBsb29rIG92ZXIgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNgLiBJdCBzZWVtcyB0byBhZGQgYSBmdW5jdGlvbiwgYG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXRgLCB3aXRoaW4gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQgYXQgdGhlIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMgb3Igc2ltaWxhciB2YXJpYW50cy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcHJhY3RpY2FsaXR5IOKAkyBjYW4gSSBhY3R1YWxseSAqdGVzdCogdGhpcyBlZmZlY3RpdmVseT8gQ2FuIEksIGZvciBleGFtcGxlLCBpbnN0YW50aWF0ZSBvciBwcm9iZSB0aGlzIGRyaXZlciBhbmQgdGhlIHNwZWNpZmllZCBQSFlzIHdpdGhpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoYXQgd291bGQgYmUgaWRlYWwuIEkgd2FudCB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgd2hlbiBJJ20gYXNzZXNzaW5nIHNvbWV0aGluZy5cblxuTXkgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gaW52ZXN0aWdhdGUgYGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmNgIGluIG1vcmUgZGV0YWlsLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgcm9sZTsgaXMgdGhpcywgYXMgSSBzdXNwZWN0LCBhbiBNRElPIFBIWSBkcml2ZXI/IFRoYXQncyB0aGUgbGlrZWx5IHNjZW5hcmlvLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0uIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBrbm93biBtZXRob2RzIGZvciByZWFjaGluZyBvciBlbXVsYXRpbmcgdGhlc2Ugc3BlY2lmaWMgTWFydmVsbCBQSFlzLCBvciBhdCBsZWFzdCBpZiBQSFkgZHJpdmVycyBpbiBnZW5lcmFsIGFyZSByZWFjaGFibGUgb3IgdGVzdGFibGUgdmlhIHN5emthbGxlciBvciBzaW1pbGFyIGZ1enppbmcgdG9vbHMuIEl0IHdvdWxkIHNhdmUgbWUgYSBsb3Qgb2YgdGltZSBpZiBJIGNhbiBhdXRvbWF0ZSB0aGUgcHJvY2Vzcy4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhhdCwgdGhvdWdoLCBJJ2xsIGRvIGEgcXVpY2sgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHJlcG9zaXRvcnkgaXRzZWxmIHRvIGdldCBhIHNlbnNlIG9mIGhvdyB0aGlzIFBIWSBpcyBnZW5lcmFsbHkgaGFuZGxlZCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBlY29zeXN0ZW0uIEEgc2VhcmNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNDo1NS4wODE2MDY4MTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMDY4NTI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUFSVkVMTF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnPTU0PUNPTkZJR19HRU1JTklfRVRIRVJORVQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZzo1NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZy01Ni1DT05GSUdfTURJT19CSVRCQU5HPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTEzMj1DT05GSUdfVElfS0VZU1RPTkVfTkVUQ1BfRVRIU1M9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnOjEzMzpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnLTEzNC1DT05GSUdfTUlDUkVMX1BIWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y1X2RlZmNvbmZpZz05ND1DT05GSUdfREFWSUNPTV9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnOjk1OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctOTYtQ09ORklHX01JQ1JFTF9QSFk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9Mjg4PUNPTkZJR19JQ1BMVVNfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyODk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0yOTAtQ09ORklHX0FUODAzWF9QSFk9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZpZz01NT1DT05GSUdfTVY2NDNYWF9FVEg9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9kZWZjb25maWctNTYtIyBDT05GSUdfSU5QVVRfTU9VU0VERVYgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9kZWZjb25maWc6NTc6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnLTU4LUNPTkZJR19JTlBVVF9FVkRFVj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZz03Mz1DT05GSUdfUjgxNjk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnOjc0OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92NV9kZWZjb25maWctNzUtQ09ORklHX0xJQkVSVEFTPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnPTY1PUNPTkZJR19TRlA9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnOjY2OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWctNjctQ09ORklHX01XSUZJRVg9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZz01OD1DT05GSUdfTVY2NDNYWF9FVEg9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb3Jpb241eF9kZWZjb25maWc6NTk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnLTYwLSMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz0xODQ9Q09ORklHX0ZJWEVEX1BIWT1tXFxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy0xODYtQ09ORklHX0FUODAzWF9QSFk9bVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZz02Nz1DT05GSUdfU1RNTUFDX0VUSD15XFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZzo2ODpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWctNjktQ09ORklHX01JQ1JFTF9QSFk9eVxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NjI9Q09ORklHX0JDTTU0MTQwX1BIWT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NjM6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ2NC1DT05GSUdfTUFSVkVMTF8xMEdfUEhZPXlcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWc9NDY9Q09ORklHX1hJTElOWF9MTF9URU1BQz15XFxuYXJjaC9taWNyb2JsYXplL2NvbmZpZ3MvbW11X2RlZmNvbmZpZzo0NzpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvbWljcm9ibGF6ZS9jb25maWdzL21tdV9kZWZjb25maWctNDgtIyBDT05GSUdfSU5QVVQgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc9OTU9Q09ORklHX0JST0FEQ09NX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc6OTY6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy05Ny0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZz01OD1DT05GSUdfTUFDQj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjU5OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTYwLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZz02MD1DT05GSUdfTUFDQj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnOjYxOkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTYyLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTU5PUNPTkZJR19NQUNCPXlcXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZzo2MDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTYxLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWc9MTExPUNPTkZJR19MWFRfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnOjExMjpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWctMTEzLUNPTkZJR19RU0VNSV9QSFk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZz0xNTc9Q09ORklHX0xYVF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc6MTU4OkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZy0xNTktQ09ORklHX1FTRU1JX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZz0yMDU9Q09ORklHX0xYVF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjIwNjpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTIwNy1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTE3MT1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6MTcyOkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTczLUNPTkZJR19OQVRJT05BTF9QSFk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI4MD1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI4MTpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yODItQ09ORklHX1FTRU1JX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI4Nz1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoyODg6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTI4OS1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yODY9Q09ORklHX0xYVF9QSFk9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzoyODc6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjg4LUNPTkZJR19RU0VNSV9QSFk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc9MjcxPUNPTkZJR19MWFRfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzoyNzI6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZy0yNzMtQ09ORklHX1FTRU1JX1BIWT1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9MjI1PUNPTkZJR19MWFRfUEhZPW1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc6MjI2OkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTIyNy1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvbmlvczIvY29uZmlncy8xMG01MF9kZWZjb25maWc9NDc9Q09ORklHX0FMVEVSQV9UU0U9eVxcbmFyY2gvbmlvczIvY29uZmlncy8xMG01MF9kZWZjb25maWc6NDg6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL25pb3MyL2NvbmZpZ3MvMTBtNTBfZGVmY29uZmlnLTQ5LSMgQ09ORklHX1dMQU4gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZz01MD1DT05GSUdfQUxURVJBX1RTRT15XFxuYXJjaC9uaW9zMi9jb25maWdzLzNjMTIwX2RlZmNvbmZpZzo1MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvbmlvczIvY29uZmlncy8zYzEyMF9kZWZjb25maWctNTItIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTEzOT1DT05GSUdfTFNJX0VUMTAxMUNfUEhZPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnOjE0MDpDT05GSUdfTUFSVkVMTF9QSFk9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctMTQxLUNPTkZJR19OQVRJT05BTF9QSFk9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9tb3Rpb25wcm9fZGVmY29uZmlnPTQ4PUNPTkZJR19MWFRfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWc6NDk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWctNTAtQ09ORklHX1FTRU1JX1BIWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L2ttZXRlcjFfZGVmY29uZmlnPTQyPUNPTkZJR19VQ0NfR0VUSD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9rbWV0ZXIxX2RlZmNvbmZpZzo0MzpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzgzeHgva21ldGVyMV9kZWZjb25maWctNDQtQ09ORklHX1BQUD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZz0zOD1DT05GSUdfR0lBTkZBUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9tcGM4Mzd4X3JkYl9kZWZjb25maWc6Mzk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L21wYzgzN3hfcmRiX2RlZmNvbmZpZy00MC1DT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZz01NT1DT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZy01OC0jIENPTkZJR19JTlBVVF9NT1VTRSBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC1ody5jb25maWc6NTk6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4LWh3LmNvbmZpZy02MC1DT05GSUdfTURJT19CVVNfTVVYX0dQSU89eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZz00MD1DT05GSUdfR0lBTkZBUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZzo0MTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgva3NpODU2MF9kZWZjb25maWctNDItIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZz0zMz1DT05GSUdfR0lBTkZBUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9wcGE4NTQ4X2RlZmNvbmZpZzozNDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvcHBhODU0OF9kZWZjb25maWctMzUtQ09ORklHX1NFUklBTF84MjUwPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnPTQzPUNPTkZJR19HSUFORkFSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3NvY3JhdGVzX2RlZmNvbmZpZzo0NDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc29jcmF0ZXNfZGVmY29uZmlnLTQ1LUNPTkZJR19JTlBVVF9FVkRFVj15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnPTM5PUNPTkZJR19HSUFORkFSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnOjQwOkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZy00MS1DT05GSUdfSU5QVVRfSk9ZREVWPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnPTYzPUNPTkZJR19MWFRfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM1MTJ4X2RlZmNvbmZpZzo2NDpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUxMnhfZGVmY29uZmlnLTY1LUNPTkZJR19OQVRJT05BTF9QSFk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWc9NTY9Q09ORklHX0lDUExVU19QSFk9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnOjU3OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWctNTgtQ09ORklHX1ZJVEVTU0VfUEhZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc9ODQ9Q09ORklHX1BBU0VNSV9NQUM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc6ODU6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnLTg2LUNPTkZJR19JTlBVVF9KT1lERVY9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTIyNj1DT05GSUdfQlJPQURDT01fUEhZPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MjI3OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTIyOC1DT05GSUdfUFBQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MTA0PUNPTkZJR19CUk9BRENPTV9QSFk9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6MTA1OkNPTkZJR19NQVJWRUxMX1BIWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZy0xMDYtQ09ORklHX1BQUD1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTQ2ND1DT05GSUdfTFhUX1BIWT1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo0NjU6Q09ORklHX01BUlZFTExfUEhZPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTQ2Ni1DT05GSUdfUVNFTUlfUEhZPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MTYyPUNPTkZJR19QSFlMSUI9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTYzOkNPTkZJR19NQVJWRUxMX1BIWT1tXFxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZy0xNjQtQ09ORklHX0RBVklDT01fUEhZPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz02MD1DT05GSUdfUEhZTElCPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWc6NjE6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctNjItQ09ORklHX05FVF9FVEhFUk5FVD15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZz02ND1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWc6Nzc6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZy03OC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9NjI9Q09ORklHX05FVERFVklDRVM9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy03NC0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZzo3NTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctNzYtIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZz02Nj1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZy03Ni0jIENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWc6Nzc6Q09ORklHX01BUlZFTExfUEhZPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZy03OC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZz02Nj1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctNzgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZzo3OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZy04MC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZz01Nj1DT05GSUdfTkVUREVWSUNFUz15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL3hpcF9rYzcwNV9kZWZjb25maWctNjgtIyBDT05GSUdfTkVUX1ZFTkRPUl9XSVpORVQgaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZzo2OTpDT05GSUdfTUFSVkVMTF9QSFk9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy03MC0jIENPTkZJR19XTEFOIGlzIG5vdCBzZXRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYz0xNTUxPW12NjQzeHhfZXRoX3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjItXFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212NjQzeHhfZXRoLmM6MTU2MzpcXHRcXHRuZXRkZXZfaW5mbyhkZXYsIFxcXCJUaGUgUEhZIGRvZXMgbm90IHN1cHBvcnQgc2V0X3dvbCwgd2FzIENPTkZJR19NQVJWRUxMX1BIWSBlbmFibGVkP1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTE1NjQtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT03MT1vYmotJChDT05GSUdfTUFSVkVMTF8xMEdfUEhZKVxcdCs9IG1hcnZlbGwxMGcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfTUFSVkVMTF9QSFkpXFx0Kz0gbWFydmVsbC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTczLW9iai0kKENPTkZJR19NQVJWRUxMXzg4UTJYWFhfUEhZKVxcdCs9IG1hcnZlbGwtODhxMnh4eC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5OTA9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25uZWN0X3BoeSh2b2lkICp1cHN0cmVhbSwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk5Ni1cXHRcXHRcXHQgICAgcGh5ZGV2X25hbWUocGh5KSwgKHVuc2lnbmVkIGxvbmcpcGh5LVxcdTAwM2VwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzk5NzpcXHRcXHRwaHlsaW5rX2VycihwbCwgXFxcIkRyaXZlcnMgd2hpY2ggaGFuZGxlIGtub3duIGNvbW1vbiBjYXNlczogQ09ORklHX0JDTTg0ODgxX1BIWSwgQ09ORklHX01BUlZFTExfUEhZXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5OTgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI0OjU2LjgwMjMwMTE4OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQyNzc2NzA4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIGBsZWRfcG9sYXJpdHlfc2V0YCBDYWxscyB3aXRoaW4gdGhlIEtlcm5lbCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gb24gYSBQSFkgZGV2aWNlLiBUaW1lIHRvIGdldCBkb3duIHRvIGJ1c2luZXNzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkbyBhIGRpcmVjdCBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuIFNvLCBJJ2xsIHVzZSB0aGUgc2VhcmNoIHRvb2wgYW5kIGxvb2sgZm9yIHRoZSBmdW5jdGlvbidzIG5hbWUsIGBsZWRfcG9sYXJpdHlfc2V0YC4gVGhhdCBzaG91bGQgcmV2ZWFsIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gVGhpcyBraW5kIG9mIHN5c3RlbWF0aWMgYXBwcm9hY2ggaXMgdGhlIG1vc3QgZWZmaWNpZW50IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgdXRpbGl6ZWQuIExldCdzIHNlZSB3aGF0IHRoZSBzZWFyY2ggcmVzdWx0cyB0dXJuIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTc2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDEuMDc5OTc0NjQzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTQ1NDc5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGVkX3BvbGFyaXR5X3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTQ1Mz1zdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NzktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo0ODA6c3RhdGljIGludCBhbjg4MDFyX2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNDgxLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz0xMTIyPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhaXJvaGFfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTExNDMtXFx0LmxlZF9od19jb250cm9sX2dldFxcdD0gYW44ODAxcl9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMTQ0OlxcdC5sZWRfcG9sYXJpdHlfc2V0XFx0PSBhbjg4MDFyX2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMTQ1LX0gfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYS5oPTI1ND1pbnQgYXFyX3BoeV9sZWRfYWN0aXZlX2xvd19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhLmg6MjU1OmludCBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYS5oLTI1Ni1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2xlZHMuYz0xMjA9aW50IGFxcl9waHlfbGVkX2FjdGl2ZV9sb3dfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jLTEyNi1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jOjEyNzppbnQgYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwgdW5zaWduZWQgbG9uZyBtb2RlcylcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jLTEyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTExODE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFxcl9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI0MC1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMjQxOlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI0Mi1cXHQuaW5iYW5kX2NhcHNcXHQ9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjY3LVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyNjg6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjY5LVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyOTQtXFx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTI5NTpcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyOTYtXFx0LmluYmFuZF9jYXBzXFx0PSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMyMS1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzIyOlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMyMy1cXHQuaW5iYW5kX2NhcHNcXHQ9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzU3LVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzNTg6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzU5LVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjUtXFx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQyNjpcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjctXFx0LmluYmFuZF9jYXBzXFx0PSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ1MS1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDUyOlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ1My1cXHQuaW5iYW5kX2NhcHMgICAgPSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ3OC1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDc5OlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ4MC1cXHQuaW5iYW5kX2NhcHMgICAgPSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUwNS1cXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXFyX3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTA2OlxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXFyX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUwNy1cXHQuaW5iYW5kX2NhcHNcXHQ9IGFxcl9nZW4yX2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTMyLVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhcXJfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE1MzM6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhcXJfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTM0LVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NTgtXFx0LmxlZF9od19jb250cm9sX2dldCA9IGFxcl9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTU1OTpcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFxcl9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NjAtXFx0LmluYmFuZF9jYXBzXFx0PSBhcXJfZ2VuMl9pbmJhbmRfY2FwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9ODI2PXN0YXRpYyBpbnQgYXMyMXh4eF9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTg0Ni1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjg0NzpzdGF0aWMgaW50IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy04NDgtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTk0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXMyMXh4eF9kcml2ZXJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk2Ni1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo5Njc6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NjgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTc4LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk3OTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk4MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05OTAtXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTkxOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTkyLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMDItXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAwMzpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMDQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAxNC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDE1OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAxNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDI2LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwMjc6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDI4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMzgtXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAzOTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNDAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA1MC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gYXMyMXh4eF9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDUxOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYXMyMXh4eF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA1Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDYyLVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBhczIxeHh4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwNjM6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhczIxeHh4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNzQtXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IGFzMjF4eHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTA3NTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFzMjF4eHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNzYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MTA4Nj1zdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTQwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE0MTpzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTQyLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMTgzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODY3X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjE1LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyMTY6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjE3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTM4Nj1zdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy00MzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjQzMTpzdGF0aWMgaW50IGRwODN0ZDUxMF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNDMyLVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM9OTM5PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzdGQ1MTBfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtOTY0LVxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzdGQ1MTBfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo5NjU6XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzdGQ1MTBfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtOTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz00OTA9c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy01MjctXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo1Mjg6c3RhdGljIGludCB4d2F5X2dwaHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy01MjktXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9NTg0PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciB4d2F5X2dwaHlbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjAwLVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjAxOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MDItXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjE5LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjIwOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02MjEtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjM4LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjM5OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NDAtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjU3LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NjU4OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NTktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjc1LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Njc2OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02NzctXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNjkzLVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Njk0OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy02OTUtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzExLVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzEyOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03MTMtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzI5LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzMwOlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03MzEtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzQ3LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzQ4OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NDktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNzY1LVxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSB4d2F5X2dwaHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NzY2OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0geHdheV9ncGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy03NjctXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0geHdheV9ncGh5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM9MzU3ND1zdGF0aWMgaW50IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzU5MS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjM1OTI6c3RhdGljIGludCBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM1OTMtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYz0zNzA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzg3NC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM6Mzg3NTpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0zODc2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM5ODktXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jOjM5OTA6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMzk5MS1cXHRcXHQuYXR0YWNoX21paV9wb3J0ID0gbTg4ZTE1MTBfYXR0YWNoX21paV9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDMwPXN0YXRpYyBpbnQgYW43NTgxX3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNDQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ1MDpzdGF0aWMgaW50IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNDUxLVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDk1PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTM5LVxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1NDA6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTQxLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTItXFx0XFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU1MzpcXHRcXHQubGVkX3BvbGFyaXR5X3NldCA9IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1NTQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2NC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNTY1OlxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYW43NTgxX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU2Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYz05ODI9c3RhdGljIGludCBncHlfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC1ncHkuYy0xMDI0LVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM6MTAyNTpzdGF0aWMgaW50IGdweV9sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEwMjYtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBtb2RlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmM9MTEwMj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZ3B5X2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTEyNC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExMjU6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExMjYtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTE1MS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExNTI6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExNTMtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTE3Ny1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjExNzg6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTExNzktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTIwNC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyMDU6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMDYtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTIzMC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyMzE6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyMzItXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI1Ny1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyNTg6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyNTktXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTI4My1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEyODQ6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEyODUtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTMxMC1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEzMTE6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEzMTItXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTMzNi1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjEzMzc6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTEzMzgtXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQyNS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0MjY6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0MjctXFx0XFx0LnVwZGF0ZV9zdGF0c1xcdD0gZ3B5X3VwZGF0ZV9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQ1MS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0NTI6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NTMtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtZ3B5LmMtMTQ3NS1cXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZ3B5X2xlZF9od19jb250cm9sX3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jOjE0NzY6XFx0XFx0LmxlZF9wb2xhcml0eV9zZXQgPSBncHlfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvbXhsLWdweS5jLTE0NzctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzM3OT1zdGF0aWMgaW50IG9mX3BoeV9sZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQxNS1cXHRcXHQvKiBSZXR1cm4gZXJyb3IgaWYgYXNrZWQgdG8gc2V0IHBvbGFyaXR5IG1vZGVzIGJ1dCBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDE2OlxcdFxcdGlmICghcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWxlZF9wb2xhcml0eV9zZXQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDE3LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQxOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM0MTk6XFx0XFx0ZXJyID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWxlZF9wb2xhcml0eV9zZXQocGh5ZGV2LCBpbmRleCwgbW9kZXMpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQyMC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTU4MT1zdGF0aWMgaW50IHFjYTgwOHhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy01OTMtXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjU5NDpzdGF0aWMgaW50IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTU5NS1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjczLVxcdC5sZWRfaHdfY29udHJvbF9nZXRcXHQ9IHFjYTgwOHhfbGVkX2h3X2NvbnRyb2xfZ2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NzQ6XFx0LmxlZF9wb2xhcml0eV9zZXRcXHQ9IHFjYTgwOHhfbGVkX3BvbGFyaXR5X3NldCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjc1LVxcdC51cGRhdGVfc3RhdHNcXHRcXHQ9IHFjYTgwOHhfdXBkYXRlX3N0YXRzLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ4PXN0cnVjdCBwaHlfZHJpdmVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTUyOC1cXHQvKipcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1Mjk6XFx0ICogQGxlZF9wb2xhcml0eV9zZXQ6IFNldCB0aGUgTEVEIHBvbGFyaXR5IG1vZGVzXFxuaW5jbHVkZS9saW51eC9waHkuaC0xNTMwLVxcdCAqIEBkZXY6IFBIWSBkZXZpY2Ugd2hpY2ggaGFzIHRoZSBMRURcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTUzOC1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1Mzk6XFx0aW50ICgqbGVkX3BvbGFyaXR5X3NldCkoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgaW50IGluZGV4LFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTU0MC1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG1vZGVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDIuODk0NTI5MDE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTk3ODAxMDA2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBQSFkgRGV2aWNlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGUgcGh5c2ljYWwgbGF5ZXIgZGV2aWNlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBvZl9waHlfbGVkYCBwcm9wZXJ0eSBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBmaWxlLiBUaGlzIGxvb2tzIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoYXQgZmlsZSBhbmQgZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBzZWUuLi4gYmFzZWQgb24gdGhlIGNvbnRleHQsIEkgZXhwZWN0IEkgc2hvdWxkIGJlIGxvb2tpbmcgYXJvdW5kIGxpbmUgMzM3OS4gVGhhdCBsaWtlbHkgbWFya3MgdGhlIHNwb3Qgd2hlcmUgdGhlIGRldmljZSB0cmVlIChEVCkgaW5mb3JtYXRpb24gaXMgcGFyc2VkIGFuZCB0aGlzIHBhcnRpY3VsYXIgcHJvcGVydHkgaXMgYmVpbmcgaW50ZXJwcmV0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBgb2ZfcGh5X2xlZGAgaXMgYmVpbmcgdXNlZCwgd2hhdCB0aGUgZHJpdmVyIGlzIGV4cGVjdGluZyBmcm9tIHRoZSBEVCBiaW5kaW5nLCBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCB3aXRoIHRoZSBMRUQgY29udHJvbCBtZWNoYW5pc20gd2l0aGluIHRoZSBicm9hZGVyIFBIWSBpbml0aWFsaXphdGlvbi4gVGhpcyBzZWN0aW9uIHdpbGwgaG9wZWZ1bGx5IGlsbHVtaW5hdGUgaG93IHRoZSBzeXN0ZW0gY29uZmlndXJlcyBMRURzIGFjY29yZGluZyB0byB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxOTQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNTowNC44NzI1NDE0NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzcwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzcwOlxcdHtcXG4zMzcxOlxcdFxcdHN0cnVjdCBwaHlfbGVkICpwaHlsZWQsICp0bXA7XFxuMzM3MjpcXHRcXG4zMzczOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwaHlsZWQsIHRtcCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlbGVkcywgbGlzdCkge1xcbjMzNzQ6XFx0XFx0XFx0bGVkX2NsYXNzZGV2X3VucmVnaXN0ZXIoXFx1MDAyNnBoeWxlZC1cXHUwMDNlbGVkX2NkZXYpO1xcbjMzNzU6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnBoeWxlZC1cXHUwMDNlbGlzdCk7XFxuMzM3NjpcXHRcXHR9XFxuMzM3NzpcXHR9XFxuMzM3ODpcXHRcXG4zMzc5OlxcdHN0YXRpYyBpbnQgb2ZfcGh5X2xlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbjMzODA6XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpsZWQpXFxuMzM4MTpcXHR7XFxuMzM4MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldjtcXG4zMzgzOlxcdFxcdHN0cnVjdCBsZWRfaW5pdF9kYXRhIGluaXRfZGF0YSA9IHt9O1xcbjMzODQ6XFx0XFx0c3RydWN0IGxlZF9jbGFzc2RldiAqY2RldjtcXG4zMzg1OlxcdFxcdHVuc2lnbmVkIGxvbmcgbW9kZXMgPSAwO1xcbjMzODY6XFx0XFx0c3RydWN0IHBoeV9sZWQgKnBoeWxlZDtcXG4zMzg3OlxcdFxcdHUzMiBpbmRleDtcXG4zMzg4OlxcdFxcdGludCBlcnI7XFxuMzM4OTpcXHRcXG4zMzkwOlxcdFxcdHBoeWxlZCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcGh5bGVkKSwgR0ZQX0tFUk5FTCk7XFxuMzM5MTpcXHRcXHRpZiAoIXBoeWxlZClcXG4zMzkyOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjMzOTM6XFx0XFxuMzM5NDpcXHRcXHRjZGV2ID0gXFx1MDAyNnBoeWxlZC1cXHUwMDNlbGVkX2NkZXY7XFxuMzM5NTpcXHRcXHRwaHlsZWQtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4zMzk2OlxcdFxcbjMzOTc6XFx0XFx0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobGVkLCBcXFwicmVnXFxcIiwgXFx1MDAyNmluZGV4KTtcXG4zMzk4OlxcdFxcdGlmIChlcnIpXFxuMzM5OTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM0MDA6XFx0XFx0aWYgKGluZGV4IFxcdTAwM2UgVThfTUFYKVxcbjM0MDE6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzQwMjpcXHRcXG4zNDAzOlxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobGVkLCBcXFwiYWN0aXZlLWhpZ2hcXFwiKSlcXG4zNDA0OlxcdFxcdFxcdHNldF9iaXQoUEhZX0xFRF9BQ1RJVkVfSElHSCwgXFx1MDAyNm1vZGVzKTtcXG4zNDA1OlxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobGVkLCBcXFwiYWN0aXZlLWxvd1xcXCIpKVxcbjM0MDY6XFx0XFx0XFx0c2V0X2JpdChQSFlfTEVEX0FDVElWRV9MT1csIFxcdTAwMjZtb2Rlcyk7XFxuMzQwNzpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKGxlZCwgXFxcImluYWN0aXZlLWhpZ2gtaW1wZWRhbmNlXFxcIikpXFxuMzQwODpcXHRcXHRcXHRzZXRfYml0KFBIWV9MRURfSU5BQ1RJVkVfSElHSF9JTVBFREFOQ0UsIFxcdTAwMjZtb2Rlcyk7XFxuMzQwOTpcXHRcXG4zNDEwOlxcdFxcdGlmIChXQVJOX09OKG1vZGVzIFxcdTAwMjYgQklUKFBIWV9MRURfQUNUSVZFX0xPVykgXFx1MDAyNlxcdTAwMjZcXG4zNDExOlxcdFxcdFxcdCAgICBtb2RlcyBcXHUwMDI2IEJJVChQSFlfTEVEX0FDVElWRV9ISUdIKSkpXFxuMzQxMjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNDEzOlxcdFxcbjM0MTQ6XFx0XFx0aWYgKG1vZGVzKSB7XFxuMzQxNTpcXHRcXHRcXHQvKiBSZXR1cm4gZXJyb3IgaWYgYXNrZWQgdG8gc2V0IHBvbGFyaXR5IG1vZGVzIGJ1dCBub3Qgc3VwcG9ydGVkICovXFxuMzQxNjpcXHRcXHRcXHRpZiAoIXBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VsZWRfcG9sYXJpdHlfc2V0KVxcbjM0MTc6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzQxODpcXHRcXG4zNDE5OlxcdFxcdFxcdGVyciA9IHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VsZWRfcG9sYXJpdHlfc2V0KHBoeWRldiwgaW5kZXgsIG1vZGVzKTtcXG4zNDIwOlxcdFxcdFxcdGlmIChlcnIpXFxuMzQyMTpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM0MjI6XFx0XFx0fVxcbjM0MjM6XFx0XFxuMzQyNDpcXHRcXHRwaHlsZWQtXFx1MDAzZWluZGV4ID0gaW5kZXg7XFxuMzQyNTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWxlZF9icmlnaHRuZXNzX3NldClcXG4zNDI2OlxcdFxcdFxcdGNkZXYtXFx1MDAzZWJyaWdodG5lc3Nfc2V0X2Jsb2NraW5nID0gcGh5X2xlZF9zZXRfYnJpZ2h0bmVzcztcXG4zNDI3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGVkX2JsaW5rX3NldClcXG4zNDI4OlxcdFxcdFxcdGNkZXYtXFx1MDAzZWJsaW5rX3NldCA9IHBoeV9sZWRfYmxpbmtfc2V0O1xcbjM0Mjk6XFx0XFxuMzQzMDpcXHQjaWZkZWYgQ09ORklHX0xFRFNfVFJJR0dFUlNcXG4zNDMxOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGVkX2h3X2lzX3N1cHBvcnRlZCBcXHUwMDI2XFx1MDAyNlxcbjM0MzI6XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VsZWRfaHdfY29udHJvbF9zZXQgXFx1MDAyNlxcdTAwMjZcXG4zNDMzOlxcdFxcdCAgICBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGVkX2h3X2NvbnRyb2xfZ2V0KSB7XFxuMzQzNDpcXHRcXHRcXHRjZGV2LVxcdTAwM2Vod19jb250cm9sX2lzX3N1cHBvcnRlZCA9IHBoeV9sZWRfaHdfaXNfc3VwcG9ydGVkO1xcbjM0MzU6XFx0XFx0XFx0Y2Rldi1cXHUwMDNlaHdfY29udHJvbF9zZXQgPSBwaHlfbGVkX2h3X2NvbnRyb2xfc2V0O1xcbjM0MzY6XFx0XFx0XFx0Y2Rldi1cXHUwMDNlaHdfY29udHJvbF9nZXQgPSBwaHlfbGVkX2h3X2NvbnRyb2xfZ2V0O1xcbjM0Mzc6XFx0XFx0XFx0Y2Rldi1cXHUwMDNlaHdfY29udHJvbF90cmlnZ2VyID0gXFxcIm5ldGRldlxcXCI7XFxuMzQzODpcXHRcXHR9XFxuMzQzOTpcXHRcXG4zNDQwOlxcdFxcdGNkZXYtXFx1MDAzZWh3X2NvbnRyb2xfZ2V0X2RldmljZSA9IHBoeV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlO1xcbjM0NDE6XFx0I2VuZGlmXFxuMzQ0MjpcXHRcXHRjZGV2LVxcdTAwM2VtYXhfYnJpZ2h0bmVzcyA9IDE7XFxuMzQ0MzpcXHRcXHRpbml0X2RhdGEuZGV2aWNlbmFtZSA9IGRldl9uYW1lKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4zNDQ0OlxcdFxcdGluaXRfZGF0YS5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKGxlZCk7XFxuMzQ0NTpcXHRcXHRpbml0X2RhdGEuZGV2bmFtZV9tYW5kYXRvcnkgPSB0cnVlO1xcbjM0NDY6XFx0XFxuMzQ0NzpcXHRcXHRlcnIgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0KGRldiwgY2RldiwgXFx1MDAyNmluaXRfZGF0YSk7XFxuMzQ0ODpcXHRcXHRpZiAoZXJyKVxcbjM0NDk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDQuODcyNzk5NzE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY1MTAwNjg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqT0YgUEhZIExFRCBJbml0aWFsaXphdGlvbiAtIERpZ2dpbmcgSW4qKlxuXG5SaWdodCwgYG9mX3BoeV9sZWRgIGlzIGZpcmluZyB1cCBkdXJpbmcgdGhlIERldmljZSBUcmVlIHByb2JpbmcgcGhhc2UsIHNwZWNpZmljYWxseSBmb3IgUEhZIExFRHMuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIGd1dCByZWFjdGlvbiBpcyB0byBpbW1lZGlhdGVseSB0cmFjZSB0aGUgY2FsbCBzdGFjayBvZiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IG9mIGhvdyB0aGlzIGlzIGFsbCB3aXJlZCB1cC4gVW5kZXJzdGFuZGluZyB0aGUgRGV2aWNlIFRyZWUgYmluZGluZ3MgaXMgY3J1Y2lhbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgZXhlY3V0aW9uIHBhdGguIFRpbWUgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgb2ZfcGh5X2xlZGAgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29udmVudGlvbnM/IFdoYXQgc3RydWN0dXJlcyBhcmUgYmVpbmcgcGFzc2VkPyBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTgyNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDYuNTIzODE3MzY3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc4MDIwNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX3BoeV9sZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zMzY5PXN0YXRpYyB2b2lkIHBoeV9sZWRzX3VucmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzM3OC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjMzNzk6c3RhdGljIGludCBvZl9waHlfbGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMzgwLVxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDU1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzQ1NjpzdGF0aWMgaW50IG9mX3BoeV9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNDU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ4Mi1cXHRmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQobGVkcywgbGVkKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNDgzOlxcdFxcdGVyciA9IG9mX3BoeV9sZWQocGh5ZGV2LCBsZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzQ4NC1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM3NDM9c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODYxLVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXFx1MDAyNlxcdTAwMjYgIXBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4NjI6XFx0XFx0ZXJyID0gb2ZfcGh5X2xlZHMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NjMtXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MDguMjAxODUzNDMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYyNTcwNjA3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIGBsZWRfcG9sYXJpdHlfc2V0YCBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgb2ZfcGh5X2xlZGAgZnVuY3Rpb24gYmVjYXVzZSBzb21ldGhpbmcgZmVlbHMgb2ZmLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaXQncyBvbmx5IGludm9rZWQgZHVyaW5nIGRldmljZSBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBwaHlfcHJvYmVgLCBhbmQgb25seSB3aGVuIGEgYGxlZHNgIGRldmljZSB0cmVlIG5vZGUgaXMgcHJlc2VudC4gIEJ1dCBJIG5lZWQgdG8gYmUgKnN1cmUqLiAgXG5cbkZpcnN0LCBJIG5lZWQgdG8ga25vdyBpZiBgbGVkX3BvbGFyaXR5X3NldGAgaXMgY2FsbGVkICphbnl3aGVyZSogZWxzZSBpbiB0aGUga2VybmVsLiAgSXQgc2VlbXMgdW5saWtlbHksIGJ1dCBJJ20gbm90IGdvaW5nIHRvIGFzc3VtZSBhbnl0aGluZy4gU28sIEkgcmFuIGEgZ3JlcCB0byBmaW5kIGV2ZXJ5IGluc3RhbmNlLlxuXG5UaGUgcmVzdWx0cyBhcmUgcHJldHR5IGNvbmNsdXNpdmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIGEgKmxvdCogb2YgZHJpdmVycyBjYWxsaW5nIGEgYCpfbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24uIFRoZSBncmVwIHNob3dzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgdXNlZCBpbnNpZGUgZWFjaCBwaHkgZHJpdmVyOiBgZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuY2AsIGBkcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbGVkcy5jYCwgYGRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmNgLCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY2AsIGBkcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmNgLCBgZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuY2AsIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCwgYGRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNgLCBgZHJpdmVycy9uZXQvcGh5L214bC1ncHkuY2AsIGBkcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmNgLiBBbmQgYSBkZWZpbml0aW9uIGZvciBpdCBpbiBgaW5jbHVkZS9saW51eC9waHkuaGAgcGx1cyBhIGNhbGwgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLlxuXG5BaGEhIGBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWxlZF9wb2xhcml0eV9zZXRgIGlzICpvbmx5KiBjYWxsZWQgZnJvbSBgb2ZfcGh5X2xlZGAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBBbmQgYG9mX3BoeV9sZWRgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSBgb2ZfcGh5X2xlZHMoKWAuIEFuZCBgb2ZfcGh5X2xlZHNgIGlzIG9ubHkgY2FsbGVkIGJ5IGBwaHlfcHJvYmUoKWAuICBUaGlzIGNvbmZpcm1zIG15IHN1c3BpY2lvbiDigJMgaXQncyBhbGwgcGFydCBvZiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHNlcXVlbmNlLiAgVGhlIGNvZGUgaW4gYHBoeV9wcm9iZSgpYCBjaGVja3MgYENPTkZJR19QSFlMSUJfTEVEU2AgYW5kIHRoZW4gYXR0ZW1wdHMgdG8gdXNlIGBvZl9waHlfbGVkc2AgdG8gaW5pdGlhbGl6ZSBsZWRzLlxuXG5CdXQgd2FpdCwgdGhpcyBoYXMgbWUgdGhpbmtpbmcgYWJvdXQgaG93IE1hcnZlbGwgUEhZcyBhcmUgYWN0dWFsbHkgdXNlZCBpbiB0aGUgcmVhbCB3b3JsZC4uLiBMZXQncyB1c2UgdGhlIE1hcnZlbGwgZXhhbXBsZSB0byB0ZXN0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY2hhaW4gaXMgcmVhY2hhYmxlLiBEb2VzIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgaXRzZWxmIGhhdmUgYW55IGV4dGVybmFsIHdheXMgdG8gYmUgdXNlZD9cblxuU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgUUVNVS4gIEFyZSB0aGVyZSBhbnkgdmlydHVhbCBNRElPIG9yIE1hcnZlbGwgUEhZcyBlbXVsYXRlZCB0aGVyZT8gIEknbSBydW5uaW5nIGEgbG90IG9mIHRlc3Rpbmcgd2l0aCBRRU1VLCBzbyBpdCdzIGEgcGVydGluZW50IHF1ZXN0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGF2YWlsYWJsZS4gIE9uIGFtZDY0ICh3aGljaCBpcyBteSB0YXJnZXQgYXJjaCkgaW4gUUVNVSwgdGhlIHN0YW5kYXJkIGVtdWxhdGVkIE5JQ3MgYXJlIHRoaW5ncyBsaWtlIEludGVsIGUxMDAwLCBlMTAwMGUsIGlnYiwgdmlydGlvLW5ldCwgcnRsODEzOSwgYW5kIGEgZmV3IG90aGVycy4gIE5vbmUgb2YgdGhlbSAoYXMgZmFyIGFzIEkga25vdykgaGF2ZSBhIHBoeWxpYiBQSFkgYXR0YWNoZWQgdmlhIGFuIE1ESU8gYnVzIG9yIGV2ZW4gYW4gZXh0ZXJuYWwgUEhZLlxuXG5Db3VsZCBNYXJ2ZWxsIFBIWSBiZSBpbnN0YW50aWF0ZWQgdmlhIHN5c2ZzLCBvciBVU0IsIG9yIHNvbWUgc29ydCBvZiBtb2NrIG9yIHZpcnR1YWwgTURJTyBzZXR1cD8gSSBuZWVkIHRvIGxvb2sgaW50byB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb2YgdGhvc2Ugc2NlbmFyaW9zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuICBUaGlzIGNvdWxkIGJlIHJlYWxseSBjcml0aWNhbCBmb3IgZGVidWdnaW5nLCBiZWNhdXNlIGlmIHRoZXJlJ3MgYSBkaXNjb25uZWN0IGJldHdlZW4gd2hhdCB0aGUga2VybmVsICp0aGlua3MqIGlzIGhhcHBlbmluZyBhbmQgd2hhdCdzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCwgaXQgY291bGQgY2F1c2Ugc3RyYW5nZSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDcwLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjE0LjQ1ODkxNzUzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA5MTY0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcnZlbGxfZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTM2OTQ9c3RhdGljIGludCBtODhlMTUxMF9hdHRhY2hfbWlpX3BvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM3MDUtXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzozNzA2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtYXJ2ZWxsX2RyaXZlcnNbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jLTM3MDctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy00MjE3LVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM6NDIxODptb2R1bGVfcGh5X2RyaXZlcihtYXJ2ZWxsX2RyaXZlcnMpO1xcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtNDIxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MTYuMDY4MDkxMzc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM4MDc5NTExNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlciBBdHRhY2htZW50IFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW9kdWxlX3BoeV9kcml2ZXIobWFydmVsbF9kcml2ZXJzKTtgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBleGFjdGx5IGRvZXMgdGhpcyBQSFkgZHJpdmVyIGdldCBsaW5rZWQgd2l0aCBhIFBIWSBkZXZpY2U/IFRoZSBwcm9jZXNzIHNlZW1zIHRvIGJlIHRoaXM6IHRoZSBNRElPIGJ1cywgZHVyaW5nIGl0cyBwcm9iaW5nIHBoYXNlLCByZWFkcyB0aGUgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYCByZWdpc3RlcnMgZnJvbSB0aGUgUEhZLiBJdCB0aGVuIGNoZWNrcyBpZiB0aGUgUEhZIElEIG1hdGNoZXMgYW55IG9mIHRoZSBgbWFydmVsbF9kcml2ZXJzW2ldLnBoeV9pZGAsIGNvbnNpZGVyaW5nIHRoZSBgcGh5X2lkX21hc2tgLiBJZiB0aGVyZSdzIGEgbWF0Y2gsIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCBwcmVzdW1hYmx5IGBwaHlfcHJvYmUoKWAsIGlzIGNhbGxlZC5cblxuTm93LCBkdXJpbmcgdGhpcyBgcGh5X3Byb2JlKClgIEkgc2VlIHRoYXQgYG9mX3BoeV9sZWRzKClgIGlzIGJlaW5nIGNhbGxlZC4gQnV0IGhvbGQgb24sIHRoaXMgYnJpbmdzIHVwIGFub3RoZXIgY29uY2Vybi4gV2hhdCdzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIGRldmljZSBub2RlIGluIHRoZSBmaXJzdCBwbGFjZSBvbiBhbiBhbWQ2NCBvciB4ODZfNjQgc3lzdGVtPyBNeSBleHBlcmllbmNlIGlzIHRoYXQgeDg2IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGRvbid0IHV0aWxpemUgZGV2aWNlIHRyZWUgZm9yIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLCBleGNlcHQgcGVyaGFwcyBpbiBzb21lIG5pY2hlIGVtYmVkZGVkIHg4NiBib2FyZHMgb3Igc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgaW52b2x2aW5nIGRldmljZSB0cmVlIG92ZXJsYXlzLlxuXG5Db3VsZCBpdCBiZSB0aGF0IE9GIG5vZGVzIGFyZSBsb2FkZWQgZHluYW1pY2FsbHkgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgcGFydGljdWxhcmx5IHdpdGggYENPTkZJR19PRl9PVkVSTEFZYD8gRXZlbiBpZiB0aGF0IHdlcmUgcG9zc2libGUgdmlhIGNvbmZpZ2ZzLCB3aGljaCBpcyBhbHJlYWR5IGEgc3RyZXRjaC4uLlxuXG5IZXJlJ3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhY3R1YWxseSBhICpwaHlzaWNhbCogTWFydmVsbCA4OEUxMzE4UyBvciA4OEUxNTEwIFBIWSBwcmVzZW50IG9uIHRoaXMgYW1kNjQgc3lzdGVtLCBlc3BlY2lhbGx5IGluIGEgUUVNVSBlbnZpcm9ubWVudD8gTm8sIEknbSBwcmV0dHkgc3VyZSBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSB0aG9zZSBzcGVjaWZpYyBNYXJ2ZWxsIFBIWXMuXG5cbk9rYXksIHNvIG1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgaXMgYSB1c2VyLW1vZGUgdGhpbmc/IFBlcmhhcHMgaXQncyBiZWVuIGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2U/IExldCdzIGNoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSBNRElPIGJ1cyBjYW4gYmUgY3JlYXRlZCBieSBhIHVzZXJzcGFjZSBwcm9ncmFtLCBwZXJoYXBzIHRocm91Z2ggbmV0bGluay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyOTAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MTkuODc2MDQ1Mzk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc3MTExNjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9fYnVzX2NsYXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTIzNj1fX0FUVFJJQlVURV9HUk9VUFMobWRpb19idXNfc3RhdGlzdGljcyk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM3LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjIzODpjb25zdCBzdHJ1Y3QgY2xhc3MgbWRpb19idXNfY2xhc3MgPSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtMjM5LVxcdC5uYW1lXFx0XFx0PSBcXFwibWRpb19idXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01ODAtXFx0YnVzLVxcdTAwM2VkZXYucGFyZW50ID0gYnVzLVxcdTAwM2VwYXJlbnQ7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTgxOlxcdGJ1cy1cXHUwMDNlZGV2LmNsYXNzID0gXFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU4Mi1cXHRidXMtXFx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NzI3PXN0cnVjdCBtaWlfYnVzICptZGlvX2ZpbmRfYnVzKGNvbnN0IGNoYXIgKm1kaW9fbmFtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTczMC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo3MzE6XFx0ZCA9IGNsYXNzX2ZpbmRfZGV2aWNlX2J5X25hbWUoXFx1MDAyNm1kaW9fYnVzX2NsYXNzLCBtZGlvX25hbWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTczMi1cXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NzUwPXN0cnVjdCBtaWlfYnVzICpvZl9tZGlvX2ZpbmRfYnVzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19idXNfbnApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy03NTYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NzU3OlxcdGQgPSBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKFxcdTAwMjZtZGlvX2J1c19jbGFzcywgbWRpb19idXNfbnApO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTc1OC1cXHRyZXR1cm4gZCA/IHRvX21paV9idXMoZCkgOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz00MDM4PXN0YXRpYyBpbnQgX19pbml0IHBoeV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwNDEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo0MDQyOlxcdHJjID0gY2xhc3NfcmVnaXN0ZXIoXFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwNDMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDc5LWVycl9jbGFzczpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjQwODA6XFx0Y2xhc3NfdW5yZWdpc3RlcihcXHUwMDI2bWRpb19idXNfY2xhc3MpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NDA4NT1zdGF0aWMgdm9pZCBfX2V4aXQgcGh5X2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNDA5My1cXHRidXNfdW5yZWdpc3RlcihcXHUwMDI2bWRpb19idXNfdHlwZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo0MDk0OlxcdGNsYXNzX3VucmVnaXN0ZXIoXFx1MDAyNm1kaW9fYnVzX2NsYXNzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwOTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oPTEyPWV4dGVybiBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbWRpb19idXNfdHlwZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MTM6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBjbGFzcyBtZGlvX2J1c19jbGFzcztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjIyLjM1MzE2NTg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjkwMzQwNzkwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgTWFydmVsbCBFdGhlcm5ldCBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIE1hcnZlbGwgRXRoZXJuZXQgZHJpdmVycyBhcmUgc3RydWN0dXJlZC4gVGhlIGluaXRpYWwgcXVlc3Rpb24gaXMgXCJXaGljaCBFdGhlcm5ldCBkcml2ZXJzIG91dCB0aGVyZSBpbiB0aGUga2VybmVsIHV0aWxpemUgYG1hcnZlbGwuY2A/XCIuIFRoYXQncyB0aGUgY29yZSBwb2ludCBvZiB0aGUgaW52ZXN0aWdhdGlvbi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBDT05GSUdfTUFSVkVMTF9QSFlgIG9wdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucyBvZiB0aGUgTWFydmVsbCBQSFkgc3VwcG9ydCBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIGl04oCZbGwgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxpbmtlZC4gVWx0aW1hdGVseSwgdGhpcyB3aWxsIHJldmVhbCB3aGF0IGNvbXBvbmVudHMgcmVseSBvbiB0aGUgYG1hcnZlbGwuY2AgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5NjgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNTozMS4zODcyNDgwMzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTY0MzE3OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BUlZFTExfUEhZXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTI3Mz1jb25maWcgTFNJX0VUMTAxMUNfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yNzctXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Mjc4OmNvbmZpZyBNQVJWRUxMX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTI3OS1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBBbGFza2EgUEhZc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MzMuMDAzNjg2NDA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3NjY5NzMyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBQSFkgS2NvbmZpZyBGaWxlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGxpbmVzIDI3MCB0aHJvdWdoIDMwMCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYSwgSSdtIGV4cGVjdGluZyB0aGlzIHNlY3Rpb24gdG8gbGlrZWx5IGRlZmluZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIFBIWSBkcml2ZXIgb3IgYSBncm91cCBvZiBkcml2ZXJzLCBwZXJoYXBzIHdpdGggYSBjb21tb24gZmVhdHVyZSBzZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkIHRocm91Z2ggdGhlIGBLY29uZmlnYCBzeXN0ZW0sIGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIFBIWSBjb25maWd1cmF0aW9uLiBBcmUgdGhlcmUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcz8gQXJlIHRoZXJlIGFueSBkZXZpY2Utc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgZW5jb2RlZCBoZXJlPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHBvdGVudGlhbCBjb25mbGljdHMgb3Igb3B0aW1pemF0aW9ucz8gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqQ2hvaWNlIG9wdGlvbnMqKjogQXJlIHdlIHByZXNlbnRlZCB3aXRoIGEgc2VyaWVzIG9mIFBIWSBkcml2ZXIgc2VsZWN0aW9ucz9cbiogICAqKkRlcGVuZGVuY2llcyoqOiBXaGF0IG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIG9wdGlvbnMgYXJlIHJlcXVpcmVkIG9yIGluY29tcGF0aWJsZT9cbiogICAqKlRyaXN0YXRlIE9wdGlvbnMqKjogQXJlIG1vZHVsZXMgY29tcGlsZWQgaW4gb3IgYXMgYnVpbHQtaW4gYmFzZWQgb24gY29uZGl0aW9ucz9cbiogICAqKkRlZmF1bHRzKio6IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgd2h5PyBBbnkgb2J2aW91cyBhcmNoaXRlY3R1cmFsIGRlc2lnbiBjaG9pY2VzIG1hZGUgaGVyZT9cbiogICAqKkRvY3VtZW50YXRpb24gU3RyaW5ncyoqOiBBcmUgdGhlIGhlbHAgdGV4dHMgY2xlYXIgYW5kIGFjY3VyYXRlPyBJJ2xsIGJlIG1lbnRhbGx5IHBhcnNpbmcgdGhlbSwgYXMgSSBtYXkgYmUgbmVlZGluZyB0byByZWZlcmVuY2UgdGhlbSBsYXRlciB0byBleHBsYWluIHRoaXMgY29uZmlndXJhdGlvbiB0byBvdGhlcnMuXG4qICAgKipTeW1ib2wgbmFtZXMqKjogV2hhdCBuYW1pbmcgY29udmVudGlvbnMgYXJlIHVzZWQgYW5kIGFyZSB0aGV5IGNvbnNpc3RlbnQgd2l0aCB3aGF0IEkndmUgc2VlbiBlbHNld2hlcmUuXG5cblRoZSBnb2FsIGlzIHRvIHJhcGlkbHkgZm9ybSBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyB3aXRoaW4gdGhpcyBzZWN0aW9uLCBhbGxvd2luZyBtZSB0byBhbnN3ZXIgYW55IHF1ZXN0aW9ucyBhYm91dCBzdXBwb3J0ZWQgUEhZcywgY29uZmlndXJhdGlvbiBvcHRpb25zLCBvciBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UuIFRoaXMgaXMgZm91bmRhdGlvbmFsIHRvIGFueSBzdWJzZXF1ZW50IFBIWS1yZWxhdGVkIHdvcmsgb3IgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjM1Ljc3MDY2MjU3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzU6XFx0XFx0aGVscFxcbiAyNzY6XFx0XFx0ICBTdXBwb3J0cyB0aGUgTFNJIEVUMTAxMUMgUEhZLlxcbiAyNzc6XFx0XFxuIDI3ODpcXHRjb25maWcgTUFSVkVMTF9QSFlcXG4gMjc5OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIEFsYXNrYSBQSFlzXFxcIlxcbiAyODA6XFx0XFx0aGVscFxcbiAyODE6XFx0XFx0ICBDdXJyZW50bHkgaGFzIGEgZHJpdmVyIGZvciB0aGUgODhFMVhYWFxcbiAyODI6XFx0XFxuIDI4MzpcXHRjb25maWcgTUFSVkVMTF8xMEdfUEhZXFxuIDI4NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBBbGFza2EgMTBHYml0IFBIWXNcXFwiXFxuIDI4NTpcXHRcXHRoZWxwXFxuIDI4NjpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIEFsYXNrYSBNVjg4WDMzMTAgYW5kIGNvbXBhdGlibGUgUEhZcy5cXG4gMjg3OlxcdFxcbiAyODg6XFx0Y29uZmlnIE1BUlZFTExfODhRMlhYWF9QSFlcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4UTJYWFggUEhZXFxcIlxcbiAyOTA6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXFxuIDI5MTpcXHRcXHRoZWxwXFxuIDI5MjpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIDg4UTJYWFggMTAwLzEwMDBCQVNFLVQxIEF1dG9tb3RpdmUgRXRoZXJuZXRcXG4gMjkzOlxcdFxcdCAgUEhZcy5cXG4gMjk0OlxcdFxcbiAyOTU6XFx0Y29uZmlnIE1BUlZFTExfODhYMjIyMl9QSFlcXG4gMjk2OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4WDIyMjIgUEhZXFxcIlxcbiAyOTc6XFx0XFx0aGVscFxcbiAyOTg6XFx0XFx0ICBTdXBwb3J0IGZvciB0aGUgTWFydmVsbCA4OFgyMjIyIER1YWwtcG9ydCBNdWx0aS1zcGVlZCBFdGhlcm5ldFxcbiAyOTk6XFx0XFx0ICBUcmFuc2NlaXZlci5cXG4gMzAwOlxcdFxcbiAzMDE6XFx0Y29uZmlnIE1BWExJTkVBUl9HUEhZXFxuIDMwMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWF4bGluZWFyIEV0aGVybmV0IFBIWXNcXFwiXFxuIDMwMzpcXHRcXHRzZWxlY3QgUE9MWU5PTUlBTCBpZiBIV01PTlxcbiAzMDQ6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXFxuIDMwNTpcXHRcXHRoZWxwXFxuIDMwNjpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNYXhsaW5lYXIgR1BZMTE1LCBHUFkyMTEsIEdQWTIxMiwgR1BZMjE1LFxcbiAzMDc6XFx0XFx0ICBHUFkyNDEsIEdQWTI0NSBQSFlzLlxcbiAzMDg6XFx0XFxuIDMwOTpcXHRjb25maWcgTUFYTElORUFSXzg2MTEwX1BIWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMjoyNTozNS43NzA3NDU5OTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjE4NTY1ODQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWFydmVsbCBBbGFza2EgUEhZIERyaXZlciBBdHRhY2htZW50cyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgdHlwaWNhbGx5IGludGVyZmFjZSB3aXRoIE1hcnZlbGwgQWxhc2thIFBIWXMuIExldCdzIHN0YXJ0IHdpdGggYSBtZW50YWwgcnVuZG93bjogKm12NjQzeHhfZXRoKiwgKnN0bW1hYyosICpnaWFuZmFyKiwgKm1hY2IqLCAqYWx0ZXJhIHRzZSosICp0aSBrZXlzdG9uZSBuZXRjcCouLi4gcmlnaHQsIHRoZSB1c3VhbCBzdXNwZWN0cy4gRW1iZWRkZWQgQVJNL01JUFMvUG93ZXJQQyBTb0MgRXRoZXJuZXQgY29udHJvbGxlcnMgYW5kIHNwZWNpZmljIGRpc2NyZXRlIE1hcnZlbGwgY29udHJvbGxlcnMuIEdvdCBpdC4gTm93LCB3aGF0IGFib3V0IHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucz8gSSByZWNhbGwgc2VlaW5nIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGFuZCBgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldGAgYmVpbmcgdHdlYWtlZCBpbiByZWxhdGlvbiB0byB0aGVzZS4gT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBwdWxsIHVwIGBkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jYCBhbmQgemVybyBpbiBvbiBsaW5lcyAzNTcwIHRocm91Z2ggMzYzMC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjQ0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6MzcuOTU2NDA3ODQyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvbWFydmVsbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1NzAsXG4gIFwiTGluZUNvdW50XCI6IDY1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1NzA6XFx0XFx0cmV0dXJuIHBoeV93cml0ZV9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxcbjM1NzE6XFx0XFx0XFx0XFx0ICAgICAgIE1JSV84OEUxMzE4U19QSFlfTEVEX0ZVTkMsIHJlZyk7XFxuMzU3MjpcXHR9XFxuMzU3MzpcXHRcXG4zNTc0OlxcdHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbjM1NzU6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgKnJ1bGVzKVxcbjM1NzY6XFx0e1xcbjM1Nzc6XFx0XFx0aW50IG1vZGUsIHJlZztcXG4zNTc4OlxcdFxcbjM1Nzk6XFx0XFx0aWYgKGluZGV4IFxcdTAwM2U9IE04OEUxMzE4U19NQVhfTEVEUylcXG4zNTgwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjM1ODE6XFx0XFxuMzU4MjpcXHRcXHRyZWcgPSBwaHlfcmVhZF9wYWdlZChwaHlkZXYsIE1JSV9NQVJWRUxMX0xFRF9QQUdFLFxcbjM1ODM6XFx0XFx0XFx0XFx0ICAgICBNSUlfODhFMTMxOFNfUEhZX0xFRF9GVU5DKTtcXG4zNTg0OlxcdFxcdGlmIChyZWcgXFx1MDAzYyAwKVxcbjM1ODU6XFx0XFx0XFx0cmV0dXJuIHJlZztcXG4zNTg2OlxcdFxcbjM1ODc6XFx0XFx0bW9kZSA9IChyZWcgXFx1MDAzZVxcdTAwM2UgKDQgKiBpbmRleCkpIFxcdTAwMjYgMHhmO1xcbjM1ODg6XFx0XFxuMzU4OTpcXHRcXHRyZXR1cm4gbWFydmVsbF9nZXRfbGVkX3J1bGVzKGluZGV4LCBydWxlcywgbW9kZSk7XFxuMzU5MDpcXHR9XFxuMzU5MTpcXHRcXG4zNTkyOlxcdHN0YXRpYyBpbnQgbTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuMzU5MzpcXHRcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuMzU5NDpcXHR7XFxuMzU5NTpcXHRcXHRib29sIGZvcmNlX2FjdGl2ZV9sb3cgPSBmYWxzZSwgZm9yY2VfYWN0aXZlX2hpZ2ggPSBmYWxzZTtcXG4zNTk2OlxcdFxcdHUzMiBtb2RlO1xcbjM1OTc6XFx0XFxuMzU5ODpcXHRcXHRpZiAoaW5kZXggXFx1MDAzZT0gTTg4RTEzMThTX01BWF9MRURTKVxcbjM1OTk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzYwMDpcXHRcXG4zNjAxOlxcdFxcdGZvcl9lYWNoX3NldF9iaXQobW9kZSwgXFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XFxuMzYwMjpcXHRcXHRcXHRzd2l0Y2ggKG1vZGUpIHtcXG4zNjAzOlxcdFxcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfTE9XOlxcbjM2MDQ6XFx0XFx0XFx0XFx0Zm9yY2VfYWN0aXZlX2xvdyA9IHRydWU7XFxuMzYwNTpcXHRcXHRcXHRcXHRicmVhaztcXG4zNjA2OlxcdFxcdFxcdGNhc2UgUEhZX0xFRF9BQ1RJVkVfSElHSDpcXG4zNjA3OlxcdFxcdFxcdFxcdGZvcmNlX2FjdGl2ZV9oaWdoID0gdHJ1ZTtcXG4zNjA4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM2MDk6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zNjEwOlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjM2MTE6XFx0XFx0XFx0fVxcbjM2MTI6XFx0XFx0fVxcbjM2MTM6XFx0XFxuMzYxNDpcXHRcXHRpZiAoZm9yY2VfYWN0aXZlX2xvdylcXG4zNjE1OlxcdFxcdFxcdHJldHVybiBwaHlfbW9kaWZ5X3BhZ2VkKHBoeWRldiwgTUlJX01BUlZFTExfTEVEX1BBR0UsXFxuMzYxNjpcXHRcXHRcXHRcXHRcXHRcXHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0wsXFxuMzYxNzpcXHRcXHRcXHRcXHRcXHRcXHRNSUlfODhFMTMxOFNfUEhZX0xFRF9QT0xfQUNUX0hJR0goaW5kZXgpLCAwKTtcXG4zNjE4OlxcdFxcbjM2MTk6XFx0XFx0aWYgKGZvcmNlX2FjdGl2ZV9oaWdoKVxcbjM2MjA6XFx0XFx0XFx0cmV0dXJuIHBoeV9tb2RpZnlfcGFnZWQocGh5ZGV2LCBNSUlfTUFSVkVMTF9MRURfUEFHRSxcXG4zNjIxOlxcdFxcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTCwgMCxcXG4zNjIyOlxcdFxcdFxcdFxcdFxcdFxcdE1JSV84OEUxMzE4U19QSFlfTEVEX1BPTF9BQ1RfSElHSChpbmRleCkpO1xcbjM2MjM6XFx0XFxuMzYyNDpcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNjI1OlxcdH1cXG4zNjI2OlxcdFxcbjM2Mjc6XFx0c3RhdGljIGludCBtYXJ2ZWxsX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMzYyODpcXHR7XFxuMzYyOTpcXHRcXHRzdHJ1Y3QgbWFydmVsbF9wcml2ICpwcml2O1xcbjM2MzA6XFx0XFxuMzYzMTpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4zNjMyOlxcdFxcdGlmICghcHJpdilcXG4zNjMzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM2MzQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjM3Ljk1NzE0Njk5MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo5NTMxOTQxMjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFVucmVhY2hhYmxlIENvZGUgYW5kIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBJJ3ZlIGdvdCBhIGNvdXBsZSBvZiBjaGFuZ2VzIGluIHRoZSBNYXJ2ZWxsIEV0aGVybmV0IFBIWSBkcml2ZXIgdGhhdCBpbnZvbHZlIHRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gYW5kIGEgbWlub3IgdHdlYWsgaW4gYG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldGAuIFNwZWNpZmljYWxseSwgYGxlZF9wb2xhcml0eV9zZXRgIGlzIGFkZGVkIHRvIHRoZSBkcml2ZXIgc3RydWN0dXJlcyBmb3IgYm90aCB0aGUgODhFMTMxOFMgYW5kIDg4RTE1MTAgUEhZcy4gIExvb2tpbmcgZGVlcGVyIGludG8gdGhlIGBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXRgIGZ1bmN0aW9uLCB0aGUgY2hlY2sgYGluZGV4IFx1MDAzZSAyYCB3YXMgY2hhbmdlZCB0byBgaW5kZXggXHUwMDNlPSBNODhFMTMxOFNfTUFYX0xFRFNgIHdoZXJlIGBNODhFMTMxOFNfTUFYX0xFRFNgIGlzIDMsIHdoaWNoIGFyZSBjb21wbGV0ZWx5IGVxdWl2YWxlbnQgZHVlIHRvIGBpbmRleGAgYmVpbmcgYSB1OC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiBleGVjdXRlZCBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gIFRoZSBndWlkZWxpbmVzIGNsZWFybHkgc3RhdGUgdGhhdCBmdXp6aW5nIHNob3VsZCBvbmx5IHRhcmdldCBjb2RlIHJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXG5cbkEgcXVpY2sgcmV2aWV3IG9mIFFFTVUncyBzdXBwb3J0ZWQgbmV0d29yayBkZXZpY2VzIHJldmVhbHMgdGhhdCBub25lIG9mIHRoZSBzdGFuZGFyZCBkZXZpY2VzIGVtdWxhdGUgdGhlIE1hcnZlbGwgODhFMTMxOFMgb3IgODhFMTUxMC4gIFRoZSBgbGVkX3BvbGFyaXR5X3NldGAgZnVuY3Rpb24gaXMgY2FsbGVkICpleGNsdXNpdmVseSogYnkgYG9mX3BoeV9sZWRgIGluIGBwaHlfZGV2aWNlLmNgLiAgYG9mX3BoeV9sZWRgIHJlbGllcyBvbiBwYXJzaW5nIHRoZSBEZXZpY2UgVHJlZSAoT3BlbiBGaXJtd2FyZSkgbm9kZSBmb3IgTEVEIGNvbmZpZ3VyYXRpb24uIE9uIGFtZDY0ICh4ODZfNjQpLCB3aGljaCBpcyB3aGF0IEknbSBvcGVyYXRpbmcgb24sIERldmljZSBUcmVlIGlzIGdlbmVyYWxseSAqbm90KiB1c2VkOyBBQ1BJIGlzLiBBbmQsIHRoZXJlIHdvbid0IGJlIGEgRGV2aWNlIFRyZWUgbm9kZSBmb3IgYSBNYXJ2ZWxsIFBIWSBMRUQhXG5cbkkgY29uZmlybWVkIHRoYXQgdGhlcmUgYXJlIG5vIGNhbGxzIHRvIGBsZWRfcG9sYXJpdHlfc2V0YCB0aHJvdWdoIGV0aHRvb2wsIHN5c2ZzLCBpb2N0bCwgb3IgbmV0bGluay4gSXQgaXMgc3RyaWN0bHkgdGllZCB0byBEZXZpY2UgVHJlZSBwcm9iaW5nIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgUEhZIGRldmljZSB3aXRoIGEgcGFydGljdWxhciBkZXZpY2UgdHJlZSBub2RlLlxuXG5FdmVuIGlmIHNvbWVob3cgYSBQSFkgZGV2aWNlIGNvdWxkIGJlIGNyZWF0ZWQsIGBtODhlMTMxOF9sZWRfcG9sYXJpdHlfc2V0YCByZXF1aXJlcyBhbiBPRiAoRGV2aWNlIFRyZWUpIG5vZGUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgbGFjayBvZiBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uLlxuXG5JbiBzdW1tYXJ5LCB0aGUgbW9kaWZpZWQgY29kZSBjb25jZXJucyBwaHlzaWNhbCBNYXJ2ZWxsIFBIWSB0cmFuc2NlaXZlcnMgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgYGxlZF9wb2xhcml0eV9zZXRgIGZ1bmN0aW9uIGlzIG9ubHkgZXZlciBpbnZva2VkIHZpYSBhIERldmljZSBUcmVlLiBUaGUgYG04OGUxMzE4X2xlZF9od19jb250cm9sX2dldGAgY2hhbmdlIGlzIGxvZ2ljYWxseSBlcXVpdmFsZW50IGFuZCBhbHNvIHNpdHMgaW4gdW5yZWFjaGFibGUgY29kZS4gQmVjYXVzZSBvZiB0aGVzZSBmYWN0b3JzLCB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0IE1VU1QgTk9UIGJlIGZ1enplZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NjIsIk91dHB1dFRva2VucyI6MTk3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIyOjI1OjQ3LjQ4OTA5MTIwMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgTEVEIHBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCAobTg4ZTEzMThfbGVkX3BvbGFyaXR5X3NldCkgdG8gdGhlIE1hcnZlbGwgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYykgZm9yIDg4RTEzMThTIGFuZCA4OEUxNTEwIFBIWXMsIGFuZCByZXBsYWNlcyBhIGhhcmRjb2RlZCBib3VuZCB3aXRoIE04OEUxMzE4U19NQVhfTEVEUyBpbiBtODhlMTMxOF9sZWRfaHdfY29udHJvbF9nZXQuIFRoZXNlIFBIWXMgYXJlIHBoeXNpY2FsIHRyYW5zY2VpdmVyIGNoaXBzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBhbWQ2NCBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCBsZWRfcG9sYXJpdHlfc2V0IGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgRGV2aWNlIFRyZWUgKE9wZW4gRmlybXdhcmUpIHByb2Jpbmcgb2YgUEhZIExFRHMgKG9mX3BoeV9sZWQoKSksIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBhbWQ2NCBmdXp6aW5nIHRhcmdldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIExFRCBwb2xhcml0eSBjb25maWd1cmF0aW9uIHN1cHBvcnQgKG04OGUxMzE4X2xlZF9wb2xhcml0eV9zZXQpIHRvIHRoZSBNYXJ2ZWxsIFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMpIGZvciA4OEUxMzE4UyBhbmQgODhFMTUxMCBQSFlzLCBhbmQgcmVwbGFjZXMgYSBoYXJkY29kZWQgYm91bmQgd2l0aCBNODhFMTMxOFNfTUFYX0xFRFMgaW4gbTg4ZTEzMThfbGVkX2h3X2NvbnRyb2xfZ2V0LiBUaGVzZSBQSFlzIGFyZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBjaGlwcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgbGVkX3BvbGFyaXR5X3NldCBpcyBvbmx5IGludm9rZWQgZHVyaW5nIERldmljZSBUcmVlIChPcGVuIEZpcm13YXJlKSBwcm9iaW5nIG9mIFBIWSBMRURzIChvZl9waHlfbGVkKCkpLCB3aGljaCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgYW1kNjQgZnV6emluZyB0YXJnZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjI6MjU6NDcuNDg5MTI4MjczWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowctlq4[1] Phase: Running StartedAt: 2026-09-14 22:25:58 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowctlq4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 22:25:58 +0000 UTC FinishedAt: 2026-09-14 22:26:09 +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,}