Name: series-workflowclvnd Phase: Failed StartedAt: 2026-08-21 14:27:21 +0000 UTC FinishedAt: 2026-08-21 14:36:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowclvnd[0] Phase: Succeeded StartedAt: 2026-08-21 14:27:21 +0000 UTC FinishedAt: 2026-08-21 14:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowclvnd[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 14:27:21 +0000 UTC FinishedAt: 2026-08-21 14:36:42 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWU2NjBjY2UzOTQxNzgxNzBmOTMxOTE2Mjc1NzE4MzhkY2VkZThkZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjMxOjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuaW5kZXggYWJiZTY1Y2JjZDg5ZS4uMGViMDIxYmU4MzdhZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5AQCAtODU2LDggJiM0Mzs4NTYsOCBAQCB2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHR3Y2lkLVx1MDAzZXN0YSA9IDA7XG4tXHRcdG10NzZfd2NpZF9jbGVhbnVwKGRldiwgd2NpZCk7XG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNld2NpZFtpXSwgTlVMTCk7XG4mIzQzO1x0XHRtdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpO1xuIFx0fVxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3Jlc2V0X2RldmljZWAgaW4gdGhlIE1lZGlhVGVrIG10NzYgV2ktRmkgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL3BsYXRmb3JtIGRyaXZlcnMgZm9yIE1lZGlhVGVrIFdpLUZpIGNoaXBzLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhleSBjYW5ub3QgYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yIFVTQiBnYWRnZXQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlNjYwY2NlMzk0MTc4MTcwZjkzMTkxNjI3NTcxODM4ZGNlZGU4ZGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyMSAxNDozMTowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYwppbmRleCBhYmJlNjVjYmNkODllLi4wZWIwMjFiZTgzN2FlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jCkBAIC04NTYsOCAmIzQzOzg1Niw4IEBAIHZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpCiAJCQljb250aW51ZTsKIAogCQl3Y2lkLSZndDtzdGEgPSAwOwotCQltdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpOwogCQlyY3VfYXNzaWduX3BvaW50ZXIoZGV2LSZndDt3Y2lkW2ldLCBOVUxMKTsKJiM0MzsJCW10NzZfd2NpZF9jbGVhbnVwKGRldiwgd2NpZCk7CiAJfQogCXJjdV9yZWFkX3VubG9jaygpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uIGluIHRoZSBtdDc2IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBhIGNoYW5nZSBpbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCYjMzk7cyBhIHNtYWxsIG1vZGlmaWNhdGlvbiwganVzdCByZW9yZGVyaW5nIGEgY291cGxlIG9mIGxpbmVzLCBidXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcuIFRoZSBvcmlnaW5hbCBjb2RlIHdhczoKCmBgYGMKIAkJd2NpZC0mZ3Q7c3RhID0gMDsKLQkJbXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTsKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7d2NpZFtpXSwgTlVMTCk7CiYjNDM7CQltdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpOwpgYGAKCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGEgc2ltaWxhciBtZW1vcnkgc2FmZXR5IGlzc3VlLiBUaGUgYG10NzZfd2NpZF9jbGVhbnVwYCBmdW5jdGlvbiBsaWtlbHkgcGVyZm9ybXMgc29tZSBvcGVyYXRpb24gb24gdGhlIGB3Y2lkYCBzdHJ1Y3R1cmUsIHBvc3NpYmx5IGZyZWVpbmcgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIG9yaWdpbmFsIG9yZGVyIHBvdGVudGlhbGx5IGxlZnQgYSByYWNlIHdpbmRvdyB3aGVyZSBhIGNvbmN1cnJlbnQgcmVhZGVyIG1pZ2h0IGFjY2VzcyB0aGUgYHdjaWRgIHN0cnVjdHVyZSBhZnRlciBpdCBoYWQgYmVlbiBjbGVhbmVkIHVwLiBUaGUga2V5IGhlcmUgaXMgdGhlIHVzZSBvZiBgcmN1X2Fzc2lnbl9wb2ludGVyYC4gSXQmIzM5O3MgZGVzaWduZWQgZm9yIHRoaXMga2luZCBvZiBjb25jdXJyZW50IGFjY2VzcyBzY2VuYXJpby4gU28sIHRoZSBwYXRjaCBpcyBsaWtlbHkgbW92aW5nIHRoZSBjbGVhbnVwICphZnRlciogdGhlIGByY3VfYXNzaWduX3BvaW50ZXJgIHRvIHByZXZlbnQgdGhvc2UgcmFjZSBjb25kaXRpb25zLiBXZSYjMzk7cmUgbnVsbGluZyBvdXQgdGhlIHBvaW50ZXIgaW4gdGhlIGBkZXZgIHN0cnVjdCAqYmVmb3JlKiBmcmVlaW5nIHRoZSBtZW1vcnkgdGhlIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8uIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZpeCB0byBtZS4gR29vZCBjYXRjaC4KCkJ1dCB0aGVuLCB0aGUgdGhvdWdodCBzdHJ1Y2sgbWUuLi4gaXMgdGhpcyBkcml2ZXIgZXZlbiAqdGVzdGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFdpcmVsZXNzIGRyaXZlcnMgYXJlIG9mdGVuIHRpZ2h0bHkgY291cGxlZCB0byBoYXJkd2FyZSwgYnV0IHdhaXQuLi4gYG10NzZgIGFjdHVhbGx5IGhhcyBVU0IgZHJpdmVycyEgSSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQuIFRoaXMgbWVhbnMgd2UgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBVU0IgZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIGV2ZW4gc3l6a2FsbGVyJiMzOTtzIHZoY2kuIEFuZCwgc2luY2Ugc3l6a2FsbGVyICpzdXBwb3J0cyogVVNCIGZ1enppbmcgdmlhIHZoY2ksIHdlIGNhbiBmdXp6IHRoZSBgbXQ3NmAgVVNCIGRyaXZlcnMhIFRoYXQgY2hhbmdlcyB0aGUgZ2FtZS4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyByZWFjaGFibGUgYW5kIGhvdyB0byB0cmlnZ2VyIHRoYXQgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3Jlc2V0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cdCAqIGxlYXZlcyB3Y2lkLVx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAzMgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXQ3NiBEZXZpY2UgUmVzZXQgRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgYG10NzkxNV9tYWNfZnVsbF9yZXNldGAgYW5kIGBtdDc5OTZfbWFjX2Z1bGxfcmVzZXRgIGZ1bmN0aW9ucy4gSG1tLCBpbnRlcmVzdGluZy4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgd2UgZGVhbGluZyB3aXRoIFVTQiBvciBQQ0llIGltcGxlbWVudGF0aW9ucyBvZiB0aGVzZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZGV2aWNlcyBoZXJlPyBUaGUgcmVzZXQgYmVoYXZpb3IsIGFuZCBwb3RlbnRpYWxseSB0aGUgc3BlY2lmaWMgcmVzZXQgc2VxdWVuY2Ugd2l0aGluIGBtdDc2X3Jlc2V0X2RldmljZWAsIGNvdWxkIGJlIHF1aXRlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIGJ1cyB0eXBlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRpc3RpbmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGFuZCBpZGVudGlmeSBhbnkgcG9zc2libGUgb3B0aW1pemF0aW9ucyBvciBwaXRmYWxscy4gVGltZSB0byBsb29rIGludG8gdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgcHJvYmUgZnVuY3Rpb25zIHRvIGNvbmZpcm0gd2hpY2ggYnVzIHRoZXNlIHNwZWNpZmljIGRldmljZXMgYXJlIHV0aWxpemluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbWFjX2Z1bGxfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0MjU6bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDI2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDgyPXZvaWQgbXQ3OTE1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTUwNDpcdFx0bXQ3OTE1X21hY19mdWxsX3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTA1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1OTUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIE1UNzkxNSBJbnRlcmZhY2UqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBNVDc5MTUuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBiYXNpY3MuIElzIHRoaXMgYSBQQ0llIGRldmljZSwgb3IgZG9lcyBpdCB1dGlsaXplIFVTQj8gVGhhdCYjMzk7cyB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24gYXQgaGFuZC4gVW5kZXJzdGFuZGluZyB0aGF0IHdpbGwgZGljdGF0ZSBzbyBtdWNoIGFib3V0IHRoZSBhcmNoaXRlY3R1cmUsIHBvd2VyIHJlcXVpcmVtZW50cywgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIEl0JiMzOTtzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIGluIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBjb21wb25lbnQgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gVGhlIGFuc3dlciB3aWxsIGRldGVybWluZSBob3cgSSBwcm9jZWVkIHdpdGggdGhlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXJ8bW9kdWxlX3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgbXQ3OTE1IERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byBwaW5wb2ludCBleGFjdGx5ICp3aGF0KiB0aGUgbXQ3OTE1IGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IuIEl0JiMzOTtzIGEgY29tbW9uIGluaXRpYWwgc3RlcCB3aGVuIHRyb3VibGVzaG9vdGluZyBvciBhbmFseXppbmcgYW55dGhpbmcuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaXRzIHJvbGUuIElzIGl0IGEgd2lyZWxlc3MgZHJpdmVyPyBBIHNwZWNpZmljIGNoaXBzZXQgZHJpdmVyPyBUaGUgbm9tZW5jbGF0dXJlIHN1Z2dlc3RzIGEgTWVkaWFUZWsgY29tcG9uZW50LCBidXQgSSBzaG91bGRuJiMzOTt0IGp1bXAgdG8gY29uY2x1c2lvbnMuIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB0aGUgZnVuY3Rpb25hbCBzY29wZSBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGRyaXZlciBuYW1lLCAmIzM0O210NzkxNSwmIzM0OyBpcyB0aGUga2V5LiBOb3csIHdoZXJlIHRvIGJlZ2luIHRoZSBodW50IGZvciBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbi4uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTk5Mz1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3OTE1X2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtMTAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzoxMDAyOm1vZHVsZV9pbml0KG10NzkxNV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy0xMDAzLW1vZHVsZV9leGl0KG10NzkxNV9leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE5MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG10NzkxNV9pbml0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzIGBtdDc5MTVfaW5pdGAgZnVuY3Rpb24uIEkmIzM5O20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIE1lZGlhdGVrIFdpLUZpIGNoaXAuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJvb3QgcHJvY2VzcywgcmVnaXN0ZXIgc2V0dXAsIGFuZCBhbnkgZWFybHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gSSBzdXNwZWN0IGl0JiMzOTtsbCBzdGFydCB3aXRoIHNvbWUgY2xvY2sgZW5hYmxpbmcgYW5kIHJlc2V0IGFzc2VydGlvbi9kZWFzc2VydGlvbiwgZm9sbG93ZWQgYnkgdGhlIGxvYWRpbmcgb2YgZmlybXdhcmUgYW5kIGNhbGlicmF0aW9uIGRhdGEsIHBlcmhhcHMgZXZlbiBzb21lIGVhcmx5IHJhZGlvIGNhbGlicmF0aW9uLgoKSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBjcml0aWNhbCBzdGVwcyBpbiBzZXR0aW5nIHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgYW5kIERNQSBjaGFubmVscy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gdGhlIE1BQyBsYXllciwgZGVzY3JpcHRvcnMsIGFuZCBidWZmZXJzLiBLbm93aW5nIGhvdyB0aGlzIGluaXQgZnVuY3Rpb24gaGFuZGxlcyBwb3dlciBtYW5hZ2VtZW50IHdpbGwgYmUgaW1wb3J0YW50LCBhcyB0aGlzIGlzIG9mdGVuIGEgY3JpdGljYWwgZWxlbWVudCBpbiB0aGVzZSB0eXBlcyBvZiBlbWJlZGRlZCBzeXN0ZW1zLiBJdCYjMzk7cyBsaWtlbHkgZ29pbmcgdG8gYmUgYSBtdWx0aS1zdGFnZSBwcm9jZXNzIHdpdGggZXJyb3IgY2hlY2tpbmcgYXQgZWFjaCBzdGFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI3OD1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10NzkxNV9yZl9yZWd2YWxfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyODE6aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz04PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjk6bXQ3OTE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGludCBpZHgsIGludCBuX2Rlc2MsIGludCByaW5nX2Jhc2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0xMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM9NDA4PWludCBtdDc5MTVfZG1hX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDQzLVx0LyogaW5pdCB0eCBxdWV1ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NDQ0Olx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKFx1MDAyNmRldi1cdTAwM2VwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NDUtXHRcdFx0XHQgICAgTVRfVFhRX0lEKGRldi1cdTAwM2VwaHkubXQ3Ni1cdTAwM2ViYW5kX2lkeCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDUxLVx0aWYgKHBoeTIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjQ1MjpcdFx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKHBoeTIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NTMtXHRcdFx0XHRcdCAgICBNVF9UWFFfSUQocGh5Mi1cdTAwM2VtdDc2LVx1MDAzZWJhbmRfaWR4KSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MzA0PXN0YXRpYyB2b2lkIG10NzkxNV9sZWRfc2V0X2JyaWdodG5lc3Moc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTMxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozMTM6c3RhdGljIHZvaWQgX19tdDc5MTVfaW5pdF90eHBvd2VyKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzE0LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM1Mzp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTgtXHRpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2FwLmhhc18yZ2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM1OTpcdFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXHUwMDI2cGh5LVx1MDAzZW10NzYtXHUwMDNlc2JhbmRfMmcuc2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM2MC1cdGlmIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzVnaHopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzYxOlx0XHRfX210NzkxNV9pbml0X3R4cG93ZXIocGh5LCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzYyLVx0aWYgKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNmdoeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNjM6XHRcdF9fbXQ3OTE1X2luaXRfdHhwb3dlcihwaHksIFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzZnLnNiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0zNjc9bXQ3OTE1X3JlZ2Rfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM4MTpcdG10NzkxNV9pbml0X3R4cG93ZXIocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM4Nz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM4ODptdDc5MTVfaW5pdF93aXBoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTUwMC1cdG10NzkxNV9zZXRfc3RyZWFtX2hlX2NhcHMocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1MDE6XHRtdDc5MTVfaW5pdF90eHBvd2VyKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNTAyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz01ODQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1ODU6bXQ3OTE1X2luaXRfbGVkX211eChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTU4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTY1MD12b2lkIG10NzkxNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6Njc2Olx0bXQ3OTE1X2luaXRfbGVkX211eChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTY3Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTcyMj1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NDYtXHQvKiBpbml0IHdpcGh5IGFjY29yZGluZyB0byBtcGh5IGFuZCBwaHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo3NDc6XHRtdDc5MTVfaW5pdF93aXBoeShwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc0OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc1ODpcdG10NzkxNV9pbml0X2RlYnVnZnMocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo3Njc6c3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzY4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODU3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NTg6bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg2NTpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlaW5pdF93b3JrLCBtdDc5MTVfaW5pdF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEwMTk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEwMjA6bXQ3OTE1X2luaXRfaGVfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEwMjEtXHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMTk1PXZvaWQgbXQ3OTE1X3NldF9zdHJlYW1faGVfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjAyLVx0XHRkYXRhID0gcGh5LVx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfMkdIWl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIwMzpcdFx0biA9IG10NzkxNV9pbml0X2hlX2NhcHMocGh5LCBOTDgwMjExX0JBTkRfMkdIWiwgZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIxMC1cdFx0ZGF0YSA9IHBoeS1cdTAwM2VpZnR5cGVbTkw4MDIxMV9CQU5EXzVHSFpdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyMTE6XHRcdG4gPSBtdDc5MTVfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzVHSFosIGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTgtXHRcdGRhdGEgPSBwaHktXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF82R0haXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjE5Olx0XHRuID0gbXQ3OTE1X2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF82R0haLCBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjUwPWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3NDpcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI3NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3ODpcdG10NzkxNV9pbml0X3dpcGh5KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTMwMzpcdHJldCA9IG10NzkxNV9pbml0X2RlYnVnZnMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMwNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTI5MD1tdDc5MTVfbWFjX3Jlc3RhcnQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzg2LVx0bXQ3OTE1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzg3Olx0bXQ3OTE1X2luaXRfdHhwb3dlcihcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjEzODg6XHRtdDc5MTVfaW5pdF90eHBvd2VyKHBoeTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM4OS1cdHJldCA9IG10NzkxNV90eGJmX2luaXQoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTQyPXN0YXRpYyBpbnQgZ2V0X29tYWNfaWR4KGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSwgdTY0IG1hc2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODU6c3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfYml0cmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MjA0PXN0YXRpYyBpbnQgbXQ3OTE1X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTI3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoyNzM6XHRtdDc5MTVfaW5pdF9iaXRyYXRlX21hc2sodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0yNzQtXHRtZW1zZXQoXHUwMDI2bXZpZi1cdTAwM2VjYXAsIC0xLCBzaXplb2YobXZpZi1cdTAwM2VjYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTE3PXN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6OTY1OnN0YXRpYyBpbnQgX19pbml0IG10NzkxNV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTkzPXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc5MTVfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy0xMDAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjEwMDI6bW9kdWxlX2luaXQobXQ3OTE1X2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTEwMDMtbW9kdWxlX2V4aXQobXQ3OTE1X2V4aXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3MD1pbnQgbXQ3OTE1X3R4YmZfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3MTp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzItdm9pZCBtdDc5MTVfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NjM0PWludCBtdDc5MTVfbWN1X3dlZF9lbmFibGVfcnhfc3RhdHMoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo2MzU6aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC02MzYtdm9pZCBtdDc5MTVfZGVidWdmc19yeF9md19tb25pdG9yKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI1MwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTE1IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBtdDc5MTVfbW1pb19wcm9iZWAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIOKAkyBzcGVjaWZpY2FsbHksIHdpdGhpbiBgbXQ3OTE1X2luaXRgLiBUaW1lIHRvIHRyYWNlIHRoYXQgY2FsbCBjaGFpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbXQ3OTE1X2luaXRgIGRvZXMgdG8gZ2V0IGEgZ3Jhc3Agb24gdGhlIG92ZXJhbGwgZGV2aWNlIGJyaW5nLXVwIHNlcXVlbmNlLiBUaGlzIHByb2JlIGZ1bmN0aW9uIGlzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgbWVtb3J5IHJlZ2lvbnMgYW5kIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIExldCYjMzk7cyBzZWUgaG93IGBtdDc5MTVfaW5pdGAgc2V0cyB0aGUgc3RhZ2UgZm9yIGBtdDc5MTVfbW1pb19wcm9iZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NjU6XHRzdGF0aWMgaW50IF9faW5pdCBtdDc5MTVfaW5pdCh2b2lkKVxuIDk2NjpcdHtcbiA5Njc6XHRcdGludCByZXQ7XG4gOTY4Olx0XG4gOTY5Olx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10NzkxNV9oaWZfZHJpdmVyKTtcbiA5NzA6XHRcdGlmIChyZXQpXG4gOTcxOlx0XHRcdHJldHVybiByZXQ7XG4gOTcyOlx0XG4gOTczOlx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcbiA5NzQ6XHRcdGlmIChyZXQpXG4gOTc1Olx0XHRcdGdvdG8gZXJyb3JfcGNpO1xuIDk3NjpcdFxuIDk3NzpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01UNzk4WF9XTUFDKSkge1xuIDk3ODpcdFx0XHRyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bXQ3OTh4X3dtYWNfZHJpdmVyKTtcbiA5Nzk6XHRcdFx0aWYgKHJldClcbiA5ODA6XHRcdFx0XHRnb3RvIGVycm9yX3dtYWM7XG4gOTgxOlx0XHR9XG4gOTgyOlx0XG4gOTgzOlx0XHRyZXR1cm4gMDtcbiA5ODQ6XHRcbiA5ODU6XHRlcnJvcl93bWFjOlxuIDk4NjpcdFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcbiA5ODc6XHRlcnJvcl9wY2k6XG4gOTg4Olx0XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bXQ3OTE1X2hpZl9kcml2ZXIpO1xuIDk4OTpcdFxuIDk5MDpcdFx0cmV0dXJuIHJldDtcbiA5OTE6XHR9XG4gOTkyOlx0XG4gOTkzOlx0c3RhdGljIHZvaWQgX19leGl0IG10NzkxNV9leGl0KHZvaWQpXG4gOTk0Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDkyNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipNVDc5MTUgYW5kIE1UNzk5NjogRHJpdmVyIEFyY2hpdGVjdHVyZSBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgTVQ3OTE1IOKAkyBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCBhcyBhIFBDSS1iYXNlZCBwbGF0Zm9ybSBkcml2ZXIuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgdXN1YWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gQnV0IHRoYXQgZ2V0cyBtZSB0aGlua2luZyBhYm91dCB0aGUgYnJvYWRlciBwaWN0dXJlLiBXaGF0IGFib3V0IGl0cyBzaWJsaW5nLCB0aGUgTVQ3OTk2PyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgYW5kIGNsYXJpZnksIGJhc2VkIG9uIGV4cGVyaWVuY2UsIHdoZXJlIGRvZXMgdGhhdCBmaXQgaW4gdGhlIHNjaGVtZSBvZiB0aGluZ3M/IElzIGl0IGEgc2ltaWxhciBQQ0ktYmFzZWQgZGVzaWduPyBPciBkb2VzIGl0IGxldmVyYWdlIGEgZGlmZmVyZW50IGJ1cywgcGVyaGFwcyBkZXNpZ25lZCBhcyBhIFNvQyB3aXRoIGEgZGlmZmVyZW50IGludGVybmFsIGFyY2hpdGVjdHVyZT8gSXMgaXQgYSBmdWxseSBpbnRlZ3JhdGVkIGRlc2lnbiBvciBtb3JlIG1vZHVsYXI/IENvbnNpZGVyaW5nIGJvdGggYXJlIGxpa2VseSBNZWRpYVRlayBzb2x1dGlvbnMsIGl0IGlzIGxpa2VseSB0aGV5IGhhdmUgY2VydGFpbiBzaW1pbGFyaXRpZXMuIEkmIzM5O3ZlIGdvdCB0byBxdWlja2x5IHBpZWNlIHRvZ2V0aGVyIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIE1UNzk5NiB0byBzZWUgaG93IGl0IGNvbXBhcmVzLiBUaGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduIGFuZCBkcml2ZXIgaW50ZXJhY3Rpb25zIGFyZSBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gVGltZSB0byBwdWxsIHVwIHNvbWUgZGF0YXNoZWV0cyBhbmQgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz05MDA9c3RhdGljIHZvaWQgX19leGl0IG10Nzk5Nl9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTkwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo5MDY6bW9kdWxlX2luaXQobXQ3OTk2X2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTkwNy1tb2R1bGVfZXhpdChtdDc5OTZfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzg1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFVua25vd246IG10Nzk5NioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gJiMzNDttdDc5OTYmIzM0Oy4uLiB0aGF0JiMzOTtzIGFuIGlkZW50aWZpZXIsIGFuZCBJIGRvbiYjMzk7dCBpbW1lZGlhdGVseSByZWNvZ25pemUgaXQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyeSBhbmQgY2F0ZWdvcml6ZSBpdC4gSXMgaXQgYSBjb21wb25lbnQgZGVzaWduYXRpb24/IEEgc29mdHdhcmUgbGlicmFyeSB2ZXJzaW9uPyBBIHByb2plY3QgY29kZT8gT3IgbWF5YmUgZXZlbiBhIHNwZWNpZmljIHN0YW5kYXJkPyBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIG15IG1lbnRhbCB0YXhvbm9teSBvZiByZWxhdGVkIHBvc3NpYmlsaXRpZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIGl0JiMzOTtzIGxpa2VseSBzb21ldGhpbmcgdGVjaG5pY2FsLCBwcm9iYWJseSByZWxhdGVkIHRvIGhhcmR3YXJlIG9yIHNvZnR3YXJlLCBhbmQgSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgY29udGV4dCBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byBndWVzcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBicm9hZGVzdCBwb3NzaWJsZSBzZWFyY2gsIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgaW1tZWRpYXRlIGRvY3VtZW50YXRpb24gb3IgcHVibGljIG1lbnRpb25zLiBJZiB0aGF0IGRvZXNuJiMzOTt0IHlpZWxkIGFueXRoaW5nIHByb21pc2luZywgSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duLCBjb25zaWRlciByZWxhdGVkIHRlY2hub2xvZ2llcyBvciBvcmdhbml6YXRpb25zLCBhbmQgYXBwcm9hY2ggaXQgc3lzdGVtYXRpY2FsbHkuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBwaW5wb2ludCB0aGUgZG9tYWluIGFuZCB0aGVuIGRlbHZlIGludG8gYW55IHNwZWNpZmljYXRpb25zIG9yIGluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gdGhpcyBpZGVudGlmaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODcwOlx0XHRpZiAocmV0KVxuIDg3MTpcdFx0XHRnb3RvIGVycm9yO1xuIDg3MjpcdFxuIDg3MzpcdFx0dGFza2xldF9zZXR1cChcdTAwMjZtZGV2LVx1MDAzZWlycV90YXNrbGV0LCBtdDc5OTZfaXJxX3Rhc2tsZXQpO1xuIDg3NDpcdFxuIDg3NTpcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XG4gODc2Olx0XG4gODc3Olx0XHRyZXR1cm4gZGV2O1xuIDg3ODpcdFxuIDg3OTpcdGVycm9yOlxuIDg4MDpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gODgxOlx0XG4gODgyOlx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDg4MzpcdH1cbiA4ODQ6XHRcbiA4ODU6XHRzdGF0aWMgaW50IF9faW5pdCBtdDc5OTZfaW5pdCh2b2lkKVxuIDg4NjpcdHtcbiA4ODc6XHRcdGludCByZXQ7XG4gODg4Olx0XG4gODg5Olx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10Nzk5Nl9oaWZfZHJpdmVyKTtcbiA4OTA6XHRcdGlmIChyZXQpXG4gODkxOlx0XHRcdHJldHVybiByZXQ7XG4gODkyOlx0XG4gODkzOlx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10Nzk5Nl9wY2lfZHJpdmVyKTtcbiA4OTQ6XHRcdGlmIChyZXQpXG4gODk1Olx0XHRcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZtdDc5OTZfaGlmX2RyaXZlcik7XG4gODk2Olx0XG4gODk3Olx0XHRyZXR1cm4gcmV0O1xuIDg5ODpcdH1cbiA4OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNTQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0kgRHJpdmVyIERpc2NvdmVyeSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc5OTZgIOKAkyBsb29rcyBsaWtlIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gR290IGl0LiBOb3csIGhvbGQgb24sIEkgc2VlbSB0byByZW1lbWJlciBzZWVpbmcgYG10NzZfcmVzZXRfZGV2aWNlYCBzb21ld2hlcmUgYmVmb3JlLi4uIEFoLCByaWdodCEgSXQmIzM5O3MgYnVyaWVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIGtub3cgdGhlIGZ1bGwgcGljdHVyZS4gTXkgbmV4dCB0aG91Z2h0IGlzOiB3aG8mIzM5O3MgY2FsbGluZyBpdD8gSXMgYG10NzZfcmVzZXRfZGV2aWNlYCBzcGVjaWZpYyB0byB0aGlzIGBtdDc5OTZgIGRyaXZlciwgb3IgaXMgaXQgYSBzaGFyZWQgZnVuY3Rpb24gdXNlZCBieSBvdGhlciBNZWRpYXRlayBkcml2ZXJzIGFzIHdlbGw/IFRpbWUgdG8gY2hlY2sgdGhlIGNyb3NzLXJlZmVyZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVx0ICogbGVhdmVzIHdjaWQtXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNjgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBDYWxsZXJzIGFuZCBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCBzZWVtcyB0aGlzIGZ1bmN0aW9uIGlzICpvbmx5KiBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLiBCb3RoIGFyZSBQQ0kgZHJpdmVycywgd2hpY2ggaXMgaW1wb3J0YW50LiBJJiMzOTttIGRvdWJsZS1jaGVja2luZywgYnV0IG5vLCB0aGVyZSBhcmUgbm8gVVNCIG9yIFNESU8gZHJpdmVycyB1c2luZyB0aGlzIGZ1bmN0aW9uLiBKdXN0IFBDSS4KCldhaXQsIHRoZSBgbXQ3OTE1YCBkcml2ZXIgYWxzbyBzZWVtcyB0byBoYXZlIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCkgZm9yIE1UNzk4eCBTb0NzLiBBcmUgdGhlc2UgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFByb2JhYmx5IG5vdC4gVGhlc2UgYXJlIE1lZGlhVGVrLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycy4gVW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgTWVkaWFUZWsgV2ktRmkgZW11bGF0aW9uIGluIFFFTVUgKHdoaWNoIHRoZXJlIGlzbiYjMzk7dCksIHRoZXNlIGRyaXZlcnMgc2ltcGx5IHdvbiYjMzk7dCBwcm9iZS4KCk5vdywgcmVnYXJkaW5nIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIG9mZmVyIGEgd2F5IHRvIGZ1enogUENJIGRyaXZlcnMgd2l0aCBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gTm8sIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgUENJIGZ1enplciB0aGF0IGNhbiBmdWxseSBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJdCBjYW4gZnV6eiBQQ0kgY29uZmlnIHNwYWNlLCB3aGljaCBpcyBzb21ldGhpbmcsIGJ1dCBpdCBjYW4mIzM5O3QgZW11bGF0ZSBNTUlPIHJlZ2lzdGVycyBvciBETUEgdG8gbWFrZSB0aGUgZHJpdmVyIGFjdHVhbGx5IGluaXRpYWxpemUgYW5kIHJlYWNoIHNvbWV0aGluZyBsaWtlIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgLiBJIHJlY2FsbCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgaXQmIzM5O3MgdmVyeSBsaW1pdGVkLiBJdCBjYW4gbGlrZWx5IHRyaWdnZXIgYHByb2JlYCBmdW5jdGlvbnMsIGJ1dCB3aWxsIHByb2JhYmx5IGZhaWwgZWFybHkgYmVjYXVzZSB0aGUgZHJpdmVyIGV4cGVjdHMgc3BlY2lmaWMgaGFyZHdhcmUgcmVzcG9uc2VzLiBUaGV5JiMzOTtsbCBoYXZlICYjMzQ7bWFnaWMgbnVtYmVycyYjMzQ7IGl0IG5lZWRzIHRvIHJlYWQgZnJvbSByZWdpc3RlcnMsIGFuZCB3aXRob3V0IGVtdWxhdGlvbiB0aGF0JiMzOTtzIGltcG9zc2libGUuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgIGlzIGV2ZW4gcmVhY2hhYmxlLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXQ3OTE1X21hY19yZXNldF93b3JrYC4gVGhpcyB3b3JrIGlzIHNjaGVkdWxlZCB3aGVuIHRoZSBkZXZpY2UgbmVlZHMgYSByZXNldCwgbGlrZSBhZnRlciBhIGZpcm13YXJlIGNyYXNoIG9yIGEgd2F0Y2hkb2cgdGltZW91dC4gU28sIHRvIGhpdCB0aGlzLCB0aGUgZGV2aWNlIGhhcyB0byBiZSAqZnVsbHkqIGluaXRpYWxpemVkIGFuZCBydW5uaW5nLiBDYW4gc3l6a2FsbGVyIGdldCBgbXQ3OTE1YCB0byBpbml0aWFsaXplPyBUaW1lIHRvIGxvb2sgYXQgYG10NzkxNV9tbWlvX3Byb2JlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkxNzpcdHN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuIDkxODpcdFx0XHRcdFx0ICAgICB2b2lkIF9faW9tZW0gKm1lbV9iYXNlLCB1MzIgZGV2aWNlX2lkKVxuIDkxOTpcdHtcbiA5MjA6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XG4gOTIxOlx0XHRcdC8qIHR4d2lfc2l6ZSA9IHR4ZCBzaXplICYjNDM7IHR4cCBzaXplICovXG4gOTIyOlx0XHRcdC50eHdpX3NpemUgPSBNVF9UWERfU0laRSAmIzQzOyBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjX2Z3X3R4cCksXG4gOTIzOlx0XHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfVFhXSV9OT19GUkVFIHwgTVRfRFJWX0hXX01HTVRfVFhRIHxcbiA5MjQ6XHRcdFx0XHQgICAgIE1UX0RSVl9BTVNEVV9PRkZMT0FEIHxcbiA5MjU6XHRcdFx0XHQgICAgIE1UX0RSVl9IV19QU19CVUZGRVJJTkcsXG4gOTI2Olx0XHRcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcbiA5Mjc6XHRcdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuIDkyODpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG4gOTI5Olx0XHRcdC50b2tlbl9zaXplID0gTVQ3OTE1X1RPS0VOX1NJWkUsXG4gOTMwOlx0XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkxNV90eF9wcmVwYXJlX3NrYixcbiA5MzE6XHRcdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZfY29ubmFjX3R4X2NvbXBsZXRlX3NrYixcbiA5MzI6XHRcdFx0LnJ4X3NrYiA9IG10NzkxNV9xdWV1ZV9yeF9za2IsXG4gOTMzOlx0XHRcdC5yeF9jaGVjayA9IG10NzkxNV9yeF9jaGVjayxcbiA5MzQ6XHRcdFx0LnJ4X3BvbGxfY29tcGxldGUgPSBtdDc5MTVfcnhfcG9sbF9jb21wbGV0ZSxcbiA5MzU6XHRcdFx0LnN0YV9hZGQgPSBtdDc5MTVfbWFjX3N0YV9hZGQsXG4gOTM2Olx0XHRcdC5zdGFfZXZlbnQgPSBtdDc5MTVfbWFjX3N0YV9ldmVudCxcbiA5Mzc6XHRcdFx0LnN0YV9yZW1vdmUgPSBtdDc5MTVfbWFjX3N0YV9yZW1vdmUsXG4gOTM4Olx0XHRcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTE1X3VwZGF0ZV9jaGFubmVsLFxuIDkzOTpcdFx0XHQuc2V0X2NoYW5uZWwgPSBtdDc5MTVfc2V0X2NoYW5uZWwsXG4gOTQwOlx0XHR9O1xuIDk0MTpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbiA5NDI6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcbiA5NDM6XHRcdGludCByZXQ7XG4gOTQ0Olx0XG4gOTQ1Olx0XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UocGRldiwgc2l6ZW9mKCpkZXYpLCBcdTAwMjZtdDc5MTVfb3BzLCBcdTAwMjZkcnZfb3BzKTtcbiA5NDY6XHRcdGlmICghbWRldilcbiA5NDc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gOTQ4Olx0XG4gOTQ5Olx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xuIDk1MDpcdFxuIDk1MTpcdFx0cmV0ID0gbXQ3OTE1X21taW9faW5pdChtZGV2LCBtZW1fYmFzZSwgZGV2aWNlX2lkKTtcbiA5NTI6XHRcdGlmIChyZXQpXG4gOTUzOlx0XHRcdGdvdG8gZXJyb3I7XG4gOTU0Olx0XG4gOTU1Olx0XHR0YXNrbGV0X3NldHVwKFx1MDAyNm1kZXYtXHUwMDNlaXJxX3Rhc2tsZXQsIG10NzkxNV9pcnFfdGFza2xldCk7XG4gOTU2Olx0XG4gOTU3Olx0XHRyZXR1cm4gZGV2O1xuIDk1ODpcdFxuIDk1OTpcdGVycm9yOlxuIDk2MDpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gOTYxOlx0XG4gOTYyOlx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDk2MzpcdH1cbiA5NjQ6XHRcbiA5NjU6XHRzdGF0aWMgaW50IF9faW5pdCBtdDc5MTVfaW5pdCh2b2lkKVxuIDk2NjpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxNzQKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgbXQ3OTE1X21taW9faW5pdGAgZnVuY3Rpb24sIHRoaW5raW5nIGxpa2UgSSB3b3VsZCBhcyBhbiBleHBlcnQgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50OgoKKipJbml0aWFsIERldmljZSBTZXR1cDogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3OTE1X21taW9faW5pdGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyB0aGUgaW5pdGlhbCBzZXR1cCBmdW5jdGlvbiBmb3IgdGhlIGRldmljZS4gVGhlICYjMzQ7bW1pbyYjMzQ7IHBhcnQgc3Ryb25nbHkgc3VnZ2VzdHMgTWVtb3J5LU1hcHBlZCBJL08sIG1lYW5pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkaXJlY3QgcmVnaXN0ZXIgYWNjZXNzLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCYjMzk7cyB0aGUgc2NvcGUgb2YgdGhpcyBpbml0aWFsaXphdGlvbj8gRG9lcyBpdCBwcmltYXJpbHkgaW52b2x2ZSBzZXR0aW5nIHVwIGJhc2ljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCByZWdpc3RlciB3cml0ZXMsIG9yIGRvZXMgaXQgYWxzbyBkZWx2ZSBpbnRvIGZpcm13YXJlIGxvYWRpbmcgb3IgZWFybHkgaGFyZHdhcmUgYnJpbmctdXAgdGhhdCByZXF1aXJlcyBtb3JlIHNvcGhpc3RpY2F0ZWQgaW50ZXJhY3Rpb24/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgaW50ZXJwbGF5IG9mIHNvZnR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBoYXJkd2FyZSBpdHNlbGYuIExldCYjMzk7cyBzZWUgd2hhdCBpdCYjMzk7cyByZWFsbHkgdXAgdG8sIGJlY2F1c2UgdGhlIGFuc3dlcnMgdG8gdGhvc2UgcXVlc3Rpb25zIHdpbGwgY2hhbmdlIGhvdyBJIGxvb2sgYXQgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9tbWlvX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjc0MDpzdGF0aWMgaW50IG10NzkxNV9tbWlvX2luaXQoc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTc0MS1cdFx0XHQgICAgdm9pZCBfX2lvbWVtICptZW1fYmFzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTE3PXN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6OTUxOlx0cmV0ID0gbXQ3OTE1X21taW9faW5pdChtZGV2LCBtZW1fYmFzZSwgZGV2aWNlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05NTItXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTgyNAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlIHdlIGdvLi4uCgoqKkluaXRpYWwgRXhhbWluYXRpb24gb2YgYG10NzkxNV9tbWlvX2luaXRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbXQ3OTE1X21taW9faW5pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIE1lZGlhdGVrIGRyaXZlciBpbml0aWFsaXplcyB0aGUgbWVtb3J5LW1hcHBlZCBJL08gZm9yIHRoZSBNVDc5MTUgY2hpcHNldC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgY29uZmlndXJpbmcgdGhlIGJhc2UgYWRkcmVzc2VzIGZvciB2YXJpb3VzIHJlZ2lzdGVycywgcG9zc2libHkgc2V0dGluZyB1cCBETUEsIGFuZCBsaWtlbHkgc29tZSBpbml0aWFsIHBvd2VyLXVwIG9yIHJlc2V0IHNlcXVlbmNlcy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBoZXJlOyB0aGUgb3JkZXIgaXMgb2Z0ZW4gY3JpdGljYWwuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgaGFuZGxlIGFueSBwb3RlbnRpYWwgaGFyZHdhcmUgcXVpcmtzIG9yIGVycmF0YSDigJMgaG9wZWZ1bGx5LCB0aGV5JiMzOTt2ZSBkb2N1bWVudGVkIHRob3NlIHdlbGwgd2l0aGluIHRoZSBjb2RlLiBBbHNvLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGV5IGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zIGlmIHRoYXQmIzM5O3MgYSBmYWN0b3IuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzQwOlx0c3RhdGljIGludCBtdDc5MTVfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiA3NDE6XHRcdFx0XHQgICAgdm9pZCBfX2lvbWVtICptZW1fYmFzZSxcbiA3NDI6XHRcdFx0XHQgICAgdTMyIGRldmljZV9pZClcbiA3NDM6XHR7XG4gNzQ0Olx0XHRzdHJ1Y3QgbXQ3Nl9idXNfb3BzICpidXNfb3BzO1xuIDc0NTpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbiA3NDY6XHRcbiA3NDc6XHRcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiwgbXQ3Nik7XG4gNzQ4Olx0XHRtdDc2X21taW9faW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgbWVtX2Jhc2UpO1xuIDc0OTpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXJlZ19sb2NrKTtcbiA3NTA6XHRcbiA3NTE6XHRcdHN3aXRjaCAoZGV2aWNlX2lkKSB7XG4gNzUyOlx0XHRjYXNlIDB4NzkxNTpcbiA3NTM6XHRcdFx0ZGV2LVx1MDAzZXJlZy5yZWdfcmV2ID0gbXQ3OTE1X3JlZztcbiA3NTQ6XHRcdFx0ZGV2LVx1MDAzZXJlZy5vZmZzX3JldiA9IG10NzkxNV9vZmZzO1xuIDc1NTpcdFx0XHRkZXYtXHUwMDNlcmVnLm1hcCA9IG10NzkxNV9yZWdfbWFwO1xuIDc1NjpcdFx0XHRkZXYtXHUwMDNlcmVnLm1hcF9zaXplID0gQVJSQVlfU0laRShtdDc5MTVfcmVnX21hcCk7XG4gNzU3Olx0XHRcdGJyZWFrO1xuIDc1ODpcdFx0Y2FzZSAweDc5MDY6XG4gNzU5Olx0XHRcdGRldi1cdTAwM2VyZWcucmVnX3JldiA9IG10NzkxNl9yZWc7XG4gNzYwOlx0XHRcdGRldi1cdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcbiA3NjE6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXAgPSBtdDc5MTZfcmVnX21hcDtcbiA3NjI6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXBfc2l6ZSA9IEFSUkFZX1NJWkUobXQ3OTE2X3JlZ19tYXApO1xuIDc2MzpcdFx0XHRicmVhaztcbiA3NjQ6XHRcdGNhc2UgMHg3OTgxOlxuIDc2NTpcdFx0Y2FzZSAweDc5ODY6XG4gNzY2Olx0XHRcdGRldi1cdTAwM2VyZWcucmVnX3JldiA9IG10Nzk4Nl9yZWc7XG4gNzY3Olx0XHRcdGRldi1cdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcbiA3Njg6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXAgPSBtdDc5ODZfcmVnX21hcDtcbiA3Njk6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXBfc2l6ZSA9IEFSUkFZX1NJWkUobXQ3OTg2X3JlZ19tYXApO1xuIDc3MDpcdFx0XHRicmVhaztcbiA3NzE6XHRcdGRlZmF1bHQ6XG4gNzcyOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDc3MzpcdFx0fVxuIDc3NDpcdFxuIDc3NTpcdFx0ZGV2LVx1MDAzZWJ1c19vcHMgPSBkZXYtXHUwMDNlbXQ3Ni5idXM7XG4gNzc2Olx0XHRidXNfb3BzID0gZGV2bV9rbWVtZHVwKGRldi1cdTAwM2VtdDc2LmRldiwgZGV2LVx1MDAzZWJ1c19vcHMsIHNpemVvZigqYnVzX29wcyksXG4gNzc3Olx0XHRcdFx0ICAgICAgIEdGUF9LRVJORUwpO1xuIDc3ODpcdFx0aWYgKCFidXNfb3BzKVxuIDc3OTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3ODA6XHRcbiA3ODE6XHRcdGJ1c19vcHMtXHUwMDNlcnIgPSBtdDc5MTVfcnI7XG4gNzgyOlx0XHRidXNfb3BzLVx1MDAzZXdyID0gbXQ3OTE1X3dyO1xuIDc4MzpcdFx0YnVzX29wcy1cdTAwM2VybXcgPSBtdDc5MTVfcm13O1xuIDc4NDpcdFx0ZGV2LVx1MDAzZW10NzYuYnVzID0gYnVzX29wcztcbiA3ODU6XHRcbiA3ODY6XHRcdG1kZXYtXHUwMDNlcmV2ID0gKGRldmljZV9pZCBcdTAwM2NcdTAwM2MgMTYpIHxcbiA3ODc6XHRcdFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcdTAwMjYgMHhmZik7XG4gNzg4Olx0XHRkZXZfZGJnKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtBU0lDIHJldmlzaW9uOiAlMDR4XFxuXCYjMzQ7LCBtZGV2LVx1MDAzZXJldik7XG4gNzg5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDA0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhpcyBNVDc2IERyaXZlciBQcm9iZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNVDc2IGRyaXZlciBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIGluaXRpYWxpemVkLiBUaGUgY29kZSBncmFicyB0aGUgaGFyZHdhcmUgcmV2aXNpb24gKGBNVF9IV19SRVZgKSB1c2luZyBgbXQ3Nl9ycmAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIHJpZ2h0PyBCdXQgdGhlbiBJIGhpdCBhIHBvdGVudGlhbCBzbmFnIOKAkyBpZiB0aGlzIGlzIGEgUENJIGRldmljZSwgUUVNVSYjMzk7cyBub3QgZnVsbHkgZW11bGF0aW5nIGl0LCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgYmVpbmcgcHJvYmVkIHVubGVzcyB3ZSYjMzk7cmUgZmFraW5nIGl0IHNvbWVob3cuIFN5emthbGxlciYjMzk7cyBnb3QgdGhhdCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBmdW5jdGlvbiwgd2hpY2ggSSAqY291bGQqIHVzZSwgYnV0IHJlYWRpbmcgZnJvbSBNTUlPIHdvdWxkIGxpa2VseSBqdXN0IHJldHVybiBnYXJiYWdlLCBsaWtlIGAweGZmZmZmZmZmYCwgd2hpY2ggd291bGQgcHJvYmFibHkgY3Jhc2ggdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgoKV2FpdCBhIHNlY29uZCwgbGV0IG1lIHpvb20gb3V0LiBJIHJlY2FsbCBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGluIGBtYWM4MDIxMS5jYCwgcGFydCBvZiB0aGF0IGNvcmUgYG10NzZgIGRyaXZlci4gSXMgdGhhdCBmdW5jdGlvbiBldmVuIHVzZWQgYnkgdGhlIFVTQiBwYXJ0cz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgVVNCIGRyaXZlcnMgdGhhdCB1c2UgaXQuIE1heWJlIHNvbWV0aGluZyBsaWtlIGBtdDc2eDAyX21hY19yZXNldF93b3JrYC4uLiBJJiMzOTtsbCBjaGVjayB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXHQgKiBsZWF2ZXMgd2NpZC1cdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQyNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBDYWxsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3Jlc2V0X2RldmljZWAgZnVuY3Rpb24gY2FsbCwgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgb25seSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgYXJlIGNhbGxpbmcgaXQuIEJvdGggb2YgdGhlc2UgYXJlIFBDSSBkZXZpY2VzLCB3aGljaCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIHF1aXRlIGEgYml0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgaXMgdGhlcmUgKmFueSogb3RoZXIgcGF0aCB0byB0aGlzIGZ1bmN0aW9uPyYjMzQ7IE5vLCB0aGVyZSBpc24mIzM5O3QsIHNvIHRoYXTigJlzIGl0OiBpdCYjMzk7cyBleGNsdXNpdmUgdG8gdGhlc2UgdHdvIFBDSSBkZXZpY2VzLgoKTm93LCB0aGUgbmF0dXJhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBpc24mIzM5O3QgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBiZWNhdXNlIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBQQ0kgZGV2aWNlcy4gSSBrbm93IHN5emthbGxlciBoYXMgdGhhdCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBwc2V1ZG8tc3lzY2FsbCwgYnV0IHJlYWxpc3RpY2FsbHksIHRoYXQmIzM5O3MgaW5jcmVkaWJseSBsaW1pdGVkLiBJdCB1c3VhbGx5IGZhbGxzIGFwYXJ0IHdoZW4gZGVhbGluZyB3aXRoIFdpLUZpIGRyaXZlcnMgYmVjYXVzZSBvZiB0aGUgY29tcGxleGl0eSBvZiBmaXJtd2FyZSBsb2FkaW5nIGFuZCBhbGwgdGhvc2UgdHJpY2t5IE1NSU8gaW50ZXJhY3Rpb25zIHRoZXkgZGVtYW5kLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gaG9sZCBvbi4uLiAmIzM0O3N5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyEmIzM0OyBBbmQgdGhlIGNvbW1pdCBtZXNzYWdlIGNvbmZpcm1zIGl0IOKAkyAmIzM0O0F1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OyYjMzQ7LiBUaGlzIG1lYW5zIHN5emthbGxlciAqZGlkKiBzb21laG93IGdldCB0byBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBIb3c/IEhvdyBkaWQgaXQgZ2V0IHBhc3QgYWxsIHRob3NlIGxpbWl0YXRpb25zPyBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLiBJIG5lZWQgdG8gZmluZCB0aGUgYWNjZXNzIHJvdXRlLgoKT2theSwgbXkgbmV4dCBzdGVwIGhhcyB0byBiZSB0byB0aGluayBvdXRzaWRlIHRoZSBQQ0kgYm94LiBDb3VsZCBlaXRoZXIgYG10NzkxNWAgb3IgYG10Nzk5NmAgYmUgcHJvYmVkIHZpYSBzb21ldGhpbmcgZWxzZT8gVVNCPyBTRElPPyBUaG9zZSBhcmUgcG9zc2liaWxpdGllcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIG90aGVyIGJ1cyB0eXBlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3VzYl9kcml2ZXJ8bW9kdWxlX3NkaW9fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM9MjQ2PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgbXQ3NjYzc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTI1Mi19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjI1Mzptb2R1bGVfc2Rpb19kcml2ZXIobXQ3NjYzc19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTI1NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0yNjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzY2M3VfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0zNDU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzU1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNTY6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngwX2RyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTM3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNDktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjE1MDptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTMyNz1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIG10NzkyMXNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMzMtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzozMzQ6bW9kdWxlX3NkaW9fZHJpdmVyKG10NzkyMXNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMzUtTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHdpcmVsZXNzIGRyaXZlclwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTAtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTI1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgRnVuY3Rpb24qKgoKSG1tLCBzbyBgbXQ3Nl9yZXNldF9kZXZpY2VgLi4uIHRoYXQmIzM5O3MgYSBmdW5jdGlvbiBJJiMzOTt2ZSBzZWVuIGJlZm9yZS4gUmlnaHQsIGl0JiMzOTtzIGRlZmluZWQgaW4gYG1hYzgwMjExLmNgLiBCdXQgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgaXMgaXQgKmFjdHVhbGx5KiB1c2VkIHdpdGhpbiB0aGUgYG10NzZgIGRyaXZlciBmcmFtZXdvcms/IElzIGl0IHNwZWNpZmljIHRvIGNlcnRhaW4gTWVkaWF0ZWsgY2hpcHNldHM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGVtcGxveWVkIGJ5IHRoZSBgbXQ3OTIxYCBmYW1pbHksIHRoZSBgbXQ3OTI1YCBzZXJpZXMsIG9yIHBvdGVudGlhbGx5IGJvdGguIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZmxvdyBpcyBjcml0aWNhbCBoZXJlLiBLbm93aW5nICp3aG8qIGlzIGNhbGxpbmcgdGhpcyByZXNldCBmdW5jdGlvbiB3aWxsIGhlbHAgbWUgaW1tZW5zZWx5IGluIHRyb3VibGVzaG9vdGluZyB3aGF0ZXZlciBpc3N1ZSBpcyBjdXJyZW50bHkgb24gbXkgcGxhdGUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHVzYWdlLiBXaGVyZSBhcmUgdGhlc2UgZHJpdmVycyBjYWxsaW5nIHRoaXMgZnJvbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQyOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgdGhlIG10NzkyNSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgbmV3LCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGxlYW5zIHRvd2FyZHMgZXhwbG9yaW5nIHRoZSBgbXQ3OTI1YC4gKldoeT8qIFdlbGwsIGdpdmVuIHRoZSBjb250ZXh0ICh3aGljaCBJJiMzOTttIGFzc3VtaW5nLCBiYXNlZCBvbiBteSBmaWVsZCwgaW52b2x2ZXMgZWl0aGVyIG5ldHdvcmtpbmcsIGVtYmVkZGVkIHN5c3RlbXMsIG9yIGxpa2VseSBib3RoKSwgaXQmIzM5O3MgcHJvYmFibHkgcmVsZXZhbnQuIEl0JiMzOTtzIGFuIGludGVyZXN0aW5nIGNoaXAgYW5kIEkgd29uZGVyIHdoYXQgc3BlY2lmaWMgYXNwZWN0IG9mIGl0IGlzIGJlaW5nIGNvbnNpZGVyZWQuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgaGVyZT8gQXJlIHdlIGxvb2tpbmcgYXQgY2FwYWJpbGl0aWVzLCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzLCBwb3RlbnRpYWwgaW50ZWdyYXRpb24gd2l0aCBhIHNwZWNpZmljIE9TIG9yIGFyY2hpdGVjdHVyZSwgb3IgcGVyaGFwcyBjb21wYXJpbmcgaXQgYWdhaW5zdCBvdGhlciBzb2x1dGlvbnM/IEFyZSB3ZSBjb25zaWRlcmluZyB0aGUgY29zdCwgcG93ZXIgY29uc3VtcHRpb24gb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBkb2N1bWVudGF0aW9uPyBJIG5lZWQgbW9yZSBkYXRhIHRvIGZvcm11bGF0ZSBhIHByb3BlciBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDY2NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIHlvdXIgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipDb25zaWRlcmluZyB0aGUgTVQ3NjE1KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcuLi4gd2hhdCBhYm91dCB0aGUgYG10NzYxNWA/IEl0IGtlZXBzIHBvcHBpbmcgdXAgaW4gbXkgcmVzZWFyY2guIEkgbmVlZCB0byBnaXZlIHRoaXMgY2hpcCBzb21lIHNlcmlvdXMgY29uc2lkZXJhdGlvbi4gSXQgaGFzIHBvdGVudGlhbCwgSSBrbm93LCBidXQgd2hlcmUgZG9lcyBpdCBmaXQgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmU/IElzIGl0IHRoZSBiZXN0IHNvbHV0aW9uIGZvciB0aGUgY3VycmVudCBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlPyBPciBpcyB0aGVyZSBzb21ldGhpbmcgZWxzZSBtb3JlIGFwcHJvcHJpYXRlPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3BlY3MgYWdhaW4sIGNvbXBhcmUgaXQgYWdhaW5zdCBteSBiZW5jaG1hcmtzLCBhbmQgYXNzZXNzIGl0cyBwcm9zIGFuZCBjb25zIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgdXNlIGNhc2UuIEkmIzM5O20gY29uc2lkZXJpbmcgaXQsIG9idmlvdXNseSwgYnV0IEkmIzM5O20gbm90IHJlYWR5IHRvIGZ1bGx5IGNvbW1pdCB0byBpdCBqdXN0IHlldC4gSSBuZWVkIHRvIG1ha2UgYSBzb2xpZCBqdWRnbWVudCBiYXNlZCBvbiBoYXJkIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTAyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSYjMzk7bSB0aGUgb25lIGhhdmluZyB0aGVtOgoKKipDb25zaWRlcmluZyB0aGUgbXQ3NngwIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgc3BlY2lmaWMgd2lyZWxlc3MgaXNzdWUgYW5kIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIGRyaXZlcnMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdHJvdWJsZXNob290aW5nLiBJJiMzOTt2ZSBydWxlZCBvdXQgYSBmZXcgdGhpbmdzLCBidXQgSSBoYXZlbiYjMzk7dCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VkIHRoZSAqbXQ3NngwKiBkcml2ZXIuIEl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCBJIGhhdmVuJiMzOTt0IHJlYWxseSBwdXQgaXQgdW5kZXIgdGhlIG1pY3Jvc2NvcGUgeWV0LiBJcyBpdCB0aGUgcmlnaHQgZHJpdmVyIGZvciB0aGUgaGFyZHdhcmUgaW4gcXVlc3Rpb24/IElzIHRoZXJlIGEga25vd24gaXNzdWUgd2l0aCB0aGUgcGFydGljdWxhciB2ZXJzaW9uIGluIHVzZT8gSGF2ZSBJIGNoZWNrZWQgZm9yIGFueSBlcnJhdGEgb3IgY29tcGF0aWJpbGl0eSBub3RlcyByZWxhdGVkIHRvIHRoaXMgY2hpcCBhbmQgdGhlIHRhcmdldGVkIGtlcm5lbCB2ZXJzaW9uPyBJIG5lZWQgdG8gbG9vayBpbnRvIGl0cyBzdGF0dXMuIE1heWJlIGEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgY291bGQgYmUgb2ZmLiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBsb29raW5nIGF0IGxvZ3MgdG8gc2VlIGlmIHRoYXQmIzM5O3MgdGhlIHBvaW50IG9mIGZhaWx1cmUuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtdDc2eDBgIGRyaXZlciBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcsIG9yIG5vdCBkb2luZywgYW5kIGlmIGl0JiMzOTtzIHRoZSByb290IG9mIG15IHByb2JsZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgdGhlIE1UNzZ4MioqCgpIbW0sIHRoaW5raW5nIGFib3V0IHRoaXMgd2lyZWxlc3Mgc2l0dWF0aW9uLi4uIEkgbmVlZCB0byBjb25zaWRlciBhIHNwZWNpZmljIGNoaXBzZXQgZm9yIHRoZSBhY2Nlc3MgcG9pbnQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcGVkIHRvIHRoZSBwb3NzaWJpbGl0aWVzIG9mIGBtdDc2eDJgLiBJdCYjMzk7cyBhIHNvbGlkLCBrbm93biBxdWFudGl0eS4gVGhlIGBtdDc2eDJgIHNlcmllcyBoYXMgYmVlbiBhIHdvcmtob3JzZSBmb3IgYSB3aGlsZS4gSXQmIzM5O3MgZ290IGRlY2VudCBwZXJmb3JtYW5jZSwgZ2VuZXJhbGx5IGdvb2QgZHJpdmVyIHN1cHBvcnQsIGFuZCBhIHdlbGwtZXN0YWJsaXNoZWQgY29tbXVuaXR5IGFyb3VuZCBpdC4gSXQgaXMga25vd24gYW5kIHVuZGVyc3Rvb2QuCgpMZXQgbWUgYW5hbHl6ZS4gV2hhdCB3b3VsZCB0aGUgaW1wbGljYXRpb25zIG9mIHV0aWxpemluZyBgbXQ3NngyYCBiZSwgcmVhbGx5PyBEb2VzIGl0IHN0aWxsIG1ha2Ugc2Vuc2UsIGNvbnNpZGVyaW5nIHRoZSBhZHZhbmNlbWVudHM/IFdoYXQgYXJlIGl0cyBjdXJyZW50IGxpbWl0YXRpb25zPyBNYXliZSBpdCYjMzk7cyBhIGJpdCBkYXRlZCBjb21wYXJlZCB0byBzb21lIG9mIHRoZSBuZXdlciBjaGlwc2V0cywgYnV0IHBlcmhhcHMgdGhlIHByb3ZlbiBzdGFiaWxpdHkgYW5kIGF2YWlsYWJsZSBzb2Z0d2FyZSBlY29zeXN0ZW0gb3V0d2VpZ2ggdGhvc2UgY29uY2VybnMsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24uIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIHJlYXNvbiB0byBydWxlIGl0IG91dCwgZ2l2ZW4gdGhlIHByb2plY3QgcGFyYW1ldGVycz8gTWF5YmUgaXQmIzM5O3MgcGVyZmVjdCBmb3IgdGhpcyBzY2VuYXJpbywgYSBnb29kIGNvc3QvYmVuZWZpdCBhbmFseXNpcy4gSSBuZWVkIHRvIGNvbnNpZGVyIGl0IHNlcmlvdXNseSBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMuIEl04oCZcyBjZXJ0YWlubHkgYSB2aWFibGUgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTUxMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0IGBtdDc2X3Jlc2V0X2RldmljZWAgb25seSBsZWFkcyB0byBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiBgbWFjODAyMTFfaHdzaW1gIGNvdWxkIHRyaWdnZXIgYG10NzkxNV9tYWNfZnVsbF9yZXNldGAsIGJ1dCB0aGF0JiMzOTtzIGEgZGVhZCBlbmQgLSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIFRoZW4gSSBjb25zaWRlcmVkIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCB3aGlsZSBpdCYjMzk7cyBhIHRoaW5nLCBpdCBqdXN0IGNhbGxzIGBwY2lfZGV2aWNlX2FkZGAsIHNvIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSBwcm9taXNpbmcuCgpIb2xkIG9uLCB0aGlzIGlzbiYjMzk7dCBuZWNlc3NhcmlseSBhIHN5emthbGxlci1kaXNjb3ZlcmVkIGJ1ZywgaXQgY291bGQgYmUgYSBwYXRjaCBzdWJtaXR0ZWQgZm9yIHRlc3RpbmcgYnkgc3l6Ym90ISAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IC0gdGhhdCBjb25maXJtcyBpdC4gU3l6Ym90IGFwcGxpZXMgYW5kIGNvbXBpbGVzIHRoZSBwYXRjaCwgYnV0IHRoYXQgZG9lc24mIzM5O3QgZ3VhcmFudGVlIHRoZSBjb2RlIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB2aWEgZnV6emluZy4KCklmIGl0ICppcyogYW4gdW5kZXItcmV2aWV3IHBhdGNoLCBzeXpib3Qgd2lsbCBjb21waWxlIGFuZCBmdXp6IGl0LiBCdXQgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUsIGl0IHdvbiYjMzk7dCBiZSBmdXp6ZWQuCgpUaGUgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgaXMgaW4gYSBwbGFjZSB0aGF0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhhdCBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4KClNvLCBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgYXJlICpkZWZpbml0ZWx5KiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXJzLiBUaGV5IGFic29sdXRlbHkgbmVlZCBNZWRpYVRlayBNVDc5MTUvTVQ3OTk2IGhhcmR3YXJlLiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhhdCwgSSBrbm93IHRoYXQuIE5vIGNoYW5jZSB0aGV5JiMzOTtyZSBiZWluZyBlbXVsYXRlZC4KCkNhbiBJIGdldCBgbXQ3OTE1YCBpbml0aWFsaXplZCB0aHJvdWdoIGBzeXpfcGNpX2RldmljZV9hZGRgPyBUaW1lIHRvIGdvIGJhY2sgb3ZlciBgbXQ3OTE1X21taW9faW5pdGAuIEl0IHJlYWRzIGBNVF9IV19SRVZgIGZyb20gTU1JTy4gT2theSwgaWYgdGhhdCBkb2VzbiYjMzk7dCBtYXRjaCwgaXQgbWlnaHQgYmFpbCBvdXQ/IE5vcGUsIGp1c3QgbG9ncyBpdC4gQnV0IGl0IGFsc28gcmVhZHMgYGRldmljZV9pZGAgZnJvbSB0aGUgUENJIGRldmljZSwgYW5kIGdvZXMgdGhyb3VnaCBhIHdob2xlIGJ1bmNoIG9mIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLiBDYW4gdGhpcyBsZWFkIHRvIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgPyBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXQ3OTE1X21hY19yZXNldF93b3JrYCwgd2hpY2ggaXMgc2NoZWR1bGVkIGZyb20gYG10NzkxNV9yZXNldGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OT1tdDc5MTVfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05Ny1cdFx0ZGV2LVx1MDAzZXJlY292ZXJ5LnN0YXRlIHw9IE1UX01DVV9DTURfV0RUX01BU0s7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTg6XHRcdG10NzkxNV9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNjA1PXZvaWQgbXQ3OTE1X21hY19kdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE2NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNjc0OnZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNjc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTg5MC1cdFx0XHRkZXYtXHUwMDNlcmVjb3Zlcnkuc3RhdGUgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6ODkxOlx0XHRcdG10NzkxNV9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTg5Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3MT12b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NzI6dm9pZCBtdDc5MTVfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzMtaW50IG10NzkxNV9ydW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ0MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIElucXVpcnkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG10NzkxNV9yZXNldGAgZnVuY3Rpb24gZ2V0cyB0cmlnZ2VyZWQuIEl0IHNlZW1zIGl0IGNhbiBiZSBjYWxsZWQgZWl0aGVyIGluIHJlc3BvbnNlIHRvIGEgc3BlY2lmaWMgaW50ZXJydXB0LCB3aGljaCBpcyBoYW5kbGVkIGJ5IGBtdDc5MTVfaXJxX3Rhc2tsZXRgLCBvciBkaXJlY3RseSB0aHJvdWdoIGRlYnVnZnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdG8gZXZlbiBnZXQgdG8gdGhpcyBwb2ludCwgdGhlIGRldmljZSBpdHNlbGYgaGFzIHRvIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcHJvYmVkLCByaWdodD8gU28sIHRoZSBlbnRpcmUgZGV2aWNlIGRyaXZlciBtdXN0IGJlIHVwIGFuZCBydW5uaW5nLgoKSSYjMzk7bSBjdXJpb3VzLCBjYW4gYG10NzkxNV9tbWlvX3Byb2JlYCBldmVuIHN1Y2NlZWQgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudD8gQ291bGQgSSBzaW11bGF0ZSBvciBzdHViIG91dCB0aGUgaGFyZHdhcmUgYW5kIHN0aWxsIGdldCB0byB0aGUgcG9pbnQgd2hlcmUgdGhpcyByZXNldCBtZWNoYW5pc20gYmVjb21lcyByZWxldmFudD8gVGhhdCYjMzk7cyB3aGF0IEkgd2FudCB0byB0ZXN0LiBJIGtub3cgaXQgY2FsbHMgYG10NzkxNV9tbWlvX2luaXRgIGZpcnN0LCB3aGljaCB0aGVuIGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgLiBTbywgbXkgbmV4dCBtb3ZlIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqYWN0dWFsbHkqIGhhcHBlbmluZyBpbiB0aG9zZSBmdW5jdGlvbnMgYW5kIGlmIHRob3NlIGNhbGxzIGNhbiBiZSBzaW11bGF0ZWQgdG8gcmVhY2ggdGhlIHJlc2V0IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbWN1X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODU4PW10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODczOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODc0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzYtXHQvKiBsb2FkIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzc3Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzIyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIzMjM6bXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzODc9c3RhdGljIGludCBtdDc5MTVfbWN1X3NldF9yZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDEwOmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDU4Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDc3Olx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDczPWludCBtdDc5MTVfcnVuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzYtaW50IG10NzkxNV9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDQyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZhaWx1cmUqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBpbml0aWFsaXphdGlvbiBpc3N1ZSB3aXRoIHRoZSBtdDc5MTUgZGV2aWNlLiBJdCBsb29rcyBsaWtlIGBtdDc5MTVfbWN1X2luaXRgIGlzIHRoZSBzdGFydGluZyBwb2ludCwgY2FsbGluZyBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGxvYWQgZmlybXdhcmUsIHNlbmQgY29tbWFuZHMgdG8gdGhlIE1DVS4gTm93LCBpZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIE1DVSB3b24mIzM5O3QgcmVzcG9uZCwgYW5kIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgIHJpZ2h0bHkgZmFpbHMuCgpUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBzeXprYWxsZXIsIG91ciBmdXp6ZXIsIG1heSBoYXZlIGZvdW5kIHRoaXMuIEl0IGNhbiBpbmplY3QgZmlybXdhcmUsIGJ1dCBpdCBjYW4mIzM5O3QgZnVsbHkgZW11bGF0ZSB0aGUgTUNVIHJlc3BvbnNlcyB0byBNTUlPIHJlYWRzIGFuZCB3cml0ZXMuIFNvLCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ29lcyBkb3duIHRoZSBkcmFpbjogYG10NzkxNV9pbml0X2hhcmR3YXJlYCBmYWlscywgdGhlbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMuIENvbnNlcXVlbnRseSwgdGhlIGRldmljZSBuZXZlciByZWFjaGVzIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc3RhdGUgYW5kLCBjcml0aWNhbGx5LCBgbXQ3OTE1X3Jlc2V0YCBpcyBuZXZlciBjYWxsZWQuCgpCdXQgdGhlbiBJIHRob3VnaHQsIGlmIHN5emthbGxlciBmb3VuZCB0aGlzLCAqaG93Kj8gSXQgbWFkZSBtZSBjb25zaWRlciB0aGF0IG1heWJlIGBtdDc2X3Jlc2V0X2RldmljZWAgSVMgY2FsbGVkIGJ5IGEgVVNCIGRyaXZlciwgZXZlbiBpZiBpdCYjMzk7cyBub3QgaW4gdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgb2YgdGhlIG1haW4gbXQ3OTE1IGRyaXZlci4gTGV0JiMzOTtzIHZlcmlmeS4gSSBncmVwcGVkIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5IGFuZCB0aGUgc2VhcmNoIHR1cm5lZCB1cCBvbmx5IGBtdDc5MTUvbWFjLmNgIGFuZCBgbXQ3OTk2L21hYy5jYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBub3QgY2FsbGVkIHNvbWV3aGVyZSBlbHNlLgoKV2FpdCwgdGhlcmUmIzM5O3MgYG10NzZfd2NpZF9jbGVhbnVwYC4gVGhlIHBhdGNoIHJlZmVyZW5jZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiBgbWFjODAyMTEuY2AuIFNvIGl0IGFwcGVhcnMgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBiZWluZyBjYWxsZWQgdGhlcmUuIEhvd2V2ZXIsIHRoZSByZXNldCBpcyBiZWluZyBkb25lIF9iZWZvcmVfIHRoZSB3Y2lkIGNsZWFudXAsIHdoaWNoIGlzIHRoZW4gbW92ZWQgdG8gKmFmdGVyKi4gU28sIGxldCYjMzk7cyBzZWUsIGlzIGBtdDc2X3Jlc2V0X2RldmljZWAgY2FsbGVkIGJ5ICphbnkqIG90aGVyIGRyaXZlciBvdXRzaWRlIG9mIHRoZSBgbXQ3NmAgc3Vic3lzdGVtPyBJdCYjMzk7cyBleHBvcnRlZCwgYnV0IGlmIGl0IGlzIG9ubHkgY2FsbGVkIGluIGBtdDc2YCwgdGhlbiB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBMZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2VhcmNoIHRvIHRoZSBlbnRpcmUga2VybmVsIHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cdCAqIGxlYXZlcyB3Y2lkLVx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTUzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlIG9mIHRoZSBNZWRpYVRlayBXaS1GaSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMuIFRoZXkmIzM5O3JlIGJvdGggUENJZSBkcml2ZXJzLCBhbmQgYWxzbyBwbGF0Zm9ybSBkcml2ZXJzIGZvciB0aGUgTVQ3OTh4IFNvQ3MuIEltbWVkaWF0ZWx5LCBteSBmaXJzdCB0aG91Z2h0IGlzIHZpcnR1YWxpemF0aW9uLCBsaWtlIFFFTVUuIFNpbmNlIHRoZXkmIzM5O3JlIFBDSWUgYW5kIHBsYXRmb3JtIGRyaXZlcnMsIHRoZXkmIzM5O3JlIHByb2JhYmx5IG91dCBvZiByZWFjaCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50Li4uIHVubGVzcyEgV2FpdCBhIG1pbnV0ZSwgd2hhdCBhYm91dCBzeXprYWxsZXI/IERvZXMgdGhhdCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBwc2V1ZG8tc3lzY2FsbCBvZmZlciBhIGJhY2tkb29yPyBJZiBzbywgY291bGQgdGhhdCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoZSBwcm9iZT8gSWYgYHN5el9wY2lfZGV2aWNlX2FkZGAgZG9lcyBjYWxsIGBtdDc5MTVfbW1pb19wcm9iZWAsIHRoYXQmIzM5O3Mgb3VyIGVudHJ5IHBvaW50LgoKYG10NzkxNV9tbWlvX3Byb2JlYCBpcyBrZXkgYmVjYXVzZSBpdCBsZWFkcyB0byBgbXQ3OTE1X21taW9faW5pdGAsIHdoaWNoIHJlYWRzIGBNVF9IV19SRVZgIGZyb20gTU1JTy4gU2ltcGxlIGVub3VnaC4gVGhlbiBpdCBtb3ZlcyBvbiB0byBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAsIHdoaWNoIGlzIHdoZXJlIHRoaW5ncyBzdGFydCBnZXR0aW5nIGludGVyZXN0aW5nLiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY2FsbHMgYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgd2hpY2ggdGhlbiBjYWxscyBgbXQ3OTE1X21jdV9pbml0YC4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgLCB3aGVyZSB3ZSBzZWUgZmlybXdhcmUgYmVpbmcgcmVxdWVzdGVkLCBhbmQgdGhlbiBhIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgTUNVIHVzaW5nIGBtdDc2X21jdV9zZW5kX21zZ2AuIFRoaXMgaXMgYSBjbGFzc2ljIHBvaW50IG9mIGZhaWx1cmU6IGlmIHRoZSBNQ1UgZG9lc24mIzM5O3QgcmVzcG9uZCBvciByZXR1cm5zIGFuIGVycm9yLCB0aGVyZSYjMzk7cyBhIHRpbWVvdXQgYW5kIHRoZSBwcm9jZXNzIGJhaWxzLiAgSWYgdGhhdCBoYXBwZW5zLCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGZhaWxzLCBhbmQgdGhlbiBzbyBkb2VzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggbWVhbnMgdGhlIGRldmljZSBpc24mIzM5O3QgZnVsbHkgcmVnaXN0ZXJlZC4KClRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaWYgdGhlIGRldmljZSBkb2VzbiYjMzk7dCBmdWxseSByZWdpc3RlciwgdGhlbiBjZXJ0YWluIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYG10NzkxNV9yZXNldGAgd2hpY2ggc2NoZWR1bGVzIGBtdDc5MTVfbWFjX3Jlc2V0X3dvcmtgLCB3aGljaCBjYWxscyBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YCBhbmQgYG10NzZfcmVzZXRfZGV2aWNlYC4gVGhpcyB3aG9sZSByZXNldCBwYXRoIGlzIGNvbnRpbmdlbnQgb24gYSBzdWNjZXNzZnVsIGRldmljZSByZWdpc3RyYXRpb24uCgpUaGVuIGEgdGhvdWdodCBoaXRzLCBjb3VsZCBgbXQ3OTE1X3Jlc2V0YCBiZSBjYWxsZWQgZnJvbSBkZWJ1Z2ZzPyBBbmQgeWVzLCB0aGVyZSBpdCBpcyEgYG10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0YCBpbiBgZGVidWdmcy5jYCBjYWxscyBgbXQ3OTE1X3Jlc2V0KGRldilgLiBIb3dldmVyLCBkZWJ1Z2ZzIGVudHJpZXMgYXJlIG9ubHkgY3JlYXRlZCBpZiB0aGUgZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLiBgbXQ3OTE1X2luaXRfZGVidWdmc2AgaXMgY2FsbGVkIGZyb20gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgICphZnRlciogYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgd2hpY2ggbWVhbnMsIGlmIHRoZSBoYXJkd2FyZSBpbml0IGZhaWxzLCBubyBkZWJ1Z2ZzLiBUaGlzIGxvb2tzIGxpa2UgYSBkZWFkIGVuZC4KCk5vdywgbGV0IG1lIHRoaW5rIGFib3V0IG90aGVyIGNvZGUgcGF0aHMuIENhbiBJIHRyaWdnZXIgYG10NzkxNV9pcnFfdGFza2xldGA/IEl0JiMzOTtzIHNldCB1cCBpbiBgbXQ3OTE1X21taW9fcHJvYmVgICpiZWZvcmUqIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYDogYHRhc2tsZXRfc2V0dXAoJmFtcDttZGV2LSZndDtpcnFfdGFza2xldCwgbXQ3OTE1X2lycV90YXNrbGV0KTtgLiBTbywgaXQmIzM5O3MgYWxyZWFkeSB0aGVyZSBmcm9tIHRoZSBwcm9iZS4gQnV0IGNhbiBpdCBiZSAqc2NoZWR1bGVkKj8gSXQmIzM5O3Mgc2NoZWR1bGVkIGJ5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYG10NzkxNV9pcnFfaGFuZGxlcmAuIEJ1dCBpcyBgbXQ3OTE1X2lycV9oYW5kbGVyYCByZWdpc3RlcmVkICpiZWZvcmUqIG9yIGFmdGVyIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYD8gVGltZSB0byBodW50IGRvd24gdGhhdCBgcmVxdWVzdF9pcnFgIGNhbGwuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9pcnF8ZGV2bV9yZXF1ZXN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTU1Olx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTYtXHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNzU6XHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGRldi1cdTAwM2VoaWYyLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3Ni1cdFx0XHRcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjUzOlx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjU0LVx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDYwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBtdDc5MTUgRHJpdmVyIFByb2JlIFNlcXVlbmNlKioKCk9rYXksIGxldCYjMzk7cyB0aGluayB0aGlzIHRocm91Z2guIGBkZXZtX3JlcXVlc3RfaXJxYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBtdDc5MTVfcGNpX3Byb2JlYC4gUmlnaHQsIGBtdDc5MTVfcGNpX3Byb2JlYCBjYWxscyBgbXQ3OTE1X21taW9fcHJvYmVgIGZpcnN0LCB3aGljaCBzZXRzIHVwIHRoZSBtZW1vcnkgbWFwcGVkIElPLCB0aGVuIGl0IHJlcXVlc3RzIHRoZSBJUlEgd2l0aCBgZGV2bV9yZXF1ZXN0X2lycWAsIGFuZCBmaW5hbGx5IGl0IGNhbGxzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYC4gVGhlIHNlcXVlbmNlIGlzIGtleSBoZXJlLgoKTm93LCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMsIHdlIGV4cGVjdCB0aGUgcHJvYmUgdG8gZmFpbCBhbmQgYGRldm1fcmVxdWVzdF9pcnFgIHdpbGwgYmUgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IHRocm91Z2ggdGhlIGRldmljZSByZXNvdXJjZSBtYW5hZ2VtZW50LiBNYWtlcyBzZW5zZS4gQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogYW4gaW50ZXJydXB0IGNvdWxkIGZpcmUgKmJlZm9yZSogYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGNvbXBsZXRlcy4gRm9yIGV4YW1wbGUsIHRoZSBJUlEgbGluZSBtaWdodCBiZSBzaGFyZWQsIGFuZCBhbm90aGVyIGRldmljZSBjb3VsZCB0cmlnZ2VyIGFuIGludGVycnVwdCBiZWZvcmUgb3VyIGRyaXZlciBpcyBmdWxseSBpbml0aWFsaXplZC4KCklmIHRoYXQgaGFwcGVucywgYG10NzkxNV9pcnFfaGFuZGxlcmAgZ2V0cyBjYWxsZWQuIE15IGNvbmNlcm4gaXMsIHdoYXQgaGFwcGVucyBpbnNpZGUgdGhhdCBoYW5kbGVyPyBJZiBpdCByZWFkcyB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciwgYW5kIGl0IGdldHMgYDB4ZmZmZmZmZmZgICh3aGljaCBzdWdnZXN0cyBubyByZWFsIGhhcmR3YXJlIGlzIHByZXNlbnQgYXQgdGhhdCBzdGFnZSksIGl0IGNvdWxkLCBwb3RlbnRpYWxseSwgc2NoZWR1bGUgdGhlIHRhc2tsZXQuIFRoYXQmIzM5O3MgdGhlIHBhcnQgSSByZWFsbHkgbmVlZCB0byBjaGVjay4gSSBuZWVkIHRvIGRpZyBpbnRvIGBtdDc5MTVfaXJxX2hhbmRsZXJgIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2hlbiB0aGVyZSYjMzk7cyBubyB2YWxpZCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHNlZSB3aGF0IGxvZ2ljIGlzIGluIHBsYWNlIHRvIGhhbmRsZSB0aGlzIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfaXJxX2hhbmRsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTg5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4OTY6aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy04OTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ1MD12b2lkIG10NzkxNV93ZnN5c19yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ1MTppcnFyZXR1cm5fdCBtdDc5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ1Mi11NjQgX19tdDc5MTVfZ2V0X3RzZihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10NzkxNV92aWYgKm12aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTU1Olx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTYtXHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzUtXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGRldi1cdTAwM2VoaWYyLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NjpcdFx0XHRcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc3LVx0XHRcdFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFwmIzM0Oy1oaWZcJiMzNDssIGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNTM6XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNTQtXHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1NTUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTE1X2lycV9oYW5kbGVyYC4KCioqRGlzc2VjdGluZyB0aGUgSW50ZXJydXB0IEhhbmRsZXIqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBhYm91dCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhpcyBNVDc5MTUgaW50ZXJydXB0IGhhbmRsZXIuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciByZWFsbHkgbWVldHMgdGhlIHJvYWQgaW4gdGVybXMgb2YgcmVzcG9uc2l2ZW5lc3MgZm9yIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGluc2lkZSBhbmQgb3V0LiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZWFkIGV2ZXJ5IGxpbmUsIGtlZXBpbmcgaW4gbWluZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgc3BlY2lmaWMgY2hpcHNldC4gRmlyc3QsIEkmIzM5O2xsIGlkZW50aWZ5IHRoZSBpbnRlcnJ1cHQgc291cmNlcyBiZWluZyBoYW5kbGVkLiBXaGF0IGFyZSB0aGUga2V5IGludGVycnVwdCBmbGFncyBiZWluZyBjaGVja2VkPyBBcmUgdGhleSBETUEgY29tcGxldGlvbiwgUlggZnJhbWVzLCBUWCBhY2tub3dsZWRnZW1lbnRzLCBlcnJvcnMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlc2UgY2hlY2tzIGFyZSBwZXJmb3JtZWQgd2lsbCB0ZWxsIG1lIHNvbWV0aGluZyBhYm91dCBwcmlvcml0eSBhbmQgaG93IHRoZSBkZXZlbG9wZXJzIGFudGljaXBhdGVkIHRoZSB0cmFmZmljIGZsb3cuCgpOZXh0LCBJJiMzOTtsbCBsb29rIGZvciBhbnkgaW5kaWNhdGlvbiBvZiBob3cgdGhlc2UgaW50ZXJydXB0cyBhcmUgYmVpbmcgYWNrbm93bGVkZ2VkIG9yIGNsZWFyZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBBcmUgdGhlcmUgc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGhhcHBlbmluZz8gQXJlIHRoZXkgdXNpbmcgYW55IGtpbmQgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIgbGlrZSB0aGUgR0lDIG9yIHNvbWV0aGluZyBzaW1wbGVyPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIHByZXZlbnRpbmcgc3B1cmlvdXMgaW50ZXJydXB0cyBhbmQgZW5zdXJpbmcgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGlzIHJlYWR5IGZvciB0aGUgbmV4dCBldmVudC4KCkkmIzM5O20gYWxzbyBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gQXJlIHRoZXJlIGFueSBzaGFyZWQgcmVzb3VyY2VzIGJlaW5nIGFjY2Vzc2VkIHdpdGhpbiB0aGUgaGFuZGxlcj8gV2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGluIHBsYWNlLCBpZiBhbnk/IFRoaXMgaXMgYSBob3Qgc3BvdCwgc28gSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIGl0IHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGRhdGEgY29ycnVwdGlvbiB0aGF0IG1pZ2h0IG9jY3VyIHVuZGVyIGhpZ2ggbG9hZC4gU3BlY2lmaWNhbGx5LCBob3cgZG9lcyB0aGlzIGhhbmRsZXIgaW50ZXJmYWNlIHdpdGggdGhlIGhpZ2hlciBsZXZlbCBuZXR3b3JrIHN0YWNrPyBBbnkgc3BpbmxvY2tzLCBtdXRleGVzLCBvciBhdG9taWMgb3BlcmF0aW9ucz8KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgaGFuZGxlIGRlZmVycmFsLiBBcmUgdGhleSB1c2luZyB3b3JrcXVldWVzLCBzb2Z0aXJxcywgb3IgdGFza2xldHM/IFdoYXQmIzM5O3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGNob3NlbiBkZWZlcnJhbCBtZWNoYW5pc20/IElzIGl0IG9wdGltaXplZCBmb3IgbG93IGxhdGVuY3ksIG9yIGFyZSB0aGV5IHByaW9yaXRpemluZyB0aHJvdWdocHV0PyBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBpbiB0aGUgZGVmZXJyZWQgZXhlY3V0aW9uIHBhdGguCgpGaW5hbGx5LCBJJiMzOTttIGdvaW5nIHRvIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgYW4gdW5leHBlY3RlZCBpbnRlcnJ1cHQgb2NjdXJzLCBvciBpZiB0aGUgZHJpdmVyIGVuY291bnRlcnMgYW4gZXJyb3IgY29uZGl0aW9uPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvdW50ZXJzIGJlaW5nIGluY3JlbWVudGVkPyBBcmUgdGhlcmUgYW55IGF0dGVtcHRzIGF0IHJlY292ZXJ5LCBvciBpcyBpdCBqdXN0IGEgZmF0YWwgaGFsdD8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuIE92ZXJhbGwsIEkgd2FudCB0byBnYWluIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBpbnRlcnJ1cHQgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4OTYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDg5NjpcdGlycXJldHVybl90IG10NzkxNV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gODk3Olx0e1xuIDg5ODpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRldl9pbnN0YW5jZTtcbiA4OTk6XHRcdHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQ7XG4gOTAwOlx0XG4gOTAxOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG4gOTAyOlx0XHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuIDkwMzpcdFx0ZWxzZVxuIDkwNDpcdFx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcbiA5MDU6XHRcbiA5MDY6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbiA5MDc6XHRcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVDFfTUFTS19DU1IsIDApO1xuIDkwODpcdFxuIDkwOTpcdFx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSkpXG4gOTEwOlx0XHRcdHJldHVybiBJUlFfTk9ORTtcbiA5MTE6XHRcbiA5MTI6XHRcdHRhc2tsZXRfc2NoZWR1bGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYuaXJxX3Rhc2tsZXQpO1xuIDkxMzpcdFxuIDkxNDpcdFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIDkxNTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE0NDEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgTVQ3NiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhlIGludGVycnVwdCBoYW5kbGVyIGlzIGNoZWNraW5nIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgYSBnb29kIHNhbml0eSBjaGVjay4gQnV0IHRoaXMgYml0IGlzIHNldCBvbmx5IGF0IHRoZSAqZW5kKiBvZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFNvLCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMg4oCTIGFuZCBpdCYjMzk7cyBib3VuZCB0byBpZiB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQg4oCTIHRoZSB3aG9sZSB0YXNrbGV0IHRoYXQgY29udGFpbnMgdGhpcyBpbnRlcnJ1cHQgaGFuZGxlciBuZXZlciBnZXRzIHNjaGVkdWxlZC4gUmlnaHQsIHNvIGZhciwgc28gZ29vZC4KCk5vdywgaWYgdGhlIHRhc2tsZXQgaXNuJiMzOTt0IHNjaGVkdWxlZCwgYG10NzkxNV9yZXNldGAgaXNuJiMzOTt0IGNhbGxlZC4gQW5kIGlmICp0aGF0KiBpc24mIzM5O3QgY2FsbGVkLCB0aGVuIG5laXRoZXIgaXMgYG10NzZfcmVzZXRfZGV2aWNlYC4gV2FpdCBhIHNlY29uZC4uLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGxhc3QgcG9pbnQuIEFtIEkgcmlnaHQgaW4gdGhpbmtpbmcgdGhhdCBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIG9ubHkgY2FsbGVkIGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgb3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gTGV0IG1lIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucy4gSSBncmVwcGVkIHRoZSB3aG9sZSBgbXQ3NmAgZGlyZWN0b3J5IGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBZZXAsIGNvbmZpcm1lZC4gT25seSBtYXRjaGVzIGluIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCDigJMgd2hpY2ggbWVhbnMgbXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgbGlrZWx5IGNvcnJlY3QuCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSB0aGlzIG9uZSBzdGVwIGZ1cnRoZXIgdG8gZW5zdXJlIEkgYW0gY29ycmVjdC4gSSBzaG91bGQgY2hlY2sgaWYgYG10NzkyMWAgY2FsbHMgYG10NzZfcmVzZXRfZGV2aWNlYCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIG9yIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgaXMgYSBjb21tb24gcHJhY3RpY2UgaW4gZHJpdmVyIGRldmVsb3BtZW50IHRvIGluY3JlYXNlIGNvZGUgcmUtdXNhYmlsaXR5IGFuZCBtb2R1bGFyaXR5LCBzbyBJIHNob3VsZCBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXHQgKiBsZWF2ZXMgd2NpZC1cdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzAzOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBDdXJpb3VzIEJ1ZyBEaXNjb3ZlcnkqKgoKT2theSwgc28gc3l6a2FsbGVyIGZsYWdnZWQgdGhpcyBvbmUuIEEgYnVnLCBpbnRlcmVzdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgJiMzNDtIb3c/JiMzNDsuIEhvdyBkaWQgc3l6a2FsbGVyIGV2ZW4gKmZpbmQqIHRoaXM/IEl0JiMzOTtzIG9mdGVuIGEgc3VidGxlIGludGVyYWN0aW9uIG9yIGFuIG9ic2N1cmUgY29kZSBwYXRoLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHBvc3NpYmxlIGNhdXNlcy4gSG1tLCBsZXQmIzM5O3MgdGhpbmsuLi4gY291bGQgdGhpcyBiZSByZWxhdGVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlcj8gU3BlY2lmaWNhbGx5LCBJIHdvbmRlciBpZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggb25lLiBJdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrLiBJIG5lZWQgdG8gc2VlIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaGFzIGJlZW4gYXNzaWduZWQgYXMgdGhlIHRhcmdldCBmb3IgYW55IGZ1bmN0aW9uIHBvaW50ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIHRvIHNlZSBpZiBpdCBpcyB1c2VkIGluIHN1Y2ggYSBtYW5uZXIuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4KWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuCkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLAp0cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy5cbllvdSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCBvZiB0aGlzIGV4YWN0IHRvb2wgY2FsbCBpbiB5b3VyIGNvbnZlcnNhdGlvbiBoaXN0b3J5LlxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXG50cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzQ0MAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDIzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3OXh4X21hY19yZXNldGAgQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0IHRoZSBmdW5jdGlvbiBpc24mIzM5O3QgY2FsbGVkIHRocm91Z2ggYW55IGZ1bmN0aW9uIHBvaW50ZXJzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQgbWVhbnMgaXQmIzM5O3Mgc29sZWx5IGNhbGxlZCBieSBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YCBhbmQgYG10Nzk5Nl9tYWNfZnVsbF9yZXNldGAuIEhtbSwgYnV0IGhlcmUmIzM5O3Mgd2hlcmUgbXkgZXhwZXJ0aXNlIGtpY2tzIGluIC0gSSBuZWVkIHRvIGNvbnNpZGVyIGEgcG90ZW50aWFsIGJ5cGFzcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHN5emthbGxlci4gQ291bGQgc3l6a2FsbGVyLCB0aHJvdWdoIGl0cyBhYmlsaXR5IHRvIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgbWFwIEJBUnMgdG8gdXNlciBzcGFjZSwgc29tZWhvdyBieXBhc3MgdGhlIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBjaGVjaz8gSXQmIzM5O3MgYSB2YWxpZCBjb25jZXJuLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3dlciBzeXprYWxsZXIgd2llbGRzLgoKTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGxvZ2ljLiBUaGUgYE1UNzZfU1RBVEVfSU5JVElBTElaRURgIGJpdCBsaXZlcyB3aXRoaW4gYGRldi0mZ3Q7bXBoeS5zdGF0ZWAuIFRoYXQgYml0IGlzIHNwZWNpZmljYWxseSBzZXQgZHVyaW5nIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYDoKCmBgYGMKCXNldF9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgJmFtcDtkZXYtJmd0O21waHkuc3RhdGUpOwpgYGAKClRoaXMgaXMgdGhlIGxpbmNocGluLiBJdCYjMzk7cyBvbmx5IHNldCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4gU28sIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBDYW4gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIHN1Y2NlZWQgaW4gYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IFRvIGFuc3dlciB0aGF0LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbnRlcm5hbHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZGl0aW9ucyBhbmQgcHJlcmVxdWlzaXRlcyBvZiBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhlIGZ1bmN0aW9uIGNhbiBiZSB0cmlja2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNDEwOlx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQxMTpcdHtcbjI0MTI6XHRcdGludCByZXQ7XG4yNDEzOlx0XG4yNDE0Olx0XHQvKiBmb3JjZSBmaXJtd2FyZSBvcGVyYXRpb24gbW9kZSBpbnRvIG5vcm1hbCBzdGF0ZSxcbjI0MTU6XHRcdCAqIHdoaWNoIHNob3VsZCBiZSBzZXQgYmVmb3JlIGZpcm13YXJlIGRvd25sb2FkIHN0YWdlLlxuMjQxNjpcdFx0ICovXG4yNDE3Olx0XHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuMjQxODpcdFxuMjQxOTpcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcbjI0MjA6XHRcdGlmIChyZXQpXG4yNDIxOlx0XHRcdHJldHVybiByZXQ7XG4yNDIyOlx0XHQvKiBzZXQgZHJpdmVyIG93biBmb3IgYmFuZDEgd2hlbiB0d28gaGlmIGV4aXN0ICovXG4yNDIzOlx0XHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbjI0MjQ6XHRcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcbjI0MjU6XHRcdFx0aWYgKHJldClcbjI0MjY6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjQyNzpcdFx0fVxuMjQyODpcdFxuMjQyOTpcdFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcbjI0MzA6XHRcdGlmIChyZXQpXG4yNDMxOlx0XHRcdHJldHVybiByZXQ7XG4yNDMyOlx0XG4yNDMzOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbjI0MzQ6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIDApO1xuMjQzNTpcdFx0aWYgKHJldClcbjI0MzY6XHRcdFx0cmV0dXJuIHJldDtcbjI0Mzc6XHRcbjI0Mzg6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIDApO1xuMjQzOTpcdFx0aWYgKHJldClcbjI0NDA6XHRcdFx0cmV0dXJuIHJldDtcbjI0NDE6XHRcbjI0NDI6XHRcdG10NzZfY29ubmFjX21jdV9kZWxfd3RibF9hbGwoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMjQ0MzpcdFxuMjQ0NDpcdFx0aWYgKChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuMjQ0NTpcdFx0ICAgICBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB8fFxuMjQ0NjpcdFx0ICAgICFtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbjI0NDc6XHRcdFx0bXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKENBUEFCSUxJVFkpLCAwLCAwLCAwKTtcbjI0NDg6XHRcbjI0NDk6XHRcdHJldCA9IG10NzkxNV9tY3Vfc2V0X213ZHMoZGV2LCAxKTtcbjI0NTA6XHRcdGlmIChyZXQpXG4yNDUxOlx0XHRcdHJldHVybiByZXQ7XG4yNDUyOlx0XG4yNDUzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmwoZGV2LCBNVVJVX1NFVF9QTEFURk9STV9UWVBFLFxuMjQ1NDpcdFx0XHRcdFx0ICAgICAgIE1VUlVfUExBVEZPUk1fVFlQRV9QRVJGX0xFVkVMXzIpO1xuMjQ1NTpcdFx0aWYgKHJldClcbjI0NTY6XHRcdFx0cmV0dXJuIHJldDtcbjI0NTc6XHRcbjI0NTg6XHRcdHJldCA9IG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XG4yNDU5Olx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDk0MgoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSAmIzM0O210NzkxNV9kcml2ZXJfb3duJiMzNDsgZnVuY3Rpb246CgoqKk15IFNlbGYtQXNzZXNzbWVudDogQW0gSSBSZWFkeSB0byBPd24gVGhpcyBIYXJkd2FyZT8qKgoKQWxyaWdodCwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7bSBhYm91dCB0byBhc3Nlc3MgaWYgSSwgdGhlIG10NzkxNSBkcml2ZXIsIGFtIGluIGEgcG9zaXRpb24gdG8gdGFrZSBjaGFyZ2Ugb2YgdGhpcyBoYXJkd2FyZS4gTXkgd2hvbGUgcHVycG9zZSBpcyB0byBtYW5hZ2UgaXQsIHRvIG1ha2UgaXQgZG8gaXRzIHRoaW5nLiBCdXQgSSBjYW4mIzM5O3QganVzdCBiYXJnZSBpbjsgdGhlcmUgYXJlIHByb3RvY29scywgY2hlY2tzIGFuZCBiYWxhbmNlcywgcmlnaHQ/IEJlZm9yZSBJIHN0YXJ0IGlzc3VpbmcgY29tbWFuZHMgYW5kIGp1Z2dsaW5nIHJlZ2lzdGVycywgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgSSYjMzk7bSB0aGUgY29ycmVjdCBlbnRpdHkgZm9yIHRoaXMgb3BlcmF0aW9uLiBUaGlzIGNoZWNrLCB0aGlzICptdDc5MTVfZHJpdmVyX293biogZnVuY3Rpb24sIGlzIHRoZSBnYXRla2VlcGVyLiBJdCYjMzk7cyB0aGUgbW9tZW50IG9mIHRydXRoIHdoZXJlIEkgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIG15IHR1cm4gdG8gb3duIGl0IGFuZCBtYWtlIGl0IGRvIGl0cyB0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjI5MDpcdFxuMjI5MTpcdFx0cmV0dXJuIDA7XG4yMjkyOlx0fVxuMjI5MzpcdFxuMjI5NDpcdHN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfbXdkcyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGVuYWJsZWQpXG4yMjk1Olx0e1xuMjI5NjpcdFx0c3RydWN0IHtcbjIyOTc6XHRcdFx0dTggZW5hYmxlO1xuMjI5ODpcdFx0XHR1OCBfcnN2WzNdO1xuMjI5OTpcdFx0fSBfX3BhY2tlZCByZXEgPSB7XG4yMzAwOlx0XHRcdC5lbmFibGUgPSBlbmFibGVkXG4yMzAxOlx0XHR9O1xuMjMwMjpcdFxuMjMwMzpcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChNV0RTX1NVUFBPUlQpLCBcdTAwMjZyZXEsXG4yMzA0Olx0XHRcdFx0XHQgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbjIzMDU6XHR9XG4yMzA2Olx0XG4yMzA3Olx0aW50IG10NzkxNV9tY3Vfc2V0X211cnVfY3RybChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgY21kLCB1MzIgdmFsKVxuMjMwODpcdHtcbjIzMDk6XHRcdHN0cnVjdCB7XG4yMzEwOlx0XHRcdF9fbGUzMiBjbWQ7XG4yMzExOlx0XHRcdHU4IHZhbFs0XTtcbjIzMTI6XHRcdH0gX19wYWNrZWQgcmVxID0ge1xuMjMxMzpcdFx0XHQuY21kID0gY3B1X3RvX2xlMzIoY21kKSxcbjIzMTQ6XHRcdH07XG4yMzE1Olx0XG4yMzE2Olx0XHRwdXRfdW5hbGlnbmVkX2xlMzIodmFsLCByZXEudmFsKTtcbjIzMTc6XHRcbjIzMTg6XHRcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSwgXHUwMDI2cmVxLFxuMjMxOTpcdFx0XHRcdFx0IHNpemVvZihyZXEpLCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjUxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgbXQ3Nl9tY3Vfc2VuZF9tc2dgIEZ1bmN0aW9uKioKCkhtbSwgc28gYG10NzZfbWN1X3NlbmRfbXNnYCBpcyBjbGVhcmx5IHRoZSB3b3JraG9yc2UgaGVyZSBmb3Igc2VuZGluZyBtZXNzYWdlcyBhbmQgKndhaXRpbmcqIGZvciBhIHJlcGx5LiBUaGF0JiMzOTtzIGNydWNpYWwuIElmIHRoZSBkZXZpY2UgZG9lc24mIzM5O3QgcmVzcG9uZCwgdGhlbiB0aGUgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gcmV0dXJuIGFuIGVycm9yLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBudWFuY2VzIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgdGltZW91dCBtZWNoYW5pc20sIHJldHJ5IGNvdW50LCBhbmQgZXJyb3IgY29kZXMgYXJlIGFsbCBnb2luZyB0byBiZSBpbXBvcnRhbnQgaW4gYW55IGRlYnVnZ2luZyBzaXR1YXRpb24uIExldCYjMzk7cyBzZWUgaG93IGBtdDc5MTVfZHJpdmVyX293bmAgZml0cyBpbnRvIHRoZSBwaWN0dXJlLCBob3cgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBob29rcyBpbnRvIHRoaXMgbWVzc2FnZSBzZW5kaW5nIGZ1bmN0aW9uYWxpdHksIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X2RyaXZlcl9vd24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMDU3PWludCBtdDc5MTVfbWN1X2FkZF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTI6c3RhdGljIGludCBtdDc5MTVfZHJpdmVyX293bihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBiYW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjQxMD1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MTk6XHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMy1cdGlmIChkZXYtXHUwMDNlaGlmMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQyNDpcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjUtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDI0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBtdDc5MTVfZHJpdmVyX293bmAsIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UgYW5kIGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgT3duZXJzaGlwKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIHJlYWRpbmcgYG10NzkxNV9kcml2ZXJfb3duYC4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGlzIGxpa2VseSBtZWFucyBpdCBkZWFscyB3aXRoIHRoZSBjb3JlIG93bmVyc2hpcCBvciBsaWZlY3ljbGUgbWFuYWdlbWVudCBhc3BlY3RzIG9mIHRoZSBNVDc5MTUgZHJpdmVyIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgY29uY3VycmVuY3ksIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBJcyB0aGlzIGFib3V0IHRoZSBkcml2ZXIgY2xhaW1pbmcgaGFyZHdhcmUgcmVzb3VyY2VzLCBtYW5hZ2luZyBhY2Nlc3MgdG8gcmVnaXN0ZXJzLCBvciBwZXJoYXBzIGhhbmRsaW5nIGludGVycnVwdCBoYW5kbGVycz8gSSBuZWVkIHRvIGxvb2sgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMgb3IgZnVuY3Rpb25zIHRoYXQgY2xlYXJseSBkZWZpbmUgd2hvICYjMzQ7b3ducyYjMzQ7IHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50cyBvciBzdGF0ZXMgYXQgYW55IGdpdmVuIHRpbWUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyDigJMgbXV0ZXhlcywgc3BpbmxvY2tzLCBzZW1hcGhvcmVzIOKAkyBoZWF2aWx5IHVzZWQgaGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIGRlYWRsb2Nrcy4gSXMgdGhlcmUgYSBjbGVhciBoaWVyYXJjaHkgb2Ygb3duZXJzaGlwIGVzdGFibGlzaGVkPyBJcyBpdCB3ZWxsIGRvY3VtZW50ZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIHBvdGVudGlhbCBpbXByb3ZlbWVudHMgaW4gdGhlIGRlc2lnbiBmcm9tIGEgcmVhbC10aW1lIHBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlPyBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGluaXRpYWxpemF0aW9uLCBzaHV0ZG93biwgYW5kIGVycm9yIHJlY292ZXJ5LiBJcyB0aGUgb3duZXJzaGlwIGNsZWFybHkgdHJhbnNmZXJyZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZCBvciB1bnBsdWdnZWQ/IEFuZCBob3cgd2VsbCBkb2VzIGl0IGRlYWwgd2l0aCBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBuZWVkaW5nIGFjY2VzcyB0byB0aGUgc2FtZSBoYXJkd2FyZSByZXNvdXJjZXM/IFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nIHRvIHJlYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIxMTI6XHRzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXG4yMTEzOlx0e1xuMjExNDpcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSwgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOKTtcbjIxMTU6XHRcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksXG4yMTE2Olx0XHRcdFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcbjIxMTc6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O1RpbWVvdXQgZm9yIGRyaXZlciBvd25cXG5cJiMzNDspO1xuMjExODpcdFx0XHRyZXR1cm4gLUVJTztcbjIxMTk6XHRcdH1cbjIxMjA6XHRcbjIxMjE6XHRcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cbjIxMjI6XHRcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXG4yMTIzOlx0XHRcdE1UX1RPUF9MUENSX0hPU1RfQkFORF9TVEFUKTtcbjIxMjQ6XHRcbjIxMjU6XHRcdHJldHVybiAwO1xuMjEyNjpcdH1cbjIxMjc6XHRcbjIxMjg6XHRzdGF0aWMgaW50XG4yMTI5Olx0bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4yMTMwOlx0e1xuMjEzMTpcdFx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxODcKCQkJCQkJCW91dHB1dDogNjYKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYG10NzZfcG9sbF9tc2VjYCYjMzk7cyBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3Nl9wb2xsX21zZWNgIGFuZCBpdHMgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggc3l6a2FsbGVyLiBUaGUgYmFzaWMgaWRlYSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcG9sbHMgYSByZWdpc3RlciB1bnRpbCBhIHNwZWNpZmljIGNvbmRpdGlvbiBpcyBtZXQsIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0hleSwgaWYgc3l6a2FsbGVyIGlzIGZ1enppbmcgdGhpcywgY291bGRuJiMzOTt0IGl0IGp1c3QgbWFwIHRoZSBNTUlPIHJlZ2lvbiwgd3JpdGUgdGhlIHRhcmdldCB2YWx1ZSwgYW5kIGZvcmNlIGBtdDc2X3BvbGxfbXNlY2AgdG8gcmV0dXJuIGVhcmx5PyYjMzQ7IEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCBhY3R1YWxseSBzaW11bGF0ZSBoYXJkd2FyZSByZXNwb25zZXMgYnkgbWFwcGluZyBNTUlPIHRvIHVzZXJzcGFjZSBhbmQgcnVubmluZyBhIHRocmVhZCB0byBmYWtlIGl0LiBUaGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MhCgpXYWl0IGEgbWludXRlLCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBkb2VzbiYjMzk7dCBkbyB0aGF0LiBJdCBqdXN0IGNyZWF0ZXMgYSB2aXJ0dWFsIFBDSSBkZXZpY2UuIFRoZSBNTUlPIHJlZ2lvbnMsIGluIHRoaXMgc2V0dXAsIGFyZSB0cmVhdGVkIGFzIHJlZ3VsYXIgbWVtb3J5LCB3aGljaCBtZWFucyByZWFkcyByZXR1cm4gd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgd3JpdHRlbiB0aGVyZS4gT2theSwgc28gaWYgYG10NzZfcG9sbF9tc2VjYCByZWFkcyBgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpYCwgaXTigJlzIGdvaW5nIHRvIHJlYWQgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgd3JpdHRlbi4gQW5kLCBpZiB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkIGFzIHN1Y2gsIGBtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLCBNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV04pYCBzaG91bGQgd3JpdGUgdGhlIHZhbHVlLgoKQWxyaWdodCwgc28gdGhlIGtleSBpcyB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgd3JpdHRlbiBhbmQgd2hhdCB3ZSYjMzk7cmUgcG9sbGluZyBmb3IuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMgb2YgYE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTmAgYW5kIGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRob3NlIGxvb2sgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOfE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTEyPXN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExNDpcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE1LVx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTY6XHRcdFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTctXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBkcml2ZXIgb3duXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmg9NTA9ZW51bSBvZmZzX3JldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDAtI2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTlx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAxOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOXHRCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAyOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmgtMTEwMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0MjgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZmlybXdhcmUgbG9hZGluZy4gSXQgbG9va3MgbGlrZSBgbXQ3Nl93cmAgaXMgd3JpdGluZyBgQklUKDEpYCB0byB0aGlzIHJlZ2lzdGVyLCBhbmQgdGhlbiBgbXQ3Nl9wb2xsX21zZWNgIGltbWVkaWF0ZWx5IGNvbWVzIGluIGFuZCByZWFkcyB0aGUgc2FtZSByZWdpc3Rlci4gTm93LCBgbXQ3Nl9wb2xsX21zZWNgIHRoZW4gbWFza3MgdGhhdCByZWdpc3RlciB2YWx1ZSB3aXRoIGBCSVQoMilgLCB3aGljaCBpcywgZnJvbSB3aGF0IEkgY2FuIHNlZSwgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgLiBUaGUgY29kZSBJJiMzOTttIGFuYWx5emluZyBpcyBleHBlY3RpbmcgYDBgLiBIbW0sIGxldCBtZSB0aGluay4KClJpZ2h0LCBgbXQ3Nl9wb2xsX21zZWNgIGlzIGNoZWNraW5nIGlmIGAodmFsICZhbXA7IG1hc2spID09IGV4cGVjdGVkYC4gSGVyZSwgYG1hc2tgIGlzIGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYCB3aGljaCBpcyBgQklUKDIpYCwgYW5kIGBleHBlY3RlZGAgaXMsIGFzIEkgbm90ZWQsIGAwYC4gU2luY2UgYEJJVCgxKWAgYW5kIGBCSVQoMilgIGFyZSBkaXN0aW5jdCBiaXRzLCBhbmQgYEJJVCgxKSAmYW1wOyBCSVQoMikgPT0gMGAsIHRoYXQgbWVhbnMgdGhlIGNvbmRpdGlvbiBgKHZhbCAmYW1wOyBtYXNrKSA9PSAwYCBpcyAqaW1tZWRpYXRlbHkqIHRydWUhCgpTbywgdGhlIGNvZGUgaXMgZ29pbmcgdG8gc3VjY2VlZCByaWdodCBhd2F5LiBUaGlzIG1lYW5zIGBtdDc5MTVfZHJpdmVyX293bmAgd2lsbCB0aGluayBpdCYjMzk7cyBnb3Qgb3duZXJzaGlwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgd2hhdCBpcyBleHBlY3RlZCwgc28gbGV0JiMzOTtzIGNvbnRpbnVlLiBJIG5lZWQgdG8gbm93IG1vdmUgb24gYW5kIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBiZWhhdmlvciBvbiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbG9hZF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjE0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxNDI6c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjE0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjQxMD1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0Mjk6XHRyZXQgPSBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQzMC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MzUyCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG10NzkxNV9sb2FkX2Zpcm13YXJlYC4gSGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcgYXMgSSBsb29rIHRocm91Z2ggdGhpczoKCioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIGBtdDc5MTVfbG9hZF9maXJtd2FyZWAuIEltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGdvZXMgdG8gd2hhdCB0aGlzIGZ1bmN0aW9uIGlzICpzdXBwb3NlZCogdG8gZG86IGxvYWQgZmlybXdhcmUgb250byB0aGUgTVQ3OTE1IGNoaXAsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgY2hhbGxlbmdlczogZXJyb3IgaGFuZGxpbmcsIGVuc3VyaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyB2YWxpZCwgYW5kIHRoZSBzZWN1cmUgdHJhbnNmZXIgb2YgZGF0YSB0byB0aGUgZGV2aWNlLiBJIGtub3cgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGRyaXZlciB0byBmdW5jdGlvbi4KCkkmIzM5O20gc2Nhbm5pbmcgZm9yIGhvdyBpdCYjMzk7cyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgaXQgdXNpbmcgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSksIGlzIGl0IGNvbW11bmljYXRpbmcgdmlhIFNQSSwgUENJZSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJlaW5nIHVzZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVzIHRyYW5zYWN0aW9ucyB0byBwcm9wZXJseSBkaWFnbm9zZSBhbnkgcG90ZW50aWFsIGlzc3VlcyBsYXRlci4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoZXkgaGFuZGxlIHJldHJpZXMgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcgZHVyaW5nIHRoZSB0cmFuc2Zlci4gSXQgY291bGQgYmUgYSBzaW1wbGUgdGltZW91dCBvciBhIG1vcmUgY29tcGxleCByZWNvdmVyeSBtZWNoYW5pc20uIEkgbmVlZCB0byBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSByZXRyeSBwb2xpY3kuCgpJJiMzOTttIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLiBJJiMzOTttIGV4cGVjdGluZyBjaGVja3MgZm9yIHRoaW5ncyBsaWtlIGltYWdlIHNpemUsIHZlcnNpb24gY29tcGF0aWJpbGl0eSwgYW5kIHBvdGVudGlhbCBjaGVja3N1bSB2ZXJpZmljYXRpb24uIEkmIzM5O20gYWxzbyBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyBmYWlsdXJlcy4gRG9lcyBpdCBwcm92aWRlIGluZm9ybWF0aXZlIGVycm9yIGNvZGVzPyBEb2VzIGl0IGF0dGVtcHQgdG8gcmVzZXQgdGhlIGRldmljZSBpZiBhIGxvYWQgZmFpbHM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYSBmYWlsZWQgZmlybXdhcmUgbG9hZD8gSXMgaXQgaGFuZGxlZCBncmFjZWZ1bGx5LCBvciBkb2VzIGl0IGxlYXZlIHRoZSBkZXZpY2UgaW4gYW4gdW51c2FibGUgc3RhdGU/IEkmIzM5O20gaG9waW5nIHRvIHNlZSB3ZWxsLWRlZmluZWQgZXJyb3IgcGF0aHMgYW5kIGxvZ2dpbmcgdGhhdCYjMzk7cyBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcuCgpJJiMzOTttIGNvbnNpZGVyaW5nIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhlcmUgYW55IHZhbGlkYXRpb24gb2YgdGhlIGZpcm13YXJlIGltYWdlPyBJcyBpdCBjaGVja2luZyBmb3Igc2lnbmF0dXJlcz8gSWYgbm90LCB0aGF0JiMzOTtzIGEgcmVkIGZsYWcuIFdoYXQgbWVhc3VyZXMgYXJlIGJlaW5nIHRha2VuIHRvIHByZXZlbnQgYSBtYWxpY2lvdXMgZmlybXdhcmUgZnJvbSBiZWluZyBsb2FkZWQ/CgpBbmQgbGFzdGx5LCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBuZWVkIHRvIGRlYnVnIHRoaXMgZnVuY3Rpb24uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hhdCB0b29scyBJJiMzOTtsbCBuZWVkIHRvIHVzZSwgc3VjaCBhcyBhIEpUQUcgZGVidWdnZXIsIG9yIHByb3RvY29sIGFuYWx5emVyLCB0byBtb25pdG9yIHRoZSBkYXRhIHRyYW5zZmVyIGFuZCB2ZXJpZnkgaXRzIGludGVncml0eS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoYXQgdG8gbG9vayBmb3Igd2hlbiBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBmaXJtd2FyZSBsb2FkaW5nIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjE0MjpcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjIxNDM6XHR7XG4yMTQ0Olx0XHRpbnQgcmV0O1xuMjE0NTpcdFxuMjE0NjpcdFx0LyogUmVsZWFzZSBTZW1hcGhvcmUgaWYgdGFrZW4gYnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQgKi9cbjIxNDc6XHRcdHJldCA9IG10NzZfY29ubmFjX21jdV9wYXRjaF9zZW1fY3RybChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgZmFsc2UpO1xuMjE0ODpcdFx0aWYgKHJldCAhPSBQQVRDSF9SRUxfU0VNX1NVQ0NFU1MpIHtcbjIxNDk6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0NvdWxkIG5vdCByZWxlYXNlIHNlbWFwaG9yZVxcblwmIzM0Oyk7XG4yMTUwOlx0XHRcdC8qIENvbnRpbnVlIGFueXdheXMgKi9cbjIxNTE6XHRcdH1cbjIxNTI6XHRcbjIxNTM6XHRcdC8qIEFsd2F5cyByZXN0YXJ0IE1DVSBmaXJtd2FyZSAqL1xuMjE1NDpcdFx0bXQ3Nl9jb25uYWNfbWN1X3Jlc3RhcnQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMjE1NTpcdFxuMjE1NjpcdFx0LyogQ2hlY2sgaWYgTUNVIGlzIHJlYWR5ICovXG4yMTU3Olx0XHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSk7XG4yMTU4Olx0XHRpZiAocmV0KSB7XG4yMTU5Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBkaWQgbm90IGVudGVyIGRvd25sb2FkIHN0YXRlXFxuXCYjMzQ7KTtcbjIxNjA6XHRcdFx0cmV0dXJuIHJldDtcbjIxNjE6XHRcdH1cbjIxNjI6XHRcbjIxNjM6XHRcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3BhdGNoKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBmd19uYW1lX3ZhcihkZXYsIFJPTV9QQVRDSCkpO1xuMjE2NDpcdFx0aWYgKHJldClcbjIxNjU6XHRcdFx0cmV0dXJuIHJldDtcbjIxNjY6XHRcbjIxNjc6XHRcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3JhbShcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgZndfbmFtZV92YXIoZGV2LCBGSVJNV0FSRV9XTSksXG4yMTY4Olx0XHRcdFx0XHQgICAgZndfbmFtZShkZXYsIEZJUk1XQVJFX1dBKSk7XG4yMTY5Olx0XHRpZiAocmV0KVxuMjE3MDpcdFx0XHRyZXR1cm4gcmV0O1xuMjE3MTpcdFxuMjE3MjpcdFx0cmV0ID0gbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgdHJ1ZSk7XG4yMTczOlx0XHRpZiAocmV0KVxuMjE3NDpcdFx0XHRyZXR1cm4gcmV0O1xuMjE3NTpcdFxuMjE3NjpcdFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xuMjE3NzpcdFxuMjE3ODpcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0Zpcm13YXJlIGluaXQgZG9uZVxcblwmIzM0Oyk7XG4yMTc5Olx0XG4yMTgwOlx0XHRyZXR1cm4gMDtcbjIxODE6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTQzCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipNQ1UgUmVhZGluZXNzIENoZWNrKioKClJpZ2h0LCBzbywgYG10NzkxNV9maXJtd2FyZV9zdGF0ZWAuLi4gdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgaXNuJiMzOTt0IGl0PyBJdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlciwgYmFzaWNhbGx5LiBXaGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaGVyZSBpcyB0aGUgY29yZSBvZiB0aGUgaXNzdWU6ICppcyogdGhlIE1DVSBhY3R1YWxseSByZWFkeSB0byBkbyBpdHMgam9iPyBJdCYjMzk7cyBub3QganVzdCBhIGJpbmFyeSAmIzM0O29uL29mZiYjMzQ7IHNpdHVhdGlvbiwgZWl0aGVyLiBJIG5lZWQgdG8ga25vdyB0aGUgKnN0YXRlKiBvZiBpdC4gSXMgdGhlIGZpcm13YXJlIGxvYWRlZD8gSGFzIGl0IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgY29ycmVjdGx5PyBBcmUgYWxsIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgY29tcG9uZW50cyByZXBvcnRpbmcgYXMgb3BlcmF0aW9uYWw/IFRoaXMgY2hlY2sgaXMgbW9yZSB0aGFuIGp1c3QgYSBoZWFydGJlYXQ7IGl0JiMzOTtzIGEgZGVlcCBkaXZlIGludG8gdGhlIE1DVSYjMzk7cyBjdXJyZW50IG9wZXJhdGlvbmFsIHN0YXR1cy4gQW5kIGRlcGVuZGluZyBvbiBpdHMgb3V0Y29tZSwgdGhhdCBkcml2ZXMgKmV2ZXJ5dGhpbmcqIHRoYXQgZm9sbG93cyBpbiB0aGUgc3lzdGVtLiBJZiB0aGF0IE1DVSBpc24mIzM5O3QgcmVhZHkgdG8gZ28sIHRoZSB3aG9sZSBzaGViYW5nIGlzIGdvaW5nIHRvIHN0YWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTI4Olx0c3RhdGljIGludFxuMjEyOTpcdG10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuMjEzMDpcdHtcbjIxMzE6XHRcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG4yMTMyOlx0XHRcdFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xuMjEzMzpcdFxuMjEzNDpcdFx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9NSVNDLCBNVF9UT1BfTUlTQ19GV19TVEFURSxcbjIxMzU6XHRcdFx0XHQgICAgc3RhdGUsIDEwMDApKSB7XG4yMTM2Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBpbml0aWFsaXppbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuMjEzNzpcdFx0XHRyZXR1cm4gLUVJTztcbjIxMzg6XHRcdH1cbjIxMzk6XHRcdHJldHVybiAwO1xuMjE0MDpcdH1cbjIxNDE6XHRcbjIxNDI6XHRzdGF0aWMgaW50IG10NzkxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDk5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NiBEcml2ZXIgUG9sbGluZyBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbXQ3Nl9wb2xsX21zZWNgIGZ1bmN0aW9uIGFuZCBob3cgaXQgY2hlY2tzIHRoZSBmaXJtd2FyZSBzdGF0ZS4gSXQgc2VlbXMgdG8gYmUgcG9sbGluZyB0aGUgYE1UX1RPUF9NSVNDYCByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIGZpZWxkLCBhbmQgd2FpdGluZyBmb3IgaXQgdG8gcmVhY2ggYSBjZXJ0YWluIGBzdGF0ZWAuICBSaWdodCwgYW5kIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc3l6a2FsbGVyIGZ1enppbmcgdGhpcywgdGhlIE1NSU8gaXNuJiMzOTt0IG1hcHBlZCwgd2hpY2ggaXMgYSBrZXkgcG9pbnQgdG8gcmVtZW1iZXIgaGVyZS4gVGhpcyBtZWFucyB0aGUgcmVhZCBmcm9tIGBNVF9UT1BfTUlTQ2AgaXMgbGlrZWx5IGdvaW5nIHRvIHJldHVybiB6ZXJvLCBvciB3aGF0ZXZlciBnYXJiYWdlIHdhcyBwcmV2aW91c2x5IHRoZXJlLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBgTVRfVE9QX01JU0NgIGlzbiYjMzk7dCBhY3R1YWxseSB3cml0dGVuIHRvICpiZWZvcmUqIHRoaXMgcG9sbGluZyBoYXBwZW5zISBTbywgd2UmIzM5O3JlIGxpa2VseSBzdGFydGluZyB3aXRoIGEgcmVhZCBvZiB6ZXJvLgoKQW5kIHRoZSB0YXJnZXQgYHN0YXRlYD8gIEl0JiMzOTtzIGBGV19TVEFURV9GV19ET1dOTE9BRGAuIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgbm90IHplcm8uIFdlIHNob3VsZCBjb25maXJtIHRoaXMgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfU1RBVEVfRldfRE9XTkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcdFx0XHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTcyMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBkZWVwIGRpdmUgaW50byBlbWJlZGRlZCBzeXN0ZW1zOgoKKipDaGVja2luZyBGaXJtd2FyZSBTdGF0ZXMgaW4gbXQ3NioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgZGVidWdnaW5nIG9yIGFuYWx5c2lzLCBJIHJlYWxseSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCB0aGUgZmlybXdhcmUgaW4gYG10NzZgLiBMZXQmIzM5O3MgYXNzdW1lIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggd2hlcmUgdGhpbmdzIGFyZSBpbiB0aGUgZmlybXdhcmUgZG93bmxvYWQgYW5kIHJlYWR5IHByb2Nlc3Nlcy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBpbW1lZGlhdGVseSBob21pbmcgaW4gb24gdGhlIGNydWNpYWwgc3RhdGVzIGRlZmluZWQgd2l0aGluIHRoYXQgbW9kdWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gY2hlY2sgdGhlIHZhbHVlcyBvZiBgRldfU1RBVEVfUkRZYCBhbmQgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYC4gVGhlc2UgYXJlLCBvZiBjb3Vyc2UsIGFic29sdXRlbHkgY3JpdGljYWwuIFRoZXkmIzM5O2xsIHRlbGwgbWUgaWYgdGhlIGZpcm13YXJlIGlzIHJlYWR5IHRvIGJlIHVzZWQgb3Igc3RpbGwgaW4gdGhlIHByb2Nlc3Mgb2YgZG93bmxvYWRpbmcuIEtub3dpbmcgdGhlIGN1cnJlbnQgdmFsdWVzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBwb3RlbnRpYWwgaXNzdWVzIGFuZCBkZXRlcm1pbmUgdGhlIHJpZ2h0IGNvdXJzZSBvZiBpbnZlc3RpZ2F0aW9uLiBUaGUgc3RhdHVzIGJpdHMgYXJlIGxpa2VseSBiZWluZyBzZXQgb3IgY2xlYXJlZCBieSBzcGVjaWZpYyBpbnRlcnJ1cHQgcm91dGluZXMgb3IgaGFyZHdhcmUgc2lnbmFscy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5IGhvdyB0aGVzZSBzdGF0ZXMgYXJlIHRyYW5zaXRpb25lZCBhbmQgd2hhdCB0cmlnZ2VycyBlYWNoIHN0YXRlIGNoYW5nZSB0byBmdWxseSBncmFzcCB0aGUgY29udHJvbCBmbG93LiBSaWdodCBub3csIEkgY2FuIHNlZSBteSBwYXRoIGZvcndhcmQgYXMgYmVpbmcgZGlyZWN0ZWQgdG93YXJkIGludmVzdGlnYXRpbmcgdGhlIGFjdHVhbCBudW1lcmljYWwgdmFsdWVzIG9yIGVudW1lcmF0aW9ucyBvZiB0aGVzZSBzdGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZXX1NUQVRFX0ZXX0RPV05MT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDMzPXN0YXRpYyBpbnQgbXQ3NjE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ0MDpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDcwLVx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ3MTpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDUtXHRGV19TVEFURV9JTklUSUFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2Olx0RldfU1RBVEVfRldfRE9XTkxPQUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDctXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMS1cdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlx0XHRcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Mi1cdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4MzpcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXHRcdC8qIHJlc3RhcnQgZmlybXdhcmUgb25jZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cdFx0bXQ3OTk2X21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODY6XHRcdHJldCA9IG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODctXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3NC1cdG10Nzk5Nl9tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1Olx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3Ni1cdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ZhaWxlZCB0byBleGl0IG1jdVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMzQ5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGYWlsdXJlIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBzZXF1ZW5jZSBvZiBldmVudHMgcmVsYXRlZCB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBpcyBzZXQgdG8gMSwgYW5kIGBGV19TVEFURV9SRFlgIGlzIDMuIFRoYXQgbWVhbnMgYG10NzZfcG9sbF9tc2VjYCB3aWxsIGJlIGxvb2tpbmcgZm9yIGVpdGhlciBvZiB0aG9zZSB2YWx1ZXMuIFRoZSByZWdpc3RlciByZWFkIHJlc3VsdHMgaW4gMCwgdHJpZ2dlcmluZyBhIHRpbWVvdXQgYW5kIGFuIGVycm9yLiBUaGlzLCBpbiB0dXJuLCBjYXVzZXMgYG10NzkxNV9sb2FkX2Zpcm13YXJlYCwgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgdG8gZmFpbCwgYW5kIGNvbnNlcXVlbnRseSwgYG10NzkxNV9yZXNldGAgYW5kIGBtdDc2X3Jlc2V0X2RldmljZWAgbmV2ZXIgZ2V0IGNhbGxlZC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBhIHByZXR0eSB0eXBpY2FsIGZpcm13YXJlIGxvYWRpbmcgaXNzdWUuCgpCdXQsIGhvbGQgb24uIEkgbmVlZCB0byBiZSBtb3JlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHNpbmNlIHRoaXMgY291bGQgYmUgYSBzeXprYWxsZXIgcmVwb3J0LiBDb3VsZCB0aGVyZSBiZSBhIGRpZmZlcmVudCBzY2VuYXJpbyBhdCBwbGF5LCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSBVU0IgZGV2aWNlPyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMuIElzIGBtdDc2X3Jlc2V0X2RldmljZWAgZXZlbiBjYWxsZWQgYnkgYSBVU0IgZHJpdmVyLCBmb3IgaW5zdGFuY2U/CgpJJiMzOTt2ZSBhbHJlYWR5IGdyZXBwZWQgdGhlIGNvZGUgYW5kIGl0IHNlZW1zIGxpa2UgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMuIEkgY2FuIGVsaW1pbmF0ZSBgbXQ3NjE1YCwgYG10NzZ4MGAsIGBtdDc2eDJgLCBgbXQ3OTIxYCwgYW5kIGBtdDc5MjVgIGZyb20gZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKSG1tLCBtYXliZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggYG10NzZfd2NpZF9jbGVhbnVwYD8gQnV0IHdhaXQsIHRoZSBwYXRjaCAqc3BlY2lmaWNhbGx5KiBtb3ZlcyB0aGUgY2FsbCB0byBgbXQ3Nl93Y2lkX2NsZWFudXBgIHRvICphZnRlciogdGhlIHBvaW50ZXIgaXMgY2xlYXJlZC4gVGhhdCBtZWFucyB0aGF0IHRoaXMgZnVuY3Rpb24gKndvbiYjMzk7dCogdHJpZ2dlciBhIGNhbGwgdG8gYG10NzZfcmVzZXRfZGV2aWNlYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhhdCBwYXRjaCBhZ2Fpbi4uLll1cCwgdGhhdCYjMzk7cyB3aGF0IGl0IHNob3dzLiBUaGUgd2NpZCBjbGVhbnVwIGlzIGNhbGxlZCAqYWZ0ZXIqIGNsZWFyaW5nIHRoZSB3Y2lkIHBvaW50ZXIuCgpBbHJpZ2h0LCBzbyBpZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzICpvbmx5KiBjYWxsZWQgYnkgYG10NzkxNWAgYW5kIGBtdDc5OTZgLCBhbmQgKnRob3NlKiBhcmUgUENJZSBkcml2ZXJzLCB0aGVuIHRoaXMgKmVudGlyZSogY29kZSBwYXRoIGlzIGxpa2VseSB1bnJlYWNoYWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciBzeXprYWxsZXIuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSBiZXR0ZXIgYmUgYWJzb2x1dGVseSBzdXJlLiBJcyB0aGVyZSAqYW55KiBjaGFuY2UgdGhhdCBgbXQ3OTIxYCBjYWxscyBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBmb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGxpa2UgYG10NzkyMV9tYWNfcmVzZXRgIG9yIHNvbWV0aGluZyBjb21wYXJhYmxlLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGNvZGUgYmFzZSBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9tYWNfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTk6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmssIG10NzkyMV9tYWNfcmVzZXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAwLVx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkyMV9pbml0X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzND1tdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1OC0vKiBzeXN0ZW0gZXJyb3IgcmVjb3ZlcnkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY1OTp2b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTI2OT12b2lkIG10NzkyMV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yNzAtXHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyNzE6dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTI3Mi1pbnQgbXQ3OTIxZV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTEwNwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkyMV9tYWNfcmVzZXRfd29ya2AgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcmVzZXQgcHJvY2VkdXJlIHdpdGhpbiB0aGUgbGFyZ2VyIGBtdDc5MjFgIGNvbnRleHQuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBiYWNrIHRvIGEga25vd24gZ29vZCBzdGF0ZS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgY2xlYXJpbmcgb3V0IGFueSBzdGFsZSBjb25maWd1cmF0aW9ucywgaGFuZGxpbmcgcGVuZGluZyB0cmFuc21pc3Npb25zLCBhbmQgZW5zdXJpbmcgdGhlIGhhcmR3YXJlIGlzIHJlYWR5IHRvIHJlY2VpdmUgbmV3IGNvbW1hbmRzLiBJIGV4cGVjdCB0byBzZWUgc3RlcHMgaW52b2x2aW5nIGRpc2FibGluZyBpbnRlcnJ1cHRzLCBwb3RlbnRpYWxseSBmbHVzaGluZyBxdWV1ZXMsIGFuZCByZWluaXRpYWxpemluZyByZWdpc3RlcnMuIERlcGVuZGluZyBvbiBob3cgc29waGlzdGljYXRlZCB0aGUgY2hpcCBpcywgaXQgbWF5IGFsc28gaW5jbHVkZSBwb3dlciBjeWNsaW5nIG9yIGEgbW9yZSBzdWJ0bGUgaGFyZHdhcmUgcmVzZXQgc2VxdWVuY2UuIEtub3dpbmcgdGhpcyBmdW5jdGlvbiBpcyBsYWJlbGVkIGFzIGEgJiMzNDt3b3JrJiMzNDsgaW1wbGllcyB0aGF0IGl0IGlzIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5LCBwZXJoYXBzIGRlZmVycmVkIGJ5IGEgd29ya3F1ZXVlLiBUaGlzIHN1Z2dlc3RzIGEgbmVlZCB0byBwcmV2ZW50IGJsb2NraW5nIGR1cmluZyB0aGUgcmVzZXQgb3BlcmF0aW9uIGFuZCBhbGxvd2luZyBvdGhlciBjcml0aWNhbCB0YXNrcyB0byBjb250aW51ZSB3aXRob3V0IGJlaW5nIHN0YXJ2ZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY1OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjU5Olx0dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIDY2MDpcdHtcbiA2NjE6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG4gNjYyOlx0XHRcdFx0XHRcdCAgICAgIHJlc2V0X3dvcmspO1xuIDY2MzpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XG4gNjY0Olx0XHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXHUwMDI2ZGV2LVx1MDAzZXBtO1xuIDY2NTpcdFx0aW50IGksIHJldDtcbiA2NjY6XHRcbiA2Njc6XHRcdGRldl9kYmcoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtjaGlwIHJlc2V0XFxuXCYjMzQ7KTtcbiA2Njg6XHRcdHNldF9iaXQoTVQ3Nl9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuIDY2OTpcdFx0ZGV2LVx1MDAzZWh3X2Z1bGxfcmVzZXQgPSB0cnVlO1xuIDY3MDpcdFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKGh3KTtcbiA2NzE6XHRcbiA2NzI6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbXBoeS5tYWNfd29yayk7XG4gNjczOlx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cG0tXHUwMDNlcHNfd29yayk7XG4gNjc0Olx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4gNjc1Olx0XG4gNjc2Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAxMDsgaSYjNDM7JiM0MzspIHtcbiA2Nzc6XHRcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRldi1cdTAwM2VtdDc2LmJ1c19odW5nKSlcbiA2Nzg6XHRcdFx0XHRyZXR1cm47XG4gNjc5Olx0XG4gNjgwOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZW10NzYubXV0ZXgpO1xuIDY4MTpcdFx0XHRyZXQgPSBtdDc5MnhfZGV2X3Jlc2V0KGRldik7XG4gNjgyOlx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG4gNjgzOlx0XG4gNjg0Olx0XHRcdGlmICghcmV0KVxuIDY4NTpcdFx0XHRcdGJyZWFrO1xuIDY4NjpcdFx0fVxuIDY4NzpcdFxuIDY4ODpcdFx0aWYgKChtdDc2X2lzX3NkaW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpIHx8IG10NzZfaXNfdXNiKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgXHUwMDI2XHUwMDI2XG4gNjg5Olx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuIDY5MDpcdFx0XHRyZXR1cm47XG4gNjkxOlx0XG4gNjkyOlx0XHRpZiAoaSA9PSAxMClcbiA2OTM6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O2NoaXAgcmVzZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbiA2OTQ6XHRcbiA2OTU6XHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTVQ3Nl9IV19TQ0FOTklORywgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpKSB7XG4gNjk2Olx0XHRcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX2luZm8gaW5mbyA9IHtcbiA2OTc6XHRcdFx0XHQuYWJvcnRlZCA9IHRydWUsXG4gNjk4Olx0XHRcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDYxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIERldmljZSBSZXNldCBGbG93KioKCkFscmlnaHQsIHNvIEkgc2VlIHRoaXMgY29kZSBpbml0aWF0ZXMgYSByZXNldCB1c2luZyBgbXQ3OTJ4X2Rldl9yZXNldChkZXYpYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBkb2VzICp0aGF0KiBmdW5jdGlvbiwgYG10NzkyeF9kZXZfcmVzZXRgLCB0aGVuIHN1YnNlcXVlbnRseSBjYWxsIHRoZSBtb3JlIGdlbmVyaWMsIGxvd2VyLWxldmVsIGRldmljZSByZXNldCBmdW5jdGlvbiBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBsaW5rIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBLbm93aW5nIHRoZSBjYWxsaW5nIHN0cnVjdHVyZSBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCBkZXZpY2Ugc3RhdGUgYWZ0ZXIgdGhlIHJlc2V0LiBJcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFjdGluZyBhcyBhIGJhc2UgZnVuY3Rpb24gZm9yIGFsbCB0aGUgbXQ3NiBkcml2ZXIgcmVzZXRzPyBPciwgaXMgYG10NzkyeF9kZXZfcmVzZXRgIGEgc3RhbmRhbG9uZSByZXNldCBmdW5jdGlvbiwgb3IgYSBzcGVjaWFsaXplZCBvbmU/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBjYWxsIGdyYXBoIHRvIGNvbmZpcm0gdGhlIHJlc2V0IGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbiBhbmQgdGhpcyBtb3JlIGdlbmVyaWMgZnVuY3Rpb24uIFRoaXMgcmVzZXQgYmVoYXZpb3IgbWF5IGhhdmUgaW1wbGljYXRpb25zIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfZGV2X3Jlc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz02NTk9dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4MC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2ODE6XHRcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4Mi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTExPXZvaWQgbXQ3OTI1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTM1LVx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1MzY6XHRcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MzctXHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yNjI9c3RydWN0IG10NzkyeF9kbWFfbGF5b3V0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTI3NC0jZGVmaW5lIG10NzkyeF9pbml0X3Jlc2V0KGRldilcdFx0KChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlaW5pdF9yZXNldChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyNzU6I2RlZmluZSBtdDc5MnhfZGV2X3Jlc2V0KGRldilcdFx0KChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlcmVzZXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjc2LSNkZWZpbmUgbXQ3OTJ4X21jdV9pbml0KGRldilcdFx0KChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlbWN1X2luaXQoZGV2KSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY5NDUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkyeCBEZXZpY2UgUmVzZXQqKgoKT2theSwgc28gYG10NzkyeF9kZXZfcmVzZXRgIGtpY2tzIG9mZiB3aXRoIGEgY2FsbCB0byBgZGV2LSZndDtoaWZfb3BzLSZndDtyZXNldChkZXYpYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgdXNpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZSAoSElGKSBvcGVyYXRpb25zIHN0cnVjdHVyZSB0byBkbyB0aGUgZGlydHkgd29yayBvZiByZXNldHRpbmcgdGhlIGRldmljZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hhdCB0aGUgYHJlc2V0YCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGF0IGBoaWZfb3BzYCBzdHJ1Y3QgYWN0dWFsbHkgKnBvaW50cyogdG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqc3BlY2lmaWMqIHJlc2V0IHJvdXRpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBJcyBpdCBhIGZ1bGwgaGFyZHdhcmUgcmVzZXQsIGEgc29mdHdhcmUtYmFzZWQgd2FybSByZXNldCwgb3Igc29tZXRoaW5nIGluIGJldHdlZW4/IEkgaGF2ZSB0byB1bmRlcnN0YW5kIHRoZSBsZXZlbCBvZiB0aGUgcmVzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwucmVzZXQgPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzIwOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgUmVzZXQgQmVoYXZpb3IgaW4gTVQ3OTIxL01UNzkyNSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlc2V0IGJlaGF2aW9yIG9mIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBjaGlwc2V0cy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIGByZXNldGAgZnVuY3Rpb25hbGl0eSBpbiB0aG9zZSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgbnVhbmNlcyBvZiBob3cgdGhlc2UgY2hpcHMgaGFuZGxlIHJlc2V0cyBpcyBjcml0aWNhbCBmb3IgW21lbnRpb24geW91ciBhcmVhIG9mIGV4cGVydGlzZSwgZS5nLiwgZGVidWdnaW5nIHBvd2VyIG1hbmFnZW1lbnQgaXNzdWVzLCBlbnN1cmluZyByZWxpYWJsZSBmaXJtd2FyZSB1cGRhdGVzLCBpbnZlc3RpZ2F0aW5nIGhhcmR3YXJlIGZhdWx0cywgZXRjLl0uIEtub3dpbmcgdGhlIGRldGFpbHMgb2YgdGhlIHJlc2V0IHByb2Nlc3Mgd2lsbCBhbGxvdyBtZSB0byBbZXhwbGFpbiBob3cgeW91IHdpbGwgdXNlIHRoaXMgdW5kZXJzdGFuZGluZywgZS5nLiwgaWRlbnRpZnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3B0aW1pemUgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBwaW5wb2ludCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgc3BlY2lmaWMgZmFpbHVyZSBJJiMzOTttIHNlZWluZ10uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSByZWxldmFudCBjb2RlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzZXQgc2VxdWVuY2UuIEkgZXhwZWN0IHRvIGZpbmQgY2x1ZXMgYWJvdXQgW21lbnRpb24gc3BlY2lmaWMgYXNwZWN0cyB5b3UmIzM5O3JlIGxvb2tpbmcgZm9yLCBlLmcuLCBob3cgdGhlIHJlZ2lzdGVycyBhcmUgY29uZmlndXJlZCwgd2hhdCBoYXBwZW5zIHRvIHRoZSBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lcywgd2hhdCBraW5kIG9mIGludGVycnVwdHMgYXJlIGdlbmVyYXRlZCwgdGhlIG92ZXJhbGwgdGltaW5nIGRpYWdyYW1dLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXNldCA9JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjU5PXZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjgtXHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY2OTpcdGRldi1cdTAwM2Vod19mdWxsX3Jlc2V0ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY3MC1cdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzAzOlx0ZGV2LVx1MDAzZWh3X2Z1bGxfcmVzZXQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcwNC1cdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM9MjU5PXN0YXRpYyBpbnQgbXQ3OTIxX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy0yODItXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIG10NzkyMV9wY2llX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jOjI4MzpcdFx0LmluaXRfcmVzZXQgPSBtdDc5MjFlX2luaXRfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYzoyODQ6XHRcdC5yZXNldCA9IG10NzkyMWVfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtMjg1LVx0XHQubWN1X2luaXQgPSBtdDc5MjFlX21jdV9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTIwLVx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBtdDc5MjFfc2Rpb19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTIxOlx0XHQuaW5pdF9yZXNldCA9IG10NzkyMXNfaW5pdF9yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzoxMjI6XHRcdC5yZXNldCA9IG10NzkyMXNfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEyMy1cdFx0Lm1jdV9pbml0ID0gbXQ3OTIxc19tY3VfaW5pdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzItXHRcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzM6XHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTc0Olx0XHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3NS1cdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTI3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgVVNCIE1BQyBSZXNldCBGdW5jdGlvbiBDYWxsKioKClJpZ2h0LCBzbyBgbXQ3OTIxdV9tYWNfcmVzZXRgIGlzIGdldHRpbmcgY2FsbGVkLiBBaGEhIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIHNwZWNpZmljIHRvIHRoZSBVU0IgaW50ZXJmYWNlLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGNvbm5lY3Rpb24gaXMgcmVzZXQgb3IgbWF5YmUgZXZlbiBkdXJpbmcgcG93ZXIgbWFuYWdlbWVudCBldmVudHMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgaW5zaWRlIHRoaXMgZnVuY3Rpb24sIGFzIGl0cyByb2xlIGluIFVTQiBpcyBnb2luZyB0byBiZSBjZW50cmFsLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBmb3IgYG10NzkyMXVfbWFjX3Jlc2V0YCBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3Qgc2VxdWVuY2Ugb2YgZXZlbnRzIGFuZCB3aGljaCBoYXJkd2FyZSByZWdpc3RlcnMgaXQmIzM5O3MgbWFuaXB1bGF0aW5nLiBJIGJldCB0aGVyZSBhcmUgc29tZSBzcGVjaWZpYyBVU0ItcmVsYXRlZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBlbWJlZGRlZCB0aGVyZSB0b28sIGFuZCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBhbnkgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUgZGVzY3JpcHRvcnMgdG8gc2VlIGhvdyBpdCYjMzk7cyBhY3R1YWxseSBjb25maWd1cmVkLiBUaGlzIHJlc2V0IG1pZ2h0IGludm9sdmUgZmx1c2hpbmcgVFgvUlggcXVldWVzLCBkaXNhYmxpbmcgaW50ZXJydXB0cywgcmUtaW5pdGlhbGl6aW5nIERNQSBjaGFubmVscywgb3IgZXZlbiByZS1wcm9ncmFtbWluZyBzb21lIGNyaXRpY2FsIHJlZ2lzdGVycyByZWxhdGVkIHRvIHBvd2VyIHNhdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxdV9tYWNfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy04OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjg5OnN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTc0Olx0XHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3NS1cdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MTc1CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG10NzkyMXVfbWFjX3Jlc2V0YC4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSB1c3VhbCBzdXNwZWN0cyBoZXJlLCBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIFdpLUZpIGRyaXZlciByZXNldHMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgYSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGFpbWVkIGF0IGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBpbnRvIGEga25vd24sIGdvb2Qgc3RhdGUgYWZ0ZXIgc29tZSBlcnJvciBvciB1cG9uIGluaXRpYWxpemF0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2U6CgoqKk1BQyBSZXNldCBQcm9jZWR1cmUgQW5hbHlzaXMqKgoKKiAgICoqUmVnaXN0ZXIgV3JpdGVzOioqIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIHdyaXRlcyDigJMgdGhlc2UgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIGhhcmR3YXJlIGNvbnRyb2wuIExpa2VseSB0YXJnZXRpbmcgY29uZmlndXJhdGlvbiByZWdpc3RlcnMsIGNvbnRyb2wgcmVnaXN0ZXJzLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgc3RhdHVzIHJlZ2lzdGVycyB0byBjbGVhciBmbGFncy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGJpdGZpZWxkcyBpbnZvbHZlZCB0byBkZWNpcGhlciB0aGUgcmVzZXQmIzM5O3MgYWN0dWFsIGltcGFjdC4gU3BlY2lmaWNhbGx5LCB3aGF0IHJlZ2lzdGVycyBhcmUgYmVpbmcgdGFyZ2V0ZWQ/IFdoYXQgdmFsdWVzIGFyZSBiZWluZyB3cml0dGVuPyBBbmQgd2hhdCBkb2VzIHRoYXQgc2lnbmlmeSBpbiB0ZXJtcyBvZiBNQUMgYmVoYXZpb3I/CiogICAqKkNsb2NrIENvbnRyb2w6KiogQ2xvY2sgY29udHJvbCBpcyBhbG1vc3QgY2VydGFpbmx5IGludm9sdmVkLiBSZXNldHRpbmcgdGhlIE1BQyBvZnRlbiByZXF1aXJlcyBkaXNhYmxpbmcgYW5kIHJlLWVuYWJsaW5nIGNsb2Nrcywgb3IgYXQgbGVhc3QgbWFuaXB1bGF0aW5nIGNsb2NrIGdhdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNsb2NrIGRlcGVuZGVuY2llcyBhbmQgaWYgdGhlcmUgYXJlIGFueSBjbG9jayBmcmVxdWVuY3kgY2hhbmdlcywgd2hpY2ggd291bGQgYWZmZWN0IHRoZSBQSFkuCiogICAqKkludGVycnVwdCBIYW5kbGluZzoqKiBUaGUgY29kZSBtaWdodCB0b3VjaCB1cG9uIGludGVycnVwdCBlbmFibGluZy9kaXNhYmxpbmcsIHNpbmNlIHRoaXMgaXMgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBNQUMmIzM5O3MgY29tbXVuaWNhdGlvbi4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHNlZSB3aGVuIGFuZCBob3cgaW50ZXJydXB0cyBhcmUgcmUtZW5hYmxlZCBhZnRlciB0aGUgcmVzZXQ7IGFuZCBpZiBhbnkgc3BlY2lmaWMgaW50ZXJydXB0IGZsYWdzIGFyZSBjbGVhcmVkLgoqICAgKipTdGF0ZSBNYWNoaW5lIE1hbmFnZW1lbnQ6KiogTUFDIHJlc2V0cyBmcmVxdWVudGx5IGludm9sdmUgbW92aW5nIHRoZSBNQUMgc3RhdGUgbWFjaGluZSB0aHJvdWdoIHNwZWNpZmljIHN0YXRlczogZnJvbSBwb3RlbnRpYWxseSBiZWluZyBzdG9wcGVkLCB0aHJvdWdoIHJlc2V0LCBhbmQgYmFjayB0byBhbiBvcGVyYXRpb25hbCBzdGF0ZS4gSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhpcyBpcyBoYW5kbGVkLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcy4KKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogSXQmIzM5O3MgdW5saWtlbHkgdGhhdCB0aGUgY29kZSBhc3N1bWVzIGV2ZXJ5dGhpbmcgZ29lcyBwZXJmZWN0bHkuIFNvLCBJIG5lZWQgdG8gc2VlIGhvdyBwb3RlbnRpYWwgZXJyb3JzIGR1cmluZyB0aGUgcmVzZXQgYXJlIGhhbmRsZWQuIEFyZSB0aGVyZSBhbnkgdGltZW91dHMsIHJldHJ5IG1lY2hhbmlzbXMsIG9yIGVycm9yIHJlcG9ydGluZyBpbnZvbHZlZD8gSSB3YW50IHRvIHNlZSBpZiB0aGUgZHJpdmVyIHJlcG9ydHMgaXQsIGFuZCBob3cgaXQgaGFuZGxlcyBpdC4KKiAgICoqUG93ZXIgTWFuYWdlbWVudDoqKiBJbiBtb3JlIGNvbXBsZXggc2l0dWF0aW9ucywgcG93ZXIgbWFuYWdlbWVudCBtaWdodCBiZSBwYXJ0IG9mIHRoZSByZXNldC4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIHBvd2VyLWRvd24gYW5kIHBvd2VyLXVwIHNlcXVlbmNlcyBvZiB2YXJpb3VzIGJsb2Nrcy4gVGhpcyBjb3VsZCBiZSByZWxldmFudCBmb3IgZW5zdXJpbmcgdGhlIE1BQyBpcyBpbiBhIGxvdy1wb3dlciBtb2RlIHdoZW4gbm90IGluIHVzZS4KKiAgICoqRmlybXdhcmUgTG9hZGluZy9SZXN0YXJ0OioqIEluIHNvbWUgYXJjaGl0ZWN0dXJlcywgZXNwZWNpYWxseSB0aG9zZSB3aXRoIG1vcmUgc29waGlzdGljYXRlZCBmaXJtd2FyZSwgYSBNQUMgcmVzZXQgY291bGQgcG90ZW50aWFsbHkgaW52b2x2ZSByZWxvYWRpbmcgb3IgcmVzdGFydGluZyB0aGUgZmlybXdhcmUgb24gYSBkZWRpY2F0ZWQgTUFDIHByb2Nlc3NvciwgaWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIGl0LgoKSW4gc2hvcnQsIEkmIzM5O20gZXhwZWN0aW5nIGEgY2FyZWZ1bGx5IG9yY2hlc3RyYXRlZCBkYW5jZSBvZiByZWdpc3RlciBtYW5pcHVsYXRpb25zLCBzdGF0ZSB0cmFuc2l0aW9ucywgY2xvY2sgYWRqdXN0bWVudHMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFsbCBhaW1lZCBhdCByZXN0b3JpbmcgdGhlIE1BQyB0byBhIGZ1bmN0aW9uaW5nIHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIGRpc3NlY3QgZWFjaCBzdGVwIGFuZCBidWlsZCBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgcHJvY2VkdXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODk6XHRzdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gIDkwOlx0e1xuICA5MTpcdFx0aW50IGVycjtcbiAgOTI6XHRcbiAgOTM6XHRcdG10NzkyeHVfcmVzZXRfb25fYnVzX2Vycm9yKGRldik7XG4gIDk0Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuICA5NTpcdFx0XHRyZXR1cm4gMDtcbiAgOTY6XHRcbiAgOTc6XHRcdG10NzZfdHhxX3NjaGVkdWxlX2FsbChcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG4gIDk4Olx0XHRtdDc2X3dvcmtlcl9kaXNhYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X3dvcmtlcik7XG4gIDk5Olx0XG4gMTAwOlx0XHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAxMDE6XHRcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAxMDI6XHRcbiAxMDM6XHRcdHdha2VfdXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYubWN1LndhaXQpO1xuIDEwNDpcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG4gMTA1Olx0XG4gMTA2Olx0XHRtdDc2dV9zdG9wX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAxMDc6XHRcdG10NzZ1X3N0b3BfdHgoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDEwODpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDE2OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDaGVja2luZyBmb3IgYG10NzZfcmVzZXRfZGV2aWNlYCBVc2FnZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBjcnVjaWFsLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGRldmljZSByZXNldHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgaWYgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGFueXdoZXJlIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgcGF0aCBvZiBleGVjdXRpb24uIFRoYXQgZnVuY3Rpb24sIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIE1UNzYgZHJpdmVycywgbGlrZWx5IGhhbmRsZXMgdGhlIGNvcmUgbG93LWxldmVsIGhhcmR3YXJlIHJlc2V0IHNlcXVlbmNlLiBLbm93aW5nIGlmIGl0JiMzOTtzIGludm9sdmVkIOKAkyBhbmQgKmhvdyogaXQmIzM5O3MgaW52b2x2ZWQg4oCTIHdpbGwgcHJvdmlkZSBjcml0aWNhbCBjb250ZXh0LiBJdCB3aWxsIGRldGVybWluZSB0aGUga2luZCBvZiBmYWlsdXJlIGFuYWx5c2lzLCBhbmQgbGlrZWx5IHRoZSBkZWJ1Z2dpbmcgcGF0aCBJIHdpbGwgY2hvb3NlIHRvIGZvbGxvdy4gSSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgYXNzdW1wdGlvbiBmb3IgdGhpcyBhbmFseXNpcyAtIGFuZCB0aGF0IGFzc3VtcHRpb24gbXVzdCBpbmNsdWRlIHVuZGVyc3RhbmRpbmcgaWYgdGhlcmUgaXMgYSByZXNldCBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGUgZmlyc3Qgc3RlcCBpcyBhIHF1aWNrIHNlYXJjaCB0byB2ZXJpZnkgaXRzIHByZXNlbmNlIGluIHRoaXMgc2VxdWVuY2UuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIHF1ZXN0aW9uLiBUaW1lIHRvIGdldCBzdGFydGVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDk6XHRcdG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcbiAxMTA6XHRcbiAxMTE6XHRcdGNsZWFyX2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuIDExMjpcdFx0ZXJyID0gbXQ3NnVfcmVzdW1lX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAxMTM6XHRcdGlmIChlcnIpXG4gMTE0Olx0XHRcdGdvdG8gb3V0O1xuIDExNTpcdFxuIDExNjpcdFx0ZXJyID0gbXQ3OTJ4dV9tY3VfcG93ZXJfb24oZGV2KTtcbiAxMTc6XHRcdGlmIChlcnIpXG4gMTE4Olx0XHRcdGdvdG8gb3V0O1xuIDExOTpcdFxuIDEyMDpcdFx0ZXJyID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIGZhbHNlKTtcbiAxMjE6XHRcdGlmIChlcnIpXG4gMTIyOlx0XHRcdGdvdG8gb3V0O1xuIDEyMzpcdFxuIDEyNDpcdFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcbiAxMjU6XHRcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gMTI2Olx0XG4gMTI3Olx0XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG4gMTI4Olx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDc5MwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXZpY2UgUmVzZXQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBkcml2ZXIgYmVoYXZpb3IuIE15IHByaW1hcnkgcXVlc3Rpb24gcmlnaHQgbm93IGlzIHdoZXRoZXIgb3Igbm90IHRoZSBzeXN0ZW0gaXMgYWN0dWFsbHkgaW52b2tpbmcgYG10NzZfcmVzZXRfZGV2aWNlYC4gVGhpcyBpcyBjcnVjaWFsLiBJZiBhIHJlc2V0IGlzbiYjMzk7dCBoYXBwZW5pbmcsIHRoZSBpc3N1ZSBpcyBsaWtlbHkgZWxzZXdoZXJlIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgb3IgcG90ZW50aWFsbHkgZXZlbiBpbiB0aGUgaGFyZHdhcmUgaXRzZWxmIG5vdCByZXNwb25kaW5nIGNvcnJlY3RseSB0byBpbml0aWFsIGNvbW1hbmRzLiBJZiBpdCAqaXMqIGJlaW5nIGNhbGxlZCwgdGhlbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyAqd2l0aGluKiB0aGF0IGZ1bmN0aW9uLCBhbmQgd2hhdCBjb25kaXRpb25zIGFyZSB0cmlnZ2VyaW5nIHRoZSByZXNldCBpbiB0aGUgZmlyc3QgcGxhY2UuIEFyZSB3ZSBzZWVpbmcgdGltZW91dHMsIGVycm9yIGNvZGVzIGZyb20gdGhlIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHN0YWNrLCBjaGVjayBmb3IgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCBtaWdodCBiZSBza2lwcGluZyB0aGUgcmVzZXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBhbmQgc2VlIHdoYXQgdGhlIGRldmljZSYjMzk7cyBzdGF0ZSBpcyBiZWZvcmUgdGhlIHN1c3BlY3RlZCBjYWxsIHRvIHRoYXQgcm91dGluZS4gSXMgdGhlIGZpcm13YXJlIGxvYWRlZD8gQXJlIGFueSByZWdpc3RlcnMgYmVpbmcgY29uZmlndXJlZD8gVW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlJiMzOTtzIGV4YWN0IHN0YXRlIHdoZW4gYSByZXNldCAqc2hvdWxkKiBiZSBuZWVkZWQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaXNzdWUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgc2V0dGluZyBzb21lIGJyZWFrcG9pbnRzIGFuZCBsb2dnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjk6XHRcdFx0Z290byBvdXQ7XG4gMTMwOlx0XG4gMTMxOlx0XHRtdDc2X2NsZWFyKGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gMTMyOlx0XG4gMTMzOlx0XHRlcnIgPSBtdDc5MjFfbWN1X3NldF9lZXByb20oZGV2KTtcbiAxMzQ6XHRcdGlmIChlcnIpXG4gMTM1Olx0XHRcdGdvdG8gb3V0O1xuIDEzNjpcdFxuIDEzNzpcdFx0ZXJyID0gbXQ3OTIxX21hY19pbml0KGRldik7XG4gMTM4Olx0XHRpZiAoZXJyKVxuIDEzOTpcdFx0XHRnb3RvIG91dDtcbiAxNDA6XHRcbiAxNDE6XHRcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuIDE0MjpcdG91dDpcbiAxNDM6XHRcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gMTQ0Olx0XG4gMTQ1Olx0XHRtdDc2X3dvcmtlcl9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYudHhfd29ya2VyKTtcbiAxNDY6XHRcbiAxNDc6XHRcdHJldHVybiBlcnI7XG4gMTQ4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM4NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgRnVuY3Rpb246IEEgRGVlcCBEaXZlKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdDogSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIHRyaWdnZXJlZCBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJIGtub3cgaXQmIzM5O3MgKm9ubHkqIGNhbGxlZCBieSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAsIGFuZCBJJiMzOTt2ZSB2ZXJpZmllZCB0aGF0IHdpdGggYSBncmVwLiBTbywgaG93IGRpZCBzeXprYWxsZXIgZXZlbiBnZXQgdGhlcmU/IElzIGl0IHBvc3NpYmxlIHRoZSBzeXpib3QgcmVwb3J0IGlzIGZvciBgbXQ3OTE1YCBvciBgbXQ3OTk2YD8gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZS4KCkJ1dCB3YWl0LCB0aGVzZSBhcmUgUENJZSBkZXZpY2VzLiBIb3cgY291bGQgc3l6a2FsbGVyIGZ1enogdGhlbT8gVGhlbiBpdCBoaXRzIG1lISBTeXprYWxsZXIgaGFzIHRoaXMgYHN5el9wY2lfZGV2aWNlX2FkZGAgcHNldWRvLXN5c2NhbGwuIERvZXMgaXQgZW11bGF0ZSBlbm91Z2ggdG8gcGFzcyB0aGUgYG10NzkxNV9sb2FkX2Zpcm13YXJlYD8gTm8sIGl0IGp1c3QgY3JlYXRlcyBhIGZha2UgZGV2aWNlIGFuZCBtZW1vcnktbWFwcyB0aGUgTU1JTyByZWdpb25zLiBSaWdodC4gV2hlbiB0aGUgZHJpdmVyIHdyaXRlcyB0byBNTUlPLCBpdCYjMzk7cyB3cml0aW5nIHRvIG1lbW9yeS4gUmVhZHMsIGZyb20gbWVtb3J5LiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGNvZGUuCgpTcGVjaWZpY2FsbHksIGluIGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgLCBpZiBzeXprYWxsZXIgY291bGQgc29tZWhvdyB3cml0ZSBhIHNwZWNpZmljIGBzdGF0ZWAgdmFsdWUgdG8gYE1UX1RPUF9NSVNDYCwgb3IgbWFwIHRoZSBNTUlPIHJlZ2lvbi4uLiBXYWl0IGEgc2Vjb25kISBTeXprYWxsZXIgKmNhbiogbWFwIHRoZSBNTUlPIHJlZ2lvbiEgSWYgYHN5el9wY2lfZGV2aWNlX2FkZGAgbWFwcyB0aGUgQkFScywgc3l6a2FsbGVyIGNhbiB1c2UgYW5vdGhlciB0aHJlYWQgdG8gd3JpdGUgdG8gdGhvc2UgTU1JTyByZWdpc3RlcnMhIFllcywgdGhhdCYjMzk7cyBob3cgaXQgc2ltdWxhdGVzIGhhcmR3YXJlIHJlc3BvbnNlcyEKCk9rYXksIGxldCYjMzk7cyB2ZXJpZnkgaWYgc3l6a2FsbGVyJiMzOTtzIHBjaSBmdXp6ZXIgYWN0dWFsbHkgbWFwcyB0aGUgQkFScyB0byB1c2VyIHNwYWNlLiBZZXAsIGl0IGRvZXMuIFRoaXMgbWVhbnMgaXQgY2FuIGNvbmN1cnJlbnRseSB3cml0ZSB0byBtYXBwZWQgbWVtb3J5LCBzaW11bGF0aW5nIHRoZSBkZXZpY2UmIzM5O3MgaGFyZHdhcmUgcmVzcG9uc2VzIQoKTm93LCBob2xkIG9uLiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCBhbnkgUENJIGRyaXZlciBpcyBmYWlyIGdhbWUhIFdoaWNoIGxlYWRzIHRvIG15IGNvbmNlcm4sIHRoZSBwcm9tcHQgdGhhdCBzYXlzOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKYG10NzkxNWAgaXMgYSAqdmVuZG9yLXNwZWNpZmljKiBQQ0llIFdpLUZpIGRyaXZlciwgc28gaXQgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LiBCdXQgZG9lcyB0aGlzIGV4Y2x1ZGUgaXQ/IFRoZSBzcGVjaWZpYyBleGFtcGxlcyBsaXN0ZWQgaW5jbHVkZSBgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHVgLiBXaS1GaSBkcml2ZXJzIGxpa2UgYG10NzZgLCBgaXdsd2lmaWAsIGFuZCBgYXRoMTBrYCBhcmUgYWxzbyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBidXQgYXJlIHRoZXkgZXhjbHVkZWQgaW4gdGhlIHNhbWUgd2F5PwoKVGhlIHByb21wdCBzdGF0ZXMgaXQgZXhjbHVkZXMgZHJpdmVycyAmIzM0O3RoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IFdpLUZpIGRyaXZlcnMgYXJlIG9mdGVuIGZ1enplZCB2aWEgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgKHZoY2kpLCBidXQgYG10NzkxNWAgaXMgUENJZS4gSSBoYXZlIHRvIGNvbnNpZGVyIHRoaXMuIFN5emthbGxlciBoYXMgYSBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgZm9yIFdpLUZpLCBidXQgY2FuIGl0IGZ1enogKlBDSWUqIFdpLUZpIGRyaXZlcnMgKmVmZmVjdGl2ZWx5Kj8KCkNvbXBsZXggUENJZSBXaS1GaSBkcml2ZXJzIHJlcXVpcmUgZmlybXdhcmUgbG9hZGluZy4gU3l6a2FsbGVyIGNhbiBmYWtlIGZpcm13YXJlIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYC4gQnV0IGNhbiBpdCBlbXVsYXRlIHJpbmcgYnVmZmVycyBhbmQgRE1BIGluIGBtdDc5MTVgPwoKSWYgc3l6a2FsbGVyIGZvdW5kIGEgYnVnIGluIGBtdDc2X3Jlc2V0X2RldmljZWAsIGl0IG11c3QgaGF2ZSByZWFjaGVkIGl0LiBXYWl0LCB0aGUgcHJvbXB0IEkgd2FzIHRoaW5raW5nIG9mLCBub3QgdGhlIHByb21wdCBzYXlzIHRoZSBjb21taXQgbWVzc2FnZSwgJiMzNDtBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsuJiMzNDsgQWN0dWFsbHksIHRoYXQgZG9lc24mIzM5O3QgbWVhbiBpdCAqZm91bmQqIHRoZSBidWcsIGl0IG1lYW5zIHN5emJvdCBhcHBsaWVkIGEgcGF0Y2ggc3VibWl0dGVkIGJ5IGEgZGV2ZWxvcGVyLiBTeXpib3QgcnVucyBhbmQgcmVwb3J0cyBvbiB0aGUgdGVzdHMsIGJ1dCBubyBjcmFzaCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIHJlYWNoYWJsZS4KClRoZSBwcm9tcHQgY29uZmlybXMgdGhhdDogJiMzNDtjb21taXQgNWU2NjBjY2UzOTQxNzgxNzBmOTMxOTE2Mjc1NzE4MzhkY2VkZThkZCBBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsgRGF0ZTogRnJpIEF1ZyAyMSAxNDozMTowNiAyMDI2ICYjNDM7MDAwMCBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gVGhpcyBpcyBqdXN0IGEgcGF0Y2ggYXBwbGllZCBieSBzeXpib3QgZm9yIHRlc3RpbmcuCgpJIG11c3QgZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKi4gSXMgYG10NzkxNWAgcmVhY2hhYmxlIGluIFFFTVU/IE5vLCBpdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQnV0IHdoYXQgaWYgYG10NzZgIGlzIHVzZWQgaW4gYSBVU0IgZHJpdmVyIHRoYXQgKmNhbGxzKiBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBJIGtub3cgdGhhdCBpcyBub3QgdGhlIGNhc2UuIEkgbmVlZCB0byBkb3VibGUKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3Jlc2V0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cdCAqIGxlYXZlcyB3Y2lkLVx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NjM3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgQW5hbHlzaXMqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIG15IHRoaW5raW5nLiBUaGUgY29kZSBtb2RpZmljYXRpb24gSSYjMzk7bSBpbnZlc3RpZ2F0aW5nIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBtdDc2X3Jlc2V0X2RldmljZWAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZGV0ZXJtaW5lIGhvdyByZWFjaGFibGUgdGhpcyBmdW5jdGlvbiBpcy4KCkZpcnN0LCBJIGNvbmZpcm1lZCB0aGF0IHRoZSBrbm93biBkaXJlY3QgY2FsbGVycyBvZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFyZSBzcGVjaWZpY2FsbHkgYG10NzkxNWAgYW5kIGBtdDc5OTZgLCBhbmQgYm90aCBhcmUgUENJZSBkZXZpY2VzLiBHaXZlbiB0aGF0LCBJIGNvbnNpZGVyZWQgaWYgZWl0aGVyIGRldmljZS9kcml2ZXIgY291bGQgYmUgcmVhY2hlZCB2aWEgUUVNVS4gSG93ZXZlciwgYG10NzkxNWAgKmRvZXMqIGhhdmUgYSBwbGF0Zm9ybSBkcml2ZXIgKGBtdDc5OHhfd21hY19kcml2ZXJgKSwgYnV0IHRoaXMgaXMgZm9yIGEgTWVkaWFUZWsgTVQ3OTh4IFNvQy4gU2luY2UgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgU29DLCB0aGF0JiMzOTtzIGEgZGVhZCBlbmQuIFRoZXJlZm9yZSwgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGl0c2VsZiBhcmUgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoZSB0eXBpY2FsIFFFTVUgc2V0dXAgSSYjMzk7bSBmYW1pbGlhciB3aXRoLgoKTmV4dCwgSSBkaWQgYSBmdWxsIGtlcm5lbCBncmVwIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFuZCB3YXMgY29uZmlybWVkIHRoZSBvbmx5IGNhbGxlcnMgd2VyZSwgYWdhaW4sIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YC4KClRoZW4sIEkgZG91YmxlLWNoZWNrZWQgYSByZWNlbnQgcGF0Y2gsIGxvb2tpbmcgZm9yIGluZGlyZWN0IGNhbGxzIHRocm91Z2ggYG10NzZfd2NpZF9jbGVhbnVwYCwgYnV0IHRoZSBwYXRjaCBhY3R1YWxseSAqbW92ZXMqIGEgY2FsbCB0byBgbXQ3Nl93Y2lkX2NsZWFudXBgICppbnNpZGUqIGBtdDc2X3Jlc2V0X2RldmljZWAuIFRoaXMgY29uZmlybXMgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKndpdGhpbiogdGhhdCBmdW5jdGlvbiwgYW5kIGlmIHRoZSBmdW5jdGlvbiBpc24mIzM5O3QgY2FsbGVkLCB0aGUgY2hhbmdlcyBhcmUsIGVmZmVjdGl2ZWx5LCB1bnJlYWNoYWJsZS4KCkkgYWxzbyBjb25zaWRlcmVkIHdoZXRoZXIgYG1hYzgwMjExX2h3c2ltYCBjb3VsZCByZWFjaCBpdCwgYnV0IHRoYXQmIzM5O3MgYSBzZXBhcmF0ZSBkcml2ZXIsIG5vdCByZWxhdGVkIHRvIHRoZSBgbXQ3NmAgc3RhY2suIFVTQiBkcml2ZXJzIHdlcmUgYWxzbyBjb25zaWRlcmVkLCBzcGVjaWZpY2FsbHkgYG10NzZ4MHVgLCBgbXQ3NngydWAsIGBtdDc2MTV1YCwgYW5kIGBtdDc5MjF1YCwgYnV0IHRoZXkgZG9uJiMzOTt0IGNhbGwgYG10NzZfcmVzZXRfZGV2aWNlYCBlaXRoZXIuCgpGaW5hbGx5LCBJIGNoZWNrZWQgd2hldGhlciBpdCB3YXMgZXhwb3NlZCB2aWEgYEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtgLCBob3BpbmcgZm9yIGEgY2FsbCBmcm9tIGBtdDc2X2NvcmVgIG9yIGBtYWM4MDIxMWAgY2FsbGJhY2tzLiBUaGUgc3ltYm9sIGV4cG9ydCAqaXMqIHRoZXJlLCBidXQgYWdhaW4sIHRoZSBjYWxsZXJzIGFyZSBsaW1pdGVkIHRvIHRoZSB0d28gaWRlbnRpZmllZCBkZXZpY2VzLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbmVlZCB0byBnbyBmdXJ0aGVyIGFuZCBsb29rIGZvciBhbnkgaW5kaXJlY3QgY2FsbHMgdG8gYG10NzZfcmVzZXRfZGV2aWNlYCwganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3Jlc2V0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVx0ICogbGVhdmVzIHdjaWQtXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY3MjcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgdGhpcyBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3Jlc2V0X2RldmljZWAgZnVuY3Rpb24gYW5kIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIGRpcmVjdGx5IGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgd2hpY2ggYXJlIFBDSWUgZHJpdmVycy4gUENJZSBkcml2ZXJzIG9mdGVuIHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFNpbmNlIHRoZXNlIGRyaXZlcnMgYXJlIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIHRoZXkgYXJlIGxpa2VseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KCkJ1dCB3YWl0LCB0aGVuIEkgcmVtZW1iZXJlZCBzeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZV9hZGRgLiBDb3VsZCBzeXprYWxsZXIgYWN0dWFsbHkgKmVtdWxhdGUqIHRoZSBoYXJkd2FyZSByZXNwb25zZXM/IElmIGl0IGNvdWxkIG1hcCB0aGUgQkFScyB0byB1c2Vyc3BhY2UgYW5kIGFsbG93IGNvbmN1cnJlbnQgd3JpdGVzLCB0aGVuIHllcywgcG90ZW50aWFsbHkgdGhlIGRyaXZlciBjb3VsZCBiZSBpbml0aWFsaXplZCBhbmQgZnV6emVkISBJdCBjYW4gaW5kZWVkLCBiZWNhdXNlIGBzeXpfcGNpX2RldmljZV9hZGRgIG1hcHMgdGhlIEJBUnMuCgpIb3dldmVyLCB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIGEgV2ktRmkgZHJpdmVyLCBsaWtlIGBtdDc5MTVgLCBhICYjMzQ7U21hcnROSUMmIzM0Oz8gTm8sIGl0JiMzOTtzIG5vdCBhIFNtYXJ0TklDLiBCdXQgaXQgKmlzKiBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLgoKVGhlIGV4YW1wbGVzIGluIHRoZSBwcm9tcHQsIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgZXRjLiwgYXJlIGFsbCB0aGVzZSByZWFsbHkgY29tcGxleCBuZXR3b3JraW5nL0dQVSBkcml2ZXJzLiBXaS1GaSBkcml2ZXJzIGxpa2UgYG10NzZgLCBgaXdsd2lmaWAsIGFuZCBgYXRoMTBrYCBhcmUgY29tcGxleCBuZXR3b3JraW5nIGRyaXZlcnMgdG9vLCBhbmQgSSB3b3VsZCB0cmVhdCB0aGVtIHNpbWlsYXJseSBpbiB0aGlzIGNvbnRleHQuIElmIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgYG1seHN3YCwgdGhlbiBJIG5lZWQgdG8gZG8gdGhlIHNhbWUgZm9yIGBtdDc5MTVgIGJlY2F1c2UgaXQgZGVtYW5kcyBwaHlzaWNhbCBoYXJkd2FyZS4KCk9uIHRvcCBvZiB0aGlzLCBzeXprYWxsZXIgcHJvYmFibHkgY2Fubm90IGZ1enogYG10NzkxNWAgZWZmZWN0aXZlbHkgYW55d2F5LiBJdCBuZWVkcyBmaXJtd2FyZSBsb2FkaW5nIGFuZCBjb21wbGV4IE1DVSBpbnRlcmFjdGlvbnMuIEV2ZW4gd2l0aCBCQVIgbWFwcGluZywganVzdCByYW5kb20gd3JpdGVzIHByb2JhYmx5IHdvbiYjMzk7dCBnZXQgcGFzdCB0aGF0LiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgIG5lZWRzIHRoZSBNQ1UgdG8gcmVzcG9uZCB0byBjb21tYW5kcywgaW52b2x2aW5nIERNQSByaW5ncywgaW50ZXJydXB0cywgYWxsIGtpbmRzIG9mIGNvbXBsZXhpdHkgdGhhdCBzeXprYWxsZXIgcHJvYmFibHkgY2FuJiMzOTt0IHNpbXVsYXRlIHdpdGggcmFuZG9tIG1lbW9yeSB3cml0ZXMuCgpUaGVyZWZvcmUsIHNpbmNlIGBtdDc5MTVgIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIFFFTVUsIHRoZSBjb2RlIGlzIG5vdCB3b3J0aCBmdXp6aW5nLCBzbyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSnVzdCB0byBiZSBzdXJlLCBJIHdpbGwgY2hlY2sgaWYgYW55IG90aGVyIGRyaXZlciBpcyBjYWxsaW5nIHRoZSBmdW5jdGlvbiwgdXNpbmcgYGdyZXBgLiBJIGRpZCwgYW5kIGl0IGlzIG5vdC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIHRocm91Z2ggYSBtYWNyby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzk1OQoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiA1NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogQ29kZSBVbnJlYWNoYWJsZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb2RlIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29udGV4dDogd2UmIzM5O3JlIGxvb2tpbmcgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byBoaXQgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IEdDRSBvciBRRU1VLgoKSSYjMzk7dmUgdHJhY2VkIHRoaXMgYmFjayB0byB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSBib3RoIFBDSWUgV2ktRmkgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUgd2FzIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCkgaW52b2x2ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBtYWtlIHRoZSBjb2RlIHJlYWNoYWJsZS4gSG93ZXZlciwgdGhhdCBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIERldmljZSBUcmVlIGNvbXBhdGlibGUgc3RyaW5ncywgbGlrZSBgbWVkaWF0ZWssbXQ3OTg2LXdtYWNgLCB3aGljaCwgb2YgY291cnNlLCBRRU1VICpkb2VzbiYjMzk7dCogZW11bGF0ZSBmb3IgdGhlIE1UNzk4eCBTb0NzLiBUaGVyZWZvcmUsIHRoYXQgcGF0aCBpcyBkZWFkLgoKU28sICp0aGVyZWZvcmUqLCB0aGUgbW9kaWZpZWQgY29kZSAqY2Fubm90KiBiZSByZWFjaGVkIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGUgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogaXQmIzM5O3MgZGVzaWduZWQgdG8gZXhjbHVkZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggcGVyZmVjdGx5IGRlc2NyaWJlcyB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIHNjZW5hcmlvcy4gIE5vIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0IGlzIGdvaW5nIHRvIGdldCB1cyB0aGVyZS4KClRoZSAmIzM0O0F1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OyYjMzQ7IG1lc3NhZ2luZyB0aHJldyBtZSBmb3IgYSBtb21lbnQ7IGl0IHRyaWdnZXJlZCBhIGJpdCBvZiBhIGtuZWUtamVyayByZWFjdGlvbi4gQnV0IHRoZW4gSSByZW1lbWJlcmVkOiBgc3l6LWNsdXN0ZXJgIGlzIHRlc3RpbmcgYSBwYXRjaCwgbm90IG5lY2Vzc2FyaWx5ICpmaW5kaW5nKiBhIGJ1Zy4gU3l6Ym90IHJ1bnMgcGF0Y2hlcyBzdWJtaXR0ZWQgdG8gbWFpbGluZyBsaXN0cyB0aHJvdWdoIGl0cyBleGlzdGluZyBjb3JwdXMuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCBpdCYjMzk7cyBzaW1wbHkgbm90IGV4ZWN1dGVkOyB0aGUgZnV6emluZyBqdXN0IHJlcG9ydHMgJiMzNDtPSyYjMzQ7IHdpdGhvdXQgYSBjcmFzaC4gVGhpcyBpcyBjcml0aWNhbC4KClNvLCB3aXRoIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIGZ1enplciYjMzk7cyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBNZWRpYVRlayBtdDc2IFdpLUZpIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9wbGF0Zm9ybSBkcml2ZXJzIGZvciBNZWRpYVRlayBXaS1GaSBjaGlwcy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZXkgY2Fubm90IGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MDguNTc0OTIwMzA0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNzIxNzA4NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMTowOC41NzQ5MjY1NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDY1MDk3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZTY2MGNjZTM5NDE3ODE3MGY5MzE5MTYyNzU3MTgzOGRjZWRlOGRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjMxOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xcbmluZGV4IGFiYmU2NWNiY2Q4OWUuLjBlYjAyMWJlODM3YWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuQEAgLTg1Niw4ICs4NTYsOCBAQCB2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdHdjaWQtXFx1MDAzZXN0YSA9IDA7XFxuLVxcdFxcdG10NzZfd2NpZF9jbGVhbnVwKGRldiwgd2NpZCk7XFxuIFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZXdjaWRbaV0sIE5VTEwpO1xcbitcXHRcXHRtdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpO1xcbiBcXHR9XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MDkuOTgyMTQzOTA0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIwMzE0NDY3NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBNZWRpYVRlayBtdDc2IFdpLUZpIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9wbGF0Zm9ybSBkcml2ZXJzIGZvciBNZWRpYVRlayBXaS1GaSBjaGlwcy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZXkgY2Fubm90IGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlNjYwY2NlMzk0MTc4MTcwZjkzMTkxNjI3NTcxODM4ZGNlZGU4ZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNDozMTowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuaW5kZXggYWJiZTY1Y2JjZDg5ZS4uMGViMDIxYmU4MzdhZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5AQCAtODU2LDggKzg1Niw4IEBAIHZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHdjaWQtXHUwMDNlc3RhID0gMDtcbi1cdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2V3Y2lkW2ldLCBOVUxMKTtcbitcdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MDkuOTgyMTQ3NDE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTUwNzM4MjQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24gaW4gdGhlIG10NzYgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBhIGNoYW5nZSBpbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCdzIGEgc21hbGwgbW9kaWZpY2F0aW9uLCBqdXN0IHJlb3JkZXJpbmcgYSBjb3VwbGUgb2YgbGluZXMsIGJ1dCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbnRlcmVzdGluZy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzOlxuXG5gYGBjXG4gXHRcdHdjaWQtXHUwMDNlc3RhID0gMDtcbi1cdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2V3Y2lkW2ldLCBOVUxMKTtcbitcdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBhIHNpbWlsYXIgbWVtb3J5IHNhZmV0eSBpc3N1ZS4gVGhlIGBtdDc2X3djaWRfY2xlYW51cGAgZnVuY3Rpb24gbGlrZWx5IHBlcmZvcm1zIHNvbWUgb3BlcmF0aW9uIG9uIHRoZSBgd2NpZGAgc3RydWN0dXJlLCBwb3NzaWJseSBmcmVlaW5nIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBvcmlnaW5hbCBvcmRlciBwb3RlbnRpYWxseSBsZWZ0IGEgcmFjZSB3aW5kb3cgd2hlcmUgYSBjb25jdXJyZW50IHJlYWRlciBtaWdodCBhY2Nlc3MgdGhlIGB3Y2lkYCBzdHJ1Y3R1cmUgYWZ0ZXIgaXQgaGFkIGJlZW4gY2xlYW5lZCB1cC4gVGhlIGtleSBoZXJlIGlzIHRoZSB1c2Ugb2YgYHJjdV9hc3NpZ25fcG9pbnRlcmAuIEl0J3MgZGVzaWduZWQgZm9yIHRoaXMga2luZCBvZiBjb25jdXJyZW50IGFjY2VzcyBzY2VuYXJpby4gU28sIHRoZSBwYXRjaCBpcyBsaWtlbHkgbW92aW5nIHRoZSBjbGVhbnVwICphZnRlciogdGhlIGByY3VfYXNzaWduX3BvaW50ZXJgIHRvIHByZXZlbnQgdGhvc2UgcmFjZSBjb25kaXRpb25zLiBXZSdyZSBudWxsaW5nIG91dCB0aGUgcG9pbnRlciBpbiB0aGUgYGRldmAgc3RydWN0ICpiZWZvcmUqIGZyZWVpbmcgdGhlIG1lbW9yeSB0aGUgcG9pbnRlciBpcyBwb2ludGluZyB0by4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZml4IHRvIG1lLiBHb29kIGNhdGNoLlxuXG5CdXQgdGhlbiwgdGhlIHRob3VnaHQgc3RydWNrIG1lLi4uIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnRlc3RhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBvZnRlbiB0aWdodGx5IGNvdXBsZWQgdG8gaGFyZHdhcmUsIGJ1dCB3YWl0Li4uIGBtdDc2YCBhY3R1YWxseSBoYXMgVVNCIGRyaXZlcnMhIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0LiBUaGlzIG1lYW5zIHdlIG1pZ2h0IGJlIGFibGUgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyB0ZWNobmlxdWVzIGxpa2UgVVNCIGdhZGdldCwgZHVtbXlfaGNkLCBvciBldmVuIHN5emthbGxlcidzIHZoY2kuIEFuZCwgc2luY2Ugc3l6a2FsbGVyICpzdXBwb3J0cyogVVNCIGZ1enppbmcgdmlhIHZoY2ksIHdlIGNhbiBmdXp6IHRoZSBgbXQ3NmAgVVNCIGRyaXZlcnMhIFRoYXQgY2hhbmdlcyB0aGUgZ2FtZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIHJlYWNoYWJsZSBhbmQgaG93IHRvIHRyaWdnZXIgdGhhdCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMToxOS40ODk1MzI4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzkzMTIwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXFx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcXHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVxcdCAqIGxlYXZlcyB3Y2lkLVxcdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXFx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMToxOS41NDM0NjkzMzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTAxNTkyMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbXQ3NiBEZXZpY2UgUmVzZXQgRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YCBhbmQgYG10Nzk5Nl9tYWNfZnVsbF9yZXNldGAgZnVuY3Rpb25zLiBIbW0sIGludGVyZXN0aW5nLiBOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIEFyZSB3ZSBkZWFsaW5nIHdpdGggVVNCIG9yIFBDSWUgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkZXZpY2VzIGhlcmU/IFRoZSByZXNldCBiZWhhdmlvciwgYW5kIHBvdGVudGlhbGx5IHRoZSBzcGVjaWZpYyByZXNldCBzZXF1ZW5jZSB3aXRoaW4gYG10NzZfcmVzZXRfZGV2aWNlYCwgY291bGQgYmUgcXVpdGUgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgYnVzIHR5cGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGlzdGluY3Rpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgYW5kIGlkZW50aWZ5IGFueSBwb3NzaWJsZSBvcHRpbWl6YXRpb25zIG9yIHBpdGZhbGxzLiBUaW1lIHRvIGxvb2sgaW50byB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCBwcm9iZSBmdW5jdGlvbnMgdG8gY29uZmlybSB3aGljaCBidXMgdGhlc2Ugc3BlY2lmaWMgZGV2aWNlcyBhcmUgdXRpbGl6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDMyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MjMuNjQ1MDYzNjMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDY3MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9tYWNfZnVsbF9yZXNldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDI1Om10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQ4Mj12b2lkIG10NzkxNV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE1MDQ6XFx0XFx0bXQ3OTE1X21hY19mdWxsX3Jlc2V0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTUwNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MjMuNjk2NTM1NzQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MjUyNTEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNVDc5MTUgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBNVDc5MTUuIExldCdzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gSXMgdGhpcyBhIFBDSWUgZGV2aWNlLCBvciBkb2VzIGl0IHV0aWxpemUgVVNCPyBUaGF0J3MgdGhlIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIGF0IGhhbmQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGRpY3RhdGUgc28gbXVjaCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlLCBwb3dlciByZXF1aXJlbWVudHMsIGFuZCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLiBJdCdzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIGluIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBjb21wb25lbnQgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gVGhlIGFuc3dlciB3aWxsIGRldGVybWluZSBob3cgSSBwcm9jZWVkIHdpdGggdGhlIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTk1LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MjcuMTc5MDYzNDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0MTAzNTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyfG1vZHVsZV91c2JfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMToyNy4yMjg0ODE0NTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc3MTkxMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIG10NzkxNSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IGV4YWN0bHkgKndoYXQqIHRoZSBtdDc5MTUgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIGZvci4gSXQncyBhIGNvbW1vbiBpbml0aWFsIHN0ZXAgd2hlbiB0cm91Ymxlc2hvb3Rpbmcgb3IgYW5hbHl6aW5nIGFueXRoaW5nLiBJIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGl0cyByb2xlLiBJcyBpdCBhIHdpcmVsZXNzIGRyaXZlcj8gQSBzcGVjaWZpYyBjaGlwc2V0IGRyaXZlcj8gVGhlIG5vbWVuY2xhdHVyZSBzdWdnZXN0cyBhIE1lZGlhVGVrIGNvbXBvbmVudCwgYnV0IEkgc2hvdWxkbid0IGp1bXAgdG8gY29uY2x1c2lvbnMuIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB0aGUgZnVuY3Rpb25hbCBzY29wZSBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGRyaXZlciBuYW1lLCBcIm10NzkxNSxcIiBpcyB0aGUga2V5LiBOb3csIHdoZXJlIHRvIGJlZ2luIHRoZSBodW50IGZvciBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbi4uLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjMxLjUwNTY5NzE1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MjY0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTk5Mz1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3OTE1X2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy0xMDAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzoxMDAyOm1vZHVsZV9pbml0KG10NzkxNV9pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtMTAwMy1tb2R1bGVfZXhpdChtdDc5MTVfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjMxLjU1MTIzMTYwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzIyMjcyODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBtdDc5MTVfaW5pdGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgYG10NzkxNV9pbml0YCBmdW5jdGlvbi4gSSdtIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgcGFydGljdWxhciBNZWRpYXRlayBXaS1GaSBjaGlwLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBib290IHByb2Nlc3MsIHJlZ2lzdGVyIHNldHVwLCBhbmQgYW55IGVhcmx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEkgc3VzcGVjdCBpdCdsbCBzdGFydCB3aXRoIHNvbWUgY2xvY2sgZW5hYmxpbmcgYW5kIHJlc2V0IGFzc2VydGlvbi9kZWFzc2VydGlvbiwgZm9sbG93ZWQgYnkgdGhlIGxvYWRpbmcgb2YgZmlybXdhcmUgYW5kIGNhbGlicmF0aW9uIGRhdGEsIHBlcmhhcHMgZXZlbiBzb21lIGVhcmx5IHJhZGlvIGNhbGlicmF0aW9uLlxuXG5JJ20gYW50aWNpcGF0aW5nIHNvbWUgY3JpdGljYWwgc3RlcHMgaW4gc2V0dGluZyB1cCB0aGUgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCBETUEgY2hhbm5lbHMuIEknbGwgYmUgbG9va2luZyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gdGhlIE1BQyBsYXllciwgZGVzY3JpcHRvcnMsIGFuZCBidWZmZXJzLiBLbm93aW5nIGhvdyB0aGlzIGluaXQgZnVuY3Rpb24gaGFuZGxlcyBwb3dlciBtYW5hZ2VtZW50IHdpbGwgYmUgaW1wb3J0YW50LCBhcyB0aGlzIGlzIG9mdGVuIGEgY3JpdGljYWwgZWxlbWVudCBpbiB0aGVzZSB0eXBlcyBvZiBlbWJlZGRlZCBzeXN0ZW1zLiBJdCdzIGxpa2VseSBnb2luZyB0byBiZSBhIG11bHRpLXN0YWdlIHByb2Nlc3Mgd2l0aCBlcnJvciBjaGVja2luZyBhdCBlYWNoIHN0YWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTkyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MzUuMjczNTA3NDUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc2MDA1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI3OD1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10NzkxNV9yZl9yZWd2YWxfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyODE6aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz04PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo5Om10NzkxNV9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBpbnQgaWR4LCBpbnQgbl9kZXNjLCBpbnQgcmluZ19iYXNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTQwOD1pbnQgbXQ3OTE1X2RtYV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDQzLVxcdC8qIGluaXQgdHggcXVldWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0NDQ6XFx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NDUtXFx0XFx0XFx0XFx0ICAgIE1UX1RYUV9JRChkZXYtXFx1MDAzZXBoeS5tdDc2LVxcdTAwM2ViYW5kX2lkeCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NTEtXFx0aWYgKHBoeTIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0NTI6XFx0XFx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKHBoeTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDUzLVxcdFxcdFxcdFxcdFxcdCAgICBNVF9UWFFfSUQocGh5Mi1cXHUwMDNlbXQ3Ni1cXHUwMDNlYmFuZF9pZHgpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTMwND1zdGF0aWMgdm9pZCBtdDc5MTVfbGVkX3NldF9icmlnaHRuZXNzKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTMxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzEzOnN0YXRpYyB2b2lkIF9fbXQ3OTE1X2luaXRfdHhwb3dlcihzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zMTQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM1Mzp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTgtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc18yZ2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNTk6XFx0XFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfMmcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjAtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc181Z2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNjE6XFx0XFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjItXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc182Z2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNjM6XFx0XFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNmcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM2Nz1tdDc5MTVfcmVnZF9ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzgxOlxcdG10NzkxNV9pbml0X3R4cG93ZXIocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM4Nz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozODg6bXQ3OTE1X2luaXRfd2lwaHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01MDAtXFx0bXQ3OTE1X3NldF9zdHJlYW1faGVfY2FwcyhwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1MDE6XFx0bXQ3OTE1X2luaXRfdHhwb3dlcihwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01MDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NTg0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU4NTptdDc5MTVfaW5pdF9sZWRfbXV4KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTU4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NjUwPXZvaWQgbXQ3OTE1X21hY19pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNjc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo2NzY6XFx0bXQ3OTE1X2luaXRfbGVkX211eChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02NzctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTcyMj1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc0Ni1cXHQvKiBpbml0IHdpcGh5IGFjY29yZGluZyB0byBtcGh5IGFuZCBwaHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzQ3OlxcdG10NzkxNV9pbml0X3dpcGh5KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc1ODpcXHRtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc2NzpzdGF0aWMgdm9pZCBtdDc5MTVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NTg6bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NjU6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yaywgbXQ3OTE1X2luaXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMDE5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTAyMDptdDc5MTVfaW5pdF9oZV9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEwMjEtXFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc2JhbmRfaWZ0eXBlX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTE5NT12b2lkIG10NzkxNV9zZXRfc3RyZWFtX2hlX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjAyLVxcdFxcdGRhdGEgPSBwaHktXFx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfMkdIWl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyMDM6XFx0XFx0biA9IG10NzkxNV9pbml0X2hlX2NhcHMocGh5LCBOTDgwMjExX0JBTkRfMkdIWiwgZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIxMC1cXHRcXHRkYXRhID0gcGh5LVxcdTAwM2VpZnR5cGVbTkw4MDIxMV9CQU5EXzVHSFpdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjExOlxcdFxcdG4gPSBtdDc5MTVfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzVHSFosIGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTgtXFx0XFx0ZGF0YSA9IHBoeS1cXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF82R0haXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIxOTpcXHRcXHRuID0gbXQ3OTE1X2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF82R0haLCBkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjUwPWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3NDpcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjc1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3ODpcXHRtdDc5MTVfaW5pdF93aXBoeShcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEzMDM6XFx0cmV0ID0gbXQ3OTE1X2luaXRfZGVidWdmcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMzA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM4Ni1cXHRtdDc5MTVfbWFjX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzg3OlxcdG10NzkxNV9pbml0X3R4cG93ZXIoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzg4OlxcdG10NzkxNV9pbml0X3R4cG93ZXIocGh5Mik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM4OS1cXHRyZXQgPSBtdDc5MTVfdHhiZl9pbml0KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTQyPXN0YXRpYyBpbnQgZ2V0X29tYWNfaWR4KGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSwgdTY0IG1hc2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODU6c3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfYml0cmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MjA0PXN0YXRpYyBpbnQgbXQ3OTE1X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoyNzM6XFx0bXQ3OTE1X2luaXRfYml0cmF0ZV9tYXNrKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTI3NC1cXHRtZW1zZXQoXFx1MDAyNm12aWYtXFx1MDAzZWNhcCwgLTEsIHNpemVvZihtdmlmLVxcdTAwM2VjYXApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz05MTc9c3RydWN0IG10NzkxNV9kZXYgKm10NzkxNV9tbWlvX3Byb2JlKHN0cnVjdCBkZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo5NjU6c3RhdGljIGludCBfX2luaXQgbXQ3OTE1X2luaXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz05OTM9c3RhdGljIHZvaWQgX19leGl0IG10NzkxNV9leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtMTAwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6MTAwMjptb2R1bGVfaW5pdChtdDc5MTVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTEwMDMtbW9kdWxlX2V4aXQobXQ3OTE1X2V4aXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDcwPWludCBtdDc5MTVfdHhiZl9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3MTp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDcyLXZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NjM0PWludCBtdDc5MTVfbWN1X3dlZF9lbmFibGVfcnhfc3RhdHMoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NjM1OmludCBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTYzNi12b2lkIG10NzkxNV9kZWJ1Z2ZzX3J4X2Z3X21vbml0b3Ioc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjM1LjMxODI3MjI1N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU3ODU4OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBtdDc5MTVfbW1pb19wcm9iZWAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgYW5kIGl0J3MgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyDigJMgc3BlY2lmaWNhbGx5LCB3aXRoaW4gYG10NzkxNV9pbml0YC4gVGltZSB0byB0cmFjZSB0aGF0IGNhbGwgY2hhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG10NzkxNV9pbml0YCBkb2VzIHRvIGdldCBhIGdyYXNwIG9uIHRoZSBvdmVyYWxsIGRldmljZSBicmluZy11cCBzZXF1ZW5jZS4gVGhpcyBwcm9iZSBmdW5jdGlvbiBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgdGhlIG1lbW9yeSByZWdpb25zIGFuZCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCBzbyBpdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIExldCdzIHNlZSBob3cgYG10NzkxNV9pbml0YCBzZXRzIHRoZSBzdGFnZSBmb3IgYG10NzkxNV9tbWlvX3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNTMsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMTozOC43NzYxMzQxOTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk2NSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk2NTpcXHRzdGF0aWMgaW50IF9faW5pdCBtdDc5MTVfaW5pdCh2b2lkKVxcbiA5NjY6XFx0e1xcbiA5Njc6XFx0XFx0aW50IHJldDtcXG4gOTY4OlxcdFxcbiA5Njk6XFx0XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bXQ3OTE1X2hpZl9kcml2ZXIpO1xcbiA5NzA6XFx0XFx0aWYgKHJldClcXG4gOTcxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDk3MjpcXHRcXG4gOTczOlxcdFxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcXG4gOTc0OlxcdFxcdGlmIChyZXQpXFxuIDk3NTpcXHRcXHRcXHRnb3RvIGVycm9yX3BjaTtcXG4gOTc2OlxcdFxcbiA5Nzc6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01UNzk4WF9XTUFDKSkge1xcbiA5Nzg6XFx0XFx0XFx0cmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtdDc5OHhfd21hY19kcml2ZXIpO1xcbiA5Nzk6XFx0XFx0XFx0aWYgKHJldClcXG4gOTgwOlxcdFxcdFxcdFxcdGdvdG8gZXJyb3Jfd21hYztcXG4gOTgxOlxcdFxcdH1cXG4gOTgyOlxcdFxcbiA5ODM6XFx0XFx0cmV0dXJuIDA7XFxuIDk4NDpcXHRcXG4gOTg1OlxcdGVycm9yX3dtYWM6XFxuIDk4NjpcXHRcXHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcXG4gOTg3OlxcdGVycm9yX3BjaTpcXG4gOTg4OlxcdFxcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bXQ3OTE1X2hpZl9kcml2ZXIpO1xcbiA5ODk6XFx0XFxuIDk5MDpcXHRcXHRyZXR1cm4gcmV0O1xcbiA5OTE6XFx0fVxcbiA5OTI6XFx0XFxuIDk5MzpcXHRzdGF0aWMgdm9pZCBfX2V4aXQgbXQ3OTE1X2V4aXQodm9pZClcXG4gOTk0OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MzguNzc2MjI5NTU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDU1MjU5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk1UNzkxNSBhbmQgTVQ3OTk2OiBEcml2ZXIgQXJjaGl0ZWN0dXJlIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgTVQ3OTE1IOKAkyBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0J3MgZGVzaWduZWQgYXMgYSBQQ0ktYmFzZWQgcGxhdGZvcm0gZHJpdmVyLiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIHVzdWFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEJ1dCB0aGF0IGdldHMgbWUgdGhpbmtpbmcgYWJvdXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gV2hhdCBhYm91dCBpdHMgc2libGluZywgdGhlIE1UNzk5Nj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGFuZCBjbGFyaWZ5LCBiYXNlZCBvbiBleHBlcmllbmNlLCB3aGVyZSBkb2VzIHRoYXQgZml0IGluIHRoZSBzY2hlbWUgb2YgdGhpbmdzPyBJcyBpdCBhIHNpbWlsYXIgUENJLWJhc2VkIGRlc2lnbj8gT3IgZG9lcyBpdCBsZXZlcmFnZSBhIGRpZmZlcmVudCBidXMsIHBlcmhhcHMgZGVzaWduZWQgYXMgYSBTb0Mgd2l0aCBhIGRpZmZlcmVudCBpbnRlcm5hbCBhcmNoaXRlY3R1cmU/IElzIGl0IGEgZnVsbHkgaW50ZWdyYXRlZCBkZXNpZ24gb3IgbW9yZSBtb2R1bGFyPyBDb25zaWRlcmluZyBib3RoIGFyZSBsaWtlbHkgTWVkaWFUZWsgc29sdXRpb25zLCBpdCBpcyBsaWtlbHkgdGhleSBoYXZlIGNlcnRhaW4gc2ltaWxhcml0aWVzLiBJJ3ZlIGdvdCB0byBxdWlja2x5IHBpZWNlIHRvZ2V0aGVyIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIE1UNzk5NiB0byBzZWUgaG93IGl0IGNvbXBhcmVzLiBUaGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduIGFuZCBkcml2ZXIgaW50ZXJhY3Rpb25zIGFyZSBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gVGltZSB0byBwdWxsIHVwIHNvbWUgZGF0YXNoZWV0cyBhbmQgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkyNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NDMuMDgxNzU3NjQzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzc2MjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9OTAwPXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc5OTZfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTkwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6OTA2Om1vZHVsZV9pbml0KG10Nzk5Nl9pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtOTA3LW1vZHVsZV9leGl0KG10Nzk5Nl9leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NDMuMTI5NTI1NTc4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MDQxNzU2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVbmtub3duOiBtdDc5OTYqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBcIm10Nzk5NlwiLi4uIHRoYXQncyBhbiBpZGVudGlmaWVyLCBhbmQgSSBkb24ndCBpbW1lZGlhdGVseSByZWNvZ25pemUgaXQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyeSBhbmQgY2F0ZWdvcml6ZSBpdC4gSXMgaXQgYSBjb21wb25lbnQgZGVzaWduYXRpb24/IEEgc29mdHdhcmUgbGlicmFyeSB2ZXJzaW9uPyBBIHByb2plY3QgY29kZT8gT3IgbWF5YmUgZXZlbiBhIHNwZWNpZmljIHN0YW5kYXJkPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggbXkgbWVudGFsIHRheG9ub215IG9mIHJlbGF0ZWQgcG9zc2liaWxpdGllcy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXQncyBsaWtlbHkgc29tZXRoaW5nIHRlY2huaWNhbCwgcHJvYmFibHkgcmVsYXRlZCB0byBoYXJkd2FyZSBvciBzb2Z0d2FyZSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggdGhlIGNvbnRleHQgYmVmb3JlIEkgY2FuIGV2ZW4gYmVnaW4gdG8gZ3Vlc3MuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBicm9hZGVzdCBwb3NzaWJsZSBzZWFyY2gsIHNlZSBpZiB0aGVyZSdzIGFueSBpbW1lZGlhdGUgZG9jdW1lbnRhdGlvbiBvciBwdWJsaWMgbWVudGlvbnMuIElmIHRoYXQgZG9lc24ndCB5aWVsZCBhbnl0aGluZyBwcm9taXNpbmcsIEknbGwgbmVlZCB0byBkcmlsbCBkb3duLCBjb25zaWRlciByZWxhdGVkIHRlY2hub2xvZ2llcyBvciBvcmdhbml6YXRpb25zLCBhbmQgYXBwcm9hY2ggaXQgc3lzdGVtYXRpY2FsbHkuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBwaW5wb2ludCB0aGUgZG9tYWluIGFuZCB0aGVuIGRlbHZlIGludG8gYW55IHNwZWNpZmljYXRpb25zIG9yIGluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gdGhpcyBpZGVudGlmaWVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM4NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjQ3LjAzMzcwNDE3NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODcwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODcwOlxcdFxcdGlmIChyZXQpXFxuIDg3MTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA4NzI6XFx0XFxuIDg3MzpcXHRcXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZtZGV2LVxcdTAwM2VpcnFfdGFza2xldCwgbXQ3OTk2X2lycV90YXNrbGV0KTtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XFxuIDg3NjpcXHRcXG4gODc3OlxcdFxcdHJldHVybiBkZXY7XFxuIDg3ODpcXHRcXG4gODc5OlxcdGVycm9yOlxcbiA4ODA6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gODgxOlxcdFxcbiA4ODI6XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gODgzOlxcdH1cXG4gODg0OlxcdFxcbiA4ODU6XFx0c3RhdGljIGludCBfX2luaXQgbXQ3OTk2X2luaXQodm9pZClcXG4gODg2OlxcdHtcXG4gODg3OlxcdFxcdGludCByZXQ7XFxuIDg4ODpcXHRcXG4gODg5OlxcdFxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10Nzk5Nl9oaWZfZHJpdmVyKTtcXG4gODkwOlxcdFxcdGlmIChyZXQpXFxuIDg5MTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4OTI6XFx0XFxuIDg5MzpcXHRcXHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc5OTZfcGNpX2RyaXZlcik7XFxuIDg5NDpcXHRcXHRpZiAocmV0KVxcbiA4OTU6XFx0XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc5OTZfaGlmX2RyaXZlcik7XFxuIDg5NjpcXHRcXG4gODk3OlxcdFxcdHJldHVybiByZXQ7XFxuIDg5ODpcXHR9XFxuIDg5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NDcuMDMzODAwMDU0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDE5MzIxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUENJIERyaXZlciBEaXNjb3ZlcnkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG10Nzk5NmAg4oCTIGxvb2tzIGxpa2UgaXQncyBhIFBDSSBkcml2ZXIuIEdvdCBpdC4gTm93LCBob2xkIG9uLCBJIHNlZW0gdG8gcmVtZW1iZXIgc2VlaW5nIGBtdDc2X3Jlc2V0X2RldmljZWAgc29tZXdoZXJlIGJlZm9yZS4uLiBBaCwgcmlnaHQhIEl0J3MgYnVyaWVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgdG8ga25vdyB0aGUgZnVsbCBwaWN0dXJlLiBNeSBuZXh0IHRob3VnaHQgaXM6IHdobydzIGNhbGxpbmcgaXQ/IElzIGBtdDc2X3Jlc2V0X2RldmljZWAgc3BlY2lmaWMgdG8gdGhpcyBgbXQ3OTk2YCBkcml2ZXIsIG9yIGlzIGl0IGEgc2hhcmVkIGZ1bmN0aW9uIHVzZWQgYnkgb3RoZXIgTWVkaWF0ZWsgZHJpdmVycyBhcyB3ZWxsPyBUaW1lIHRvIGNoZWNrIHRoZSBjcm9zcy1yZWZlcmVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA1NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NTIuMTc1NzM1MDkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDI3NTg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXFx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcXHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVxcdCAqIGxlYXZlcyB3Y2lkLVxcdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXFx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMTo1Mi4yMjYwMTY2NjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE1MzEwOTUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIENhbGxlcnMgYW5kIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCBzZWVtcyB0aGlzIGZ1bmN0aW9uIGlzICpvbmx5KiBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLiBCb3RoIGFyZSBQQ0kgZHJpdmVycywgd2hpY2ggaXMgaW1wb3J0YW50LiBJJ20gZG91YmxlLWNoZWNraW5nLCBidXQgbm8sIHRoZXJlIGFyZSBubyBVU0Igb3IgU0RJTyBkcml2ZXJzIHVzaW5nIHRoaXMgZnVuY3Rpb24uIEp1c3QgUENJLlxuXG5XYWl0LCB0aGUgYG10NzkxNWAgZHJpdmVyIGFsc28gc2VlbXMgdG8gaGF2ZSBhIHBsYXRmb3JtIGRyaXZlciAoYG10Nzk4eF93bWFjX2RyaXZlcmApIGZvciBNVDc5OHggU29Dcy4gQXJlIHRoZXNlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBQcm9iYWJseSBub3QuIFRoZXNlIGFyZSBNZWRpYVRlay1zcGVjaWZpYyBQQ0llL3BsYXRmb3JtIGRyaXZlcnMuIFVubGVzcyB0aGVyZSdzIHNvbWUgTWVkaWFUZWsgV2ktRmkgZW11bGF0aW9uIGluIFFFTVUgKHdoaWNoIHRoZXJlIGlzbid0KSwgdGhlc2UgZHJpdmVycyBzaW1wbHkgd29uJ3QgcHJvYmUuXG5cbk5vdywgcmVnYXJkaW5nIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIG9mZmVyIGEgd2F5IHRvIGZ1enogUENJIGRyaXZlcnMgd2l0aCBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gTm8sIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyBQQ0kgZnV6emVyIHRoYXQgY2FuIGZ1bGx5IGVtdWxhdGUgUENJIGRldmljZXMuIEl0IGNhbiBmdXp6IFBDSSBjb25maWcgc3BhY2UsIHdoaWNoIGlzIHNvbWV0aGluZywgYnV0IGl0IGNhbid0IGVtdWxhdGUgTU1JTyByZWdpc3RlcnMgb3IgRE1BIHRvIG1ha2UgdGhlIGRyaXZlciBhY3R1YWxseSBpbml0aWFsaXplIGFuZCByZWFjaCBzb21ldGhpbmcgbGlrZSBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YC4gSSByZWNhbGwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgYnV0IGl0J3MgdmVyeSBsaW1pdGVkLiBJdCBjYW4gbGlrZWx5IHRyaWdnZXIgYHByb2JlYCBmdW5jdGlvbnMsIGJ1dCB3aWxsIHByb2JhYmx5IGZhaWwgZWFybHkgYmVjYXVzZSB0aGUgZHJpdmVyIGV4cGVjdHMgc3BlY2lmaWMgaGFyZHdhcmUgcmVzcG9uc2VzLiBUaGV5J2xsIGhhdmUgXCJtYWdpYyBudW1iZXJzXCIgaXQgbmVlZHMgdG8gcmVhZCBmcm9tIHJlZ2lzdGVycywgYW5kIHdpdGhvdXQgZW11bGF0aW9uIHRoYXQncyBpbXBvc3NpYmxlLlxuXG5Pa2F5LCBsZXQncyBzZWUgaWYgYG10NzkxNV9tYWNfZnVsbF9yZXNldGAgaXMgZXZlbiByZWFjaGFibGUuIEl0J3MgY2FsbGVkIGZyb20gYG10NzkxNV9tYWNfcmVzZXRfd29ya2AuIFRoaXMgd29yayBpcyBzY2hlZHVsZWQgd2hlbiB0aGUgZGV2aWNlIG5lZWRzIGEgcmVzZXQsIGxpa2UgYWZ0ZXIgYSBmaXJtd2FyZSBjcmFzaCBvciBhIHdhdGNoZG9nIHRpbWVvdXQuIFNvLCB0byBoaXQgdGhpcywgdGhlIGRldmljZSBoYXMgdG8gYmUgKmZ1bGx5KiBpbml0aWFsaXplZCBhbmQgcnVubmluZy4gQ2FuIHN5emthbGxlciBnZXQgYG10NzkxNWAgdG8gaW5pdGlhbGl6ZT8gVGltZSB0byBsb29rIGF0IGBtdDc5MTVfbW1pb19wcm9iZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjY4LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjAxLjM3OTEyOTA1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkxNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkxNzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqbXQ3OTE1X21taW9fcHJvYmUoc3RydWN0IGRldmljZSAqcGRldixcXG4gOTE4OlxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCBfX2lvbWVtICptZW1fYmFzZSwgdTMyIGRldmljZV9pZClcXG4gOTE5OlxcdHtcXG4gOTIwOlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XFxuIDkyMTpcXHRcXHRcXHQvKiB0eHdpX3NpemUgPSB0eGQgc2l6ZSArIHR4cCBzaXplICovXFxuIDkyMjpcXHRcXHRcXHQudHh3aV9zaXplID0gTVRfVFhEX1NJWkUgKyBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjX2Z3X3R4cCksXFxuIDkyMzpcXHRcXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1RYV0lfTk9fRlJFRSB8IE1UX0RSVl9IV19NR01UX1RYUSB8XFxuIDkyNDpcXHRcXHRcXHRcXHQgICAgIE1UX0RSVl9BTVNEVV9PRkZMT0FEIHxcXG4gOTI1OlxcdFxcdFxcdFxcdCAgICAgTVRfRFJWX0hXX1BTX0JVRkZFUklORyxcXG4gOTI2OlxcdFxcdFxcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcXG4gOTI3OlxcdFxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxcbiA5Mjg6XFx0XFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuIDkyOTpcXHRcXHRcXHQudG9rZW5fc2l6ZSA9IE1UNzkxNV9UT0tFTl9TSVpFLFxcbiA5MzA6XFx0XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTE1X3R4X3ByZXBhcmVfc2tiLFxcbiA5MzE6XFx0XFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZfY29ubmFjX3R4X2NvbXBsZXRlX3NrYixcXG4gOTMyOlxcdFxcdFxcdC5yeF9za2IgPSBtdDc5MTVfcXVldWVfcnhfc2tiLFxcbiA5MzM6XFx0XFx0XFx0LnJ4X2NoZWNrID0gbXQ3OTE1X3J4X2NoZWNrLFxcbiA5MzQ6XFx0XFx0XFx0LnJ4X3BvbGxfY29tcGxldGUgPSBtdDc5MTVfcnhfcG9sbF9jb21wbGV0ZSxcXG4gOTM1OlxcdFxcdFxcdC5zdGFfYWRkID0gbXQ3OTE1X21hY19zdGFfYWRkLFxcbiA5MzY6XFx0XFx0XFx0LnN0YV9ldmVudCA9IG10NzkxNV9tYWNfc3RhX2V2ZW50LFxcbiA5Mzc6XFx0XFx0XFx0LnN0YV9yZW1vdmUgPSBtdDc5MTVfbWFjX3N0YV9yZW1vdmUsXFxuIDkzODpcXHRcXHRcXHQudXBkYXRlX3N1cnZleSA9IG10NzkxNV91cGRhdGVfY2hhbm5lbCxcXG4gOTM5OlxcdFxcdFxcdC5zZXRfY2hhbm5lbCA9IG10NzkxNV9zZXRfY2hhbm5lbCxcXG4gOTQwOlxcdFxcdH07XFxuIDk0MTpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2O1xcbiA5NDI6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbiA5NDM6XFx0XFx0aW50IHJldDtcXG4gOTQ0OlxcdFxcbiA5NDU6XFx0XFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKHBkZXYsIHNpemVvZigqZGV2KSwgXFx1MDAyNm10NzkxNV9vcHMsIFxcdTAwMjZkcnZfb3BzKTtcXG4gOTQ2OlxcdFxcdGlmICghbWRldilcXG4gOTQ3OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiA5NDg6XFx0XFxuIDk0OTpcXHRcXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xcbiA5NTA6XFx0XFxuIDk1MTpcXHRcXHRyZXQgPSBtdDc5MTVfbW1pb19pbml0KG1kZXYsIG1lbV9iYXNlLCBkZXZpY2VfaWQpO1xcbiA5NTI6XFx0XFx0aWYgKHJldClcXG4gOTUzOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDk1NDpcXHRcXG4gOTU1OlxcdFxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNm1kZXYtXFx1MDAzZWlycV90YXNrbGV0LCBtdDc5MTVfaXJxX3Rhc2tsZXQpO1xcbiA5NTY6XFx0XFxuIDk1NzpcXHRcXHRyZXR1cm4gZGV2O1xcbiA5NTg6XFx0XFxuIDk1OTpcXHRlcnJvcjpcXG4gOTYwOlxcdFxcdG10NzZfZnJlZV9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDk2MTpcXHRcXG4gOTYyOlxcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIDk2MzpcXHR9XFxuIDk2NDpcXHRcXG4gOTY1OlxcdHN0YXRpYyBpbnQgX19pbml0IG10NzkxNV9pbml0KHZvaWQpXFxuIDk2NjpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjAxLjM3OTI3MDI5MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTU5MDI4NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYG10NzkxNV9tbWlvX2luaXRgIGZ1bmN0aW9uLCB0aGlua2luZyBsaWtlIEkgd291bGQgYXMgYW4gZXhwZXJ0IGluIGVtYmVkZGVkIHN5c3RlbXMgYW5kIGRyaXZlciBkZXZlbG9wbWVudDpcblxuKipJbml0aWFsIERldmljZSBTZXR1cDogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG10NzkxNV9tbWlvX2luaXRgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoaXMgaXMgdGhlIGluaXRpYWwgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBkZXZpY2UuIFRoZSBcIm1taW9cIiBwYXJ0IHN0cm9uZ2x5IHN1Z2dlc3RzIE1lbW9yeS1NYXBwZWQgSS9PLCBtZWFuaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBkaXJlY3QgcmVnaXN0ZXIgYWNjZXNzLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCdzIHRoZSBzY29wZSBvZiB0aGlzIGluaXRpYWxpemF0aW9uPyBEb2VzIGl0IHByaW1hcmlseSBpbnZvbHZlIHNldHRpbmcgdXAgYmFzaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHJlZ2lzdGVyIHdyaXRlcywgb3IgZG9lcyBpdCBhbHNvIGRlbHZlIGludG8gZmlybXdhcmUgbG9hZGluZyBvciBlYXJseSBoYXJkd2FyZSBicmluZy11cCB0aGF0IHJlcXVpcmVzIG1vcmUgc29waGlzdGljYXRlZCBpbnRlcmFjdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBpbnRlcnBsYXkgb2Ygc29mdHdhcmUgY29uZmlndXJhdGlvbiBhbmQgdGhlIGhhcmR3YXJlIGl0c2VsZi4gTGV0J3Mgc2VlIHdoYXQgaXQncyByZWFsbHkgdXAgdG8sIGJlY2F1c2UgdGhlIGFuc3dlcnMgdG8gdGhvc2UgcXVlc3Rpb25zIHdpbGwgY2hhbmdlIGhvdyBJIGxvb2sgYXQgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTc0LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjowNS41MzgzMDEzMDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Njk5NzA5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X21taW9faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy03MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjc0MDpzdGF0aWMgaW50IG10NzkxNV9tbWlvX2luaXQoc3RydWN0IG10NzZfZGV2ICptZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy03NDEtXFx0XFx0XFx0ICAgIHZvaWQgX19pb21lbSAqbWVtX2Jhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTE3PXN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTk1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6OTUxOlxcdHJldCA9IG10NzkxNV9tbWlvX2luaXQobWRldiwgbWVtX2Jhc2UsIGRldmljZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTk1Mi1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjowNy4wMDgyNzkzNTFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxMzY4Nzk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSB3ZSBnby4uLlxuXG4qKkluaXRpYWwgRXhhbWluYXRpb24gb2YgYG10NzkxNV9tbWlvX2luaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkxNV9tbWlvX2luaXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBNZWRpYXRlayBkcml2ZXIgaW5pdGlhbGl6ZXMgdGhlIG1lbW9yeS1tYXBwZWQgSS9PIGZvciB0aGUgTVQ3OTE1IGNoaXBzZXQuIEdpdmVuIG15IGJhY2tncm91bmQsIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgY29uZmlndXJpbmcgdGhlIGJhc2UgYWRkcmVzc2VzIGZvciB2YXJpb3VzIHJlZ2lzdGVycywgcG9zc2libHkgc2V0dGluZyB1cCBETUEsIGFuZCBsaWtlbHkgc29tZSBpbml0aWFsIHBvd2VyLXVwIG9yIHJlc2V0IHNlcXVlbmNlcy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGhlcmU7IHRoZSBvcmRlciBpcyBvZnRlbiBjcml0aWNhbC4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGhhbmRsZSBhbnkgcG90ZW50aWFsIGhhcmR3YXJlIHF1aXJrcyBvciBlcnJhdGEg4oCTIGhvcGVmdWxseSwgdGhleSd2ZSBkb2N1bWVudGVkIHRob3NlIHdlbGwgd2l0aGluIHRoZSBjb2RlLiBBbHNvLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGV5IGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zIGlmIHRoYXQncyBhIGZhY3Rvci4gTGV0J3Mgc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTU4MjQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoxMy40MjE5NzEyMTRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NDA6XFx0c3RhdGljIGludCBtdDc5MTVfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG4gNzQxOlxcdFxcdFxcdFxcdCAgICB2b2lkIF9faW9tZW0gKm1lbV9iYXNlLFxcbiA3NDI6XFx0XFx0XFx0XFx0ICAgIHUzMiBkZXZpY2VfaWQpXFxuIDc0MzpcXHR7XFxuIDc0NDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9idXNfb3BzICpidXNfb3BzO1xcbiA3NDU6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcXG4gNzQ2OlxcdFxcbiA3NDc6XFx0XFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MTVfZGV2LCBtdDc2KTtcXG4gNzQ4OlxcdFxcdG10NzZfbW1pb19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIG1lbV9iYXNlKTtcXG4gNzQ5OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4gNzUwOlxcdFxcbiA3NTE6XFx0XFx0c3dpdGNoIChkZXZpY2VfaWQpIHtcXG4gNzUyOlxcdFxcdGNhc2UgMHg3OTE1OlxcbiA3NTM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcucmVnX3JldiA9IG10NzkxNV9yZWc7XFxuIDc1NDpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZy5vZmZzX3JldiA9IG10NzkxNV9vZmZzO1xcbiA3NTU6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcubWFwID0gbXQ3OTE1X3JlZ19tYXA7XFxuIDc1NjpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZy5tYXBfc2l6ZSA9IEFSUkFZX1NJWkUobXQ3OTE1X3JlZ19tYXApO1xcbiA3NTc6XFx0XFx0XFx0YnJlYWs7XFxuIDc1ODpcXHRcXHRjYXNlIDB4NzkwNjpcXG4gNzU5OlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLnJlZ19yZXYgPSBtdDc5MTZfcmVnO1xcbiA3NjA6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcXG4gNzYxOlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLm1hcCA9IG10NzkxNl9yZWdfbWFwO1xcbiA3NjI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcubWFwX3NpemUgPSBBUlJBWV9TSVpFKG10NzkxNl9yZWdfbWFwKTtcXG4gNzYzOlxcdFxcdFxcdGJyZWFrO1xcbiA3NjQ6XFx0XFx0Y2FzZSAweDc5ODE6XFxuIDc2NTpcXHRcXHRjYXNlIDB4Nzk4NjpcXG4gNzY2OlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLnJlZ19yZXYgPSBtdDc5ODZfcmVnO1xcbiA3Njc6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcXG4gNzY4OlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLm1hcCA9IG10Nzk4Nl9yZWdfbWFwO1xcbiA3Njk6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcubWFwX3NpemUgPSBBUlJBWV9TSVpFKG10Nzk4Nl9yZWdfbWFwKTtcXG4gNzcwOlxcdFxcdFxcdGJyZWFrO1xcbiA3NzE6XFx0XFx0ZGVmYXVsdDpcXG4gNzcyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA3NzM6XFx0XFx0fVxcbiA3NzQ6XFx0XFxuIDc3NTpcXHRcXHRkZXYtXFx1MDAzZWJ1c19vcHMgPSBkZXYtXFx1MDAzZW10NzYuYnVzO1xcbiA3NzY6XFx0XFx0YnVzX29wcyA9IGRldm1fa21lbWR1cChkZXYtXFx1MDAzZW10NzYuZGV2LCBkZXYtXFx1MDAzZWJ1c19vcHMsIHNpemVvZigqYnVzX29wcyksXFxuIDc3NzpcXHRcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuIDc3ODpcXHRcXHRpZiAoIWJ1c19vcHMpXFxuIDc3OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzgwOlxcdFxcbiA3ODE6XFx0XFx0YnVzX29wcy1cXHUwMDNlcnIgPSBtdDc5MTVfcnI7XFxuIDc4MjpcXHRcXHRidXNfb3BzLVxcdTAwM2V3ciA9IG10NzkxNV93cjtcXG4gNzgzOlxcdFxcdGJ1c19vcHMtXFx1MDAzZXJtdyA9IG10NzkxNV9ybXc7XFxuIDc4NDpcXHRcXHRkZXYtXFx1MDAzZW10NzYuYnVzID0gYnVzX29wcztcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0bWRldi1cXHUwMDNlcmV2ID0gKGRldmljZV9pZCBcXHUwMDNjXFx1MDAzYyAxNikgfFxcbiA3ODc6XFx0XFx0XFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcXHUwMDI2IDB4ZmYpO1xcbiA3ODg6XFx0XFx0ZGV2X2RiZyhtZGV2LVxcdTAwM2VkZXYsIFxcXCJBU0lDIHJldmlzaW9uOiAlMDR4XFxcXG5cXFwiLCBtZGV2LVxcdTAwM2VyZXYpO1xcbiA3ODk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjEzLjQyMjA4MjMzNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzU5OTI1NDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhpcyBNVDc2IERyaXZlciBQcm9iZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTVQ3NiBkcml2ZXIgYW5kIGhvdyBpdCdzIGJlaW5nIGluaXRpYWxpemVkLiBUaGUgY29kZSBncmFicyB0aGUgaGFyZHdhcmUgcmV2aXNpb24gKGBNVF9IV19SRVZgKSB1c2luZyBgbXQ3Nl9ycmAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIHJpZ2h0PyBCdXQgdGhlbiBJIGhpdCBhIHBvdGVudGlhbCBzbmFnIOKAkyBpZiB0aGlzIGlzIGEgUENJIGRldmljZSwgUUVNVSdzIG5vdCBmdWxseSBlbXVsYXRpbmcgaXQsIHNvIGl0J3MgcHJvYmFibHkgbm90IGJlaW5nIHByb2JlZCB1bmxlc3Mgd2UncmUgZmFraW5nIGl0IHNvbWVob3cuIFN5emthbGxlcidzIGdvdCB0aGF0IGBzeXpfcGNpX2RldmljZV9hZGRgIGZ1bmN0aW9uLCB3aGljaCBJICpjb3VsZCogdXNlLCBidXQgcmVhZGluZyBmcm9tIE1NSU8gd291bGQgbGlrZWx5IGp1c3QgcmV0dXJuIGdhcmJhZ2UsIGxpa2UgYDB4ZmZmZmZmZmZgLCB3aGljaCB3b3VsZCBwcm9iYWJseSBjcmFzaCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuXG5cbldhaXQgYSBzZWNvbmQsIGxldCBtZSB6b29tIG91dC4gSSByZWNhbGwgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBpbiBgbWFjODAyMTEuY2AsIHBhcnQgb2YgdGhhdCBjb3JlIGBtdDc2YCBkcml2ZXIuIElzIHRoYXQgZnVuY3Rpb24gZXZlbiB1c2VkIGJ5IHRoZSBVU0IgcGFydHM/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IFVTQiBkcml2ZXJzIHRoYXQgdXNlIGl0LiBNYXliZSBzb21ldGhpbmcgbGlrZSBgbXQ3NngwMl9tYWNfcmVzZXRfd29ya2AuLi4gSSdsbCBjaGVjayB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcwMDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoxOC43ODIwMTA5NjVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjQ2MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlxcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXFx0ICogbGVhdmVzIHdjaWQtXFx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjE4LjgzNTI2MzUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzOTU4MzQ4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgQ2FsbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZfcmVzZXRfZGV2aWNlYCBmdW5jdGlvbiBjYWxsLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IG9ubHkgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGFyZSBjYWxsaW5nIGl0LiBCb3RoIG9mIHRoZXNlIGFyZSBQQ0kgZGV2aWNlcywgd2hpY2ggbmFycm93cyBkb3duIHRoZSBzY29wZSBxdWl0ZSBhIGJpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIHBhdGggdG8gdGhpcyBmdW5jdGlvbj9cIiBObywgdGhlcmUgaXNuJ3QsIHNvIHRoYXTigJlzIGl0OiBpdCdzIGV4Y2x1c2l2ZSB0byB0aGVzZSB0d28gUENJIGRldmljZXMuXG5cbk5vdywgdGhlIG5hdHVyYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgaXNuJ3QgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBiZWNhdXNlIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIFBDSSBkZXZpY2VzLiBJIGtub3cgc3l6a2FsbGVyIGhhcyB0aGF0IGBzeXpfcGNpX2RldmljZV9hZGRgIHBzZXVkby1zeXNjYWxsLCBidXQgcmVhbGlzdGljYWxseSwgdGhhdCdzIGluY3JlZGlibHkgbGltaXRlZC4gSXQgdXN1YWxseSBmYWxscyBhcGFydCB3aGVuIGRlYWxpbmcgd2l0aCBXaS1GaSBkcml2ZXJzIGJlY2F1c2Ugb2YgdGhlIGNvbXBsZXhpdHkgb2YgZmlybXdhcmUgbG9hZGluZyBhbmQgYWxsIHRob3NlIHRyaWNreSBNTUlPIGludGVyYWN0aW9ucyB0aGV5IGRlbWFuZC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gaG9sZCBvbi4uLiBcInN5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyFcIiBBbmQgdGhlIGNvbW1pdCBtZXNzYWdlIGNvbmZpcm1zIGl0IOKAkyBcIkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcIi4gVGhpcyBtZWFucyBzeXprYWxsZXIgKmRpZCogc29tZWhvdyBnZXQgdG8gYG10NzZfcmVzZXRfZGV2aWNlYC4gSG93PyBIb3cgZGlkIGl0IGdldCBwYXN0IGFsbCB0aG9zZSBsaW1pdGF0aW9ucz8gSSdtIG1pc3Npbmcgc29tZXRoaW5nLiBJIG5lZWQgdG8gZmluZCB0aGUgYWNjZXNzIHJvdXRlLlxuXG5Pa2F5LCBteSBuZXh0IHN0ZXAgaGFzIHRvIGJlIHRvIHRoaW5rIG91dHNpZGUgdGhlIFBDSSBib3guIENvdWxkIGVpdGhlciBgbXQ3OTE1YCBvciBgbXQ3OTk2YCBiZSBwcm9iZWQgdmlhIHNvbWV0aGluZyBlbHNlPyBVU0I/IFNESU8/IFRob3NlIGFyZSBwb3NzaWJpbGl0aWVzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgb3RoZXIgYnVzIHR5cGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQyNCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoyNS4yMzExMDEwNTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzMwNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV91c2JfZHJpdmVyfG1vZHVsZV9zZGlvX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz0yNDY9c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBtdDc2NjNzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0yNTItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MjUzOm1vZHVsZV9zZGlvX2RyaXZlcihtdDc2NjNzX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTI1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTI2NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NjYzdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNzctfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyNzg6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NjYzdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM1NS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjM1Njptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDBfZHJpdmVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jPTEzNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngydV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNDktfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNTA6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngydV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz0zMjc9c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBtdDc5MjFzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMzMtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MzM0Om1vZHVsZV9zZGlvX2RyaXZlcihtdDc5MjFzX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMzNS1NT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoyNS4yODM0MzU2MTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NzEyMzM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBGdW5jdGlvbioqXG5cbkhtbSwgc28gYG10NzZfcmVzZXRfZGV2aWNlYC4uLiB0aGF0J3MgYSBmdW5jdGlvbiBJJ3ZlIHNlZW4gYmVmb3JlLiBSaWdodCwgaXQncyBkZWZpbmVkIGluIGBtYWM4MDIxMS5jYC4gQnV0IG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGlzIGl0ICphY3R1YWxseSogdXNlZCB3aXRoaW4gdGhlIGBtdDc2YCBkcml2ZXIgZnJhbWV3b3JrPyBJcyBpdCBzcGVjaWZpYyB0byBjZXJ0YWluIE1lZGlhdGVrIGNoaXBzZXRzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGVtcGxveWVkIGJ5IHRoZSBgbXQ3OTIxYCBmYW1pbHksIHRoZSBgbXQ3OTI1YCBzZXJpZXMsIG9yIHBvdGVudGlhbGx5IGJvdGguIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZmxvdyBpcyBjcml0aWNhbCBoZXJlLiBLbm93aW5nICp3aG8qIGlzIGNhbGxpbmcgdGhpcyByZXNldCBmdW5jdGlvbiB3aWxsIGhlbHAgbWUgaW1tZW5zZWx5IGluIHRyb3VibGVzaG9vdGluZyB3aGF0ZXZlciBpc3N1ZSBpcyBjdXJyZW50bHkgb24gbXkgcGxhdGUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHVzYWdlLiBXaGVyZSBhcmUgdGhlc2UgZHJpdmVycyBjYWxsaW5nIHRoaXMgZnJvbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDEyNSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjI5LjU4MDU2MTYzNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3Njk5NjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoyOS42MjczMzc2MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY5NTMyNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBtdDc5MjUqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyBuZXcsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgbGVhbnMgdG93YXJkcyBleHBsb3JpbmcgdGhlIGBtdDc5MjVgLiAqV2h5PyogV2VsbCwgZ2l2ZW4gdGhlIGNvbnRleHQgKHdoaWNoIEknbSBhc3N1bWluZywgYmFzZWQgb24gbXkgZmllbGQsIGludm9sdmVzIGVpdGhlciBuZXR3b3JraW5nLCBlbWJlZGRlZCBzeXN0ZW1zLCBvciBsaWtlbHkgYm90aCksIGl0J3MgcHJvYmFibHkgcmVsZXZhbnQuIEl0J3MgYW4gaW50ZXJlc3RpbmcgY2hpcCBhbmQgSSB3b25kZXIgd2hhdCBzcGVjaWZpYyBhc3BlY3Qgb2YgaXQgaXMgYmVpbmcgY29uc2lkZXJlZC4gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IEFyZSB3ZSBsb29raW5nIGF0IGNhcGFiaWxpdGllcywgcGVyZm9ybWFuY2UgYmVuY2htYXJrcywgcG90ZW50aWFsIGludGVncmF0aW9uIHdpdGggYSBzcGVjaWZpYyBPUyBvciBhcmNoaXRlY3R1cmUsIG9yIHBlcmhhcHMgY29tcGFyaW5nIGl0IGFnYWluc3Qgb3RoZXIgc29sdXRpb25zPyBBcmUgd2UgY29uc2lkZXJpbmcgdGhlIGNvc3QsIHBvd2VyIGNvbnN1bXB0aW9uIG9yIHRoZSBhdmFpbGFiaWxpdHkgb2YgZG9jdW1lbnRhdGlvbj8gSSBuZWVkIG1vcmUgZGF0YSB0byBmb3JtdWxhdGUgYSBwcm9wZXIgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0MjksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjozMy41OTY4NzI1MDJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjM3NTI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzI6MzMuNjQxMTE2ODg3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzIzNDQ1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipDb25zaWRlcmluZyB0aGUgTVQ3NjE1KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLi4uIHdoYXQgYWJvdXQgdGhlIGBtdDc2MTVgPyBJdCBrZWVwcyBwb3BwaW5nIHVwIGluIG15IHJlc2VhcmNoLiBJIG5lZWQgdG8gZ2l2ZSB0aGlzIGNoaXAgc29tZSBzZXJpb3VzIGNvbnNpZGVyYXRpb24uIEl0IGhhcyBwb3RlbnRpYWwsIEkga25vdywgYnV0IHdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBJcyBpdCB0aGUgYmVzdCBzb2x1dGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJvYmxlbSBJJ20gdHJ5aW5nIHRvIHNvbHZlPyBPciBpcyB0aGVyZSBzb21ldGhpbmcgZWxzZSBtb3JlIGFwcHJvcHJpYXRlPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3BlY3MgYWdhaW4sIGNvbXBhcmUgaXQgYWdhaW5zdCBteSBiZW5jaG1hcmtzLCBhbmQgYXNzZXNzIGl0cyBwcm9zIGFuZCBjb25zIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgdXNlIGNhc2UuIEknbSBjb25zaWRlcmluZyBpdCwgb2J2aW91c2x5LCBidXQgSSdtIG5vdCByZWFkeSB0byBmdWxseSBjb21taXQgdG8gaXQganVzdCB5ZXQuIEkgbmVlZCB0byBtYWtlIGEgc29saWQganVkZ21lbnQgYmFzZWQgb24gaGFyZCBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY2NiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjM3LjExMzQ2NDE5N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5Njg3MjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjozNy4xNTg0Mzk5MTFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MjcyMTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgYXMgdGhvdWdoIEknbSB0aGUgb25lIGhhdmluZyB0aGVtOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBtdDc2eDAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgc3BlY2lmaWMgd2lyZWxlc3MgaXNzdWUgYW5kIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIGRyaXZlcnMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdHJvdWJsZXNob290aW5nLiBJJ3ZlIHJ1bGVkIG91dCBhIGZldyB0aGluZ3MsIGJ1dCBJIGhhdmVuJ3Qgc3BlY2lmaWNhbGx5IGFkZHJlc3NlZCB0aGUgKm10NzZ4MCogZHJpdmVyLiBJdCdzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCBJIGhhdmVuJ3QgcmVhbGx5IHB1dCBpdCB1bmRlciB0aGUgbWljcm9zY29wZSB5ZXQuIElzIGl0IHRoZSByaWdodCBkcml2ZXIgZm9yIHRoZSBoYXJkd2FyZSBpbiBxdWVzdGlvbj8gSXMgdGhlcmUgYSBrbm93biBpc3N1ZSB3aXRoIHRoZSBwYXJ0aWN1bGFyIHZlcnNpb24gaW4gdXNlPyBIYXZlIEkgY2hlY2tlZCBmb3IgYW55IGVycmF0YSBvciBjb21wYXRpYmlsaXR5IG5vdGVzIHJlbGF0ZWQgdG8gdGhpcyBjaGlwIGFuZCB0aGUgdGFyZ2V0ZWQga2VybmVsIHZlcnNpb24/IEkgbmVlZCB0byBsb29rIGludG8gaXRzIHN0YXR1cy4gTWF5YmUgYSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBjb3VsZCBiZSBvZmYuIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGxvb2tpbmcgYXQgbG9ncyB0byBzZWUgaWYgdGhhdCdzIHRoZSBwb2ludCBvZiBmYWlsdXJlLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtdDc2eDBgIGRyaXZlciBhbmQgc2VlIHdoYXQgaXQncyBkb2luZywgb3Igbm90IGRvaW5nLCBhbmQgaWYgaXQncyB0aGUgcm9vdCBvZiBteSBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkwMiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjQxLjEwMTE2MzE5MVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MDMyNjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjo0MS4xNDU1NzQ2MjZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5MjEwMjQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgdGhlIE1UNzZ4MioqXG5cbkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhpcyB3aXJlbGVzcyBzaXR1YXRpb24uLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGEgc3BlY2lmaWMgY2hpcHNldCBmb3IgdGhlIGFjY2VzcyBwb2ludC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wZWQgdG8gdGhlIHBvc3NpYmlsaXRpZXMgb2YgYG10NzZ4MmAuIEl0J3MgYSBzb2xpZCwga25vd24gcXVhbnRpdHkuIFRoZSBgbXQ3NngyYCBzZXJpZXMgaGFzIGJlZW4gYSB3b3JraG9yc2UgZm9yIGEgd2hpbGUuIEl0J3MgZ290IGRlY2VudCBwZXJmb3JtYW5jZSwgZ2VuZXJhbGx5IGdvb2QgZHJpdmVyIHN1cHBvcnQsIGFuZCBhIHdlbGwtZXN0YWJsaXNoZWQgY29tbXVuaXR5IGFyb3VuZCBpdC4gSXQgaXMga25vd24gYW5kIHVuZGVyc3Rvb2QuXG5cbkxldCBtZSBhbmFseXplLiBXaGF0IHdvdWxkIHRoZSBpbXBsaWNhdGlvbnMgb2YgdXRpbGl6aW5nIGBtdDc2eDJgIGJlLCByZWFsbHk/IERvZXMgaXQgc3RpbGwgbWFrZSBzZW5zZSwgY29uc2lkZXJpbmcgdGhlIGFkdmFuY2VtZW50cz8gV2hhdCBhcmUgaXRzIGN1cnJlbnQgbGltaXRhdGlvbnM/IE1heWJlIGl0J3MgYSBiaXQgZGF0ZWQgY29tcGFyZWQgdG8gc29tZSBvZiB0aGUgbmV3ZXIgY2hpcHNldHMsIGJ1dCBwZXJoYXBzIHRoZSBwcm92ZW4gc3RhYmlsaXR5IGFuZCBhdmFpbGFibGUgc29mdHdhcmUgZWNvc3lzdGVtIG91dHdlaWdoIHRob3NlIGNvbmNlcm5zLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIGFwcGxpY2F0aW9uLiBJcyB0aGVyZSBhbnkgcGFydGljdWxhciByZWFzb24gdG8gcnVsZSBpdCBvdXQsIGdpdmVuIHRoZSBwcm9qZWN0IHBhcmFtZXRlcnM/IE1heWJlIGl0J3MgcGVyZmVjdCBmb3IgdGhpcyBzY2VuYXJpbywgYSBnb29kIGNvc3QvYmVuZWZpdCBhbmFseXNpcy4gSSBuZWVkIHRvIGNvbnNpZGVyIGl0IHNlcmlvdXNseSBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMuIEl04oCZcyBjZXJ0YWlubHkgYSB2aWFibGUgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE5OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjQ1LjMzNzY3OTk0MloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMjA0MTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjo0NS4zODIwMTAxNTdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNzUxMDQyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgbXQ3Nl9yZXNldF9kZXZpY2VgIG9ubHkgbGVhZHMgdG8gYG10NzkxNWAgYW5kIGBtdDc5OTZgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgIGRpcmVjdG9yeS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzZWUgaWYgYG1hYzgwMjExX2h3c2ltYCBjb3VsZCB0cmlnZ2VyIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgLCBidXQgdGhhdCdzIGEgZGVhZCBlbmQgLSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIFRoZW4gSSBjb25zaWRlcmVkIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCB3aGlsZSBpdCdzIGEgdGhpbmcsIGl0IGp1c3QgY2FsbHMgYHBjaV9kZXZpY2VfYWRkYCwgc28gdGhhdCBkb2Vzbid0IHNlZW0gcHJvbWlzaW5nLlxuXG5Ib2xkIG9uLCB0aGlzIGlzbid0IG5lY2Vzc2FyaWx5IGEgc3l6a2FsbGVyLWRpc2NvdmVyZWQgYnVnLCBpdCBjb3VsZCBiZSBhIHBhdGNoIHN1Ym1pdHRlZCBmb3IgdGVzdGluZyBieSBzeXpib3QhIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIgLSB0aGF0IGNvbmZpcm1zIGl0LiBTeXpib3QgYXBwbGllcyBhbmQgY29tcGlsZXMgdGhlIHBhdGNoLCBidXQgdGhhdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgY29kZSBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIGZ1enppbmcuXG5cbklmIGl0ICppcyogYW4gdW5kZXItcmV2aWV3IHBhdGNoLCBzeXpib3Qgd2lsbCBjb21waWxlIGFuZCBmdXp6IGl0LiBCdXQgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUsIGl0IHdvbid0IGJlIGZ1enplZC5cblxuVGhlIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3Mgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgaXMgaW4gYSBwbGFjZSB0aGF0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0IGluY2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5TbywgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGFyZSAqZGVmaW5pdGVseSogdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVycy4gVGhleSBhYnNvbHV0ZWx5IG5lZWQgTWVkaWFUZWsgTVQ3OTE1L01UNzk5NiBoYXJkd2FyZS4gU3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhhdCwgSSBrbm93IHRoYXQuIE5vIGNoYW5jZSB0aGV5J3JlIGJlaW5nIGVtdWxhdGVkLlxuXG5DYW4gSSBnZXQgYG10NzkxNWAgaW5pdGlhbGl6ZWQgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gVGltZSB0byBnbyBiYWNrIG92ZXIgYG10NzkxNV9tbWlvX2luaXRgLiBJdCByZWFkcyBgTVRfSFdfUkVWYCBmcm9tIE1NSU8uIE9rYXksIGlmIHRoYXQgZG9lc24ndCBtYXRjaCwgaXQgbWlnaHQgYmFpbCBvdXQ/IE5vcGUsIGp1c3QgbG9ncyBpdC4gQnV0IGl0IGFsc28gcmVhZHMgYGRldmljZV9pZGAgZnJvbSB0aGUgUENJIGRldmljZSwgYW5kIGdvZXMgdGhyb3VnaCBhIHdob2xlIGJ1bmNoIG9mIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLiBDYW4gdGhpcyBsZWFkIHRvIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgPyBJdCdzIGNhbGxlZCBmcm9tIGBtdDc5MTVfbWFjX3Jlc2V0X3dvcmtgLCB3aGljaCBpcyBzY2hlZHVsZWQgZnJvbSBgbXQ3OTE1X3Jlc2V0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzI6NTYuNDU3MTE2OTI3WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkzMzUxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ5PW10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTctXFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5zdGF0ZSB8PSBNVF9NQ1VfQ01EX1dEVF9NQVNLO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNjA1PXZvaWQgbXQ3OTE1X21hY19kdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTY3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNjc0OnZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTY3NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODkwLVxcdFxcdFxcdGRldi1cXHUwMDNlcmVjb3Zlcnkuc3RhdGUgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjg5MTpcXHRcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODkyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3MT12b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDcyOnZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3My1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjU2LjUwNDA1MzM4MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODg5MzMzMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgYG10NzkxNV9yZXNldGAgZnVuY3Rpb24gZ2V0cyB0cmlnZ2VyZWQuIEl0IHNlZW1zIGl0IGNhbiBiZSBjYWxsZWQgZWl0aGVyIGluIHJlc3BvbnNlIHRvIGEgc3BlY2lmaWMgaW50ZXJydXB0LCB3aGljaCBpcyBoYW5kbGVkIGJ5IGBtdDc5MTVfaXJxX3Rhc2tsZXRgLCBvciBkaXJlY3RseSB0aHJvdWdoIGRlYnVnZnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdG8gZXZlbiBnZXQgdG8gdGhpcyBwb2ludCwgdGhlIGRldmljZSBpdHNlbGYgaGFzIHRvIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcHJvYmVkLCByaWdodD8gU28sIHRoZSBlbnRpcmUgZGV2aWNlIGRyaXZlciBtdXN0IGJlIHVwIGFuZCBydW5uaW5nLlxuXG5JJ20gY3VyaW91cywgY2FuIGBtdDc5MTVfbW1pb19wcm9iZWAgZXZlbiBzdWNjZWVkIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IENvdWxkIEkgc2ltdWxhdGUgb3Igc3R1YiBvdXQgdGhlIGhhcmR3YXJlIGFuZCBzdGlsbCBnZXQgdG8gdGhlIHBvaW50IHdoZXJlIHRoaXMgcmVzZXQgbWVjaGFuaXNtIGJlY29tZXMgcmVsZXZhbnQ/IFRoYXQncyB3aGF0IEkgd2FudCB0byB0ZXN0LiBJIGtub3cgaXQgY2FsbHMgYG10NzkxNV9tbWlvX2luaXRgIGZpcnN0LCB3aGljaCB0aGVuIGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgLiBTbywgbXkgbmV4dCBtb3ZlIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCdzICphY3R1YWxseSogaGFwcGVuaW5nIGluIHRob3NlIGZ1bmN0aW9ucyBhbmQgaWYgdGhvc2UgY2FsbHMgY2FuIGJlIHNpbXVsYXRlZCB0byByZWFjaCB0aGUgcmVzZXQgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDQzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMzOjA2LjM5MzM4OTM5NVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NTcxMzQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTg1OD1tdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg3MzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM3Ni1cXHQvKiBsb2FkIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTM3NzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMzIzOm10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjMyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg3PXN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfcmVkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxMDppbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0NTg6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDU5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0NjU6aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDc3OlxcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDc4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3Mz1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc0OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDc2LWludCBtdDc5MTVfbWN1X3R3dF9hZ3J0X3VwZGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzowNy43NTkxMDc4M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTI3OTA5MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZhaWx1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgaW5pdGlhbGl6YXRpb24gaXNzdWUgd2l0aCB0aGUgbXQ3OTE1IGRldmljZS4gSXQgbG9va3MgbGlrZSBgbXQ3OTE1X21jdV9pbml0YCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQsIGNhbGxpbmcgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBsb2FkIGZpcm13YXJlLCBzZW5kIGNvbW1hbmRzIHRvIHRoZSBNQ1UuIE5vdywgaWYgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXNuJ3QgcHJlc2VudCwgdGhlIE1DVSB3b24ndCByZXNwb25kLCBhbmQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgcmlnaHRseSBmYWlscy5cblxuVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgc3l6a2FsbGVyLCBvdXIgZnV6emVyLCBtYXkgaGF2ZSBmb3VuZCB0aGlzLiBJdCBjYW4gaW5qZWN0IGZpcm13YXJlLCBidXQgaXQgY2FuJ3QgZnVsbHkgZW11bGF0ZSB0aGUgTUNVIHJlc3BvbnNlcyB0byBNTUlPIHJlYWRzIGFuZCB3cml0ZXMuIFNvLCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ29lcyBkb3duIHRoZSBkcmFpbjogYG10NzkxNV9pbml0X2hhcmR3YXJlYCBmYWlscywgdGhlbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMuIENvbnNlcXVlbnRseSwgdGhlIGRldmljZSBuZXZlciByZWFjaGVzIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc3RhdGUgYW5kLCBjcml0aWNhbGx5LCBgbXQ3OTE1X3Jlc2V0YCBpcyBuZXZlciBjYWxsZWQuXG5cbkJ1dCB0aGVuIEkgdGhvdWdodCwgaWYgc3l6a2FsbGVyIGZvdW5kIHRoaXMsICpob3cqPyBJdCBtYWRlIG1lIGNvbnNpZGVyIHRoYXQgbWF5YmUgYG10NzZfcmVzZXRfZGV2aWNlYCBJUyBjYWxsZWQgYnkgYSBVU0IgZHJpdmVyLCBldmVuIGlmIGl0J3Mgbm90IGluIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IG9mIHRoZSBtYWluIG10NzkxNSBkcml2ZXIuIExldCdzIHZlcmlmeS4gSSBncmVwcGVkIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5IGFuZCB0aGUgc2VhcmNoIHR1cm5lZCB1cCBvbmx5IGBtdDc5MTUvbWFjLmNgIGFuZCBgbXQ3OTk2L21hYy5jYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIG5vdCBjYWxsZWQgc29tZXdoZXJlIGVsc2UuXG5cbldhaXQsIHRoZXJlJ3MgYG10NzZfd2NpZF9jbGVhbnVwYC4gVGhlIHBhdGNoIHJlZmVyZW5jZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiBgbWFjODAyMTEuY2AuIFNvIGl0IGFwcGVhcnMgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBiZWluZyBjYWxsZWQgdGhlcmUuIEhvd2V2ZXIsIHRoZSByZXNldCBpcyBiZWluZyBkb25lIF9iZWZvcmVfIHRoZSB3Y2lkIGNsZWFudXAsIHdoaWNoIGlzIHRoZW4gbW92ZWQgdG8gKmFmdGVyKi4gU28sIGxldCdzIHNlZSwgaXMgYG10NzZfcmVzZXRfZGV2aWNlYCBjYWxsZWQgYnkgKmFueSogb3RoZXIgZHJpdmVyIG91dHNpZGUgb2YgdGhlIGBtdDc2YCBzdWJzeXN0ZW0/IEl0J3MgZXhwb3J0ZWQsIGJ1dCBpZiBpdCBpcyBvbmx5IGNhbGxlZCBpbiBgbXQ3NmAsIHRoZW4gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gTGV0J3MgYnJvYWRlbiB0aGUgc2VhcmNoIHRvIHRoZSBlbnRpcmUga2VybmVsIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwNDIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6MTYuMjg3MDE5MTM5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI4Nzc5NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVxcdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XFx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cXHQgKiBsZWF2ZXMgd2NpZC1cXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVxcdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6MTcuOTE1ODAzNjIyWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDYwODY2ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlIG9mIHRoZSBNZWRpYVRlayBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE1lZGlhVGVrIFdpLUZpIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLiBUaGV5J3JlIGJvdGggUENJZSBkcml2ZXJzLCBhbmQgYWxzbyBwbGF0Zm9ybSBkcml2ZXJzIGZvciB0aGUgTVQ3OTh4IFNvQ3MuIEltbWVkaWF0ZWx5LCBteSBmaXJzdCB0aG91Z2h0IGlzIHZpcnR1YWxpemF0aW9uLCBsaWtlIFFFTVUuIFNpbmNlIHRoZXkncmUgUENJZSBhbmQgcGxhdGZvcm0gZHJpdmVycywgdGhleSdyZSBwcm9iYWJseSBvdXQgb2YgcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4uLiB1bmxlc3MhIFdhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBEb2VzIHRoYXQgYHN5el9wY2lfZGV2aWNlX2FkZGAgcHNldWRvLXN5c2NhbGwgb2ZmZXIgYSBiYWNrZG9vcj8gSWYgc28sIGNvdWxkIHRoYXQgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgcHJvYmU/IElmIGBzeXpfcGNpX2RldmljZV9hZGRgIGRvZXMgY2FsbCBgbXQ3OTE1X21taW9fcHJvYmVgLCB0aGF0J3Mgb3VyIGVudHJ5IHBvaW50LlxuXG5gbXQ3OTE1X21taW9fcHJvYmVgIGlzIGtleSBiZWNhdXNlIGl0IGxlYWRzIHRvIGBtdDc5MTVfbW1pb19pbml0YCwgd2hpY2ggcmVhZHMgYE1UX0hXX1JFVmAgZnJvbSBNTUlPLiBTaW1wbGUgZW5vdWdoLiBUaGVuIGl0IG1vdmVzIG9uIHRvIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggaXMgd2hlcmUgdGhpbmdzIHN0YXJ0IGdldHRpbmcgaW50ZXJlc3RpbmcuIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBjYWxscyBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLCB3aGljaCB0aGVuIGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgLiBUaGlzIGluIHR1cm4gbGVhZHMgdG8gYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIHdoZXJlIHdlIHNlZSBmaXJtd2FyZSBiZWluZyByZXF1ZXN0ZWQsIGFuZCB0aGVuIGEgY29tbWFuZCBpcyBzZW50IHRvIHRoZSBNQ1UgdXNpbmcgYG10NzZfbWN1X3NlbmRfbXNnYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG9pbnQgb2YgZmFpbHVyZTogaWYgdGhlIE1DVSBkb2Vzbid0IHJlc3BvbmQgb3IgcmV0dXJucyBhbiBlcnJvciwgdGhlcmUncyBhIHRpbWVvdXQgYW5kIHRoZSBwcm9jZXNzIGJhaWxzLiAgSWYgdGhhdCBoYXBwZW5zLCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGZhaWxzLCBhbmQgdGhlbiBzbyBkb2VzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggbWVhbnMgdGhlIGRldmljZSBpc24ndCBmdWxseSByZWdpc3RlcmVkLlxuXG5UaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBmdWxseSByZWdpc3RlciwgdGhlbiBjZXJ0YWluIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBgbXQ3OTE1X3Jlc2V0YCB3aGljaCBzY2hlZHVsZXMgYG10NzkxNV9tYWNfcmVzZXRfd29ya2AsIHdoaWNoIGNhbGxzIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgIGFuZCBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBUaGlzIHdob2xlIHJlc2V0IHBhdGggaXMgY29udGluZ2VudCBvbiBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHJlZ2lzdHJhdGlvbi5cblxuVGhlbiBhIHRob3VnaHQgaGl0cywgY291bGQgYG10NzkxNV9yZXNldGAgYmUgY2FsbGVkIGZyb20gZGVidWdmcz8gQW5kIHllcywgdGhlcmUgaXQgaXMhIGBtdDc5MTVfc3lzX3JlY292ZXJ5X3NldGAgaW4gYGRlYnVnZnMuY2AgY2FsbHMgYG10NzkxNV9yZXNldChkZXYpYC4gSG93ZXZlciwgZGVidWdmcyBlbnRyaWVzIGFyZSBvbmx5IGNyZWF0ZWQgaWYgdGhlIGRldmljZSBpcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC4gYG10NzkxNV9pbml0X2RlYnVnZnNgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCAqYWZ0ZXIqIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAsIHdoaWNoIG1lYW5zLCBpZiB0aGUgaGFyZHdhcmUgaW5pdCBmYWlscywgbm8gZGVidWdmcy4gVGhpcyBsb29rcyBsaWtlIGEgZGVhZCBlbmQuXG5cbk5vdywgbGV0IG1lIHRoaW5rIGFib3V0IG90aGVyIGNvZGUgcGF0aHMuIENhbiBJIHRyaWdnZXIgYG10NzkxNV9pcnFfdGFza2xldGA/IEl0J3Mgc2V0IHVwIGluIGBtdDc5MTVfbW1pb19wcm9iZWAgKmJlZm9yZSogYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgOiBgdGFza2xldF9zZXR1cChcdTAwMjZtZGV2LVx1MDAzZWlycV90YXNrbGV0LCBtdDc5MTVfaXJxX3Rhc2tsZXQpO2AuIFNvLCBpdCdzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgcHJvYmUuIEJ1dCBjYW4gaXQgYmUgKnNjaGVkdWxlZCo/IEl0J3Mgc2NoZWR1bGVkIGJ5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYG10NzkxNV9pcnFfaGFuZGxlcmAuIEJ1dCBpcyBgbXQ3OTE1X2lycV9oYW5kbGVyYCByZWdpc3RlcmVkICpiZWZvcmUqIG9yIGFmdGVyIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYD8gVGltZSB0byBodW50IGRvd24gdGhhdCBgcmVxdWVzdF9pcnFgIGNhbGwuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjk1MywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzozMC4zNzY2NzI1ODlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDEzMTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfaXJxfGRldm1fcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MTAzPXN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNTU6XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1Ni1cXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NTpcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VpcnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc2LVxcdFxcdFxcdFxcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNTM6XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNTQtXFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6MzAuNDIwNjkxOTAzWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNTk0OTMyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIG10NzkxNSBEcml2ZXIgUHJvYmUgU2VxdWVuY2UqKlxuXG5Pa2F5LCBsZXQncyB0aGluayB0aGlzIHRocm91Z2guIGBkZXZtX3JlcXVlc3RfaXJxYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBtdDc5MTVfcGNpX3Byb2JlYC4gUmlnaHQsIGBtdDc5MTVfcGNpX3Byb2JlYCBjYWxscyBgbXQ3OTE1X21taW9fcHJvYmVgIGZpcnN0LCB3aGljaCBzZXRzIHVwIHRoZSBtZW1vcnkgbWFwcGVkIElPLCB0aGVuIGl0IHJlcXVlc3RzIHRoZSBJUlEgd2l0aCBgZGV2bV9yZXF1ZXN0X2lycWAsIGFuZCBmaW5hbGx5IGl0IGNhbGxzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYC4gVGhlIHNlcXVlbmNlIGlzIGtleSBoZXJlLlxuXG5Ob3csIGlmIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmYWlscywgd2UgZXhwZWN0IHRoZSBwcm9iZSB0byBmYWlsIGFuZCBgZGV2bV9yZXF1ZXN0X2lycWAgd2lsbCBiZSBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgdGhyb3VnaCB0aGUgZGV2aWNlIHJlc291cmNlIG1hbmFnZW1lbnQuIE1ha2VzIHNlbnNlLiBCdXQgaGVyZSdzIHRoZSBraWNrZXI6IGFuIGludGVycnVwdCBjb3VsZCBmaXJlICpiZWZvcmUqIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBjb21wbGV0ZXMuIEZvciBleGFtcGxlLCB0aGUgSVJRIGxpbmUgbWlnaHQgYmUgc2hhcmVkLCBhbmQgYW5vdGhlciBkZXZpY2UgY291bGQgdHJpZ2dlciBhbiBpbnRlcnJ1cHQgYmVmb3JlIG91ciBkcml2ZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cbklmIHRoYXQgaGFwcGVucywgYG10NzkxNV9pcnFfaGFuZGxlcmAgZ2V0cyBjYWxsZWQuIE15IGNvbmNlcm4gaXMsIHdoYXQgaGFwcGVucyBpbnNpZGUgdGhhdCBoYW5kbGVyPyBJZiBpdCByZWFkcyB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciwgYW5kIGl0IGdldHMgYDB4ZmZmZmZmZmZgICh3aGljaCBzdWdnZXN0cyBubyByZWFsIGhhcmR3YXJlIGlzIHByZXNlbnQgYXQgdGhhdCBzdGFnZSksIGl0IGNvdWxkLCBwb3RlbnRpYWxseSwgc2NoZWR1bGUgdGhlIHRhc2tsZXQuIFRoYXQncyB0aGUgcGFydCBJIHJlYWxseSBuZWVkIHRvIGNoZWNrLiBJIG5lZWQgdG8gZGlnIGludG8gYG10NzkxNV9pcnFfaGFuZGxlcmAgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdoZW4gdGhlcmUncyBubyB2YWxpZCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHNlZSB3aGF0IGxvZ2ljIGlzIGluIHBsYWNlIHRvIGhhbmRsZSB0aGlzIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2MCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzozNi40ODAxODg4MDlaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjMyNTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9pcnFfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4OTY6aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ1MD12b2lkIG10NzkxNV93ZnN5c19yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NTE6aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDUyLXU2NCBfX210NzkxNV9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTE1X3ZpZiAqbXZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0xMDM9c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE1NTpcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU2LVxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzUtXFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGRldi1cXHUwMDNlaGlmMi1cXHUwMDNlaXJxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NjpcXHRcXHRcXHRcXHQgICAgICAgbXQ3OTE1X2lycV9oYW5kbGVyLCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzctXFx0XFx0XFx0XFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFxcXCItaGlmXFxcIiwgZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjUzOlxcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjU0LVxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMzOjM2LjUyNjQyNjM3NFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODk5NDg4OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkxNV9pcnFfaGFuZGxlcmAuXG5cbioqRGlzc2VjdGluZyB0aGUgSW50ZXJydXB0IEhhbmRsZXIqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gYWJvdXQgdG8gZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoaXMgTVQ3OTE1IGludGVycnVwdCBoYW5kbGVyLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgcmVhbGx5IG1lZXRzIHRoZSByb2FkIGluIHRlcm1zIG9mIHJlc3BvbnNpdmVuZXNzIGZvciB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBpbnNpZGUgYW5kIG91dC4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSByZWFkIGV2ZXJ5IGxpbmUsIGtlZXBpbmcgaW4gbWluZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgc3BlY2lmaWMgY2hpcHNldC4gRmlyc3QsIEknbGwgaWRlbnRpZnkgdGhlIGludGVycnVwdCBzb3VyY2VzIGJlaW5nIGhhbmRsZWQuIFdoYXQgYXJlIHRoZSBrZXkgaW50ZXJydXB0IGZsYWdzIGJlaW5nIGNoZWNrZWQ/IEFyZSB0aGV5IERNQSBjb21wbGV0aW9uLCBSWCBmcmFtZXMsIFRYIGFja25vd2xlZGdlbWVudHMsIGVycm9ycywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBvcmRlciBpbiB3aGljaCB0aGVzZSBjaGVja3MgYXJlIHBlcmZvcm1lZCB3aWxsIHRlbGwgbWUgc29tZXRoaW5nIGFib3V0IHByaW9yaXR5IGFuZCBob3cgdGhlIGRldmVsb3BlcnMgYW50aWNpcGF0ZWQgdGhlIHRyYWZmaWMgZmxvdy5cblxuTmV4dCwgSSdsbCBsb29rIGZvciBhbnkgaW5kaWNhdGlvbiBvZiBob3cgdGhlc2UgaW50ZXJydXB0cyBhcmUgYmVpbmcgYWNrbm93bGVkZ2VkIG9yIGNsZWFyZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBBcmUgdGhlcmUgc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGhhcHBlbmluZz8gQXJlIHRoZXkgdXNpbmcgYW55IGtpbmQgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIgbGlrZSB0aGUgR0lDIG9yIHNvbWV0aGluZyBzaW1wbGVyPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIHByZXZlbnRpbmcgc3B1cmlvdXMgaW50ZXJydXB0cyBhbmQgZW5zdXJpbmcgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGlzIHJlYWR5IGZvciB0aGUgbmV4dCBldmVudC5cblxuSSdtIGFsc28gbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEFyZSB0aGVyZSBhbnkgc2hhcmVkIHJlc291cmNlcyBiZWluZyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGhhbmRsZXI/IFdoYXQgbG9ja2luZyBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSwgaWYgYW55PyBUaGlzIGlzIGEgaG90IHNwb3QsIHNvIEknbGwgYmUgc2NydXRpbml6aW5nIGl0IHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGRhdGEgY29ycnVwdGlvbiB0aGF0IG1pZ2h0IG9jY3VyIHVuZGVyIGhpZ2ggbG9hZC4gU3BlY2lmaWNhbGx5LCBob3cgZG9lcyB0aGlzIGhhbmRsZXIgaW50ZXJmYWNlIHdpdGggdGhlIGhpZ2hlciBsZXZlbCBuZXR3b3JrIHN0YWNrPyBBbnkgc3BpbmxvY2tzLCBtdXRleGVzLCBvciBhdG9taWMgb3BlcmF0aW9ucz9cblxuSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGhhbmRsZSBkZWZlcnJhbC4gQXJlIHRoZXkgdXNpbmcgd29ya3F1ZXVlcywgc29mdGlycXMsIG9yIHRhc2tsZXRzPyBXaGF0J3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGNob3NlbiBkZWZlcnJhbCBtZWNoYW5pc20/IElzIGl0IG9wdGltaXplZCBmb3IgbG93IGxhdGVuY3ksIG9yIGFyZSB0aGV5IHByaW9yaXRpemluZyB0aHJvdWdocHV0PyBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGluIHRoZSBkZWZlcnJlZCBleGVjdXRpb24gcGF0aC5cblxuRmluYWxseSwgSSdtIGdvaW5nIHRvIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgYW4gdW5leHBlY3RlZCBpbnRlcnJ1cHQgb2NjdXJzLCBvciBpZiB0aGUgZHJpdmVyIGVuY291bnRlcnMgYW4gZXJyb3IgY29uZGl0aW9uPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvdW50ZXJzIGJlaW5nIGluY3JlbWVudGVkPyBBcmUgdGhlcmUgYW55IGF0dGVtcHRzIGF0IHJlY292ZXJ5LCBvciBpcyBpdCBqdXN0IGEgZmF0YWwgaGFsdD8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuIE92ZXJhbGwsIEkgd2FudCB0byBnYWluIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBpbnRlcnJ1cHQgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NTUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo0Mi40MjU5MTc0MjJaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg5NixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg5NjpcXHRpcnFyZXR1cm5fdCBtdDc5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbiA4OTc6XFx0e1xcbiA4OTg6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRldl9pbnN0YW5jZTtcXG4gODk5OlxcdFxcdHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZDtcXG4gOTAwOlxcdFxcbiA5MDE6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxcbiA5MDI6XFx0XFx0XFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKHdlZCwgMCk7XFxuIDkwMzpcXHRcXHRlbHNlXFxuIDkwNDpcXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcXG4gOTA1OlxcdFxcbiA5MDY6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMilcXG4gOTA3OlxcdFxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlQxX01BU0tfQ1NSLCAwKTtcXG4gOTA4OlxcdFxcbiA5MDk6XFx0XFx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSlcXG4gOTEwOlxcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4gOTExOlxcdFxcbiA5MTI6XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmlycV90YXNrbGV0KTtcXG4gOTEzOlxcdFxcbiA5MTQ6XFx0XFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbiA5MTU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo0Mi40MjYwMDIwMTJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1Njg0NjA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBNVDc2IERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhlIGludGVycnVwdCBoYW5kbGVyIGlzIGNoZWNraW5nIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gTWFrZXMgc2Vuc2UsIHRoYXQncyBhIGdvb2Qgc2FuaXR5IGNoZWNrLiBCdXQgdGhpcyBiaXQgaXMgc2V0IG9ubHkgYXQgdGhlICplbmQqIG9mIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYC4gU28sIGlmIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmYWlscyDigJMgYW5kIGl0J3MgYm91bmQgdG8gaWYgdGhlIGhhcmR3YXJlIGlzbid0IHByZXNlbnQg4oCTIHRoZSB3aG9sZSB0YXNrbGV0IHRoYXQgY29udGFpbnMgdGhpcyBpbnRlcnJ1cHQgaGFuZGxlciBuZXZlciBnZXRzIHNjaGVkdWxlZC4gUmlnaHQsIHNvIGZhciwgc28gZ29vZC5cblxuTm93LCBpZiB0aGUgdGFza2xldCBpc24ndCBzY2hlZHVsZWQsIGBtdDc5MTVfcmVzZXRgIGlzbid0IGNhbGxlZC4gQW5kIGlmICp0aGF0KiBpc24ndCBjYWxsZWQsIHRoZW4gbmVpdGhlciBpcyBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBXYWl0IGEgc2Vjb25kLi4uIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgbGFzdCBwb2ludC4gQW0gSSByaWdodCBpbiB0aGlua2luZyB0aGF0IGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgb25seSBjYWxsZWQgYnkgYG10NzkxNWAgYW5kIGBtdDc5OTZgLCBvciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBMZXQgbWUgZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBJIGdyZXBwZWQgdGhlIHdob2xlIGBtdDc2YCBkaXJlY3RvcnkgZm9yIGBtdDc2X3Jlc2V0X2RldmljZWAuIFllcCwgY29uZmlybWVkLiBPbmx5IG1hdGNoZXMgaW4gYG10NzkxNWAgYW5kIGBtdDc5OTZgIOKAkyB3aGljaCBtZWFucyBteSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBsaWtlbHkgY29ycmVjdC5cblxuT2theSwgbGV0J3MgdGFrZSB0aGlzIG9uZSBzdGVwIGZ1cnRoZXIgdG8gZW5zdXJlIEkgYW0gY29ycmVjdC4gSSBzaG91bGQgY2hlY2sgaWYgYG10NzkyMWAgY2FsbHMgYG10NzZfcmVzZXRfZGV2aWNlYCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIG9yIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgaXMgYSBjb21tb24gcHJhY3RpY2UgaW4gZHJpdmVyIGRldmVsb3BtZW50IHRvIGluY3JlYXNlIGNvZGUgcmUtdXNhYmlsaXR5IGFuZCBtb2R1bGFyaXR5LCBzbyBJIHNob3VsZCBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NDEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo0OS4zODI4NTA4OTNaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTIwNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlxcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXFx0ICogbGVhdmVzIHdjaWQtXFx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMzOjQ5LjQzMDk3NTM2OFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc0NzM0MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBDdXJpb3VzIEJ1ZyBEaXNjb3ZlcnkqKlxuXG5Pa2F5LCBzbyBzeXprYWxsZXIgZmxhZ2dlZCB0aGlzIG9uZS4gQSBidWcsIGludGVyZXN0aW5nLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyBcIkhvdz9cIi4gSG93IGRpZCBzeXprYWxsZXIgZXZlbiAqZmluZCogdGhpcz8gSXQncyBvZnRlbiBhIHN1YnRsZSBpbnRlcmFjdGlvbiBvciBhbiBvYnNjdXJlIGNvZGUgcGF0aC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBwb3NzaWJsZSBjYXVzZXMuIEhtbSwgbGV0J3MgdGhpbmsuLi4gY291bGQgdGhpcyBiZSByZWxhdGVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlcj8gU3BlY2lmaWNhbGx5LCBJIHdvbmRlciBpZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggb25lLiBJdCdzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEFscmlnaHQsIHRpbWUgdG8gY2hlY2suIEkgbmVlZCB0byBzZWUgaWYgYG10NzZfcmVzZXRfZGV2aWNlYCBoYXMgYmVlbiBhc3NpZ25lZCBhcyB0aGUgdGFyZ2V0IGZvciBhbnkgZnVuY3Rpb24gcG9pbnRlcnMuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBjaGFpbiB0byBzZWUgaWYgaXQgaXMgdXNlZCBpbiBzdWNoIGEgbWFubmVyLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDM5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6NTMuNjA1NzEyMTYzWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzczMSwiRXJyb3IiOiJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cbkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXFxuWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuXFxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLlwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo1My42MDU3NTY4ODNaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQyOTM2MTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3OXh4X21hY19yZXNldGAgQ2FsbCoqXG5cbk9rYXksIHNvIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCB0aGUgZnVuY3Rpb24gaXNuJ3QgY2FsbGVkIHRocm91Z2ggYW55IGZ1bmN0aW9uIHBvaW50ZXJzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQgbWVhbnMgaXQncyBzb2xlbHkgY2FsbGVkIGJ5IGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgIGFuZCBgbXQ3OTk2X21hY19mdWxsX3Jlc2V0YC4gSG1tLCBidXQgaGVyZSdzIHdoZXJlIG15IGV4cGVydGlzZSBraWNrcyBpbiAtIEkgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBieXBhc3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIuIENvdWxkIHN5emthbGxlciwgdGhyb3VnaCBpdHMgYWJpbGl0eSB0byBpbmplY3QgUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfZGV2aWNlX2FkZGAgYW5kIG1hcCBCQVJzIHRvIHVzZXIgc3BhY2UsIHNvbWVob3cgYnlwYXNzIHRoZSBgTVQ3Nl9TVEFURV9JTklUSUFMSVpFRGAgY2hlY2s/IEl0J3MgYSB2YWxpZCBjb25jZXJuLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3dlciBzeXprYWxsZXIgd2llbGRzLlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBsb2dpYy4gVGhlIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBiaXQgbGl2ZXMgd2l0aGluIGBkZXYtXHUwMDNlbXBoeS5zdGF0ZWAuIFRoYXQgYml0IGlzIHNwZWNpZmljYWxseSBzZXQgZHVyaW5nIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYDpcblxuYGBgY1xuXHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbmBgYFxuXG5UaGlzIGlzIHRoZSBsaW5jaHBpbi4gSXQncyBvbmx5IHNldCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4gU28sIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBDYW4gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIHN1Y2NlZWQgaW4gYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IFRvIGFuc3dlciB0aGF0LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbnRlcm5hbHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZGl0aW9ucyBhbmQgcHJlcmVxdWlzaXRlcyBvZiBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhlIGZ1bmN0aW9uIGNhbiBiZSB0cmlja2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ0MCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDowMC4wMzUxMjE5NzdaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI0MTA6XFx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjI0MTE6XFx0e1xcbjI0MTI6XFx0XFx0aW50IHJldDtcXG4yNDEzOlxcdFxcbjI0MTQ6XFx0XFx0LyogZm9yY2UgZmlybXdhcmUgb3BlcmF0aW9uIG1vZGUgaW50byBub3JtYWwgc3RhdGUsXFxuMjQxNTpcXHRcXHQgKiB3aGljaCBzaG91bGQgYmUgc2V0IGJlZm9yZSBmaXJtd2FyZSBkb3dubG9hZCBzdGFnZS5cXG4yNDE2OlxcdFxcdCAqL1xcbjI0MTc6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG4yNDE4OlxcdFxcbjI0MTk6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcXG4yNDIwOlxcdFxcdGlmIChyZXQpXFxuMjQyMTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MjI6XFx0XFx0Lyogc2V0IGRyaXZlciBvd24gZm9yIGJhbmQxIHdoZW4gdHdvIGhpZiBleGlzdCAqL1xcbjI0MjM6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbjI0MjQ6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG4yNDI1OlxcdFxcdFxcdGlmIChyZXQpXFxuMjQyNjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0Mjc6XFx0XFx0fVxcbjI0Mjg6XFx0XFxuMjQyOTpcXHRcXHRyZXQgPSBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpO1xcbjI0MzA6XFx0XFx0aWYgKHJldClcXG4yNDMxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQzMjpcXHRcXG4yNDMzOlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuMjQzNDpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCAwKTtcXG4yNDM1OlxcdFxcdGlmIChyZXQpXFxuMjQzNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0Mzc6XFx0XFxuMjQzODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCAwKTtcXG4yNDM5OlxcdFxcdGlmIChyZXQpXFxuMjQ0MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NDE6XFx0XFxuMjQ0MjpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfZGVsX3d0YmxfYWxsKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjI0NDM6XFx0XFxuMjQ0NDpcXHRcXHRpZiAoKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbjI0NDU6XFx0XFx0ICAgICBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHx8XFxuMjQ0NjpcXHRcXHQgICAgIW10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuMjQ0NzpcXHRcXHRcXHRtdDc5MTVfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoQ0FQQUJJTElUWSksIDAsIDAsIDApO1xcbjI0NDg6XFx0XFxuMjQ0OTpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9td2RzKGRldiwgMSk7XFxuMjQ1MDpcXHRcXHRpZiAocmV0KVxcbjI0NTE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDUyOlxcdFxcbjI0NTM6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsKGRldiwgTVVSVV9TRVRfUExBVEZPUk1fVFlQRSxcXG4yNDU0OlxcdFxcdFxcdFxcdFxcdCAgICAgICBNVVJVX1BMQVRGT1JNX1RZUEVfUEVSRl9MRVZFTF8yKTtcXG4yNDU1OlxcdFxcdGlmIChyZXQpXFxuMjQ1NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NTc6XFx0XFxuMjQ1ODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShkZXYpO1xcbjI0NTk6XFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDAuMDM1MzA2MTE3WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTUyNDk4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgXCJtdDc5MTVfZHJpdmVyX293blwiIGZ1bmN0aW9uOlxuXG4qKk15IFNlbGYtQXNzZXNzbWVudDogQW0gSSBSZWFkeSB0byBPd24gVGhpcyBIYXJkd2FyZT8qKlxuXG5BbHJpZ2h0LCBoZXJlJ3MgdGhlIGRlYWwuIEknbSBhYm91dCB0byBhc3Nlc3MgaWYgSSwgdGhlIG10NzkxNSBkcml2ZXIsIGFtIGluIGEgcG9zaXRpb24gdG8gdGFrZSBjaGFyZ2Ugb2YgdGhpcyBoYXJkd2FyZS4gTXkgd2hvbGUgcHVycG9zZSBpcyB0byBtYW5hZ2UgaXQsIHRvIG1ha2UgaXQgZG8gaXRzIHRoaW5nLiBCdXQgSSBjYW4ndCBqdXN0IGJhcmdlIGluOyB0aGVyZSBhcmUgcHJvdG9jb2xzLCBjaGVja3MgYW5kIGJhbGFuY2VzLCByaWdodD8gQmVmb3JlIEkgc3RhcnQgaXNzdWluZyBjb21tYW5kcyBhbmQganVnZ2xpbmcgcmVnaXN0ZXJzLCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSBJJ20gdGhlIGNvcnJlY3QgZW50aXR5IGZvciB0aGlzIG9wZXJhdGlvbi4gVGhpcyBjaGVjaywgdGhpcyAqbXQ3OTE1X2RyaXZlcl9vd24qIGZ1bmN0aW9uLCBpcyB0aGUgZ2F0ZWtlZXBlci4gSXQncyB0aGUgbW9tZW50IG9mIHRydXRoIHdoZXJlIEkgZGV0ZXJtaW5lIGlmIGl0J3MgbXkgdHVybiB0byBvd24gaXQgYW5kIG1ha2UgaXQgZG8gaXRzIHRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDk0MiwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDMuODUwNTU5NjQzWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODY5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMjkwOlxcdFxcbjIyOTE6XFx0XFx0cmV0dXJuIDA7XFxuMjI5MjpcXHR9XFxuMjI5MzpcXHRcXG4yMjk0OlxcdHN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfbXdkcyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGVuYWJsZWQpXFxuMjI5NTpcXHR7XFxuMjI5NjpcXHRcXHRzdHJ1Y3Qge1xcbjIyOTc6XFx0XFx0XFx0dTggZW5hYmxlO1xcbjIyOTg6XFx0XFx0XFx0dTggX3JzdlszXTtcXG4yMjk5OlxcdFxcdH0gX19wYWNrZWQgcmVxID0ge1xcbjIzMDA6XFx0XFx0XFx0LmVuYWJsZSA9IGVuYWJsZWRcXG4yMzAxOlxcdFxcdH07XFxuMjMwMjpcXHRcXG4yMzAzOlxcdFxcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChNV0RTX1NVUFBPUlQpLCBcXHUwMDI2cmVxLFxcbjIzMDQ6XFx0XFx0XFx0XFx0XFx0IHNpemVvZihyZXEpLCBmYWxzZSk7XFxuMjMwNTpcXHR9XFxuMjMwNjpcXHRcXG4yMzA3OlxcdGludCBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmwoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyIGNtZCwgdTMyIHZhbClcXG4yMzA4OlxcdHtcXG4yMzA5OlxcdFxcdHN0cnVjdCB7XFxuMjMxMDpcXHRcXHRcXHRfX2xlMzIgY21kO1xcbjIzMTE6XFx0XFx0XFx0dTggdmFsWzRdO1xcbjIzMTI6XFx0XFx0fSBfX3BhY2tlZCByZXEgPSB7XFxuMjMxMzpcXHRcXHRcXHQuY21kID0gY3B1X3RvX2xlMzIoY21kKSxcXG4yMzE0OlxcdFxcdH07XFxuMjMxNTpcXHRcXG4yMzE2OlxcdFxcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsIHJlcS52YWwpO1xcbjIzMTc6XFx0XFxuMjMxODpcXHRcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSwgXFx1MDAyNnJlcSxcXG4yMzE5OlxcdFxcdFxcdFxcdFxcdCBzaXplb2YocmVxKSwgZmFsc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDowMy44NTA4MTk5MzRaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2OTU3Mzg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbXQ3Nl9tY3Vfc2VuZF9tc2dgIEZ1bmN0aW9uKipcblxuSG1tLCBzbyBgbXQ3Nl9tY3Vfc2VuZF9tc2dgIGlzIGNsZWFybHkgdGhlIHdvcmtob3JzZSBoZXJlIGZvciBzZW5kaW5nIG1lc3NhZ2VzIGFuZCAqd2FpdGluZyogZm9yIGEgcmVwbHkuIFRoYXQncyBjcnVjaWFsLiBJZiB0aGUgZGV2aWNlIGRvZXNuJ3QgcmVzcG9uZCwgdGhlbiB0aGUgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gcmV0dXJuIGFuIGVycm9yLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBudWFuY2VzIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgdGltZW91dCBtZWNoYW5pc20sIHJldHJ5IGNvdW50LCBhbmQgZXJyb3IgY29kZXMgYXJlIGFsbCBnb2luZyB0byBiZSBpbXBvcnRhbnQgaW4gYW55IGRlYnVnZ2luZyBzaXR1YXRpb24uIExldCdzIHNlZSBob3cgYG10NzkxNV9kcml2ZXJfb3duYCBmaXRzIGludG8gdGhlIHBpY3R1cmUsIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGhvb2tzIGludG8gdGhpcyBtZXNzYWdlIHNlbmRpbmcgZnVuY3Rpb25hbGl0eSwgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY1MSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDguNTIwMzk2MjcxWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTU1NjQ3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X2RyaXZlcl9vd25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjA1Nz1pbnQgbXQ3OTE1X21jdV9hZGRfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTEyOnN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDE5OlxcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMy1cXHRpZiAoZGV2LVxcdTAwM2VoaWYyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQyNDpcXHRcXHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjUtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDkuMzE1OTY1ODQ1WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODU5NjUwNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgbXQ3OTE1X2RyaXZlcl9vd25gLCBiYXNlZCBvbiBteSBleHBlcmllbmNlIGFuZCBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgT3duZXJzaGlwKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyByZWFkaW5nIGBtdDc5MTVfZHJpdmVyX293bmAuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBsaWtlbHkgbWVhbnMgaXQgZGVhbHMgd2l0aCB0aGUgY29yZSBvd25lcnNoaXAgb3IgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYXNwZWN0cyBvZiB0aGUgTVQ3OTE1IGRyaXZlciB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgY29uY3VycmVuY3ksIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBJcyB0aGlzIGFib3V0IHRoZSBkcml2ZXIgY2xhaW1pbmcgaGFyZHdhcmUgcmVzb3VyY2VzLCBtYW5hZ2luZyBhY2Nlc3MgdG8gcmVnaXN0ZXJzLCBvciBwZXJoYXBzIGhhbmRsaW5nIGludGVycnVwdCBoYW5kbGVycz8gSSBuZWVkIHRvIGxvb2sgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMgb3IgZnVuY3Rpb25zIHRoYXQgY2xlYXJseSBkZWZpbmUgd2hvIFwib3duc1wiIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50cyBvciBzdGF0ZXMgYXQgYW55IGdpdmVuIHRpbWUuIEknbSBleHBlY3RpbmcgdG8gc2VlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIOKAkyBtdXRleGVzLCBzcGlubG9ja3MsIHNlbWFwaG9yZXMg4oCTIGhlYXZpbHkgdXNlZCBoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBwcm9uZSB0byBkZWFkbG9ja3MuIElzIHRoZXJlIGEgY2xlYXIgaGllcmFyY2h5IG9mIG93bmVyc2hpcCBlc3RhYmxpc2hlZD8gSXMgaXQgd2VsbCBkb2N1bWVudGVkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzIGluIHRoZSBkZXNpZ24gZnJvbSBhIHJlYWwtdGltZSBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZT8gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGluaXRpYWxpemF0aW9uLCBzaHV0ZG93biwgYW5kIGVycm9yIHJlY292ZXJ5LiBJcyB0aGUgb3duZXJzaGlwIGNsZWFybHkgdHJhbnNmZXJyZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZCBvciB1bnBsdWdnZWQ/IEFuZCBob3cgd2VsbCBkb2VzIGl0IGRlYWwgd2l0aCBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBuZWVkaW5nIGFjY2VzcyB0byB0aGUgc2FtZSBoYXJkd2FyZSByZXNvdXJjZXM/IFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nIHRvIHJlYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDI0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MTQuMDAxOTMzMTQ0WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTEyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTEyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4yMTEzOlxcdHtcXG4yMTE0OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuMjExNTpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbjIxMTY6XFx0XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG4yMTE3OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbjIxMTg6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjExOTpcXHRcXHR9XFxuMjEyMDpcXHRcXG4yMTIxOlxcdFxcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cXG4yMTIyOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXFxuMjEyMzpcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XFxuMjEyNDpcXHRcXG4yMTI1OlxcdFxcdHJldHVybiAwO1xcbjIxMjY6XFx0fVxcbjIxMjc6XFx0XFxuMjEyODpcXHRzdGF0aWMgaW50XFxuMjEyOTpcXHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4yMTMwOlxcdHtcXG4yMTMxOlxcdFxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjE0LjAwMjEwMjgzNVoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTE0MjE5MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGBtdDc2X3BvbGxfbXNlY2AncyBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG10NzZfcG9sbF9tc2VjYCBhbmQgaXRzIHBvdGVudGlhbCBpbnRlcmFjdGlvbiB3aXRoIHN5emthbGxlci4gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHBvbGxzIGEgcmVnaXN0ZXIgdW50aWwgYSBzcGVjaWZpYyBjb25kaXRpb24gaXMgbWV0LCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJIZXksIGlmIHN5emthbGxlciBpcyBmdXp6aW5nIHRoaXMsIGNvdWxkbid0IGl0IGp1c3QgbWFwIHRoZSBNTUlPIHJlZ2lvbiwgd3JpdGUgdGhlIHRhcmdldCB2YWx1ZSwgYW5kIGZvcmNlIGBtdDc2X3BvbGxfbXNlY2AgdG8gcmV0dXJuIGVhcmx5P1wiIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciBkb2Vzbid0IGFjdHVhbGx5IHNpbXVsYXRlIGhhcmR3YXJlIHJlc3BvbnNlcyBieSBtYXBwaW5nIE1NSU8gdG8gdXNlcnNwYWNlIGFuZCBydW5uaW5nIGEgdGhyZWFkIHRvIGZha2UgaXQuIFRoYXQncyBub3QgaG93IGl0IHdvcmtzIVxuXG5XYWl0IGEgbWludXRlLCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBkb2Vzbid0IGRvIHRoYXQuIEl0IGp1c3QgY3JlYXRlcyBhIHZpcnR1YWwgUENJIGRldmljZS4gVGhlIE1NSU8gcmVnaW9ucywgaW4gdGhpcyBzZXR1cCwgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBtZW1vcnksIHdoaWNoIG1lYW5zIHJlYWRzIHJldHVybiB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSB3cml0dGVuIHRoZXJlLiBPa2F5LCBzbyBpZiBgbXQ3Nl9wb2xsX21zZWNgIHJlYWRzIGBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZClgLCBpdOKAmXMgZ29pbmcgdG8gcmVhZCB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSB3cml0dGVuLiBBbmQsIGlmIHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgYXMgc3VjaCwgYG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTilgIHNob3VsZCB3cml0ZSB0aGUgdmFsdWUuXG5cbkFscmlnaHQsIHNvIHRoZSBrZXkgaXMgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgd3JpdHRlbiBhbmQgd2hhdCB3ZSdyZSBwb2xsaW5nIGZvci4gVGhpcyBtZWFucyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9ucyBvZiBgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOYCBhbmQgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgLiBMZXQncyBzZWUgd2hhdCB0aG9zZSBsb29rIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTg3LCJPdXRwdXRUb2tlbnMiOjY2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MjIuMTE2MzI0MDY5WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ0OTQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV058TVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTEyPXN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTE0OlxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExNS1cXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTY6XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE3LVxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oPTUwPWVudW0gb2Zmc19yZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDAtI2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTlxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAxOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOXFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oOjExMDI6I2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUXFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjIyLjE2NDc3NzU4NFoiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzE1MjUyMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyBmaXJtd2FyZSBsb2FkaW5nLiBJdCBsb29rcyBsaWtlIGBtdDc2X3dyYCBpcyB3cml0aW5nIGBCSVQoMSlgIHRvIHRoaXMgcmVnaXN0ZXIsIGFuZCB0aGVuIGBtdDc2X3BvbGxfbXNlY2AgaW1tZWRpYXRlbHkgY29tZXMgaW4gYW5kIHJlYWRzIHRoZSBzYW1lIHJlZ2lzdGVyLiBOb3csIGBtdDc2X3BvbGxfbXNlY2AgdGhlbiBtYXNrcyB0aGF0IHJlZ2lzdGVyIHZhbHVlIHdpdGggYEJJVCgyKWAsIHdoaWNoIGlzLCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAuIFRoZSBjb2RlIEknbSBhbmFseXppbmcgaXMgZXhwZWN0aW5nIGAwYC4gSG1tLCBsZXQgbWUgdGhpbmsuXG5cblJpZ2h0LCBgbXQ3Nl9wb2xsX21zZWNgIGlzIGNoZWNraW5nIGlmIGAodmFsIFx1MDAyNiBtYXNrKSA9PSBleHBlY3RlZGAuIEhlcmUsIGBtYXNrYCBpcyBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAgd2hpY2ggaXMgYEJJVCgyKWAsIGFuZCBgZXhwZWN0ZWRgIGlzLCBhcyBJIG5vdGVkLCBgMGAuIFNpbmNlIGBCSVQoMSlgIGFuZCBgQklUKDIpYCBhcmUgZGlzdGluY3QgYml0cywgYW5kIGBCSVQoMSkgXHUwMDI2IEJJVCgyKSA9PSAwYCwgdGhhdCBtZWFucyB0aGUgY29uZGl0aW9uIGAodmFsIFx1MDAyNiBtYXNrKSA9PSAwYCBpcyAqaW1tZWRpYXRlbHkqIHRydWUhXG5cblNvLCB0aGUgY29kZSBpcyBnb2luZyB0byBzdWNjZWVkIHJpZ2h0IGF3YXkuIFRoaXMgbWVhbnMgYG10NzkxNV9kcml2ZXJfb3duYCB3aWxsIHRoaW5rIGl0J3MgZ290IG93bmVyc2hpcC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHdoYXQgaXMgZXhwZWN0ZWQsIHNvIGxldCdzIGNvbnRpbnVlLiBJIG5lZWQgdG8gbm93IG1vdmUgb24gYW5kIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBiZWhhdmlvciBvbiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQyOCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDoyOS40ODAwMzMwMTNaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTEyNTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9sb2FkX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxNDI6c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjQxMD1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0Mjk6XFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDMwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjI5LjUyOTE1MjY3OFoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk1OTg0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkxNV9sb2FkX2Zpcm13YXJlYC4gSGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nIGFzIEkgbG9vayB0aHJvdWdoIHRoaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gYG10NzkxNV9sb2FkX2Zpcm13YXJlYC4gSW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgZ29lcyB0byB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgKnN1cHBvc2VkKiB0byBkbzogbG9hZCBmaXJtd2FyZSBvbnRvIHRoZSBNVDc5MTUgY2hpcCwgcmlnaHQ/IFRoYXQncyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgY2hhbGxlbmdlczogZXJyb3IgaGFuZGxpbmcsIGVuc3VyaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyB2YWxpZCwgYW5kIHRoZSBzZWN1cmUgdHJhbnNmZXIgb2YgZGF0YSB0byB0aGUgZGV2aWNlLiBJIGtub3cgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGRyaXZlciB0byBmdW5jdGlvbi5cblxuSSdtIHNjYW5uaW5nIGZvciBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgaXQgdXNpbmcgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSksIGlzIGl0IGNvbW11bmljYXRpbmcgdmlhIFNQSSwgUENJZSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJlaW5nIHVzZWQuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidXMgdHJhbnNhY3Rpb25zIHRvIHByb3Blcmx5IGRpYWdub3NlIGFueSBwb3RlbnRpYWwgaXNzdWVzIGxhdGVyLiBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byBob3cgdGhleSBoYW5kbGUgcmV0cmllcyBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgdGhlIHRyYW5zZmVyLiBJdCBjb3VsZCBiZSBhIHNpbXBsZSB0aW1lb3V0IG9yIGEgbW9yZSBjb21wbGV4IHJlY292ZXJ5IG1lY2hhbmlzbS4gSSBuZWVkIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIHJldHJ5IHBvbGljeS5cblxuSSdtIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLiBJJ20gZXhwZWN0aW5nIGNoZWNrcyBmb3IgdGhpbmdzIGxpa2UgaW1hZ2Ugc2l6ZSwgdmVyc2lvbiBjb21wYXRpYmlsaXR5LCBhbmQgcG90ZW50aWFsIGNoZWNrc3VtIHZlcmlmaWNhdGlvbi4gSSdtIGFsc28gbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZmFpbHVyZXMuIERvZXMgaXQgcHJvdmlkZSBpbmZvcm1hdGl2ZSBlcnJvciBjb2Rlcz8gRG9lcyBpdCBhdHRlbXB0IHRvIHJlc2V0IHRoZSBkZXZpY2UgaWYgYSBsb2FkIGZhaWxzPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGEgZmFpbGVkIGZpcm13YXJlIGxvYWQ/IElzIGl0IGhhbmRsZWQgZ3JhY2VmdWxseSwgb3IgZG9lcyBpdCBsZWF2ZSB0aGUgZGV2aWNlIGluIGFuIHVudXNhYmxlIHN0YXRlPyBJJ20gaG9waW5nIHRvIHNlZSB3ZWxsLWRlZmluZWQgZXJyb3IgcGF0aHMgYW5kIGxvZ2dpbmcgdGhhdCdzIGhlbHBmdWwgZm9yIGRlYnVnZ2luZy5cblxuSSdtIGNvbnNpZGVyaW5nIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhlcmUgYW55IHZhbGlkYXRpb24gb2YgdGhlIGZpcm13YXJlIGltYWdlPyBJcyBpdCBjaGVja2luZyBmb3Igc2lnbmF0dXJlcz8gSWYgbm90LCB0aGF0J3MgYSByZWQgZmxhZy4gV2hhdCBtZWFzdXJlcyBhcmUgYmVpbmcgdGFrZW4gdG8gcHJldmVudCBhIG1hbGljaW91cyBmaXJtd2FyZSBmcm9tIGJlaW5nIGxvYWRlZD9cblxuQW5kIGxhc3RseSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBuZWVkIHRvIGRlYnVnIHRoaXMgZnVuY3Rpb24uIEknbSB0aGlua2luZyBhYm91dCB3aGF0IHRvb2xzIEknbGwgbmVlZCB0byB1c2UsIHN1Y2ggYXMgYSBKVEFHIGRlYnVnZ2VyLCBvciBwcm90b2NvbCBhbmFseXplciwgdG8gbW9uaXRvciB0aGUgZGF0YSB0cmFuc2ZlciBhbmQgdmVyaWZ5IGl0cyBpbnRlZ3JpdHkuIEknbGwgbmVlZCB0byBrbm93IHdoYXQgdG8gbG9vayBmb3Igd2hlbiBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBmaXJtd2FyZSBsb2FkaW5nIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzNTIsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDozNC44MjUxNDE0NzJaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxNDIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxNDI6XFx0c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjIxNDM6XFx0e1xcbjIxNDQ6XFx0XFx0aW50IHJldDtcXG4yMTQ1OlxcdFxcbjIxNDY6XFx0XFx0LyogUmVsZWFzZSBTZW1hcGhvcmUgaWYgdGFrZW4gYnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQgKi9cXG4yMTQ3OlxcdFxcdHJldCA9IG10NzZfY29ubmFjX21jdV9wYXRjaF9zZW1fY3RybChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmYWxzZSk7XFxuMjE0ODpcXHRcXHRpZiAocmV0ICE9IFBBVENIX1JFTF9TRU1fU1VDQ0VTUykge1xcbjIxNDk6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiQ291bGQgbm90IHJlbGVhc2Ugc2VtYXBob3JlXFxcXG5cXFwiKTtcXG4yMTUwOlxcdFxcdFxcdC8qIENvbnRpbnVlIGFueXdheXMgKi9cXG4yMTUxOlxcdFxcdH1cXG4yMTUyOlxcdFxcbjIxNTM6XFx0XFx0LyogQWx3YXlzIHJlc3RhcnQgTUNVIGZpcm13YXJlICovXFxuMjE1NDpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yMTU1OlxcdFxcbjIxNTY6XFx0XFx0LyogQ2hlY2sgaWYgTUNVIGlzIHJlYWR5ICovXFxuMjE1NzpcXHRcXHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSk7XFxuMjE1ODpcXHRcXHRpZiAocmV0KSB7XFxuMjE1OTpcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJGaXJtd2FyZSBkaWQgbm90IGVudGVyIGRvd25sb2FkIHN0YXRlXFxcXG5cXFwiKTtcXG4yMTYwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE2MTpcXHRcXHR9XFxuMjE2MjpcXHRcXG4yMTYzOlxcdFxcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3BhdGNoKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZ3X25hbWVfdmFyKGRldiwgUk9NX1BBVENIKSk7XFxuMjE2NDpcXHRcXHRpZiAocmV0KVxcbjIxNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMTY2OlxcdFxcbjIxNjc6XFx0XFx0cmV0ID0gbXQ3Nl9jb25uYWMyX2xvYWRfcmFtKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZ3X25hbWVfdmFyKGRldiwgRklSTVdBUkVfV00pLFxcbjIxNjg6XFx0XFx0XFx0XFx0XFx0ICAgIGZ3X25hbWUoZGV2LCBGSVJNV0FSRV9XQSkpO1xcbjIxNjk6XFx0XFx0aWYgKHJldClcXG4yMTcwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE3MTpcXHRcXG4yMTcyOlxcdFxcdHJldCA9IG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIHRydWUpO1xcbjIxNzM6XFx0XFx0aWYgKHJldClcXG4yMTc0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE3NTpcXHRcXG4yMTc2OlxcdFxcdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5xX21jdVtNVF9NQ1VRX0ZXRExdLCBmYWxzZSk7XFxuMjE3NzpcXHRcXG4yMTc4OlxcdFxcdGRldl9kYmcoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZpcm13YXJlIGluaXQgZG9uZVxcXFxuXFxcIik7XFxuMjE3OTpcXHRcXG4yMTgwOlxcdFxcdHJldHVybiAwO1xcbjIxODE6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDozNC44MjUzNDEyMDJaIiwiU2VxIjo3MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMDcyMTU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKk1DVSBSZWFkaW5lc3MgQ2hlY2sqKlxuXG5SaWdodCwgc28sIGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgLi4uIHRoYXQncyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgaXNuJ3QgaXQ/IEl0J3MgdGhlIGdhdGVrZWVwZXIsIGJhc2ljYWxseS4gV2hhdCBJJ20gdGhpbmtpbmcgYWJvdXQgaGVyZSBpcyB0aGUgY29yZSBvZiB0aGUgaXNzdWU6ICppcyogdGhlIE1DVSBhY3R1YWxseSByZWFkeSB0byBkbyBpdHMgam9iPyBJdCdzIG5vdCBqdXN0IGEgYmluYXJ5IFwib24vb2ZmXCIgc2l0dWF0aW9uLCBlaXRoZXIuIEkgbmVlZCB0byBrbm93IHRoZSAqc3RhdGUqIG9mIGl0LiBJcyB0aGUgZmlybXdhcmUgbG9hZGVkPyBIYXMgaXQgaW5pdGlhbGl6ZWQgZXZlcnl0aGluZyBjb3JyZWN0bHk/IEFyZSBhbGwgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBjb21wb25lbnRzIHJlcG9ydGluZyBhcyBvcGVyYXRpb25hbD8gVGhpcyBjaGVjayBpcyBtb3JlIHRoYW4ganVzdCBhIGhlYXJ0YmVhdDsgaXQncyBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBNQ1UncyBjdXJyZW50IG9wZXJhdGlvbmFsIHN0YXR1cy4gQW5kIGRlcGVuZGluZyBvbiBpdHMgb3V0Y29tZSwgdGhhdCBkcml2ZXMgKmV2ZXJ5dGhpbmcqIHRoYXQgZm9sbG93cyBpbiB0aGUgc3lzdGVtLiBJZiB0aGF0IE1DVSBpc24ndCByZWFkeSB0byBnbywgdGhlIHdob2xlIHNoZWJhbmcgaXMgZ29pbmcgdG8gc3RhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTQzLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDozOC44MzYwNjYyMjlaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMjgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMjg6XFx0c3RhdGljIGludFxcbjIxMjk6XFx0bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuMjEzMDpcXHR7XFxuMjEzMTpcXHRcXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzI6XFx0XFx0XFx0XFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xcbjIxMzM6XFx0XFxuMjEzNDpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX01JU0MsIE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzU6XFx0XFx0XFx0XFx0ICAgIHN0YXRlLCAxMDAwKSkge1xcbjIxMzY6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiVGltZW91dCBmb3IgaW5pdGlhbGl6aW5nIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4yMTM3OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjIxMzg6XFx0XFx0fVxcbjIxMzk6XFx0XFx0cmV0dXJuIDA7XFxuMjE0MDpcXHR9XFxuMjE0MTpcXHRcXG4yMTQyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MzguODM2MjMzMzg5WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODUwMjg3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2IERyaXZlciBQb2xsaW5nIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3Nl9wb2xsX21zZWNgIGZ1bmN0aW9uIGFuZCBob3cgaXQgY2hlY2tzIHRoZSBmaXJtd2FyZSBzdGF0ZS4gSXQgc2VlbXMgdG8gYmUgcG9sbGluZyB0aGUgYE1UX1RPUF9NSVNDYCByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIGZpZWxkLCBhbmQgd2FpdGluZyBmb3IgaXQgdG8gcmVhY2ggYSBjZXJ0YWluIGBzdGF0ZWAuICBSaWdodCwgYW5kIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBzeXprYWxsZXIgZnV6emluZyB0aGlzLCB0aGUgTU1JTyBpc24ndCBtYXBwZWQsIHdoaWNoIGlzIGEga2V5IHBvaW50IHRvIHJlbWVtYmVyIGhlcmUuIFRoaXMgbWVhbnMgdGhlIHJlYWQgZnJvbSBgTVRfVE9QX01JU0NgIGlzIGxpa2VseSBnb2luZyB0byByZXR1cm4gemVybywgb3Igd2hhdGV2ZXIgZ2FyYmFnZSB3YXMgcHJldmlvdXNseSB0aGVyZS4gQnV0IHdhaXQgYSBtaW51dGUuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgYE1UX1RPUF9NSVNDYCBpc24ndCBhY3R1YWxseSB3cml0dGVuIHRvICpiZWZvcmUqIHRoaXMgcG9sbGluZyBoYXBwZW5zISBTbywgd2UncmUgbGlrZWx5IHN0YXJ0aW5nIHdpdGggYSByZWFkIG9mIHplcm8uXG5cbkFuZCB0aGUgdGFyZ2V0IGBzdGF0ZWA/ICBJdCdzIGBGV19TVEFURV9GV19ET1dOTE9BRGAuIEFuZCBJJ20gcHJldHR5IHN1cmUgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBpcyBub3QgemVyby4gV2Ugc2hvdWxkIGNvbmZpcm0gdGhpcyBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA5OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjQ0LjIyMTI2NjY1M1oiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3OTgwMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX1NUQVRFX0ZXX0RPV05MT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMxLVxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcXHRcXHRcXHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6NDQuNDc5MjUyNTFaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5OTQxNTYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBkZWVwIGRpdmUgaW50byBlbWJlZGRlZCBzeXN0ZW1zOlxuXG4qKkNoZWNraW5nIEZpcm13YXJlIFN0YXRlcyBpbiBtdDc2KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgZGVidWdnaW5nIG9yIGFuYWx5c2lzLCBJIHJlYWxseSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoZSBmaXJtd2FyZSBpbiBgbXQ3NmAuIExldCdzIGFzc3VtZSB0aGVyZSdzIGEgcHJvYmxlbSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggd2hlcmUgdGhpbmdzIGFyZSBpbiB0aGUgZmlybXdhcmUgZG93bmxvYWQgYW5kIHJlYWR5IHByb2Nlc3Nlcy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGltbWVkaWF0ZWx5IGhvbWluZyBpbiBvbiB0aGUgY3J1Y2lhbCBzdGF0ZXMgZGVmaW5lZCB3aXRoaW4gdGhhdCBtb2R1bGUuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGNoZWNrIHRoZSB2YWx1ZXMgb2YgYEZXX1NUQVRFX1JEWWAgYW5kIGBGV19TVEFURV9GV19ET1dOTE9BRGAuIFRoZXNlIGFyZSwgb2YgY291cnNlLCBhYnNvbHV0ZWx5IGNyaXRpY2FsLiBUaGV5J2xsIHRlbGwgbWUgaWYgdGhlIGZpcm13YXJlIGlzIHJlYWR5IHRvIGJlIHVzZWQgb3Igc3RpbGwgaW4gdGhlIHByb2Nlc3Mgb2YgZG93bmxvYWRpbmcuIEtub3dpbmcgdGhlIGN1cnJlbnQgdmFsdWVzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBwb3RlbnRpYWwgaXNzdWVzIGFuZCBkZXRlcm1pbmUgdGhlIHJpZ2h0IGNvdXJzZSBvZiBpbnZlc3RpZ2F0aW9uLiBUaGUgc3RhdHVzIGJpdHMgYXJlIGxpa2VseSBiZWluZyBzZXQgb3IgY2xlYXJlZCBieSBzcGVjaWZpYyBpbnRlcnJ1cHQgcm91dGluZXMgb3IgaGFyZHdhcmUgc2lnbmFscy4gSSdsbCBuZWVkIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoZXNlIHN0YXRlcyBhcmUgdHJhbnNpdGlvbmVkIGFuZCB3aGF0IHRyaWdnZXJzIGVhY2ggc3RhdGUgY2hhbmdlIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250cm9sIGZsb3cuIFJpZ2h0IG5vdywgSSBjYW4gc2VlIG15IHBhdGggZm9yd2FyZCBhcyBiZWluZyBkaXJlY3RlZCB0b3dhcmQgaW52ZXN0aWdhdGluZyB0aGUgYWN0dWFsIG51bWVyaWNhbCB2YWx1ZXMgb3IgZW51bWVyYXRpb25zIG9mIHRoZXNlIHN0YXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3MjAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDo0OC42Nzg2NzA1MjdaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1ODM1MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX1NUQVRFX0ZXX0RPV05MT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTQzMz1zdGF0aWMgaW50IG10NzYxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NDA6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzAtXFx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NzE6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaC0xMTQ1LVxcdEZXX1NUQVRFX0lOSVRJQUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2OlxcdEZXX1NUQVRFX0ZXX0RPV05MT0FELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMTE0Ny1cXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjEyOT1tdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXFx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlxcdFxcdFxcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNTgyLVxcdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODM6XFx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXFx0XFx0LyogcmVzdGFydCBmaXJtd2FyZSBvbmNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cXHRcXHRtdDc5OTZfbWN1X3Jlc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4NjpcXHRcXHRyZXQgPSBtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Ny1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc0LVxcdG10Nzk5Nl9tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1OlxcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc2LVxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZhaWxlZCB0byBleGl0IG1jdVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjQ4LjczNDUxMDYwM1oiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA4NTI3ODc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgRmFpbHVyZSBQYXRoKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhyb3VnaCB0aGlzIHNlcXVlbmNlIG9mIGV2ZW50cyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbi4gSXQgbG9va3MgbGlrZSBgRldfU1RBVEVfRldfRE9XTkxPQURgIGlzIHNldCB0byAxLCBhbmQgYEZXX1NUQVRFX1JEWWAgaXMgMy4gVGhhdCBtZWFucyBgbXQ3Nl9wb2xsX21zZWNgIHdpbGwgYmUgbG9va2luZyBmb3IgZWl0aGVyIG9mIHRob3NlIHZhbHVlcy4gVGhlIHJlZ2lzdGVyIHJlYWQgcmVzdWx0cyBpbiAwLCB0cmlnZ2VyaW5nIGEgdGltZW91dCBhbmQgYW4gZXJyb3IuIFRoaXMsIGluIHR1cm4sIGNhdXNlcyBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgLCBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYCwgYW5kIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCB0byBmYWlsLCBhbmQgY29uc2VxdWVudGx5LCBgbXQ3OTE1X3Jlc2V0YCBhbmQgYG10NzZfcmVzZXRfZGV2aWNlYCBuZXZlciBnZXQgY2FsbGVkLiBTZWVtcyBzdHJhaWdodGZvcndhcmQsIGEgcHJldHR5IHR5cGljYWwgZmlybXdhcmUgbG9hZGluZyBpc3N1ZS5cblxuQnV0LCBob2xkIG9uLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCwgZXNwZWNpYWxseSBzaW5jZSB0aGlzIGNvdWxkIGJlIGEgc3l6a2FsbGVyIHJlcG9ydC4gQ291bGQgdGhlcmUgYmUgYSBkaWZmZXJlbnQgc2NlbmFyaW8gYXQgcGxheSwgcGVyaGFwcyByZWxhdGVkIHRvIGEgVVNCIGRldmljZT8gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBwb3NzaWJpbGl0aWVzLiBJcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGV2ZW4gY2FsbGVkIGJ5IGEgVVNCIGRyaXZlciwgZm9yIGluc3RhbmNlP1xuXG5JJ3ZlIGFscmVhZHkgZ3JlcHBlZCB0aGUgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZHJpdmVycy4gSSBjYW4gZWxpbWluYXRlIGBtdDc2MTVgLCBgbXQ3NngwYCwgYG10NzZ4MmAsIGBtdDc5MjFgLCBhbmQgYG10NzkyNWAgZnJvbSBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cbkhtbSwgbWF5YmUgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGBtdDc2X3djaWRfY2xlYW51cGA/IEJ1dCB3YWl0LCB0aGUgcGF0Y2ggKnNwZWNpZmljYWxseSogbW92ZXMgdGhlIGNhbGwgdG8gYG10NzZfd2NpZF9jbGVhbnVwYCB0byAqYWZ0ZXIqIHRoZSBwb2ludGVyIGlzIGNsZWFyZWQuIFRoYXQgbWVhbnMgdGhhdCB0aGlzIGZ1bmN0aW9uICp3b24ndCogdHJpZ2dlciBhIGNhbGwgdG8gYG10NzZfcmVzZXRfZGV2aWNlYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoYXQgcGF0Y2ggYWdhaW4uLi5ZdXAsIHRoYXQncyB3aGF0IGl0IHNob3dzLiBUaGUgd2NpZCBjbGVhbnVwIGlzIGNhbGxlZCAqYWZ0ZXIqIGNsZWFyaW5nIHRoZSB3Y2lkIHBvaW50ZXIuXG5cbkFscmlnaHQsIHNvIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgKm9ubHkqIGNhbGxlZCBieSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAsIGFuZCAqdGhvc2UqIGFyZSBQQ0llIGRyaXZlcnMsIHRoZW4gdGhpcyAqZW50aXJlKiBjb2RlIHBhdGggaXMgbGlrZWx5IHVucmVhY2hhYmxlIGluIGEgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgZm9yIHN5emthbGxlci5cblxuQnV0IHdhaXQgYSBtaW51dGUsIEkgYmV0dGVyIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhlcmUgKmFueSogY2hhbmNlIHRoYXQgYG10NzkyMWAgY2FsbHMgYG10NzZfcmVzZXRfZGV2aWNlYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yIGEgc2ltaWxhciBmdW5jdGlvbiBsaWtlIGBtdDc5MjFfbWFjX3Jlc2V0YCBvciBzb21ldGhpbmcgY29tcGFyYWJsZS4gSSdsbCBzZWFyY2ggdGhlIGNvZGUgYmFzZSBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMzQ5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjU4LjgxOTc5MjM2N1oiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYyODcxNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxX21hY19yZXNldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTk6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmssIG10NzkyMV9tYWNfcmVzZXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIwMC1cXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MjFfaW5pdF93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzND1tdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjU4LS8qIHN5c3RlbSBlcnJvciByZWNvdmVyeSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY1OTp2b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTI2OT12b2lkIG10NzkyMV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjcwLVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjI3MTp2b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTI3Mi1pbnQgbXQ3OTIxZV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDo1OC45MTYwODY4MDdaIiwiU2VxIjo3OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNDUwODE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkyMV9tYWNfcmVzZXRfd29ya2AgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcmVzZXQgcHJvY2VkdXJlIHdpdGhpbiB0aGUgbGFyZ2VyIGBtdDc5MjFgIGNvbnRleHQuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBiYWNrIHRvIGEga25vd24gZ29vZCBzdGF0ZS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgY2xlYXJpbmcgb3V0IGFueSBzdGFsZSBjb25maWd1cmF0aW9ucywgaGFuZGxpbmcgcGVuZGluZyB0cmFuc21pc3Npb25zLCBhbmQgZW5zdXJpbmcgdGhlIGhhcmR3YXJlIGlzIHJlYWR5IHRvIHJlY2VpdmUgbmV3IGNvbW1hbmRzLiBJIGV4cGVjdCB0byBzZWUgc3RlcHMgaW52b2x2aW5nIGRpc2FibGluZyBpbnRlcnJ1cHRzLCBwb3RlbnRpYWxseSBmbHVzaGluZyBxdWV1ZXMsIGFuZCByZWluaXRpYWxpemluZyByZWdpc3RlcnMuIERlcGVuZGluZyBvbiBob3cgc29waGlzdGljYXRlZCB0aGUgY2hpcCBpcywgaXQgbWF5IGFsc28gaW5jbHVkZSBwb3dlciBjeWNsaW5nIG9yIGEgbW9yZSBzdWJ0bGUgaGFyZHdhcmUgcmVzZXQgc2VxdWVuY2UuIEtub3dpbmcgdGhpcyBmdW5jdGlvbiBpcyBsYWJlbGVkIGFzIGEgXCJ3b3JrXCIgaW1wbGllcyB0aGF0IGl0IGlzIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5LCBwZXJoYXBzIGRlZmVycmVkIGJ5IGEgd29ya3F1ZXVlLiBUaGlzIHN1Z2dlc3RzIGEgbmVlZCB0byBwcmV2ZW50IGJsb2NraW5nIGR1cmluZyB0aGUgcmVzZXQgb3BlcmF0aW9uIGFuZCBhbGxvd2luZyBvdGhlciBjcml0aWNhbCB0YXNrcyB0byBjb250aW51ZSB3aXRob3V0IGJlaW5nIHN0YXJ2ZWQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTEwNywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjAyLjgyMDU5NzA2M1oiLCJTZXEiOjgwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjU5LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjU5OlxcdHZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gNjYwOlxcdHtcXG4gNjYxOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXFxuIDY2MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICByZXNldF93b3JrKTtcXG4gNjYzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xcbiA2NjQ6XFx0XFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBtO1xcbiA2NjU6XFx0XFx0aW50IGksIHJldDtcXG4gNjY2OlxcdFxcbiA2Njc6XFx0XFx0ZGV2X2RiZyhkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiY2hpcCByZXNldFxcXFxuXFxcIik7XFxuIDY2ODpcXHRcXHRzZXRfYml0KE1UNzZfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiA2Njk6XFx0XFx0ZGV2LVxcdTAwM2Vod19mdWxsX3Jlc2V0ID0gdHJ1ZTtcXG4gNjcwOlxcdFxcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhodyk7XFxuIDY3MTpcXHRcXG4gNjcyOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5Lm1hY193b3JrKTtcXG4gNjczOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbiA2NzQ6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuIDY3NTpcXHRcXG4gNjc2OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuIDY3NzpcXHRcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5idXNfaHVuZykpXFxuIDY3ODpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDY3OTpcXHRcXG4gNjgwOlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tdXRleCk7XFxuIDY4MTpcXHRcXHRcXHRyZXQgPSBtdDc5MnhfZGV2X3Jlc2V0KGRldik7XFxuIDY4MjpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tdXRleCk7XFxuIDY4MzpcXHRcXG4gNjg0OlxcdFxcdFxcdGlmICghcmV0KVxcbiA2ODU6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDY4NjpcXHRcXHR9XFxuIDY4NzpcXHRcXG4gNjg4OlxcdFxcdGlmICgobXQ3Nl9pc19zZGlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIHx8IG10NzZfaXNfdXNiKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSBcXHUwMDI2XFx1MDAyNlxcbiA2ODk6XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuYnVzX2h1bmcpKVxcbiA2OTA6XFx0XFx0XFx0cmV0dXJuO1xcbiA2OTE6XFx0XFxuIDY5MjpcXHRcXHRpZiAoaSA9PSAxMClcXG4gNjkzOlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcImNoaXAgcmVzZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG4gNjk0OlxcdFxcbiA2OTU6XFx0XFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNVDc2X0hXX1NDQU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSkge1xcbiA2OTY6XFx0XFx0XFx0c3RydWN0IGNmZzgwMjExX3NjYW5faW5mbyBpbmZvID0ge1xcbiA2OTc6XFx0XFx0XFx0XFx0LmFib3J0ZWQgPSB0cnVlLFxcbiA2OTg6XFx0XFx0XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MDIuODIwNzA0MzYzWiIsIlNlcSI6ODEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzgzNTUzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERldmljZSBSZXNldCBGbG93KipcblxuQWxyaWdodCwgc28gSSBzZWUgdGhpcyBjb2RlIGluaXRpYXRlcyBhIHJlc2V0IHVzaW5nIGBtdDc5MnhfZGV2X3Jlc2V0KGRldilgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCBuYXR1cmFsbHkuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyAqdGhhdCogZnVuY3Rpb24sIGBtdDc5MnhfZGV2X3Jlc2V0YCwgdGhlbiBzdWJzZXF1ZW50bHkgY2FsbCB0aGUgbW9yZSBnZW5lcmljLCBsb3dlci1sZXZlbCBkZXZpY2UgcmVzZXQgZnVuY3Rpb24gYG10NzZfcmVzZXRfZGV2aWNlYD8gVGhhdCdzIHRoZSBjcml0aWNhbCBsaW5rIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBLbm93aW5nIHRoZSBjYWxsaW5nIHN0cnVjdHVyZSBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCBkZXZpY2Ugc3RhdGUgYWZ0ZXIgdGhlIHJlc2V0LiBJcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFjdGluZyBhcyBhIGJhc2UgZnVuY3Rpb24gZm9yIGFsbCB0aGUgbXQ3NiBkcml2ZXIgcmVzZXRzPyBPciwgaXMgYG10NzkyeF9kZXZfcmVzZXRgIGEgc3RhbmRhbG9uZSByZXNldCBmdW5jdGlvbiwgb3IgYSBzcGVjaWFsaXplZCBvbmU/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBjYWxsIGdyYXBoIHRvIGNvbmZpcm0gdGhlIHJlc2V0IGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbiBhbmQgdGhpcyBtb3JlIGdlbmVyaWMgZnVuY3Rpb24uIFRoaXMgcmVzZXQgYmVoYXZpb3IgbWF5IGhhdmUgaW1wbGljYXRpb25zIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBwbGF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjA2MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MDYuODU5MDYyMDkzWiIsIlNlcSI6ODIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1MTM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfZGV2X3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjU5PXZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4MC1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY4MTpcXHRcXHRyZXQgPSBtdDc5MnhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjgyLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE1MTE9dm9pZCBtdDc5MjVfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUzNS1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1MzY6XFx0XFx0cmV0ID0gbXQ3OTJ4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MzctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yNjI9c3RydWN0IG10NzkyeF9kbWFfbGF5b3V0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjc0LSNkZWZpbmUgbXQ3OTJ4X2luaXRfcmVzZXQoZGV2KVxcdFxcdCgoZGV2KS1cXHUwMDNlaGlmX29wcy1cXHUwMDNlaW5pdF9yZXNldChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6Mjc1OiNkZWZpbmUgbXQ3OTJ4X2Rldl9yZXNldChkZXYpXFx0XFx0KChkZXYpLVxcdTAwM2VoaWZfb3BzLVxcdTAwM2VyZXNldChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjc2LSNkZWZpbmUgbXQ3OTJ4X21jdV9pbml0KGRldilcXHRcXHQoKGRldiktXFx1MDAzZWhpZl9vcHMtXFx1MDAzZW1jdV9pbml0KGRldikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjA2LjkyMjIxNzM0WiIsIlNlcSI6ODMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODQ2NTEwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MnggRGV2aWNlIFJlc2V0KipcblxuT2theSwgc28gYG10NzkyeF9kZXZfcmVzZXRgIGtpY2tzIG9mZiB3aXRoIGEgY2FsbCB0byBgZGV2LVx1MDAzZWhpZl9vcHMtXHUwMDNlcmVzZXQoZGV2KWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgdXNpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZSAoSElGKSBvcGVyYXRpb25zIHN0cnVjdHVyZSB0byBkbyB0aGUgZGlydHkgd29yayBvZiByZXNldHRpbmcgdGhlIGRldmljZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hhdCB0aGUgYHJlc2V0YCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGF0IGBoaWZfb3BzYCBzdHJ1Y3QgYWN0dWFsbHkgKnBvaW50cyogdG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqc3BlY2lmaWMqIHJlc2V0IHJvdXRpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBJcyBpdCBhIGZ1bGwgaGFyZHdhcmUgcmVzZXQsIGEgc29mdHdhcmUtYmFzZWQgd2FybSByZXNldCwgb3Igc29tZXRoaW5nIGluIGJldHdlZW4/IEkgaGF2ZSB0byB1bmRlcnN0YW5kIHRoZSBsZXZlbCBvZiB0aGUgcmVzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTQ1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MTEuMjA2ODcyMjY2WiIsIlNlcSI6ODQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYwNDc5MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwucmVzZXQgPVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNToxMi4wNDI5MjYyMjVaIiwiU2VxIjo4NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNTMzNTgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBSZXNldCBCZWhhdmlvciBpbiBNVDc5MjEvTVQ3OTI1KipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZXNldCBiZWhhdmlvciBvZiB0aGUgTVQ3OTIxIGFuZCBNVDc5MjUgY2hpcHNldHMuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGUgYHJlc2V0YCBmdW5jdGlvbmFsaXR5IGluIHRob3NlIHNwZWNpZmljIGRldmljZSBkcml2ZXJzLiBVbmRlcnN0YW5kaW5nIHRoZSBudWFuY2VzIG9mIGhvdyB0aGVzZSBjaGlwcyBoYW5kbGUgcmVzZXRzIGlzIGNyaXRpY2FsIGZvciBbbWVudGlvbiB5b3VyIGFyZWEgb2YgZXhwZXJ0aXNlLCBlLmcuLCBkZWJ1Z2dpbmcgcG93ZXIgbWFuYWdlbWVudCBpc3N1ZXMsIGVuc3VyaW5nIHJlbGlhYmxlIGZpcm13YXJlIHVwZGF0ZXMsIGludmVzdGlnYXRpbmcgaGFyZHdhcmUgZmF1bHRzLCBldGMuXS4gS25vd2luZyB0aGUgZGV0YWlscyBvZiB0aGUgcmVzZXQgcHJvY2VzcyB3aWxsIGFsbG93IG1lIHRvIFtleHBsYWluIGhvdyB5b3Ugd2lsbCB1c2UgdGhpcyB1bmRlcnN0YW5kaW5nLCBlLmcuLCBpZGVudGlmeSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvcHRpbWl6ZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHBpbnBvaW50IHRoZSByb290IGNhdXNlIG9mIHRoZSBzcGVjaWZpYyBmYWlsdXJlIEknbSBzZWVpbmddLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSByZWxldmFudCBjb2RlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzZXQgc2VxdWVuY2UuIEkgZXhwZWN0IHRvIGZpbmQgY2x1ZXMgYWJvdXQgW21lbnRpb24gc3BlY2lmaWMgYXNwZWN0cyB5b3UncmUgbG9va2luZyBmb3IsIGUuZy4sIGhvdyB0aGUgcmVnaXN0ZXJzIGFyZSBjb25maWd1cmVkLCB3aGF0IGhhcHBlbnMgdG8gdGhlIGludGVybmFsIHN0YXRlIG1hY2hpbmVzLCB3aGF0IGtpbmQgb2YgaW50ZXJydXB0cyBhcmUgZ2VuZXJhdGVkLCB0aGUgb3ZlcmFsbCB0aW1pbmcgZGlhZ3JhbV0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjA5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MTYuMTQ4MjY1MzkzWiIsIlNlcSI6ODYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc5NTc4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNldCA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTY1OT12b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjgtXFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2Njk6XFx0ZGV2LVxcdTAwM2Vod19mdWxsX3Jlc2V0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NzAtXFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKGh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3MDM6XFx0ZGV2LVxcdTAwM2Vod19mdWxsX3Jlc2V0ID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzA0LVxcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTI1OT1zdGF0aWMgaW50IG10NzkyMV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy0yODItXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBtdDc5MjFfcGNpZV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6MjgzOlxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTIxZV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jOjI4NDpcXHRcXHQucmVzZXQgPSBtdDc5MjFlX21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy0yODUtXFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTIxZV9tY3VfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0xMjAtXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBtdDc5MjFfc2Rpb19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjEyMTpcXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyMXNfaW5pdF9yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTIyOlxcdFxcdC5yZXNldCA9IG10NzkyMXNfbWFjX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0xMjMtXFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTIxc19tY3VfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTcyLVxcdFxcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTczOlxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcXHRcXHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MTYuMTk0MDY2NjE3WiIsIlNlcSI6ODcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjIyMjg2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFVTQiBNQUMgUmVzZXQgRnVuY3Rpb24gQ2FsbCoqXG5cblJpZ2h0LCBzbyBgbXQ3OTIxdV9tYWNfcmVzZXRgIGlzIGdldHRpbmcgY2FsbGVkLiBBaGEhIFRoYXQncyBpbnRlcmVzdGluZzsgaXQncyBzcGVjaWZpYyB0byB0aGUgVVNCIGludGVyZmFjZSwgc28gaXQncyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGNvbm5lY3Rpb24gaXMgcmVzZXQgb3IgbWF5YmUgZXZlbiBkdXJpbmcgcG93ZXIgbWFuYWdlbWVudCBldmVudHMuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIGluc2lkZSB0aGlzIGZ1bmN0aW9uLCBhcyBpdHMgcm9sZSBpbiBVU0IgaXMgZ29pbmcgdG8gYmUgY2VudHJhbC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBtdDc5MjF1X21hY19yZXNldGAgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cyBhbmQgd2hpY2ggaGFyZHdhcmUgcmVnaXN0ZXJzIGl0J3MgbWFuaXB1bGF0aW5nLiBJIGJldCB0aGVyZSBhcmUgc29tZSBzcGVjaWZpYyBVU0ItcmVsYXRlZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBlbWJlZGRlZCB0aGVyZSB0b28sIGFuZCBJJ2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBkZXNjcmlwdG9ycyB0byBzZWUgaG93IGl0J3MgYWN0dWFsbHkgY29uZmlndXJlZC4gVGhpcyByZXNldCBtaWdodCBpbnZvbHZlIGZsdXNoaW5nIFRYL1JYIHF1ZXVlcywgZGlzYWJsaW5nIGludGVycnVwdHMsIHJlLWluaXRpYWxpemluZyBETUEgY2hhbm5lbHMsIG9yIGV2ZW4gcmUtcHJvZ3JhbW1pbmcgc29tZSBjcml0aWNhbCByZWdpc3RlcnMgcmVsYXRlZCB0byBwb3dlciBzYXZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTI3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MjAuNDU2Mjk4NjAxWiIsIlNlcSI6ODgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM0MzU3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxdV9tYWNfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9NjU9c3RhdGljIGludCBtdDc5MjF1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy04OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo4OTpzdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTc0OlxcdFxcdC5yZXNldCA9IG10NzkyMXVfbWFjX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3NS1cXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNToyMC44Mjk3NDc3MDFaIiwiU2VxIjo4OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIyOTYwNzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIGBtdDc5MjF1X21hY19yZXNldGAuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSB1c3VhbCBzdXNwZWN0cyBoZXJlLCBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIFdpLUZpIGRyaXZlciByZXNldHMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgYSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGFpbWVkIGF0IGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBpbnRvIGEga25vd24sIGdvb2Qgc3RhdGUgYWZ0ZXIgc29tZSBlcnJvciBvciB1cG9uIGluaXRpYWxpemF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZTpcblxuKipNQUMgUmVzZXQgUHJvY2VkdXJlIEFuYWx5c2lzKipcblxuKiAgICoqUmVnaXN0ZXIgV3JpdGVzOioqIEknbGwgYmUgbG9va2luZyBmb3IgcmVnaXN0ZXIgd3JpdGVzIOKAkyB0aGVzZSBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgaGFyZHdhcmUgY29udHJvbC4gTGlrZWx5IHRhcmdldGluZyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgY29udHJvbCByZWdpc3RlcnMsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSBzdGF0dXMgcmVnaXN0ZXJzIHRvIGNsZWFyIGZsYWdzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVnaXN0ZXIgYWRkcmVzc2VzIGFuZCBiaXRmaWVsZHMgaW52b2x2ZWQgdG8gZGVjaXBoZXIgdGhlIHJlc2V0J3MgYWN0dWFsIGltcGFjdC4gU3BlY2lmaWNhbGx5LCB3aGF0IHJlZ2lzdGVycyBhcmUgYmVpbmcgdGFyZ2V0ZWQ/IFdoYXQgdmFsdWVzIGFyZSBiZWluZyB3cml0dGVuPyBBbmQgd2hhdCBkb2VzIHRoYXQgc2lnbmlmeSBpbiB0ZXJtcyBvZiBNQUMgYmVoYXZpb3I/XG4qICAgKipDbG9jayBDb250cm9sOioqIENsb2NrIGNvbnRyb2wgaXMgYWxtb3N0IGNlcnRhaW5seSBpbnZvbHZlZC4gUmVzZXR0aW5nIHRoZSBNQUMgb2Z0ZW4gcmVxdWlyZXMgZGlzYWJsaW5nIGFuZCByZS1lbmFibGluZyBjbG9ja3MsIG9yIGF0IGxlYXN0IG1hbmlwdWxhdGluZyBjbG9jayBnYXRpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjbG9jayBkZXBlbmRlbmNpZXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY2xvY2sgZnJlcXVlbmN5IGNoYW5nZXMsIHdoaWNoIHdvdWxkIGFmZmVjdCB0aGUgUEhZLlxuKiAgICoqSW50ZXJydXB0IEhhbmRsaW5nOioqIFRoZSBjb2RlIG1pZ2h0IHRvdWNoIHVwb24gaW50ZXJydXB0IGVuYWJsaW5nL2Rpc2FibGluZywgc2luY2UgdGhpcyBpcyBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIE1BQydzIGNvbW11bmljYXRpb24uIEl0J3MgaW1wb3J0YW50IHRvIHNlZSB3aGVuIGFuZCBob3cgaW50ZXJydXB0cyBhcmUgcmUtZW5hYmxlZCBhZnRlciB0aGUgcmVzZXQ7IGFuZCBpZiBhbnkgc3BlY2lmaWMgaW50ZXJydXB0IGZsYWdzIGFyZSBjbGVhcmVkLlxuKiAgICoqU3RhdGUgTWFjaGluZSBNYW5hZ2VtZW50OioqIE1BQyByZXNldHMgZnJlcXVlbnRseSBpbnZvbHZlIG1vdmluZyB0aGUgTUFDIHN0YXRlIG1hY2hpbmUgdGhyb3VnaCBzcGVjaWZpYyBzdGF0ZXM6IGZyb20gcG90ZW50aWFsbHkgYmVpbmcgc3RvcHBlZCwgdGhyb3VnaCByZXNldCwgYW5kIGJhY2sgdG8gYW4gb3BlcmF0aW9uYWwgc3RhdGUuIEknbGwga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhpcyBpcyBoYW5kbGVkLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcy5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEl0J3MgdW5saWtlbHkgdGhhdCB0aGUgY29kZSBhc3N1bWVzIGV2ZXJ5dGhpbmcgZ29lcyBwZXJmZWN0bHkuIFNvLCBJIG5lZWQgdG8gc2VlIGhvdyBwb3RlbnRpYWwgZXJyb3JzIGR1cmluZyB0aGUgcmVzZXQgYXJlIGhhbmRsZWQuIEFyZSB0aGVyZSBhbnkgdGltZW91dHMsIHJldHJ5IG1lY2hhbmlzbXMsIG9yIGVycm9yIHJlcG9ydGluZyBpbnZvbHZlZD8gSSB3YW50IHRvIHNlZSBpZiB0aGUgZHJpdmVyIHJlcG9ydHMgaXQsIGFuZCBob3cgaXQgaGFuZGxlcyBpdC5cbiogICAqKlBvd2VyIE1hbmFnZW1lbnQ6KiogSW4gbW9yZSBjb21wbGV4IHNpdHVhdGlvbnMsIHBvd2VyIG1hbmFnZW1lbnQgbWlnaHQgYmUgcGFydCBvZiB0aGUgcmVzZXQuIEkgd2lsbCBiZSBsb29raW5nIGZvciBwb3dlci1kb3duIGFuZCBwb3dlci11cCBzZXF1ZW5jZXMgb2YgdmFyaW91cyBibG9ja3MuIFRoaXMgY291bGQgYmUgcmVsZXZhbnQgZm9yIGVuc3VyaW5nIHRoZSBNQUMgaXMgaW4gYSBsb3ctcG93ZXIgbW9kZSB3aGVuIG5vdCBpbiB1c2UuXG4qICAgKipGaXJtd2FyZSBMb2FkaW5nL1Jlc3RhcnQ6KiogSW4gc29tZSBhcmNoaXRlY3R1cmVzLCBlc3BlY2lhbGx5IHRob3NlIHdpdGggbW9yZSBzb3BoaXN0aWNhdGVkIGZpcm13YXJlLCBhIE1BQyByZXNldCBjb3VsZCBwb3RlbnRpYWxseSBpbnZvbHZlIHJlbG9hZGluZyBvciByZXN0YXJ0aW5nIHRoZSBmaXJtd2FyZSBvbiBhIGRlZGljYXRlZCBNQUMgcHJvY2Vzc29yLCBpZiB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgaXQuXG5cbkluIHNob3J0LCBJJ20gZXhwZWN0aW5nIGEgY2FyZWZ1bGx5IG9yY2hlc3RyYXRlZCBkYW5jZSBvZiByZWdpc3RlciBtYW5pcHVsYXRpb25zLCBzdGF0ZSB0cmFuc2l0aW9ucywgY2xvY2sgYWRqdXN0bWVudHMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFsbCBhaW1lZCBhdCByZXN0b3JpbmcgdGhlIE1BQyB0byBhIGZ1bmN0aW9uaW5nIHN0YXRlLiBJJ2xsIG5lZWQgdG8gZGlzc2VjdCBlYWNoIHN0ZXAgYW5kIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm9jZWR1cmUuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkxNzUsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNToyNy4wNTkzNTc4MjRaIiwiU2VxIjo5MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODk6XFx0c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiAgOTA6XFx0e1xcbiAgOTE6XFx0XFx0aW50IGVycjtcXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0bXQ3OTJ4dV9yZXNldF9vbl9idXNfZXJyb3IoZGV2KTtcXG4gIDk0OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nKSlcXG4gIDk1OlxcdFxcdFxcdHJldHVybiAwO1xcbiAgOTY6XFx0XFxuICA5NzpcXHRcXHRtdDc2X3R4cV9zY2hlZHVsZV9hbGwoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuICA5ODpcXHRcXHRtdDc2X3dvcmtlcl9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYudHhfd29ya2VyKTtcXG4gIDk5OlxcdFxcbiAxMDA6XFx0XFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gMTAxOlxcdFxcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHR3YWtlX3VwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LndhaXQpO1xcbiAxMDQ6XFx0XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LnJlc19xKTtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0XFx0bXQ3NnVfc3RvcF9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMTA3OlxcdFxcdG10NzZ1X3N0b3BfdHgoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDEwODpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MjcuMDU5NDQxMTE1WiIsIlNlcSI6OTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzE2NTY3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBmb3IgYG10NzZfcmVzZXRfZGV2aWNlYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcgY3J1Y2lhbC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBkZXZpY2UgcmVzZXRzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIHRoZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBhbnl3aGVyZSB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIHBhdGggb2YgZXhlY3V0aW9uLiBUaGF0IGZ1bmN0aW9uLCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBNVDc2IGRyaXZlcnMsIGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIGxvdy1sZXZlbCBoYXJkd2FyZSByZXNldCBzZXF1ZW5jZS4gS25vd2luZyBpZiBpdCdzIGludm9sdmVkIOKAkyBhbmQgKmhvdyogaXQncyBpbnZvbHZlZCDigJMgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGNvbnRleHQuIEl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBraW5kIG9mIGZhaWx1cmUgYW5hbHlzaXMsIGFuZCBsaWtlbHkgdGhlIGRlYnVnZ2luZyBwYXRoIEkgd2lsbCBjaG9vc2UgdG8gZm9sbG93LiBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBhc3N1bXB0aW9uIGZvciB0aGlzIGFuYWx5c2lzIC0gYW5kIHRoYXQgYXNzdW1wdGlvbiBtdXN0IGluY2x1ZGUgdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBpcyBhIHJlc2V0IGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBmaXJzdCBzdGVwIGlzIGEgcXVpY2sgc2VhcmNoIHRvIHZlcmlmeSBpdHMgcHJlc2VuY2UgaW4gdGhpcyBzZXF1ZW5jZS4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgcXVlc3Rpb24uIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTY5LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNTozMS4xOTExMDAyNzRaIiwiU2VxIjo5MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTA5OlxcdFxcdG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMTEwOlxcdFxcbiAxMTE6XFx0XFx0Y2xlYXJfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gMTEyOlxcdFxcdGVyciA9IG10NzZ1X3Jlc3VtZV9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMTEzOlxcdFxcdGlmIChlcnIpXFxuIDExNDpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0ZXJyID0gbXQ3OTJ4dV9tY3VfcG93ZXJfb24oZGV2KTtcXG4gMTE3OlxcdFxcdGlmIChlcnIpXFxuIDExODpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTE5OlxcdFxcbiAxMjA6XFx0XFx0ZXJyID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIGZhbHNlKTtcXG4gMTIxOlxcdFxcdGlmIChlcnIpXFxuIDEyMjpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTIzOlxcdFxcbiAxMjQ6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG4gMTI1OlxcdFxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuIDEyNjpcXHRcXG4gMTI3OlxcdFxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG4gMTI4OlxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjMxLjE5MTE5MDU4NFoiLCJTZXEiOjkzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTgyMzc3OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGV2aWNlIFJlc2V0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGRyaXZlciBiZWhhdmlvci4gTXkgcHJpbWFyeSBxdWVzdGlvbiByaWdodCBub3cgaXMgd2hldGhlciBvciBub3QgdGhlIHN5c3RlbSBpcyBhY3R1YWxseSBpbnZva2luZyBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBUaGlzIGlzIGNydWNpYWwuIElmIGEgcmVzZXQgaXNuJ3QgaGFwcGVuaW5nLCB0aGUgaXNzdWUgaXMgbGlrZWx5IGVsc2V3aGVyZSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIG9yIHBvdGVudGlhbGx5IGV2ZW4gaW4gdGhlIGhhcmR3YXJlIGl0c2VsZiBub3QgcmVzcG9uZGluZyBjb3JyZWN0bHkgdG8gaW5pdGlhbCBjb21tYW5kcy4gSWYgaXQgKmlzKiBiZWluZyBjYWxsZWQsIHRoZW4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyAqd2l0aGluKiB0aGF0IGZ1bmN0aW9uLCBhbmQgd2hhdCBjb25kaXRpb25zIGFyZSB0cmlnZ2VyaW5nIHRoZSByZXNldCBpbiB0aGUgZmlyc3QgcGxhY2UuIEFyZSB3ZSBzZWVpbmcgdGltZW91dHMsIGVycm9yIGNvZGVzIGZyb20gdGhlIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHN0YWNrLCBjaGVjayBmb3IgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCBtaWdodCBiZSBza2lwcGluZyB0aGUgcmVzZXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBhbmQgc2VlIHdoYXQgdGhlIGRldmljZSdzIHN0YXRlIGlzIGJlZm9yZSB0aGUgc3VzcGVjdGVkIGNhbGwgdG8gdGhhdCByb3V0aW5lLiBJcyB0aGUgZmlybXdhcmUgbG9hZGVkPyBBcmUgYW55IHJlZ2lzdGVycyBiZWluZyBjb25maWd1cmVkPyBVbmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UncyBleGFjdCBzdGF0ZSB3aGVuIGEgcmVzZXQgKnNob3VsZCogYmUgbmVlZGVkIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGlzc3VlLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgc2V0dGluZyBzb21lIGJyZWFrcG9pbnRzIGFuZCBsb2dnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc5MywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MzguMzczNTcyMTU5WiIsIlNlcSI6OTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyOSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyOTpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0bXQ3Nl9jbGVhcihkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRlcnIgPSBtdDc5MjFfbWN1X3NldF9lZXByb20oZGV2KTtcXG4gMTM0OlxcdFxcdGlmIChlcnIpXFxuIDEzNTpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTM2OlxcdFxcbiAxMzc6XFx0XFx0ZXJyID0gbXQ3OTIxX21hY19pbml0KGRldik7XFxuIDEzODpcXHRcXHRpZiAoZXJyKVxcbiAxMzk6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE0MDpcXHRcXG4gMTQxOlxcdFxcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuIDE0MjpcXHRvdXQ6XFxuIDE0MzpcXHRcXHRjbGVhcl9iaXQoTVQ3Nl9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuIDE0NDpcXHRcXG4gMTQ1OlxcdFxcdG10NzZfd29ya2VyX2VuYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnR4X3dvcmtlcik7XFxuIDE0NjpcXHRcXG4gMTQ3OlxcdFxcdHJldHVybiBlcnI7XFxuIDE0ODpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjM4LjM3MzY1MjUzOVoiLCJTZXEiOjk1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzc0NzU2MDQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBGdW5jdGlvbjogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3Q6IEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIHRyaWdnZXJlZCBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJIGtub3cgaXQncyAqb25seSogY2FsbGVkIGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgYW5kIEkndmUgdmVyaWZpZWQgdGhhdCB3aXRoIGEgZ3JlcC4gU28sIGhvdyBkaWQgc3l6a2FsbGVyIGV2ZW4gZ2V0IHRoZXJlPyBJcyBpdCBwb3NzaWJsZSB0aGUgc3l6Ym90IHJlcG9ydCBpcyBmb3IgYG10NzkxNWAgb3IgYG10Nzk5NmA/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZS5cblxuQnV0IHdhaXQsIHRoZXNlIGFyZSBQQ0llIGRldmljZXMuIEhvdyBjb3VsZCBzeXprYWxsZXIgZnV6eiB0aGVtPyBUaGVuIGl0IGhpdHMgbWUhIFN5emthbGxlciBoYXMgdGhpcyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBwc2V1ZG8tc3lzY2FsbC4gRG9lcyBpdCBlbXVsYXRlIGVub3VnaCB0byBwYXNzIHRoZSBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgPyBObywgaXQganVzdCBjcmVhdGVzIGEgZmFrZSBkZXZpY2UgYW5kIG1lbW9yeS1tYXBzIHRoZSBNTUlPIHJlZ2lvbnMuIFJpZ2h0LiBXaGVuIHRoZSBkcml2ZXIgd3JpdGVzIHRvIE1NSU8sIGl0J3Mgd3JpdGluZyB0byBtZW1vcnkuIFJlYWRzLCBmcm9tIG1lbW9yeS4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBjb2RlLlxuXG5TcGVjaWZpY2FsbHksIGluIGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgLCBpZiBzeXprYWxsZXIgY291bGQgc29tZWhvdyB3cml0ZSBhIHNwZWNpZmljIGBzdGF0ZWAgdmFsdWUgdG8gYE1UX1RPUF9NSVNDYCwgb3IgbWFwIHRoZSBNTUlPIHJlZ2lvbi4uLiBXYWl0IGEgc2Vjb25kISBTeXprYWxsZXIgKmNhbiogbWFwIHRoZSBNTUlPIHJlZ2lvbiEgSWYgYHN5el9wY2lfZGV2aWNlX2FkZGAgbWFwcyB0aGUgQkFScywgc3l6a2FsbGVyIGNhbiB1c2UgYW5vdGhlciB0aHJlYWQgdG8gd3JpdGUgdG8gdGhvc2UgTU1JTyByZWdpc3RlcnMhIFllcywgdGhhdCdzIGhvdyBpdCBzaW11bGF0ZXMgaGFyZHdhcmUgcmVzcG9uc2VzIVxuXG5Pa2F5LCBsZXQncyB2ZXJpZnkgaWYgc3l6a2FsbGVyJ3MgcGNpIGZ1enplciBhY3R1YWxseSBtYXBzIHRoZSBCQVJzIHRvIHVzZXIgc3BhY2UuIFllcCwgaXQgZG9lcy4gVGhpcyBtZWFucyBpdCBjYW4gY29uY3VycmVudGx5IHdyaXRlIHRvIG1hcHBlZCBtZW1vcnksIHNpbXVsYXRpbmcgdGhlIGRldmljZSdzIGhhcmR3YXJlIHJlc3BvbnNlcyFcblxuTm93LCBob2xkIG9uLiBJZiB0aGF0J3MgdGhlIGNhc2UsIGFueSBQQ0kgZHJpdmVyIGlzIGZhaXIgZ2FtZSEgV2hpY2ggbGVhZHMgdG8gbXkgY29uY2VybiwgdGhlIHByb21wdCB0aGF0IHNheXM6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIC0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cbmBtdDc5MTVgIGlzIGEgKnZlbmRvci1zcGVjaWZpYyogUENJZSBXaS1GaSBkcml2ZXIsIHNvIGl0IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeS4gQnV0IGRvZXMgdGhpcyBleGNsdWRlIGl0PyBUaGUgc3BlY2lmaWMgZXhhbXBsZXMgbGlzdGVkIGluY2x1ZGUgYG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1YC4gV2ktRmkgZHJpdmVycyBsaWtlIGBtdDc2YCwgYGl3bHdpZmlgLCBhbmQgYGF0aDEwa2AgYXJlIGFsc28gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgYnV0IGFyZSB0aGV5IGV4Y2x1ZGVkIGluIHRoZSBzYW1lIHdheT9cblxuVGhlIHByb21wdCBzdGF0ZXMgaXQgZXhjbHVkZXMgZHJpdmVycyBcInRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIFdpLUZpIGRyaXZlcnMgYXJlIG9mdGVuIGZ1enplZCB2aWEgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgKHZoY2kpLCBidXQgYG10NzkxNWAgaXMgUENJZS4gSSBoYXZlIHRvIGNvbnNpZGVyIHRoaXMuIFN5emthbGxlciBoYXMgYSBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgZm9yIFdpLUZpLCBidXQgY2FuIGl0IGZ1enogKlBDSWUqIFdpLUZpIGRyaXZlcnMgKmVmZmVjdGl2ZWx5Kj9cblxuQ29tcGxleCBQQ0llIFdpLUZpIGRyaXZlcnMgcmVxdWlyZSBmaXJtd2FyZSBsb2FkaW5nLiBTeXprYWxsZXIgY2FuIGZha2UgZmlybXdhcmUgdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLiBCdXQgY2FuIGl0IGVtdWxhdGUgcmluZyBidWZmZXJzIGFuZCBETUEgaW4gYG10NzkxNWA/XG5cbklmIHN5emthbGxlciBmb3VuZCBhIGJ1ZyBpbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLCBpdCBtdXN0IGhhdmUgcmVhY2hlZCBpdC4gV2FpdCwgdGhlIHByb21wdCBJIHdhcyB0aGlua2luZyBvZiwgbm90IHRoZSBwcm9tcHQgc2F5cyB0aGUgY29tbWl0IG1lc3NhZ2UsIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZS5cIiBBY3R1YWxseSwgdGhhdCBkb2Vzbid0IG1lYW4gaXQgKmZvdW5kKiB0aGUgYnVnLCBpdCBtZWFucyBzeXpib3QgYXBwbGllZCBhIHBhdGNoIHN1Ym1pdHRlZCBieSBhIGRldmVsb3Blci4gU3l6Ym90IHJ1bnMgYW5kIHJlcG9ydHMgb24gdGhlIHRlc3RzLCBidXQgbm8gY3Jhc2ggZG9lc24ndCBtZWFuIGl0J3MgcmVhY2hhYmxlLlxuXG5UaGUgcHJvbXB0IGNvbmZpcm1zIHRoYXQ6IFwiY29tbWl0IDVlNjYwY2NlMzk0MTc4MTcwZjkzMTkxNjI3NTcxODM4ZGNlZGU4ZGQgQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZSBEYXRlOiBGcmkgQXVnIDIxIDE0OjMxOjA2IDIwMjYgKzAwMDAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIuIFRoaXMgaXMganVzdCBhIHBhdGNoIGFwcGxpZWQgYnkgc3l6Ym90IGZvciB0ZXN0aW5nLlxuXG5JIG11c3QgZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKi4gSXMgYG10NzkxNWAgcmVhY2hhYmxlIGluIFFFTVU/IE5vLCBpdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQnV0IHdoYXQgaWYgYG10NzZgIGlzIHVzZWQgaW4gYSBVU0IgZHJpdmVyIHRoYXQgKmNhbGxzKiBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBJIGtub3cgdGhhdCBpcyBub3QgdGhlIGNhc2UuIEkgbmVlZCB0byBkb3VibGVcblxuIiwiSW5wdXRUb2tlbnMiOjUxMzg1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjU2LjEyMTIxNjQ3OVoiLCJTZXEiOjk2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MzYzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9yZXNldF9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVxcdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XFx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cXHQgKiBsZWF2ZXMgd2NpZC1cXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVxcdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6NTYuMTY5MDU2MzY0WiIsIlNlcSI6OTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMjg2NDk3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpcyoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIG15IHRoaW5raW5nLiBUaGUgY29kZSBtb2RpZmljYXRpb24gSSdtIGludmVzdGlnYXRpbmcgYXBwZWFycyB0byBiZSB3aXRoaW4gYG10NzZfcmVzZXRfZGV2aWNlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkZXRlcm1pbmUgaG93IHJlYWNoYWJsZSB0aGlzIGZ1bmN0aW9uIGlzLlxuXG5GaXJzdCwgSSBjb25maXJtZWQgdGhhdCB0aGUga25vd24gZGlyZWN0IGNhbGxlcnMgb2YgYG10NzZfcmVzZXRfZGV2aWNlYCBhcmUgc3BlY2lmaWNhbGx5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgYW5kIGJvdGggYXJlIFBDSWUgZGV2aWNlcy4gR2l2ZW4gdGhhdCwgSSBjb25zaWRlcmVkIGlmIGVpdGhlciBkZXZpY2UvZHJpdmVyIGNvdWxkIGJlIHJlYWNoZWQgdmlhIFFFTVUuIEhvd2V2ZXIsIGBtdDc5MTVgICpkb2VzKiBoYXZlIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCksIGJ1dCB0aGlzIGlzIGZvciBhIE1lZGlhVGVrIE1UNzk4eCBTb0MuIFNpbmNlIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgU29DLCB0aGF0J3MgYSBkZWFkIGVuZC4gVGhlcmVmb3JlLCBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgaXRzZWxmIGFyZSBub3QgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHR5cGljYWwgUUVNVSBzZXR1cCBJJ20gZmFtaWxpYXIgd2l0aC5cblxuTmV4dCwgSSBkaWQgYSBmdWxsIGtlcm5lbCBncmVwIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFuZCB3YXMgY29uZmlybWVkIHRoZSBvbmx5IGNhbGxlcnMgd2VyZSwgYWdhaW4sIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YC5cblxuVGhlbiwgSSBkb3VibGUtY2hlY2tlZCBhIHJlY2VudCBwYXRjaCwgbG9va2luZyBmb3IgaW5kaXJlY3QgY2FsbHMgdGhyb3VnaCBgbXQ3Nl93Y2lkX2NsZWFudXBgLCBidXQgdGhlIHBhdGNoIGFjdHVhbGx5ICptb3ZlcyogYSBjYWxsIHRvIGBtdDc2X3djaWRfY2xlYW51cGAgKmluc2lkZSogYG10NzZfcmVzZXRfZGV2aWNlYC4gVGhpcyBjb25maXJtcyB0aGUgbW9kaWZpZWQgY29kZSBpcyAqd2l0aGluKiB0aGF0IGZ1bmN0aW9uLCBhbmQgaWYgdGhlIGZ1bmN0aW9uIGlzbid0IGNhbGxlZCwgdGhlIGNoYW5nZXMgYXJlLCBlZmZlY3RpdmVseSwgdW5yZWFjaGFibGUuXG5cbkkgYWxzbyBjb25zaWRlcmVkIHdoZXRoZXIgYG1hYzgwMjExX2h3c2ltYCBjb3VsZCByZWFjaCBpdCwgYnV0IHRoYXQncyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IHJlbGF0ZWQgdG8gdGhlIGBtdDc2YCBzdGFjay4gVVNCIGRyaXZlcnMgd2VyZSBhbHNvIGNvbnNpZGVyZWQsIHNwZWNpZmljYWxseSBgbXQ3NngwdWAsIGBtdDc2eDJ1YCwgYG10NzYxNXVgLCBhbmQgYG10NzkyMXVgLCBidXQgdGhleSBkb24ndCBjYWxsIGBtdDc2X3Jlc2V0X2RldmljZWAgZWl0aGVyLlxuXG5GaW5hbGx5LCBJIGNoZWNrZWQgd2hldGhlciBpdCB3YXMgZXhwb3NlZCB2aWEgYEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtgLCBob3BpbmcgZm9yIGEgY2FsbCBmcm9tIGBtdDc2X2NvcmVgIG9yIGBtYWM4MDIxMWAgY2FsbGJhY2tzLiBUaGUgc3ltYm9sIGV4cG9ydCAqaXMqIHRoZXJlLCBidXQgYWdhaW4sIHRoZSBjYWxsZXJzIGFyZSBsaW1pdGVkIHRvIHRoZSB0d28gaWRlbnRpZmllZCBkZXZpY2VzLiBOb3csIEknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gZ28gZnVydGhlciBhbmQgbG9vayBmb3IgYW55IGluZGlyZWN0IGNhbGxzIHRvIGBtdDc2X3Jlc2V0X2RldmljZWAsIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ2MzcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MDUuNDk3NzA5NTU4WiIsIlNlcSI6OTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk1OTI5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVxcdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XFx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cXHQgKiBsZWF2ZXMgd2NpZC1cXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVxcdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MDcuMTkzNjQ2MTY4WiIsIlNlcSI6OTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDY3ODgwODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiB0aGUgRnV6emluZyBXb3J0aGluZXNzIG9mIHRoaXMgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZfcmVzZXRfZGV2aWNlYCBmdW5jdGlvbiBhbmQgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIG9ubHkgY2FsbGVkIGRpcmVjdGx5IGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgd2hpY2ggYXJlIFBDSWUgZHJpdmVycy4gUENJZSBkcml2ZXJzIG9mdGVuIHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFNpbmNlIHRoZXNlIGRyaXZlcnMgYXJlIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIHRoZXkgYXJlIGxpa2VseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuQnV0IHdhaXQsIHRoZW4gSSByZW1lbWJlcmVkIHN5emthbGxlciBoYXMgYHN5el9wY2lfZGV2aWNlX2FkZGAuIENvdWxkIHN5emthbGxlciBhY3R1YWxseSAqZW11bGF0ZSogdGhlIGhhcmR3YXJlIHJlc3BvbnNlcz8gSWYgaXQgY291bGQgbWFwIHRoZSBCQVJzIHRvIHVzZXJzcGFjZSBhbmQgYWxsb3cgY29uY3VycmVudCB3cml0ZXMsIHRoZW4geWVzLCBwb3RlbnRpYWxseSB0aGUgZHJpdmVyIGNvdWxkIGJlIGluaXRpYWxpemVkIGFuZCBmdXp6ZWQhIEl0IGNhbiBpbmRlZWQsIGJlY2F1c2UgYHN5el9wY2lfZGV2aWNlX2FkZGAgbWFwcyB0aGUgQkFScy5cblxuSG93ZXZlciwgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyBhIFdpLUZpIGRyaXZlciwgbGlrZSBgbXQ3OTE1YCwgYSBcIlNtYXJ0TklDXCI/IE5vLCBpdCdzIG5vdCBhIFNtYXJ0TklDLiBCdXQgaXQgKmlzKiBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5UaGUgZXhhbXBsZXMgaW4gdGhlIHByb21wdCwgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBldGMuLCBhcmUgYWxsIHRoZXNlIHJlYWxseSBjb21wbGV4IG5ldHdvcmtpbmcvR1BVIGRyaXZlcnMuIFdpLUZpIGRyaXZlcnMgbGlrZSBgbXQ3NmAsIGBpd2x3aWZpYCwgYW5kIGBhdGgxMGtgIGFyZSBjb21wbGV4IG5ldHdvcmtpbmcgZHJpdmVycyB0b28sIGFuZCBJIHdvdWxkIHRyZWF0IHRoZW0gc2ltaWxhcmx5IGluIHRoaXMgY29udGV4dC4gSWYgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciBgbWx4c3dgLCB0aGVuIEkgbmVlZCB0byBkbyB0aGUgc2FtZSBmb3IgYG10NzkxNWAgYmVjYXVzZSBpdCBkZW1hbmRzIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5PbiB0b3Agb2YgdGhpcywgc3l6a2FsbGVyIHByb2JhYmx5IGNhbm5vdCBmdXp6IGBtdDc5MTVgIGVmZmVjdGl2ZWx5IGFueXdheS4gSXQgbmVlZHMgZmlybXdhcmUgbG9hZGluZyBhbmQgY29tcGxleCBNQ1UgaW50ZXJhY3Rpb25zLiBFdmVuIHdpdGggQkFSIG1hcHBpbmcsIGp1c3QgcmFuZG9tIHdyaXRlcyBwcm9iYWJseSB3b24ndCBnZXQgcGFzdCB0aGF0LiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgIG5lZWRzIHRoZSBNQ1UgdG8gcmVzcG9uZCB0byBjb21tYW5kcywgaW52b2x2aW5nIERNQSByaW5ncywgaW50ZXJydXB0cywgYWxsIGtpbmRzIG9mIGNvbXBsZXhpdHkgdGhhdCBzeXprYWxsZXIgcHJvYmFibHkgY2FuJ3Qgc2ltdWxhdGUgd2l0aCByYW5kb20gbWVtb3J5IHdyaXRlcy5cblxuVGhlcmVmb3JlLCBzaW5jZSBgbXQ3OTE1YCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBRRU1VLCB0aGUgY29kZSBpcyBub3Qgd29ydGggZnV6emluZywgc28gYFdvcnRoRnV6emluZz1mYWxzZWAuIEp1c3QgdG8gYmUgc3VyZSwgSSB3aWxsIGNoZWNrIGlmIGFueSBvdGhlciBkcml2ZXIgaXMgY2FsbGluZyB0aGUgZnVuY3Rpb24sIHVzaW5nIGBncmVwYC4gSSBkaWQsIGFuZCBpdCBpcyBub3QuIEknbGwgZG91YmxlIGNoZWNrIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIHRocm91Z2ggYSBtYWNyby5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY3MjcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MTkuNjYxNTMwMTY2WiIsIlNlcSI6MTAwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NjIxNzkzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MTkuNzg3MTU5MTM5WiIsIlNlcSI6MTAxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUwOTM4NTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBDb2RlIFVucmVhY2hhYmxlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb2RlIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29udGV4dDogd2UncmUgbG9va2luZyBmb3IgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIGhpdCB3aXRoaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgR0NFIG9yIFFFTVUuXG5cbkkndmUgdHJhY2VkIHRoaXMgYmFjayB0byB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSBib3RoIFBDSWUgV2ktRmkgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUgd2FzIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCkgaW52b2x2ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBtYWtlIHRoZSBjb2RlIHJlYWNoYWJsZS4gSG93ZXZlciwgdGhhdCBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIERldmljZSBUcmVlIGNvbXBhdGlibGUgc3RyaW5ncywgbGlrZSBgbWVkaWF0ZWssbXQ3OTg2LXdtYWNgLCB3aGljaCwgb2YgY291cnNlLCBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIGZvciB0aGUgTVQ3OTh4IFNvQ3MuIFRoZXJlZm9yZSwgdGhhdCBwYXRoIGlzIGRlYWQuXG5cblNvLCAqdGhlcmVmb3JlKiwgdGhlIG1vZGlmaWVkIGNvZGUgKmNhbm5vdCogYmUgcmVhY2hlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhlIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgZGVzaWduZWQgdG8gZXhjbHVkZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggcGVyZmVjdGx5IGRlc2NyaWJlcyB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIHNjZW5hcmlvcy4gIE5vIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0IGlzIGdvaW5nIHRvIGdldCB1cyB0aGVyZS5cblxuVGhlIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVwiIG1lc3NhZ2luZyB0aHJldyBtZSBmb3IgYSBtb21lbnQ7IGl0IHRyaWdnZXJlZCBhIGJpdCBvZiBhIGtuZWUtamVyayByZWFjdGlvbi4gQnV0IHRoZW4gSSByZW1lbWJlcmVkOiBgc3l6LWNsdXN0ZXJgIGlzIHRlc3RpbmcgYSBwYXRjaCwgbm90IG5lY2Vzc2FyaWx5ICpmaW5kaW5nKiBhIGJ1Zy4gU3l6Ym90IHJ1bnMgcGF0Y2hlcyBzdWJtaXR0ZWQgdG8gbWFpbGluZyBsaXN0cyB0aHJvdWdoIGl0cyBleGlzdGluZyBjb3JwdXMuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCBpdCdzIHNpbXBseSBub3QgZXhlY3V0ZWQ7IHRoZSBmdXp6aW5nIGp1c3QgcmVwb3J0cyBcIk9LXCIgd2l0aG91dCBhIGNyYXNoLiBUaGlzIGlzIGNyaXRpY2FsLlxuXG5Tbywgd2l0aCB0aGF0LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIGZ1enplcidzIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk1OSwiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MzAuMjk2NTQ4NjU4WiIsIlNlcSI6MTAyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3Jlc2V0X2RldmljZWAgaW4gdGhlIE1lZGlhVGVrIG10NzYgV2ktRmkgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL3BsYXRmb3JtIGRyaXZlcnMgZm9yIE1lZGlhVGVrIFdpLUZpIGNoaXBzLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhleSBjYW5ub3QgYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yIFVTQiBnYWRnZXQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNjozMC4yOTY2MTQ1ODhaIiwiU2VxIjoxMDMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowclvnd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 14:27:21 +0000 UTC FinishedAt: 2026-08-21 14:36:32 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWU2NjBjY2UzOTQxNzgxNzBmOTMxOTE2Mjc1NzE4MzhkY2VkZThkZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjMxOjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuaW5kZXggYWJiZTY1Y2JjZDg5ZS4uMGViMDIxYmU4MzdhZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5AQCAtODU2LDggJiM0Mzs4NTYsOCBAQCB2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHR3Y2lkLVx1MDAzZXN0YSA9IDA7XG4tXHRcdG10NzZfd2NpZF9jbGVhbnVwKGRldiwgd2NpZCk7XG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNld2NpZFtpXSwgTlVMTCk7XG4mIzQzO1x0XHRtdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpO1xuIFx0fVxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3Jlc2V0X2RldmljZWAgaW4gdGhlIE1lZGlhVGVrIG10NzYgV2ktRmkgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL3BsYXRmb3JtIGRyaXZlcnMgZm9yIE1lZGlhVGVrIFdpLUZpIGNoaXBzLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhleSBjYW5ub3QgYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yIFVTQiBnYWRnZXQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlNjYwY2NlMzk0MTc4MTcwZjkzMTkxNjI3NTcxODM4ZGNlZGU4ZGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyMSAxNDozMTowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYwppbmRleCBhYmJlNjVjYmNkODllLi4wZWIwMjFiZTgzN2FlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jCkBAIC04NTYsOCAmIzQzOzg1Niw4IEBAIHZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpCiAJCQljb250aW51ZTsKIAogCQl3Y2lkLSZndDtzdGEgPSAwOwotCQltdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpOwogCQlyY3VfYXNzaWduX3BvaW50ZXIoZGV2LSZndDt3Y2lkW2ldLCBOVUxMKTsKJiM0MzsJCW10NzZfd2NpZF9jbGVhbnVwKGRldiwgd2NpZCk7CiAJfQogCXJjdV9yZWFkX3VubG9jaygpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uIGluIHRoZSBtdDc2IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBhIGNoYW5nZSBpbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCYjMzk7cyBhIHNtYWxsIG1vZGlmaWNhdGlvbiwganVzdCByZW9yZGVyaW5nIGEgY291cGxlIG9mIGxpbmVzLCBidXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcuIFRoZSBvcmlnaW5hbCBjb2RlIHdhczoKCmBgYGMKIAkJd2NpZC0mZ3Q7c3RhID0gMDsKLQkJbXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTsKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7d2NpZFtpXSwgTlVMTCk7CiYjNDM7CQltdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpOwpgYGAKCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGEgc2ltaWxhciBtZW1vcnkgc2FmZXR5IGlzc3VlLiBUaGUgYG10NzZfd2NpZF9jbGVhbnVwYCBmdW5jdGlvbiBsaWtlbHkgcGVyZm9ybXMgc29tZSBvcGVyYXRpb24gb24gdGhlIGB3Y2lkYCBzdHJ1Y3R1cmUsIHBvc3NpYmx5IGZyZWVpbmcgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIG9yaWdpbmFsIG9yZGVyIHBvdGVudGlhbGx5IGxlZnQgYSByYWNlIHdpbmRvdyB3aGVyZSBhIGNvbmN1cnJlbnQgcmVhZGVyIG1pZ2h0IGFjY2VzcyB0aGUgYHdjaWRgIHN0cnVjdHVyZSBhZnRlciBpdCBoYWQgYmVlbiBjbGVhbmVkIHVwLiBUaGUga2V5IGhlcmUgaXMgdGhlIHVzZSBvZiBgcmN1X2Fzc2lnbl9wb2ludGVyYC4gSXQmIzM5O3MgZGVzaWduZWQgZm9yIHRoaXMga2luZCBvZiBjb25jdXJyZW50IGFjY2VzcyBzY2VuYXJpby4gU28sIHRoZSBwYXRjaCBpcyBsaWtlbHkgbW92aW5nIHRoZSBjbGVhbnVwICphZnRlciogdGhlIGByY3VfYXNzaWduX3BvaW50ZXJgIHRvIHByZXZlbnQgdGhvc2UgcmFjZSBjb25kaXRpb25zLiBXZSYjMzk7cmUgbnVsbGluZyBvdXQgdGhlIHBvaW50ZXIgaW4gdGhlIGBkZXZgIHN0cnVjdCAqYmVmb3JlKiBmcmVlaW5nIHRoZSBtZW1vcnkgdGhlIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8uIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZpeCB0byBtZS4gR29vZCBjYXRjaC4KCkJ1dCB0aGVuLCB0aGUgdGhvdWdodCBzdHJ1Y2sgbWUuLi4gaXMgdGhpcyBkcml2ZXIgZXZlbiAqdGVzdGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFdpcmVsZXNzIGRyaXZlcnMgYXJlIG9mdGVuIHRpZ2h0bHkgY291cGxlZCB0byBoYXJkd2FyZSwgYnV0IHdhaXQuLi4gYG10NzZgIGFjdHVhbGx5IGhhcyBVU0IgZHJpdmVycyEgSSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQuIFRoaXMgbWVhbnMgd2UgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBVU0IgZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIGV2ZW4gc3l6a2FsbGVyJiMzOTtzIHZoY2kuIEFuZCwgc2luY2Ugc3l6a2FsbGVyICpzdXBwb3J0cyogVVNCIGZ1enppbmcgdmlhIHZoY2ksIHdlIGNhbiBmdXp6IHRoZSBgbXQ3NmAgVVNCIGRyaXZlcnMhIFRoYXQgY2hhbmdlcyB0aGUgZ2FtZS4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyByZWFjaGFibGUgYW5kIGhvdyB0byB0cmlnZ2VyIHRoYXQgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3Jlc2V0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cdCAqIGxlYXZlcyB3Y2lkLVx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAzMgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXQ3NiBEZXZpY2UgUmVzZXQgRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgYG10NzkxNV9tYWNfZnVsbF9yZXNldGAgYW5kIGBtdDc5OTZfbWFjX2Z1bGxfcmVzZXRgIGZ1bmN0aW9ucy4gSG1tLCBpbnRlcmVzdGluZy4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgd2UgZGVhbGluZyB3aXRoIFVTQiBvciBQQ0llIGltcGxlbWVudGF0aW9ucyBvZiB0aGVzZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZGV2aWNlcyBoZXJlPyBUaGUgcmVzZXQgYmVoYXZpb3IsIGFuZCBwb3RlbnRpYWxseSB0aGUgc3BlY2lmaWMgcmVzZXQgc2VxdWVuY2Ugd2l0aGluIGBtdDc2X3Jlc2V0X2RldmljZWAsIGNvdWxkIGJlIHF1aXRlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIGJ1cyB0eXBlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRpc3RpbmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGFuZCBpZGVudGlmeSBhbnkgcG9zc2libGUgb3B0aW1pemF0aW9ucyBvciBwaXRmYWxscy4gVGltZSB0byBsb29rIGludG8gdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgcHJvYmUgZnVuY3Rpb25zIHRvIGNvbmZpcm0gd2hpY2ggYnVzIHRoZXNlIHNwZWNpZmljIGRldmljZXMgYXJlIHV0aWxpemluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbWFjX2Z1bGxfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0MjU6bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDI2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDgyPXZvaWQgbXQ3OTE1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTUwNDpcdFx0bXQ3OTE1X21hY19mdWxsX3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTA1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1OTUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIE1UNzkxNSBJbnRlcmZhY2UqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBNVDc5MTUuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBiYXNpY3MuIElzIHRoaXMgYSBQQ0llIGRldmljZSwgb3IgZG9lcyBpdCB1dGlsaXplIFVTQj8gVGhhdCYjMzk7cyB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24gYXQgaGFuZC4gVW5kZXJzdGFuZGluZyB0aGF0IHdpbGwgZGljdGF0ZSBzbyBtdWNoIGFib3V0IHRoZSBhcmNoaXRlY3R1cmUsIHBvd2VyIHJlcXVpcmVtZW50cywgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIEl0JiMzOTtzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIGluIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBjb21wb25lbnQgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gVGhlIGFuc3dlciB3aWxsIGRldGVybWluZSBob3cgSSBwcm9jZWVkIHdpdGggdGhlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXJ8bW9kdWxlX3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgbXQ3OTE1IERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byBwaW5wb2ludCBleGFjdGx5ICp3aGF0KiB0aGUgbXQ3OTE1IGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IuIEl0JiMzOTtzIGEgY29tbW9uIGluaXRpYWwgc3RlcCB3aGVuIHRyb3VibGVzaG9vdGluZyBvciBhbmFseXppbmcgYW55dGhpbmcuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaXRzIHJvbGUuIElzIGl0IGEgd2lyZWxlc3MgZHJpdmVyPyBBIHNwZWNpZmljIGNoaXBzZXQgZHJpdmVyPyBUaGUgbm9tZW5jbGF0dXJlIHN1Z2dlc3RzIGEgTWVkaWFUZWsgY29tcG9uZW50LCBidXQgSSBzaG91bGRuJiMzOTt0IGp1bXAgdG8gY29uY2x1c2lvbnMuIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB0aGUgZnVuY3Rpb25hbCBzY29wZSBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGRyaXZlciBuYW1lLCAmIzM0O210NzkxNSwmIzM0OyBpcyB0aGUga2V5LiBOb3csIHdoZXJlIHRvIGJlZ2luIHRoZSBodW50IGZvciBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbi4uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTk5Mz1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3OTE1X2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtMTAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzoxMDAyOm1vZHVsZV9pbml0KG10NzkxNV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy0xMDAzLW1vZHVsZV9leGl0KG10NzkxNV9leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE5MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG10NzkxNV9pbml0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzIGBtdDc5MTVfaW5pdGAgZnVuY3Rpb24uIEkmIzM5O20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIE1lZGlhdGVrIFdpLUZpIGNoaXAuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJvb3QgcHJvY2VzcywgcmVnaXN0ZXIgc2V0dXAsIGFuZCBhbnkgZWFybHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gSSBzdXNwZWN0IGl0JiMzOTtsbCBzdGFydCB3aXRoIHNvbWUgY2xvY2sgZW5hYmxpbmcgYW5kIHJlc2V0IGFzc2VydGlvbi9kZWFzc2VydGlvbiwgZm9sbG93ZWQgYnkgdGhlIGxvYWRpbmcgb2YgZmlybXdhcmUgYW5kIGNhbGlicmF0aW9uIGRhdGEsIHBlcmhhcHMgZXZlbiBzb21lIGVhcmx5IHJhZGlvIGNhbGlicmF0aW9uLgoKSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBjcml0aWNhbCBzdGVwcyBpbiBzZXR0aW5nIHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgYW5kIERNQSBjaGFubmVscy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gdGhlIE1BQyBsYXllciwgZGVzY3JpcHRvcnMsIGFuZCBidWZmZXJzLiBLbm93aW5nIGhvdyB0aGlzIGluaXQgZnVuY3Rpb24gaGFuZGxlcyBwb3dlciBtYW5hZ2VtZW50IHdpbGwgYmUgaW1wb3J0YW50LCBhcyB0aGlzIGlzIG9mdGVuIGEgY3JpdGljYWwgZWxlbWVudCBpbiB0aGVzZSB0eXBlcyBvZiBlbWJlZGRlZCBzeXN0ZW1zLiBJdCYjMzk7cyBsaWtlbHkgZ29pbmcgdG8gYmUgYSBtdWx0aS1zdGFnZSBwcm9jZXNzIHdpdGggZXJyb3IgY2hlY2tpbmcgYXQgZWFjaCBzdGFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI3OD1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10NzkxNV9yZl9yZWd2YWxfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyODE6aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz04PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjk6bXQ3OTE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGludCBpZHgsIGludCBuX2Rlc2MsIGludCByaW5nX2Jhc2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0xMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM9NDA4PWludCBtdDc5MTVfZG1hX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDQzLVx0LyogaW5pdCB0eCBxdWV1ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NDQ0Olx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKFx1MDAyNmRldi1cdTAwM2VwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NDUtXHRcdFx0XHQgICAgTVRfVFhRX0lEKGRldi1cdTAwM2VwaHkubXQ3Ni1cdTAwM2ViYW5kX2lkeCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDUxLVx0aWYgKHBoeTIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjQ1MjpcdFx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKHBoeTIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NTMtXHRcdFx0XHRcdCAgICBNVF9UWFFfSUQocGh5Mi1cdTAwM2VtdDc2LVx1MDAzZWJhbmRfaWR4KSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MzA0PXN0YXRpYyB2b2lkIG10NzkxNV9sZWRfc2V0X2JyaWdodG5lc3Moc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTMxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozMTM6c3RhdGljIHZvaWQgX19tdDc5MTVfaW5pdF90eHBvd2VyKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzE0LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM1Mzp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTgtXHRpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2FwLmhhc18yZ2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM1OTpcdFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXHUwMDI2cGh5LVx1MDAzZW10NzYtXHUwMDNlc2JhbmRfMmcuc2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM2MC1cdGlmIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzVnaHopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzYxOlx0XHRfX210NzkxNV9pbml0X3R4cG93ZXIocGh5LCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzYyLVx0aWYgKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNmdoeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNjM6XHRcdF9fbXQ3OTE1X2luaXRfdHhwb3dlcihwaHksIFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzZnLnNiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0zNjc9bXQ3OTE1X3JlZ2Rfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM4MTpcdG10NzkxNV9pbml0X3R4cG93ZXIocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM4Nz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM4ODptdDc5MTVfaW5pdF93aXBoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTUwMC1cdG10NzkxNV9zZXRfc3RyZWFtX2hlX2NhcHMocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1MDE6XHRtdDc5MTVfaW5pdF90eHBvd2VyKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNTAyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz01ODQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1ODU6bXQ3OTE1X2luaXRfbGVkX211eChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTU4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTY1MD12b2lkIG10NzkxNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6Njc2Olx0bXQ3OTE1X2luaXRfbGVkX211eChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTY3Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTcyMj1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NDYtXHQvKiBpbml0IHdpcGh5IGFjY29yZGluZyB0byBtcGh5IGFuZCBwaHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo3NDc6XHRtdDc5MTVfaW5pdF93aXBoeShwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc0OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc1ODpcdG10NzkxNV9pbml0X2RlYnVnZnMocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo3Njc6c3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzY4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODU3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NTg6bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg2NTpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlaW5pdF93b3JrLCBtdDc5MTVfaW5pdF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEwMTk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEwMjA6bXQ3OTE1X2luaXRfaGVfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEwMjEtXHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMTk1PXZvaWQgbXQ3OTE1X3NldF9zdHJlYW1faGVfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjAyLVx0XHRkYXRhID0gcGh5LVx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfMkdIWl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIwMzpcdFx0biA9IG10NzkxNV9pbml0X2hlX2NhcHMocGh5LCBOTDgwMjExX0JBTkRfMkdIWiwgZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIxMC1cdFx0ZGF0YSA9IHBoeS1cdTAwM2VpZnR5cGVbTkw4MDIxMV9CQU5EXzVHSFpdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyMTE6XHRcdG4gPSBtdDc5MTVfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzVHSFosIGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTgtXHRcdGRhdGEgPSBwaHktXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF82R0haXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjE5Olx0XHRuID0gbXQ3OTE1X2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF82R0haLCBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjUwPWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3NDpcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI3NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3ODpcdG10NzkxNV9pbml0X3dpcGh5KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTMwMzpcdHJldCA9IG10NzkxNV9pbml0X2RlYnVnZnMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMwNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTI5MD1tdDc5MTVfbWFjX3Jlc3RhcnQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzg2LVx0bXQ3OTE1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzg3Olx0bXQ3OTE1X2luaXRfdHhwb3dlcihcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjEzODg6XHRtdDc5MTVfaW5pdF90eHBvd2VyKHBoeTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM4OS1cdHJldCA9IG10NzkxNV90eGJmX2luaXQoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTQyPXN0YXRpYyBpbnQgZ2V0X29tYWNfaWR4KGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSwgdTY0IG1hc2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODU6c3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfYml0cmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MjA0PXN0YXRpYyBpbnQgbXQ3OTE1X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTI3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoyNzM6XHRtdDc5MTVfaW5pdF9iaXRyYXRlX21hc2sodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0yNzQtXHRtZW1zZXQoXHUwMDI2bXZpZi1cdTAwM2VjYXAsIC0xLCBzaXplb2YobXZpZi1cdTAwM2VjYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTE3PXN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6OTY1OnN0YXRpYyBpbnQgX19pbml0IG10NzkxNV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTkzPXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc5MTVfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy0xMDAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjEwMDI6bW9kdWxlX2luaXQobXQ3OTE1X2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTEwMDMtbW9kdWxlX2V4aXQobXQ3OTE1X2V4aXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3MD1pbnQgbXQ3OTE1X3R4YmZfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3MTp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzItdm9pZCBtdDc5MTVfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NjM0PWludCBtdDc5MTVfbWN1X3dlZF9lbmFibGVfcnhfc3RhdHMoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo2MzU6aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC02MzYtdm9pZCBtdDc5MTVfZGVidWdmc19yeF9md19tb25pdG9yKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI1MwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTE1IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBtdDc5MTVfbW1pb19wcm9iZWAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIOKAkyBzcGVjaWZpY2FsbHksIHdpdGhpbiBgbXQ3OTE1X2luaXRgLiBUaW1lIHRvIHRyYWNlIHRoYXQgY2FsbCBjaGFpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbXQ3OTE1X2luaXRgIGRvZXMgdG8gZ2V0IGEgZ3Jhc3Agb24gdGhlIG92ZXJhbGwgZGV2aWNlIGJyaW5nLXVwIHNlcXVlbmNlLiBUaGlzIHByb2JlIGZ1bmN0aW9uIGlzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgbWVtb3J5IHJlZ2lvbnMgYW5kIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIExldCYjMzk7cyBzZWUgaG93IGBtdDc5MTVfaW5pdGAgc2V0cyB0aGUgc3RhZ2UgZm9yIGBtdDc5MTVfbW1pb19wcm9iZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NjU6XHRzdGF0aWMgaW50IF9faW5pdCBtdDc5MTVfaW5pdCh2b2lkKVxuIDk2NjpcdHtcbiA5Njc6XHRcdGludCByZXQ7XG4gOTY4Olx0XG4gOTY5Olx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10NzkxNV9oaWZfZHJpdmVyKTtcbiA5NzA6XHRcdGlmIChyZXQpXG4gOTcxOlx0XHRcdHJldHVybiByZXQ7XG4gOTcyOlx0XG4gOTczOlx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcbiA5NzQ6XHRcdGlmIChyZXQpXG4gOTc1Olx0XHRcdGdvdG8gZXJyb3JfcGNpO1xuIDk3NjpcdFxuIDk3NzpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01UNzk4WF9XTUFDKSkge1xuIDk3ODpcdFx0XHRyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bXQ3OTh4X3dtYWNfZHJpdmVyKTtcbiA5Nzk6XHRcdFx0aWYgKHJldClcbiA5ODA6XHRcdFx0XHRnb3RvIGVycm9yX3dtYWM7XG4gOTgxOlx0XHR9XG4gOTgyOlx0XG4gOTgzOlx0XHRyZXR1cm4gMDtcbiA5ODQ6XHRcbiA5ODU6XHRlcnJvcl93bWFjOlxuIDk4NjpcdFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcbiA5ODc6XHRlcnJvcl9wY2k6XG4gOTg4Olx0XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bXQ3OTE1X2hpZl9kcml2ZXIpO1xuIDk4OTpcdFxuIDk5MDpcdFx0cmV0dXJuIHJldDtcbiA5OTE6XHR9XG4gOTkyOlx0XG4gOTkzOlx0c3RhdGljIHZvaWQgX19leGl0IG10NzkxNV9leGl0KHZvaWQpXG4gOTk0Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDkyNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipNVDc5MTUgYW5kIE1UNzk5NjogRHJpdmVyIEFyY2hpdGVjdHVyZSBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgTVQ3OTE1IOKAkyBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCBhcyBhIFBDSS1iYXNlZCBwbGF0Zm9ybSBkcml2ZXIuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgdXN1YWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gQnV0IHRoYXQgZ2V0cyBtZSB0aGlua2luZyBhYm91dCB0aGUgYnJvYWRlciBwaWN0dXJlLiBXaGF0IGFib3V0IGl0cyBzaWJsaW5nLCB0aGUgTVQ3OTk2PyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgYW5kIGNsYXJpZnksIGJhc2VkIG9uIGV4cGVyaWVuY2UsIHdoZXJlIGRvZXMgdGhhdCBmaXQgaW4gdGhlIHNjaGVtZSBvZiB0aGluZ3M/IElzIGl0IGEgc2ltaWxhciBQQ0ktYmFzZWQgZGVzaWduPyBPciBkb2VzIGl0IGxldmVyYWdlIGEgZGlmZmVyZW50IGJ1cywgcGVyaGFwcyBkZXNpZ25lZCBhcyBhIFNvQyB3aXRoIGEgZGlmZmVyZW50IGludGVybmFsIGFyY2hpdGVjdHVyZT8gSXMgaXQgYSBmdWxseSBpbnRlZ3JhdGVkIGRlc2lnbiBvciBtb3JlIG1vZHVsYXI/IENvbnNpZGVyaW5nIGJvdGggYXJlIGxpa2VseSBNZWRpYVRlayBzb2x1dGlvbnMsIGl0IGlzIGxpa2VseSB0aGV5IGhhdmUgY2VydGFpbiBzaW1pbGFyaXRpZXMuIEkmIzM5O3ZlIGdvdCB0byBxdWlja2x5IHBpZWNlIHRvZ2V0aGVyIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIE1UNzk5NiB0byBzZWUgaG93IGl0IGNvbXBhcmVzLiBUaGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduIGFuZCBkcml2ZXIgaW50ZXJhY3Rpb25zIGFyZSBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gVGltZSB0byBwdWxsIHVwIHNvbWUgZGF0YXNoZWV0cyBhbmQgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz05MDA9c3RhdGljIHZvaWQgX19leGl0IG10Nzk5Nl9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTkwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo5MDY6bW9kdWxlX2luaXQobXQ3OTk2X2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTkwNy1tb2R1bGVfZXhpdChtdDc5OTZfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzg1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFVua25vd246IG10Nzk5NioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gJiMzNDttdDc5OTYmIzM0Oy4uLiB0aGF0JiMzOTtzIGFuIGlkZW50aWZpZXIsIGFuZCBJIGRvbiYjMzk7dCBpbW1lZGlhdGVseSByZWNvZ25pemUgaXQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyeSBhbmQgY2F0ZWdvcml6ZSBpdC4gSXMgaXQgYSBjb21wb25lbnQgZGVzaWduYXRpb24/IEEgc29mdHdhcmUgbGlicmFyeSB2ZXJzaW9uPyBBIHByb2plY3QgY29kZT8gT3IgbWF5YmUgZXZlbiBhIHNwZWNpZmljIHN0YW5kYXJkPyBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIG15IG1lbnRhbCB0YXhvbm9teSBvZiByZWxhdGVkIHBvc3NpYmlsaXRpZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIGl0JiMzOTtzIGxpa2VseSBzb21ldGhpbmcgdGVjaG5pY2FsLCBwcm9iYWJseSByZWxhdGVkIHRvIGhhcmR3YXJlIG9yIHNvZnR3YXJlLCBhbmQgSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgY29udGV4dCBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byBndWVzcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBicm9hZGVzdCBwb3NzaWJsZSBzZWFyY2gsIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgaW1tZWRpYXRlIGRvY3VtZW50YXRpb24gb3IgcHVibGljIG1lbnRpb25zLiBJZiB0aGF0IGRvZXNuJiMzOTt0IHlpZWxkIGFueXRoaW5nIHByb21pc2luZywgSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duLCBjb25zaWRlciByZWxhdGVkIHRlY2hub2xvZ2llcyBvciBvcmdhbml6YXRpb25zLCBhbmQgYXBwcm9hY2ggaXQgc3lzdGVtYXRpY2FsbHkuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBwaW5wb2ludCB0aGUgZG9tYWluIGFuZCB0aGVuIGRlbHZlIGludG8gYW55IHNwZWNpZmljYXRpb25zIG9yIGluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gdGhpcyBpZGVudGlmaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODcwOlx0XHRpZiAocmV0KVxuIDg3MTpcdFx0XHRnb3RvIGVycm9yO1xuIDg3MjpcdFxuIDg3MzpcdFx0dGFza2xldF9zZXR1cChcdTAwMjZtZGV2LVx1MDAzZWlycV90YXNrbGV0LCBtdDc5OTZfaXJxX3Rhc2tsZXQpO1xuIDg3NDpcdFxuIDg3NTpcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XG4gODc2Olx0XG4gODc3Olx0XHRyZXR1cm4gZGV2O1xuIDg3ODpcdFxuIDg3OTpcdGVycm9yOlxuIDg4MDpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gODgxOlx0XG4gODgyOlx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDg4MzpcdH1cbiA4ODQ6XHRcbiA4ODU6XHRzdGF0aWMgaW50IF9faW5pdCBtdDc5OTZfaW5pdCh2b2lkKVxuIDg4NjpcdHtcbiA4ODc6XHRcdGludCByZXQ7XG4gODg4Olx0XG4gODg5Olx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10Nzk5Nl9oaWZfZHJpdmVyKTtcbiA4OTA6XHRcdGlmIChyZXQpXG4gODkxOlx0XHRcdHJldHVybiByZXQ7XG4gODkyOlx0XG4gODkzOlx0XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm10Nzk5Nl9wY2lfZHJpdmVyKTtcbiA4OTQ6XHRcdGlmIChyZXQpXG4gODk1Olx0XHRcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZtdDc5OTZfaGlmX2RyaXZlcik7XG4gODk2Olx0XG4gODk3Olx0XHRyZXR1cm4gcmV0O1xuIDg5ODpcdH1cbiA4OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNTQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0kgRHJpdmVyIERpc2NvdmVyeSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc5OTZgIOKAkyBsb29rcyBsaWtlIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gR290IGl0LiBOb3csIGhvbGQgb24sIEkgc2VlbSB0byByZW1lbWJlciBzZWVpbmcgYG10NzZfcmVzZXRfZGV2aWNlYCBzb21ld2hlcmUgYmVmb3JlLi4uIEFoLCByaWdodCEgSXQmIzM5O3MgYnVyaWVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIGtub3cgdGhlIGZ1bGwgcGljdHVyZS4gTXkgbmV4dCB0aG91Z2h0IGlzOiB3aG8mIzM5O3MgY2FsbGluZyBpdD8gSXMgYG10NzZfcmVzZXRfZGV2aWNlYCBzcGVjaWZpYyB0byB0aGlzIGBtdDc5OTZgIGRyaXZlciwgb3IgaXMgaXQgYSBzaGFyZWQgZnVuY3Rpb24gdXNlZCBieSBvdGhlciBNZWRpYXRlayBkcml2ZXJzIGFzIHdlbGw/IFRpbWUgdG8gY2hlY2sgdGhlIGNyb3NzLXJlZmVyZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVx0ICogbGVhdmVzIHdjaWQtXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNjgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBDYWxsZXJzIGFuZCBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCBzZWVtcyB0aGlzIGZ1bmN0aW9uIGlzICpvbmx5KiBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLiBCb3RoIGFyZSBQQ0kgZHJpdmVycywgd2hpY2ggaXMgaW1wb3J0YW50LiBJJiMzOTttIGRvdWJsZS1jaGVja2luZywgYnV0IG5vLCB0aGVyZSBhcmUgbm8gVVNCIG9yIFNESU8gZHJpdmVycyB1c2luZyB0aGlzIGZ1bmN0aW9uLiBKdXN0IFBDSS4KCldhaXQsIHRoZSBgbXQ3OTE1YCBkcml2ZXIgYWxzbyBzZWVtcyB0byBoYXZlIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCkgZm9yIE1UNzk4eCBTb0NzLiBBcmUgdGhlc2UgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFByb2JhYmx5IG5vdC4gVGhlc2UgYXJlIE1lZGlhVGVrLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycy4gVW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgTWVkaWFUZWsgV2ktRmkgZW11bGF0aW9uIGluIFFFTVUgKHdoaWNoIHRoZXJlIGlzbiYjMzk7dCksIHRoZXNlIGRyaXZlcnMgc2ltcGx5IHdvbiYjMzk7dCBwcm9iZS4KCk5vdywgcmVnYXJkaW5nIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIG9mZmVyIGEgd2F5IHRvIGZ1enogUENJIGRyaXZlcnMgd2l0aCBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gTm8sIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgUENJIGZ1enplciB0aGF0IGNhbiBmdWxseSBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJdCBjYW4gZnV6eiBQQ0kgY29uZmlnIHNwYWNlLCB3aGljaCBpcyBzb21ldGhpbmcsIGJ1dCBpdCBjYW4mIzM5O3QgZW11bGF0ZSBNTUlPIHJlZ2lzdGVycyBvciBETUEgdG8gbWFrZSB0aGUgZHJpdmVyIGFjdHVhbGx5IGluaXRpYWxpemUgYW5kIHJlYWNoIHNvbWV0aGluZyBsaWtlIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgLiBJIHJlY2FsbCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgaXQmIzM5O3MgdmVyeSBsaW1pdGVkLiBJdCBjYW4gbGlrZWx5IHRyaWdnZXIgYHByb2JlYCBmdW5jdGlvbnMsIGJ1dCB3aWxsIHByb2JhYmx5IGZhaWwgZWFybHkgYmVjYXVzZSB0aGUgZHJpdmVyIGV4cGVjdHMgc3BlY2lmaWMgaGFyZHdhcmUgcmVzcG9uc2VzLiBUaGV5JiMzOTtsbCBoYXZlICYjMzQ7bWFnaWMgbnVtYmVycyYjMzQ7IGl0IG5lZWRzIHRvIHJlYWQgZnJvbSByZWdpc3RlcnMsIGFuZCB3aXRob3V0IGVtdWxhdGlvbiB0aGF0JiMzOTtzIGltcG9zc2libGUuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgIGlzIGV2ZW4gcmVhY2hhYmxlLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXQ3OTE1X21hY19yZXNldF93b3JrYC4gVGhpcyB3b3JrIGlzIHNjaGVkdWxlZCB3aGVuIHRoZSBkZXZpY2UgbmVlZHMgYSByZXNldCwgbGlrZSBhZnRlciBhIGZpcm13YXJlIGNyYXNoIG9yIGEgd2F0Y2hkb2cgdGltZW91dC4gU28sIHRvIGhpdCB0aGlzLCB0aGUgZGV2aWNlIGhhcyB0byBiZSAqZnVsbHkqIGluaXRpYWxpemVkIGFuZCBydW5uaW5nLiBDYW4gc3l6a2FsbGVyIGdldCBgbXQ3OTE1YCB0byBpbml0aWFsaXplPyBUaW1lIHRvIGxvb2sgYXQgYG10NzkxNV9tbWlvX3Byb2JlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkxNzpcdHN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuIDkxODpcdFx0XHRcdFx0ICAgICB2b2lkIF9faW9tZW0gKm1lbV9iYXNlLCB1MzIgZGV2aWNlX2lkKVxuIDkxOTpcdHtcbiA5MjA6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XG4gOTIxOlx0XHRcdC8qIHR4d2lfc2l6ZSA9IHR4ZCBzaXplICYjNDM7IHR4cCBzaXplICovXG4gOTIyOlx0XHRcdC50eHdpX3NpemUgPSBNVF9UWERfU0laRSAmIzQzOyBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjX2Z3X3R4cCksXG4gOTIzOlx0XHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfVFhXSV9OT19GUkVFIHwgTVRfRFJWX0hXX01HTVRfVFhRIHxcbiA5MjQ6XHRcdFx0XHQgICAgIE1UX0RSVl9BTVNEVV9PRkZMT0FEIHxcbiA5MjU6XHRcdFx0XHQgICAgIE1UX0RSVl9IV19QU19CVUZGRVJJTkcsXG4gOTI2Olx0XHRcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcbiA5Mjc6XHRcdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuIDkyODpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG4gOTI5Olx0XHRcdC50b2tlbl9zaXplID0gTVQ3OTE1X1RPS0VOX1NJWkUsXG4gOTMwOlx0XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkxNV90eF9wcmVwYXJlX3NrYixcbiA5MzE6XHRcdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZfY29ubmFjX3R4X2NvbXBsZXRlX3NrYixcbiA5MzI6XHRcdFx0LnJ4X3NrYiA9IG10NzkxNV9xdWV1ZV9yeF9za2IsXG4gOTMzOlx0XHRcdC5yeF9jaGVjayA9IG10NzkxNV9yeF9jaGVjayxcbiA5MzQ6XHRcdFx0LnJ4X3BvbGxfY29tcGxldGUgPSBtdDc5MTVfcnhfcG9sbF9jb21wbGV0ZSxcbiA5MzU6XHRcdFx0LnN0YV9hZGQgPSBtdDc5MTVfbWFjX3N0YV9hZGQsXG4gOTM2Olx0XHRcdC5zdGFfZXZlbnQgPSBtdDc5MTVfbWFjX3N0YV9ldmVudCxcbiA5Mzc6XHRcdFx0LnN0YV9yZW1vdmUgPSBtdDc5MTVfbWFjX3N0YV9yZW1vdmUsXG4gOTM4Olx0XHRcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTE1X3VwZGF0ZV9jaGFubmVsLFxuIDkzOTpcdFx0XHQuc2V0X2NoYW5uZWwgPSBtdDc5MTVfc2V0X2NoYW5uZWwsXG4gOTQwOlx0XHR9O1xuIDk0MTpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbiA5NDI6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcbiA5NDM6XHRcdGludCByZXQ7XG4gOTQ0Olx0XG4gOTQ1Olx0XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UocGRldiwgc2l6ZW9mKCpkZXYpLCBcdTAwMjZtdDc5MTVfb3BzLCBcdTAwMjZkcnZfb3BzKTtcbiA5NDY6XHRcdGlmICghbWRldilcbiA5NDc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gOTQ4Olx0XG4gOTQ5Olx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xuIDk1MDpcdFxuIDk1MTpcdFx0cmV0ID0gbXQ3OTE1X21taW9faW5pdChtZGV2LCBtZW1fYmFzZSwgZGV2aWNlX2lkKTtcbiA5NTI6XHRcdGlmIChyZXQpXG4gOTUzOlx0XHRcdGdvdG8gZXJyb3I7XG4gOTU0Olx0XG4gOTU1Olx0XHR0YXNrbGV0X3NldHVwKFx1MDAyNm1kZXYtXHUwMDNlaXJxX3Rhc2tsZXQsIG10NzkxNV9pcnFfdGFza2xldCk7XG4gOTU2Olx0XG4gOTU3Olx0XHRyZXR1cm4gZGV2O1xuIDk1ODpcdFxuIDk1OTpcdGVycm9yOlxuIDk2MDpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gOTYxOlx0XG4gOTYyOlx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDk2MzpcdH1cbiA5NjQ6XHRcbiA5NjU6XHRzdGF0aWMgaW50IF9faW5pdCBtdDc5MTVfaW5pdCh2b2lkKVxuIDk2NjpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxNzQKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgbXQ3OTE1X21taW9faW5pdGAgZnVuY3Rpb24sIHRoaW5raW5nIGxpa2UgSSB3b3VsZCBhcyBhbiBleHBlcnQgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50OgoKKipJbml0aWFsIERldmljZSBTZXR1cDogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3OTE1X21taW9faW5pdGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyB0aGUgaW5pdGlhbCBzZXR1cCBmdW5jdGlvbiBmb3IgdGhlIGRldmljZS4gVGhlICYjMzQ7bW1pbyYjMzQ7IHBhcnQgc3Ryb25nbHkgc3VnZ2VzdHMgTWVtb3J5LU1hcHBlZCBJL08sIG1lYW5pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkaXJlY3QgcmVnaXN0ZXIgYWNjZXNzLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCYjMzk7cyB0aGUgc2NvcGUgb2YgdGhpcyBpbml0aWFsaXphdGlvbj8gRG9lcyBpdCBwcmltYXJpbHkgaW52b2x2ZSBzZXR0aW5nIHVwIGJhc2ljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCByZWdpc3RlciB3cml0ZXMsIG9yIGRvZXMgaXQgYWxzbyBkZWx2ZSBpbnRvIGZpcm13YXJlIGxvYWRpbmcgb3IgZWFybHkgaGFyZHdhcmUgYnJpbmctdXAgdGhhdCByZXF1aXJlcyBtb3JlIHNvcGhpc3RpY2F0ZWQgaW50ZXJhY3Rpb24/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgaW50ZXJwbGF5IG9mIHNvZnR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBoYXJkd2FyZSBpdHNlbGYuIExldCYjMzk7cyBzZWUgd2hhdCBpdCYjMzk7cyByZWFsbHkgdXAgdG8sIGJlY2F1c2UgdGhlIGFuc3dlcnMgdG8gdGhvc2UgcXVlc3Rpb25zIHdpbGwgY2hhbmdlIGhvdyBJIGxvb2sgYXQgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9tbWlvX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjc0MDpzdGF0aWMgaW50IG10NzkxNV9tbWlvX2luaXQoc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTc0MS1cdFx0XHQgICAgdm9pZCBfX2lvbWVtICptZW1fYmFzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTE3PXN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6OTUxOlx0cmV0ID0gbXQ3OTE1X21taW9faW5pdChtZGV2LCBtZW1fYmFzZSwgZGV2aWNlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05NTItXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTgyNAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlIHdlIGdvLi4uCgoqKkluaXRpYWwgRXhhbWluYXRpb24gb2YgYG10NzkxNV9tbWlvX2luaXRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbXQ3OTE1X21taW9faW5pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIE1lZGlhdGVrIGRyaXZlciBpbml0aWFsaXplcyB0aGUgbWVtb3J5LW1hcHBlZCBJL08gZm9yIHRoZSBNVDc5MTUgY2hpcHNldC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgY29uZmlndXJpbmcgdGhlIGJhc2UgYWRkcmVzc2VzIGZvciB2YXJpb3VzIHJlZ2lzdGVycywgcG9zc2libHkgc2V0dGluZyB1cCBETUEsIGFuZCBsaWtlbHkgc29tZSBpbml0aWFsIHBvd2VyLXVwIG9yIHJlc2V0IHNlcXVlbmNlcy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBoZXJlOyB0aGUgb3JkZXIgaXMgb2Z0ZW4gY3JpdGljYWwuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgaGFuZGxlIGFueSBwb3RlbnRpYWwgaGFyZHdhcmUgcXVpcmtzIG9yIGVycmF0YSDigJMgaG9wZWZ1bGx5LCB0aGV5JiMzOTt2ZSBkb2N1bWVudGVkIHRob3NlIHdlbGwgd2l0aGluIHRoZSBjb2RlLiBBbHNvLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGV5IGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zIGlmIHRoYXQmIzM5O3MgYSBmYWN0b3IuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzQwOlx0c3RhdGljIGludCBtdDc5MTVfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiA3NDE6XHRcdFx0XHQgICAgdm9pZCBfX2lvbWVtICptZW1fYmFzZSxcbiA3NDI6XHRcdFx0XHQgICAgdTMyIGRldmljZV9pZClcbiA3NDM6XHR7XG4gNzQ0Olx0XHRzdHJ1Y3QgbXQ3Nl9idXNfb3BzICpidXNfb3BzO1xuIDc0NTpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbiA3NDY6XHRcbiA3NDc6XHRcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiwgbXQ3Nik7XG4gNzQ4Olx0XHRtdDc2X21taW9faW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgbWVtX2Jhc2UpO1xuIDc0OTpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXJlZ19sb2NrKTtcbiA3NTA6XHRcbiA3NTE6XHRcdHN3aXRjaCAoZGV2aWNlX2lkKSB7XG4gNzUyOlx0XHRjYXNlIDB4NzkxNTpcbiA3NTM6XHRcdFx0ZGV2LVx1MDAzZXJlZy5yZWdfcmV2ID0gbXQ3OTE1X3JlZztcbiA3NTQ6XHRcdFx0ZGV2LVx1MDAzZXJlZy5vZmZzX3JldiA9IG10NzkxNV9vZmZzO1xuIDc1NTpcdFx0XHRkZXYtXHUwMDNlcmVnLm1hcCA9IG10NzkxNV9yZWdfbWFwO1xuIDc1NjpcdFx0XHRkZXYtXHUwMDNlcmVnLm1hcF9zaXplID0gQVJSQVlfU0laRShtdDc5MTVfcmVnX21hcCk7XG4gNzU3Olx0XHRcdGJyZWFrO1xuIDc1ODpcdFx0Y2FzZSAweDc5MDY6XG4gNzU5Olx0XHRcdGRldi1cdTAwM2VyZWcucmVnX3JldiA9IG10NzkxNl9yZWc7XG4gNzYwOlx0XHRcdGRldi1cdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcbiA3NjE6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXAgPSBtdDc5MTZfcmVnX21hcDtcbiA3NjI6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXBfc2l6ZSA9IEFSUkFZX1NJWkUobXQ3OTE2X3JlZ19tYXApO1xuIDc2MzpcdFx0XHRicmVhaztcbiA3NjQ6XHRcdGNhc2UgMHg3OTgxOlxuIDc2NTpcdFx0Y2FzZSAweDc5ODY6XG4gNzY2Olx0XHRcdGRldi1cdTAwM2VyZWcucmVnX3JldiA9IG10Nzk4Nl9yZWc7XG4gNzY3Olx0XHRcdGRldi1cdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcbiA3Njg6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXAgPSBtdDc5ODZfcmVnX21hcDtcbiA3Njk6XHRcdFx0ZGV2LVx1MDAzZXJlZy5tYXBfc2l6ZSA9IEFSUkFZX1NJWkUobXQ3OTg2X3JlZ19tYXApO1xuIDc3MDpcdFx0XHRicmVhaztcbiA3NzE6XHRcdGRlZmF1bHQ6XG4gNzcyOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDc3MzpcdFx0fVxuIDc3NDpcdFxuIDc3NTpcdFx0ZGV2LVx1MDAzZWJ1c19vcHMgPSBkZXYtXHUwMDNlbXQ3Ni5idXM7XG4gNzc2Olx0XHRidXNfb3BzID0gZGV2bV9rbWVtZHVwKGRldi1cdTAwM2VtdDc2LmRldiwgZGV2LVx1MDAzZWJ1c19vcHMsIHNpemVvZigqYnVzX29wcyksXG4gNzc3Olx0XHRcdFx0ICAgICAgIEdGUF9LRVJORUwpO1xuIDc3ODpcdFx0aWYgKCFidXNfb3BzKVxuIDc3OTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3ODA6XHRcbiA3ODE6XHRcdGJ1c19vcHMtXHUwMDNlcnIgPSBtdDc5MTVfcnI7XG4gNzgyOlx0XHRidXNfb3BzLVx1MDAzZXdyID0gbXQ3OTE1X3dyO1xuIDc4MzpcdFx0YnVzX29wcy1cdTAwM2VybXcgPSBtdDc5MTVfcm13O1xuIDc4NDpcdFx0ZGV2LVx1MDAzZW10NzYuYnVzID0gYnVzX29wcztcbiA3ODU6XHRcbiA3ODY6XHRcdG1kZXYtXHUwMDNlcmV2ID0gKGRldmljZV9pZCBcdTAwM2NcdTAwM2MgMTYpIHxcbiA3ODc6XHRcdFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcdTAwMjYgMHhmZik7XG4gNzg4Olx0XHRkZXZfZGJnKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtBU0lDIHJldmlzaW9uOiAlMDR4XFxuXCYjMzQ7LCBtZGV2LVx1MDAzZXJldik7XG4gNzg5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDA0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhpcyBNVDc2IERyaXZlciBQcm9iZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNVDc2IGRyaXZlciBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIGluaXRpYWxpemVkLiBUaGUgY29kZSBncmFicyB0aGUgaGFyZHdhcmUgcmV2aXNpb24gKGBNVF9IV19SRVZgKSB1c2luZyBgbXQ3Nl9ycmAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIHJpZ2h0PyBCdXQgdGhlbiBJIGhpdCBhIHBvdGVudGlhbCBzbmFnIOKAkyBpZiB0aGlzIGlzIGEgUENJIGRldmljZSwgUUVNVSYjMzk7cyBub3QgZnVsbHkgZW11bGF0aW5nIGl0LCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgYmVpbmcgcHJvYmVkIHVubGVzcyB3ZSYjMzk7cmUgZmFraW5nIGl0IHNvbWVob3cuIFN5emthbGxlciYjMzk7cyBnb3QgdGhhdCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBmdW5jdGlvbiwgd2hpY2ggSSAqY291bGQqIHVzZSwgYnV0IHJlYWRpbmcgZnJvbSBNTUlPIHdvdWxkIGxpa2VseSBqdXN0IHJldHVybiBnYXJiYWdlLCBsaWtlIGAweGZmZmZmZmZmYCwgd2hpY2ggd291bGQgcHJvYmFibHkgY3Jhc2ggdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgoKV2FpdCBhIHNlY29uZCwgbGV0IG1lIHpvb20gb3V0LiBJIHJlY2FsbCBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGluIGBtYWM4MDIxMS5jYCwgcGFydCBvZiB0aGF0IGNvcmUgYG10NzZgIGRyaXZlci4gSXMgdGhhdCBmdW5jdGlvbiBldmVuIHVzZWQgYnkgdGhlIFVTQiBwYXJ0cz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgVVNCIGRyaXZlcnMgdGhhdCB1c2UgaXQuIE1heWJlIHNvbWV0aGluZyBsaWtlIGBtdDc2eDAyX21hY19yZXNldF93b3JrYC4uLiBJJiMzOTtsbCBjaGVjayB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXHQgKiBsZWF2ZXMgd2NpZC1cdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQyNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBDYWxsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3Jlc2V0X2RldmljZWAgZnVuY3Rpb24gY2FsbCwgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgb25seSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgYXJlIGNhbGxpbmcgaXQuIEJvdGggb2YgdGhlc2UgYXJlIFBDSSBkZXZpY2VzLCB3aGljaCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIHF1aXRlIGEgYml0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgaXMgdGhlcmUgKmFueSogb3RoZXIgcGF0aCB0byB0aGlzIGZ1bmN0aW9uPyYjMzQ7IE5vLCB0aGVyZSBpc24mIzM5O3QsIHNvIHRoYXTigJlzIGl0OiBpdCYjMzk7cyBleGNsdXNpdmUgdG8gdGhlc2UgdHdvIFBDSSBkZXZpY2VzLgoKTm93LCB0aGUgbmF0dXJhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBpc24mIzM5O3QgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBiZWNhdXNlIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBQQ0kgZGV2aWNlcy4gSSBrbm93IHN5emthbGxlciBoYXMgdGhhdCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBwc2V1ZG8tc3lzY2FsbCwgYnV0IHJlYWxpc3RpY2FsbHksIHRoYXQmIzM5O3MgaW5jcmVkaWJseSBsaW1pdGVkLiBJdCB1c3VhbGx5IGZhbGxzIGFwYXJ0IHdoZW4gZGVhbGluZyB3aXRoIFdpLUZpIGRyaXZlcnMgYmVjYXVzZSBvZiB0aGUgY29tcGxleGl0eSBvZiBmaXJtd2FyZSBsb2FkaW5nIGFuZCBhbGwgdGhvc2UgdHJpY2t5IE1NSU8gaW50ZXJhY3Rpb25zIHRoZXkgZGVtYW5kLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gaG9sZCBvbi4uLiAmIzM0O3N5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyEmIzM0OyBBbmQgdGhlIGNvbW1pdCBtZXNzYWdlIGNvbmZpcm1zIGl0IOKAkyAmIzM0O0F1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OyYjMzQ7LiBUaGlzIG1lYW5zIHN5emthbGxlciAqZGlkKiBzb21laG93IGdldCB0byBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBIb3c/IEhvdyBkaWQgaXQgZ2V0IHBhc3QgYWxsIHRob3NlIGxpbWl0YXRpb25zPyBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLiBJIG5lZWQgdG8gZmluZCB0aGUgYWNjZXNzIHJvdXRlLgoKT2theSwgbXkgbmV4dCBzdGVwIGhhcyB0byBiZSB0byB0aGluayBvdXRzaWRlIHRoZSBQQ0kgYm94LiBDb3VsZCBlaXRoZXIgYG10NzkxNWAgb3IgYG10Nzk5NmAgYmUgcHJvYmVkIHZpYSBzb21ldGhpbmcgZWxzZT8gVVNCPyBTRElPPyBUaG9zZSBhcmUgcG9zc2liaWxpdGllcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIG90aGVyIGJ1cyB0eXBlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3VzYl9kcml2ZXJ8bW9kdWxlX3NkaW9fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM9MjQ2PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgbXQ3NjYzc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTI1Mi19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjI1Mzptb2R1bGVfc2Rpb19kcml2ZXIobXQ3NjYzc19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTI1NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0yNjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzY2M3VfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0zNDU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzU1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNTY6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngwX2RyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTM3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNDktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjE1MDptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTMyNz1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIG10NzkyMXNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMzMtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzozMzQ6bW9kdWxlX3NkaW9fZHJpdmVyKG10NzkyMXNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMzUtTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHdpcmVsZXNzIGRyaXZlclwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTAtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTI1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgRnVuY3Rpb24qKgoKSG1tLCBzbyBgbXQ3Nl9yZXNldF9kZXZpY2VgLi4uIHRoYXQmIzM5O3MgYSBmdW5jdGlvbiBJJiMzOTt2ZSBzZWVuIGJlZm9yZS4gUmlnaHQsIGl0JiMzOTtzIGRlZmluZWQgaW4gYG1hYzgwMjExLmNgLiBCdXQgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgaXMgaXQgKmFjdHVhbGx5KiB1c2VkIHdpdGhpbiB0aGUgYG10NzZgIGRyaXZlciBmcmFtZXdvcms/IElzIGl0IHNwZWNpZmljIHRvIGNlcnRhaW4gTWVkaWF0ZWsgY2hpcHNldHM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGVtcGxveWVkIGJ5IHRoZSBgbXQ3OTIxYCBmYW1pbHksIHRoZSBgbXQ3OTI1YCBzZXJpZXMsIG9yIHBvdGVudGlhbGx5IGJvdGguIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZmxvdyBpcyBjcml0aWNhbCBoZXJlLiBLbm93aW5nICp3aG8qIGlzIGNhbGxpbmcgdGhpcyByZXNldCBmdW5jdGlvbiB3aWxsIGhlbHAgbWUgaW1tZW5zZWx5IGluIHRyb3VibGVzaG9vdGluZyB3aGF0ZXZlciBpc3N1ZSBpcyBjdXJyZW50bHkgb24gbXkgcGxhdGUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHVzYWdlLiBXaGVyZSBhcmUgdGhlc2UgZHJpdmVycyBjYWxsaW5nIHRoaXMgZnJvbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQyOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgdGhlIG10NzkyNSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgbmV3LCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGxlYW5zIHRvd2FyZHMgZXhwbG9yaW5nIHRoZSBgbXQ3OTI1YC4gKldoeT8qIFdlbGwsIGdpdmVuIHRoZSBjb250ZXh0ICh3aGljaCBJJiMzOTttIGFzc3VtaW5nLCBiYXNlZCBvbiBteSBmaWVsZCwgaW52b2x2ZXMgZWl0aGVyIG5ldHdvcmtpbmcsIGVtYmVkZGVkIHN5c3RlbXMsIG9yIGxpa2VseSBib3RoKSwgaXQmIzM5O3MgcHJvYmFibHkgcmVsZXZhbnQuIEl0JiMzOTtzIGFuIGludGVyZXN0aW5nIGNoaXAgYW5kIEkgd29uZGVyIHdoYXQgc3BlY2lmaWMgYXNwZWN0IG9mIGl0IGlzIGJlaW5nIGNvbnNpZGVyZWQuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgaGVyZT8gQXJlIHdlIGxvb2tpbmcgYXQgY2FwYWJpbGl0aWVzLCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzLCBwb3RlbnRpYWwgaW50ZWdyYXRpb24gd2l0aCBhIHNwZWNpZmljIE9TIG9yIGFyY2hpdGVjdHVyZSwgb3IgcGVyaGFwcyBjb21wYXJpbmcgaXQgYWdhaW5zdCBvdGhlciBzb2x1dGlvbnM/IEFyZSB3ZSBjb25zaWRlcmluZyB0aGUgY29zdCwgcG93ZXIgY29uc3VtcHRpb24gb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBkb2N1bWVudGF0aW9uPyBJIG5lZWQgbW9yZSBkYXRhIHRvIGZvcm11bGF0ZSBhIHByb3BlciBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDY2NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIHlvdXIgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipDb25zaWRlcmluZyB0aGUgTVQ3NjE1KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcuLi4gd2hhdCBhYm91dCB0aGUgYG10NzYxNWA/IEl0IGtlZXBzIHBvcHBpbmcgdXAgaW4gbXkgcmVzZWFyY2guIEkgbmVlZCB0byBnaXZlIHRoaXMgY2hpcCBzb21lIHNlcmlvdXMgY29uc2lkZXJhdGlvbi4gSXQgaGFzIHBvdGVudGlhbCwgSSBrbm93LCBidXQgd2hlcmUgZG9lcyBpdCBmaXQgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmU/IElzIGl0IHRoZSBiZXN0IHNvbHV0aW9uIGZvciB0aGUgY3VycmVudCBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlPyBPciBpcyB0aGVyZSBzb21ldGhpbmcgZWxzZSBtb3JlIGFwcHJvcHJpYXRlPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3BlY3MgYWdhaW4sIGNvbXBhcmUgaXQgYWdhaW5zdCBteSBiZW5jaG1hcmtzLCBhbmQgYXNzZXNzIGl0cyBwcm9zIGFuZCBjb25zIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgdXNlIGNhc2UuIEkmIzM5O20gY29uc2lkZXJpbmcgaXQsIG9idmlvdXNseSwgYnV0IEkmIzM5O20gbm90IHJlYWR5IHRvIGZ1bGx5IGNvbW1pdCB0byBpdCBqdXN0IHlldC4gSSBuZWVkIHRvIG1ha2UgYSBzb2xpZCBqdWRnbWVudCBiYXNlZCBvbiBoYXJkIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTAyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSYjMzk7bSB0aGUgb25lIGhhdmluZyB0aGVtOgoKKipDb25zaWRlcmluZyB0aGUgbXQ3NngwIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgc3BlY2lmaWMgd2lyZWxlc3MgaXNzdWUgYW5kIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIGRyaXZlcnMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdHJvdWJsZXNob290aW5nLiBJJiMzOTt2ZSBydWxlZCBvdXQgYSBmZXcgdGhpbmdzLCBidXQgSSBoYXZlbiYjMzk7dCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VkIHRoZSAqbXQ3NngwKiBkcml2ZXIuIEl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCBJIGhhdmVuJiMzOTt0IHJlYWxseSBwdXQgaXQgdW5kZXIgdGhlIG1pY3Jvc2NvcGUgeWV0LiBJcyBpdCB0aGUgcmlnaHQgZHJpdmVyIGZvciB0aGUgaGFyZHdhcmUgaW4gcXVlc3Rpb24/IElzIHRoZXJlIGEga25vd24gaXNzdWUgd2l0aCB0aGUgcGFydGljdWxhciB2ZXJzaW9uIGluIHVzZT8gSGF2ZSBJIGNoZWNrZWQgZm9yIGFueSBlcnJhdGEgb3IgY29tcGF0aWJpbGl0eSBub3RlcyByZWxhdGVkIHRvIHRoaXMgY2hpcCBhbmQgdGhlIHRhcmdldGVkIGtlcm5lbCB2ZXJzaW9uPyBJIG5lZWQgdG8gbG9vayBpbnRvIGl0cyBzdGF0dXMuIE1heWJlIGEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgY291bGQgYmUgb2ZmLiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBsb29raW5nIGF0IGxvZ3MgdG8gc2VlIGlmIHRoYXQmIzM5O3MgdGhlIHBvaW50IG9mIGZhaWx1cmUuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtdDc2eDBgIGRyaXZlciBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcsIG9yIG5vdCBkb2luZywgYW5kIGlmIGl0JiMzOTtzIHRoZSByb290IG9mIG15IHByb2JsZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgdGhlIE1UNzZ4MioqCgpIbW0sIHRoaW5raW5nIGFib3V0IHRoaXMgd2lyZWxlc3Mgc2l0dWF0aW9uLi4uIEkgbmVlZCB0byBjb25zaWRlciBhIHNwZWNpZmljIGNoaXBzZXQgZm9yIHRoZSBhY2Nlc3MgcG9pbnQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcGVkIHRvIHRoZSBwb3NzaWJpbGl0aWVzIG9mIGBtdDc2eDJgLiBJdCYjMzk7cyBhIHNvbGlkLCBrbm93biBxdWFudGl0eS4gVGhlIGBtdDc2eDJgIHNlcmllcyBoYXMgYmVlbiBhIHdvcmtob3JzZSBmb3IgYSB3aGlsZS4gSXQmIzM5O3MgZ290IGRlY2VudCBwZXJmb3JtYW5jZSwgZ2VuZXJhbGx5IGdvb2QgZHJpdmVyIHN1cHBvcnQsIGFuZCBhIHdlbGwtZXN0YWJsaXNoZWQgY29tbXVuaXR5IGFyb3VuZCBpdC4gSXQgaXMga25vd24gYW5kIHVuZGVyc3Rvb2QuCgpMZXQgbWUgYW5hbHl6ZS4gV2hhdCB3b3VsZCB0aGUgaW1wbGljYXRpb25zIG9mIHV0aWxpemluZyBgbXQ3NngyYCBiZSwgcmVhbGx5PyBEb2VzIGl0IHN0aWxsIG1ha2Ugc2Vuc2UsIGNvbnNpZGVyaW5nIHRoZSBhZHZhbmNlbWVudHM/IFdoYXQgYXJlIGl0cyBjdXJyZW50IGxpbWl0YXRpb25zPyBNYXliZSBpdCYjMzk7cyBhIGJpdCBkYXRlZCBjb21wYXJlZCB0byBzb21lIG9mIHRoZSBuZXdlciBjaGlwc2V0cywgYnV0IHBlcmhhcHMgdGhlIHByb3ZlbiBzdGFiaWxpdHkgYW5kIGF2YWlsYWJsZSBzb2Z0d2FyZSBlY29zeXN0ZW0gb3V0d2VpZ2ggdGhvc2UgY29uY2VybnMsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24uIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIHJlYXNvbiB0byBydWxlIGl0IG91dCwgZ2l2ZW4gdGhlIHByb2plY3QgcGFyYW1ldGVycz8gTWF5YmUgaXQmIzM5O3MgcGVyZmVjdCBmb3IgdGhpcyBzY2VuYXJpbywgYSBnb29kIGNvc3QvYmVuZWZpdCBhbmFseXNpcy4gSSBuZWVkIHRvIGNvbnNpZGVyIGl0IHNlcmlvdXNseSBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMuIEl04oCZcyBjZXJ0YWlubHkgYSB2aWFibGUgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTUxMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0IGBtdDc2X3Jlc2V0X2RldmljZWAgb25seSBsZWFkcyB0byBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiBgbWFjODAyMTFfaHdzaW1gIGNvdWxkIHRyaWdnZXIgYG10NzkxNV9tYWNfZnVsbF9yZXNldGAsIGJ1dCB0aGF0JiMzOTtzIGEgZGVhZCBlbmQgLSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIFRoZW4gSSBjb25zaWRlcmVkIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCB3aGlsZSBpdCYjMzk7cyBhIHRoaW5nLCBpdCBqdXN0IGNhbGxzIGBwY2lfZGV2aWNlX2FkZGAsIHNvIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSBwcm9taXNpbmcuCgpIb2xkIG9uLCB0aGlzIGlzbiYjMzk7dCBuZWNlc3NhcmlseSBhIHN5emthbGxlci1kaXNjb3ZlcmVkIGJ1ZywgaXQgY291bGQgYmUgYSBwYXRjaCBzdWJtaXR0ZWQgZm9yIHRlc3RpbmcgYnkgc3l6Ym90ISAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IC0gdGhhdCBjb25maXJtcyBpdC4gU3l6Ym90IGFwcGxpZXMgYW5kIGNvbXBpbGVzIHRoZSBwYXRjaCwgYnV0IHRoYXQgZG9lc24mIzM5O3QgZ3VhcmFudGVlIHRoZSBjb2RlIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB2aWEgZnV6emluZy4KCklmIGl0ICppcyogYW4gdW5kZXItcmV2aWV3IHBhdGNoLCBzeXpib3Qgd2lsbCBjb21waWxlIGFuZCBmdXp6IGl0LiBCdXQgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUsIGl0IHdvbiYjMzk7dCBiZSBmdXp6ZWQuCgpUaGUgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgaXMgaW4gYSBwbGFjZSB0aGF0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhhdCBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4KClNvLCBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgYXJlICpkZWZpbml0ZWx5KiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXJzLiBUaGV5IGFic29sdXRlbHkgbmVlZCBNZWRpYVRlayBNVDc5MTUvTVQ3OTk2IGhhcmR3YXJlLiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhhdCwgSSBrbm93IHRoYXQuIE5vIGNoYW5jZSB0aGV5JiMzOTtyZSBiZWluZyBlbXVsYXRlZC4KCkNhbiBJIGdldCBgbXQ3OTE1YCBpbml0aWFsaXplZCB0aHJvdWdoIGBzeXpfcGNpX2RldmljZV9hZGRgPyBUaW1lIHRvIGdvIGJhY2sgb3ZlciBgbXQ3OTE1X21taW9faW5pdGAuIEl0IHJlYWRzIGBNVF9IV19SRVZgIGZyb20gTU1JTy4gT2theSwgaWYgdGhhdCBkb2VzbiYjMzk7dCBtYXRjaCwgaXQgbWlnaHQgYmFpbCBvdXQ/IE5vcGUsIGp1c3QgbG9ncyBpdC4gQnV0IGl0IGFsc28gcmVhZHMgYGRldmljZV9pZGAgZnJvbSB0aGUgUENJIGRldmljZSwgYW5kIGdvZXMgdGhyb3VnaCBhIHdob2xlIGJ1bmNoIG9mIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLiBDYW4gdGhpcyBsZWFkIHRvIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgPyBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXQ3OTE1X21hY19yZXNldF93b3JrYCwgd2hpY2ggaXMgc2NoZWR1bGVkIGZyb20gYG10NzkxNV9yZXNldGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OT1tdDc5MTVfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05Ny1cdFx0ZGV2LVx1MDAzZXJlY292ZXJ5LnN0YXRlIHw9IE1UX01DVV9DTURfV0RUX01BU0s7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTg6XHRcdG10NzkxNV9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNjA1PXZvaWQgbXQ3OTE1X21hY19kdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE2NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNjc0OnZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNjc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTg5MC1cdFx0XHRkZXYtXHUwMDNlcmVjb3Zlcnkuc3RhdGUgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6ODkxOlx0XHRcdG10NzkxNV9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTg5Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3MT12b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NzI6dm9pZCBtdDc5MTVfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzMtaW50IG10NzkxNV9ydW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ0MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIElucXVpcnkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG10NzkxNV9yZXNldGAgZnVuY3Rpb24gZ2V0cyB0cmlnZ2VyZWQuIEl0IHNlZW1zIGl0IGNhbiBiZSBjYWxsZWQgZWl0aGVyIGluIHJlc3BvbnNlIHRvIGEgc3BlY2lmaWMgaW50ZXJydXB0LCB3aGljaCBpcyBoYW5kbGVkIGJ5IGBtdDc5MTVfaXJxX3Rhc2tsZXRgLCBvciBkaXJlY3RseSB0aHJvdWdoIGRlYnVnZnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdG8gZXZlbiBnZXQgdG8gdGhpcyBwb2ludCwgdGhlIGRldmljZSBpdHNlbGYgaGFzIHRvIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcHJvYmVkLCByaWdodD8gU28sIHRoZSBlbnRpcmUgZGV2aWNlIGRyaXZlciBtdXN0IGJlIHVwIGFuZCBydW5uaW5nLgoKSSYjMzk7bSBjdXJpb3VzLCBjYW4gYG10NzkxNV9tbWlvX3Byb2JlYCBldmVuIHN1Y2NlZWQgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudD8gQ291bGQgSSBzaW11bGF0ZSBvciBzdHViIG91dCB0aGUgaGFyZHdhcmUgYW5kIHN0aWxsIGdldCB0byB0aGUgcG9pbnQgd2hlcmUgdGhpcyByZXNldCBtZWNoYW5pc20gYmVjb21lcyByZWxldmFudD8gVGhhdCYjMzk7cyB3aGF0IEkgd2FudCB0byB0ZXN0LiBJIGtub3cgaXQgY2FsbHMgYG10NzkxNV9tbWlvX2luaXRgIGZpcnN0LCB3aGljaCB0aGVuIGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgLiBTbywgbXkgbmV4dCBtb3ZlIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqYWN0dWFsbHkqIGhhcHBlbmluZyBpbiB0aG9zZSBmdW5jdGlvbnMgYW5kIGlmIHRob3NlIGNhbGxzIGNhbiBiZSBzaW11bGF0ZWQgdG8gcmVhY2ggdGhlIHJlc2V0IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbWN1X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODU4PW10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODczOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODc0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzYtXHQvKiBsb2FkIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzc3Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzIyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIzMjM6bXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzODc9c3RhdGljIGludCBtdDc5MTVfbWN1X3NldF9yZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDEwOmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDU4Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDc3Olx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDczPWludCBtdDc5MTVfcnVuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzYtaW50IG10NzkxNV9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDQyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZhaWx1cmUqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBpbml0aWFsaXphdGlvbiBpc3N1ZSB3aXRoIHRoZSBtdDc5MTUgZGV2aWNlLiBJdCBsb29rcyBsaWtlIGBtdDc5MTVfbWN1X2luaXRgIGlzIHRoZSBzdGFydGluZyBwb2ludCwgY2FsbGluZyBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGxvYWQgZmlybXdhcmUsIHNlbmQgY29tbWFuZHMgdG8gdGhlIE1DVS4gTm93LCBpZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIE1DVSB3b24mIzM5O3QgcmVzcG9uZCwgYW5kIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgIHJpZ2h0bHkgZmFpbHMuCgpUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBzeXprYWxsZXIsIG91ciBmdXp6ZXIsIG1heSBoYXZlIGZvdW5kIHRoaXMuIEl0IGNhbiBpbmplY3QgZmlybXdhcmUsIGJ1dCBpdCBjYW4mIzM5O3QgZnVsbHkgZW11bGF0ZSB0aGUgTUNVIHJlc3BvbnNlcyB0byBNTUlPIHJlYWRzIGFuZCB3cml0ZXMuIFNvLCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ29lcyBkb3duIHRoZSBkcmFpbjogYG10NzkxNV9pbml0X2hhcmR3YXJlYCBmYWlscywgdGhlbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMuIENvbnNlcXVlbnRseSwgdGhlIGRldmljZSBuZXZlciByZWFjaGVzIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc3RhdGUgYW5kLCBjcml0aWNhbGx5LCBgbXQ3OTE1X3Jlc2V0YCBpcyBuZXZlciBjYWxsZWQuCgpCdXQgdGhlbiBJIHRob3VnaHQsIGlmIHN5emthbGxlciBmb3VuZCB0aGlzLCAqaG93Kj8gSXQgbWFkZSBtZSBjb25zaWRlciB0aGF0IG1heWJlIGBtdDc2X3Jlc2V0X2RldmljZWAgSVMgY2FsbGVkIGJ5IGEgVVNCIGRyaXZlciwgZXZlbiBpZiBpdCYjMzk7cyBub3QgaW4gdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgb2YgdGhlIG1haW4gbXQ3OTE1IGRyaXZlci4gTGV0JiMzOTtzIHZlcmlmeS4gSSBncmVwcGVkIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5IGFuZCB0aGUgc2VhcmNoIHR1cm5lZCB1cCBvbmx5IGBtdDc5MTUvbWFjLmNgIGFuZCBgbXQ3OTk2L21hYy5jYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBub3QgY2FsbGVkIHNvbWV3aGVyZSBlbHNlLgoKV2FpdCwgdGhlcmUmIzM5O3MgYG10NzZfd2NpZF9jbGVhbnVwYC4gVGhlIHBhdGNoIHJlZmVyZW5jZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiBgbWFjODAyMTEuY2AuIFNvIGl0IGFwcGVhcnMgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBiZWluZyBjYWxsZWQgdGhlcmUuIEhvd2V2ZXIsIHRoZSByZXNldCBpcyBiZWluZyBkb25lIF9iZWZvcmVfIHRoZSB3Y2lkIGNsZWFudXAsIHdoaWNoIGlzIHRoZW4gbW92ZWQgdG8gKmFmdGVyKi4gU28sIGxldCYjMzk7cyBzZWUsIGlzIGBtdDc2X3Jlc2V0X2RldmljZWAgY2FsbGVkIGJ5ICphbnkqIG90aGVyIGRyaXZlciBvdXRzaWRlIG9mIHRoZSBgbXQ3NmAgc3Vic3lzdGVtPyBJdCYjMzk7cyBleHBvcnRlZCwgYnV0IGlmIGl0IGlzIG9ubHkgY2FsbGVkIGluIGBtdDc2YCwgdGhlbiB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBMZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2VhcmNoIHRvIHRoZSBlbnRpcmUga2VybmVsIHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cdCAqIGxlYXZlcyB3Y2lkLVx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTUzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlIG9mIHRoZSBNZWRpYVRlayBXaS1GaSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMuIFRoZXkmIzM5O3JlIGJvdGggUENJZSBkcml2ZXJzLCBhbmQgYWxzbyBwbGF0Zm9ybSBkcml2ZXJzIGZvciB0aGUgTVQ3OTh4IFNvQ3MuIEltbWVkaWF0ZWx5LCBteSBmaXJzdCB0aG91Z2h0IGlzIHZpcnR1YWxpemF0aW9uLCBsaWtlIFFFTVUuIFNpbmNlIHRoZXkmIzM5O3JlIFBDSWUgYW5kIHBsYXRmb3JtIGRyaXZlcnMsIHRoZXkmIzM5O3JlIHByb2JhYmx5IG91dCBvZiByZWFjaCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50Li4uIHVubGVzcyEgV2FpdCBhIG1pbnV0ZSwgd2hhdCBhYm91dCBzeXprYWxsZXI/IERvZXMgdGhhdCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBwc2V1ZG8tc3lzY2FsbCBvZmZlciBhIGJhY2tkb29yPyBJZiBzbywgY291bGQgdGhhdCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoZSBwcm9iZT8gSWYgYHN5el9wY2lfZGV2aWNlX2FkZGAgZG9lcyBjYWxsIGBtdDc5MTVfbW1pb19wcm9iZWAsIHRoYXQmIzM5O3Mgb3VyIGVudHJ5IHBvaW50LgoKYG10NzkxNV9tbWlvX3Byb2JlYCBpcyBrZXkgYmVjYXVzZSBpdCBsZWFkcyB0byBgbXQ3OTE1X21taW9faW5pdGAsIHdoaWNoIHJlYWRzIGBNVF9IV19SRVZgIGZyb20gTU1JTy4gU2ltcGxlIGVub3VnaC4gVGhlbiBpdCBtb3ZlcyBvbiB0byBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAsIHdoaWNoIGlzIHdoZXJlIHRoaW5ncyBzdGFydCBnZXR0aW5nIGludGVyZXN0aW5nLiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY2FsbHMgYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgd2hpY2ggdGhlbiBjYWxscyBgbXQ3OTE1X21jdV9pbml0YC4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgLCB3aGVyZSB3ZSBzZWUgZmlybXdhcmUgYmVpbmcgcmVxdWVzdGVkLCBhbmQgdGhlbiBhIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgTUNVIHVzaW5nIGBtdDc2X21jdV9zZW5kX21zZ2AuIFRoaXMgaXMgYSBjbGFzc2ljIHBvaW50IG9mIGZhaWx1cmU6IGlmIHRoZSBNQ1UgZG9lc24mIzM5O3QgcmVzcG9uZCBvciByZXR1cm5zIGFuIGVycm9yLCB0aGVyZSYjMzk7cyBhIHRpbWVvdXQgYW5kIHRoZSBwcm9jZXNzIGJhaWxzLiAgSWYgdGhhdCBoYXBwZW5zLCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGZhaWxzLCBhbmQgdGhlbiBzbyBkb2VzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggbWVhbnMgdGhlIGRldmljZSBpc24mIzM5O3QgZnVsbHkgcmVnaXN0ZXJlZC4KClRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaWYgdGhlIGRldmljZSBkb2VzbiYjMzk7dCBmdWxseSByZWdpc3RlciwgdGhlbiBjZXJ0YWluIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYG10NzkxNV9yZXNldGAgd2hpY2ggc2NoZWR1bGVzIGBtdDc5MTVfbWFjX3Jlc2V0X3dvcmtgLCB3aGljaCBjYWxscyBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YCBhbmQgYG10NzZfcmVzZXRfZGV2aWNlYC4gVGhpcyB3aG9sZSByZXNldCBwYXRoIGlzIGNvbnRpbmdlbnQgb24gYSBzdWNjZXNzZnVsIGRldmljZSByZWdpc3RyYXRpb24uCgpUaGVuIGEgdGhvdWdodCBoaXRzLCBjb3VsZCBgbXQ3OTE1X3Jlc2V0YCBiZSBjYWxsZWQgZnJvbSBkZWJ1Z2ZzPyBBbmQgeWVzLCB0aGVyZSBpdCBpcyEgYG10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0YCBpbiBgZGVidWdmcy5jYCBjYWxscyBgbXQ3OTE1X3Jlc2V0KGRldilgLiBIb3dldmVyLCBkZWJ1Z2ZzIGVudHJpZXMgYXJlIG9ubHkgY3JlYXRlZCBpZiB0aGUgZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLiBgbXQ3OTE1X2luaXRfZGVidWdmc2AgaXMgY2FsbGVkIGZyb20gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgICphZnRlciogYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgd2hpY2ggbWVhbnMsIGlmIHRoZSBoYXJkd2FyZSBpbml0IGZhaWxzLCBubyBkZWJ1Z2ZzLiBUaGlzIGxvb2tzIGxpa2UgYSBkZWFkIGVuZC4KCk5vdywgbGV0IG1lIHRoaW5rIGFib3V0IG90aGVyIGNvZGUgcGF0aHMuIENhbiBJIHRyaWdnZXIgYG10NzkxNV9pcnFfdGFza2xldGA/IEl0JiMzOTtzIHNldCB1cCBpbiBgbXQ3OTE1X21taW9fcHJvYmVgICpiZWZvcmUqIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYDogYHRhc2tsZXRfc2V0dXAoJmFtcDttZGV2LSZndDtpcnFfdGFza2xldCwgbXQ3OTE1X2lycV90YXNrbGV0KTtgLiBTbywgaXQmIzM5O3MgYWxyZWFkeSB0aGVyZSBmcm9tIHRoZSBwcm9iZS4gQnV0IGNhbiBpdCBiZSAqc2NoZWR1bGVkKj8gSXQmIzM5O3Mgc2NoZWR1bGVkIGJ5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYG10NzkxNV9pcnFfaGFuZGxlcmAuIEJ1dCBpcyBgbXQ3OTE1X2lycV9oYW5kbGVyYCByZWdpc3RlcmVkICpiZWZvcmUqIG9yIGFmdGVyIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYD8gVGltZSB0byBodW50IGRvd24gdGhhdCBgcmVxdWVzdF9pcnFgIGNhbGwuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9pcnF8ZGV2bV9yZXF1ZXN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTU1Olx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTYtXHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNzU6XHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGRldi1cdTAwM2VoaWYyLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3Ni1cdFx0XHRcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjUzOlx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjU0LVx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDYwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBtdDc5MTUgRHJpdmVyIFByb2JlIFNlcXVlbmNlKioKCk9rYXksIGxldCYjMzk7cyB0aGluayB0aGlzIHRocm91Z2guIGBkZXZtX3JlcXVlc3RfaXJxYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBtdDc5MTVfcGNpX3Byb2JlYC4gUmlnaHQsIGBtdDc5MTVfcGNpX3Byb2JlYCBjYWxscyBgbXQ3OTE1X21taW9fcHJvYmVgIGZpcnN0LCB3aGljaCBzZXRzIHVwIHRoZSBtZW1vcnkgbWFwcGVkIElPLCB0aGVuIGl0IHJlcXVlc3RzIHRoZSBJUlEgd2l0aCBgZGV2bV9yZXF1ZXN0X2lycWAsIGFuZCBmaW5hbGx5IGl0IGNhbGxzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYC4gVGhlIHNlcXVlbmNlIGlzIGtleSBoZXJlLgoKTm93LCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMsIHdlIGV4cGVjdCB0aGUgcHJvYmUgdG8gZmFpbCBhbmQgYGRldm1fcmVxdWVzdF9pcnFgIHdpbGwgYmUgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IHRocm91Z2ggdGhlIGRldmljZSByZXNvdXJjZSBtYW5hZ2VtZW50LiBNYWtlcyBzZW5zZS4gQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogYW4gaW50ZXJydXB0IGNvdWxkIGZpcmUgKmJlZm9yZSogYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGNvbXBsZXRlcy4gRm9yIGV4YW1wbGUsIHRoZSBJUlEgbGluZSBtaWdodCBiZSBzaGFyZWQsIGFuZCBhbm90aGVyIGRldmljZSBjb3VsZCB0cmlnZ2VyIGFuIGludGVycnVwdCBiZWZvcmUgb3VyIGRyaXZlciBpcyBmdWxseSBpbml0aWFsaXplZC4KCklmIHRoYXQgaGFwcGVucywgYG10NzkxNV9pcnFfaGFuZGxlcmAgZ2V0cyBjYWxsZWQuIE15IGNvbmNlcm4gaXMsIHdoYXQgaGFwcGVucyBpbnNpZGUgdGhhdCBoYW5kbGVyPyBJZiBpdCByZWFkcyB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciwgYW5kIGl0IGdldHMgYDB4ZmZmZmZmZmZgICh3aGljaCBzdWdnZXN0cyBubyByZWFsIGhhcmR3YXJlIGlzIHByZXNlbnQgYXQgdGhhdCBzdGFnZSksIGl0IGNvdWxkLCBwb3RlbnRpYWxseSwgc2NoZWR1bGUgdGhlIHRhc2tsZXQuIFRoYXQmIzM5O3MgdGhlIHBhcnQgSSByZWFsbHkgbmVlZCB0byBjaGVjay4gSSBuZWVkIHRvIGRpZyBpbnRvIGBtdDc5MTVfaXJxX2hhbmRsZXJgIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2hlbiB0aGVyZSYjMzk7cyBubyB2YWxpZCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHNlZSB3aGF0IGxvZ2ljIGlzIGluIHBsYWNlIHRvIGhhbmRsZSB0aGlzIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfaXJxX2hhbmRsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTg5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4OTY6aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy04OTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ1MD12b2lkIG10NzkxNV93ZnN5c19yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ1MTppcnFyZXR1cm5fdCBtdDc5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ1Mi11NjQgX19tdDc5MTVfZ2V0X3RzZihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10NzkxNV92aWYgKm12aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTU1Olx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTYtXHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzUtXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGRldi1cdTAwM2VoaWYyLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NjpcdFx0XHRcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc3LVx0XHRcdFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFwmIzM0Oy1oaWZcJiMzNDssIGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNTM6XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNTQtXHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1NTUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTE1X2lycV9oYW5kbGVyYC4KCioqRGlzc2VjdGluZyB0aGUgSW50ZXJydXB0IEhhbmRsZXIqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBhYm91dCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhpcyBNVDc5MTUgaW50ZXJydXB0IGhhbmRsZXIuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciByZWFsbHkgbWVldHMgdGhlIHJvYWQgaW4gdGVybXMgb2YgcmVzcG9uc2l2ZW5lc3MgZm9yIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGluc2lkZSBhbmQgb3V0LiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZWFkIGV2ZXJ5IGxpbmUsIGtlZXBpbmcgaW4gbWluZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgc3BlY2lmaWMgY2hpcHNldC4gRmlyc3QsIEkmIzM5O2xsIGlkZW50aWZ5IHRoZSBpbnRlcnJ1cHQgc291cmNlcyBiZWluZyBoYW5kbGVkLiBXaGF0IGFyZSB0aGUga2V5IGludGVycnVwdCBmbGFncyBiZWluZyBjaGVja2VkPyBBcmUgdGhleSBETUEgY29tcGxldGlvbiwgUlggZnJhbWVzLCBUWCBhY2tub3dsZWRnZW1lbnRzLCBlcnJvcnMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlc2UgY2hlY2tzIGFyZSBwZXJmb3JtZWQgd2lsbCB0ZWxsIG1lIHNvbWV0aGluZyBhYm91dCBwcmlvcml0eSBhbmQgaG93IHRoZSBkZXZlbG9wZXJzIGFudGljaXBhdGVkIHRoZSB0cmFmZmljIGZsb3cuCgpOZXh0LCBJJiMzOTtsbCBsb29rIGZvciBhbnkgaW5kaWNhdGlvbiBvZiBob3cgdGhlc2UgaW50ZXJydXB0cyBhcmUgYmVpbmcgYWNrbm93bGVkZ2VkIG9yIGNsZWFyZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBBcmUgdGhlcmUgc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGhhcHBlbmluZz8gQXJlIHRoZXkgdXNpbmcgYW55IGtpbmQgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIgbGlrZSB0aGUgR0lDIG9yIHNvbWV0aGluZyBzaW1wbGVyPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIHByZXZlbnRpbmcgc3B1cmlvdXMgaW50ZXJydXB0cyBhbmQgZW5zdXJpbmcgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGlzIHJlYWR5IGZvciB0aGUgbmV4dCBldmVudC4KCkkmIzM5O20gYWxzbyBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gQXJlIHRoZXJlIGFueSBzaGFyZWQgcmVzb3VyY2VzIGJlaW5nIGFjY2Vzc2VkIHdpdGhpbiB0aGUgaGFuZGxlcj8gV2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGluIHBsYWNlLCBpZiBhbnk/IFRoaXMgaXMgYSBob3Qgc3BvdCwgc28gSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIGl0IHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGRhdGEgY29ycnVwdGlvbiB0aGF0IG1pZ2h0IG9jY3VyIHVuZGVyIGhpZ2ggbG9hZC4gU3BlY2lmaWNhbGx5LCBob3cgZG9lcyB0aGlzIGhhbmRsZXIgaW50ZXJmYWNlIHdpdGggdGhlIGhpZ2hlciBsZXZlbCBuZXR3b3JrIHN0YWNrPyBBbnkgc3BpbmxvY2tzLCBtdXRleGVzLCBvciBhdG9taWMgb3BlcmF0aW9ucz8KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgaGFuZGxlIGRlZmVycmFsLiBBcmUgdGhleSB1c2luZyB3b3JrcXVldWVzLCBzb2Z0aXJxcywgb3IgdGFza2xldHM/IFdoYXQmIzM5O3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGNob3NlbiBkZWZlcnJhbCBtZWNoYW5pc20/IElzIGl0IG9wdGltaXplZCBmb3IgbG93IGxhdGVuY3ksIG9yIGFyZSB0aGV5IHByaW9yaXRpemluZyB0aHJvdWdocHV0PyBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBpbiB0aGUgZGVmZXJyZWQgZXhlY3V0aW9uIHBhdGguCgpGaW5hbGx5LCBJJiMzOTttIGdvaW5nIHRvIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgYW4gdW5leHBlY3RlZCBpbnRlcnJ1cHQgb2NjdXJzLCBvciBpZiB0aGUgZHJpdmVyIGVuY291bnRlcnMgYW4gZXJyb3IgY29uZGl0aW9uPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvdW50ZXJzIGJlaW5nIGluY3JlbWVudGVkPyBBcmUgdGhlcmUgYW55IGF0dGVtcHRzIGF0IHJlY292ZXJ5LCBvciBpcyBpdCBqdXN0IGEgZmF0YWwgaGFsdD8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuIE92ZXJhbGwsIEkgd2FudCB0byBnYWluIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBpbnRlcnJ1cHQgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4OTYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDg5NjpcdGlycXJldHVybl90IG10NzkxNV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gODk3Olx0e1xuIDg5ODpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRldl9pbnN0YW5jZTtcbiA4OTk6XHRcdHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQ7XG4gOTAwOlx0XG4gOTAxOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG4gOTAyOlx0XHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuIDkwMzpcdFx0ZWxzZVxuIDkwNDpcdFx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcbiA5MDU6XHRcbiA5MDY6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbiA5MDc6XHRcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVDFfTUFTS19DU1IsIDApO1xuIDkwODpcdFxuIDkwOTpcdFx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSkpXG4gOTEwOlx0XHRcdHJldHVybiBJUlFfTk9ORTtcbiA5MTE6XHRcbiA5MTI6XHRcdHRhc2tsZXRfc2NoZWR1bGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYuaXJxX3Rhc2tsZXQpO1xuIDkxMzpcdFxuIDkxNDpcdFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIDkxNTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE0NDEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgTVQ3NiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhlIGludGVycnVwdCBoYW5kbGVyIGlzIGNoZWNraW5nIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgYSBnb29kIHNhbml0eSBjaGVjay4gQnV0IHRoaXMgYml0IGlzIHNldCBvbmx5IGF0IHRoZSAqZW5kKiBvZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFNvLCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMg4oCTIGFuZCBpdCYjMzk7cyBib3VuZCB0byBpZiB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQg4oCTIHRoZSB3aG9sZSB0YXNrbGV0IHRoYXQgY29udGFpbnMgdGhpcyBpbnRlcnJ1cHQgaGFuZGxlciBuZXZlciBnZXRzIHNjaGVkdWxlZC4gUmlnaHQsIHNvIGZhciwgc28gZ29vZC4KCk5vdywgaWYgdGhlIHRhc2tsZXQgaXNuJiMzOTt0IHNjaGVkdWxlZCwgYG10NzkxNV9yZXNldGAgaXNuJiMzOTt0IGNhbGxlZC4gQW5kIGlmICp0aGF0KiBpc24mIzM5O3QgY2FsbGVkLCB0aGVuIG5laXRoZXIgaXMgYG10NzZfcmVzZXRfZGV2aWNlYC4gV2FpdCBhIHNlY29uZC4uLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGxhc3QgcG9pbnQuIEFtIEkgcmlnaHQgaW4gdGhpbmtpbmcgdGhhdCBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIG9ubHkgY2FsbGVkIGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgb3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8gTGV0IG1lIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucy4gSSBncmVwcGVkIHRoZSB3aG9sZSBgbXQ3NmAgZGlyZWN0b3J5IGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBZZXAsIGNvbmZpcm1lZC4gT25seSBtYXRjaGVzIGluIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCDigJMgd2hpY2ggbWVhbnMgbXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgbGlrZWx5IGNvcnJlY3QuCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSB0aGlzIG9uZSBzdGVwIGZ1cnRoZXIgdG8gZW5zdXJlIEkgYW0gY29ycmVjdC4gSSBzaG91bGQgY2hlY2sgaWYgYG10NzkyMWAgY2FsbHMgYG10NzZfcmVzZXRfZGV2aWNlYCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIG9yIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgaXMgYSBjb21tb24gcHJhY3RpY2UgaW4gZHJpdmVyIGRldmVsb3BtZW50IHRvIGluY3JlYXNlIGNvZGUgcmUtdXNhYmlsaXR5IGFuZCBtb2R1bGFyaXR5LCBzbyBJIHNob3VsZCBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXHQgKiBsZWF2ZXMgd2NpZC1cdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XHRtdDc2X3Jlc2V0X2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzAzOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBDdXJpb3VzIEJ1ZyBEaXNjb3ZlcnkqKgoKT2theSwgc28gc3l6a2FsbGVyIGZsYWdnZWQgdGhpcyBvbmUuIEEgYnVnLCBpbnRlcmVzdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgJiMzNDtIb3c/JiMzNDsuIEhvdyBkaWQgc3l6a2FsbGVyIGV2ZW4gKmZpbmQqIHRoaXM/IEl0JiMzOTtzIG9mdGVuIGEgc3VidGxlIGludGVyYWN0aW9uIG9yIGFuIG9ic2N1cmUgY29kZSBwYXRoLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHBvc3NpYmxlIGNhdXNlcy4gSG1tLCBsZXQmIzM5O3MgdGhpbmsuLi4gY291bGQgdGhpcyBiZSByZWxhdGVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlcj8gU3BlY2lmaWNhbGx5LCBJIHdvbmRlciBpZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggb25lLiBJdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrLiBJIG5lZWQgdG8gc2VlIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaGFzIGJlZW4gYXNzaWduZWQgYXMgdGhlIHRhcmdldCBmb3IgYW55IGZ1bmN0aW9uIHBvaW50ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIHRvIHNlZSBpZiBpdCBpcyB1c2VkIGluIHN1Y2ggYSBtYW5uZXIuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4KWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuCkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLAp0cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVzZXRfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy5cbllvdSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCBvZiB0aGlzIGV4YWN0IHRvb2wgY2FsbCBpbiB5b3VyIGNvbnZlcnNhdGlvbiBoaXN0b3J5LlxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXG50cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzQ0MAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDIzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3OXh4X21hY19yZXNldGAgQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0IHRoZSBmdW5jdGlvbiBpc24mIzM5O3QgY2FsbGVkIHRocm91Z2ggYW55IGZ1bmN0aW9uIHBvaW50ZXJzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQgbWVhbnMgaXQmIzM5O3Mgc29sZWx5IGNhbGxlZCBieSBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YCBhbmQgYG10Nzk5Nl9tYWNfZnVsbF9yZXNldGAuIEhtbSwgYnV0IGhlcmUmIzM5O3Mgd2hlcmUgbXkgZXhwZXJ0aXNlIGtpY2tzIGluIC0gSSBuZWVkIHRvIGNvbnNpZGVyIGEgcG90ZW50aWFsIGJ5cGFzcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHN5emthbGxlci4gQ291bGQgc3l6a2FsbGVyLCB0aHJvdWdoIGl0cyBhYmlsaXR5IHRvIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgbWFwIEJBUnMgdG8gdXNlciBzcGFjZSwgc29tZWhvdyBieXBhc3MgdGhlIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBjaGVjaz8gSXQmIzM5O3MgYSB2YWxpZCBjb25jZXJuLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3dlciBzeXprYWxsZXIgd2llbGRzLgoKTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGxvZ2ljLiBUaGUgYE1UNzZfU1RBVEVfSU5JVElBTElaRURgIGJpdCBsaXZlcyB3aXRoaW4gYGRldi0mZ3Q7bXBoeS5zdGF0ZWAuIFRoYXQgYml0IGlzIHNwZWNpZmljYWxseSBzZXQgZHVyaW5nIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYDoKCmBgYGMKCXNldF9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgJmFtcDtkZXYtJmd0O21waHkuc3RhdGUpOwpgYGAKClRoaXMgaXMgdGhlIGxpbmNocGluLiBJdCYjMzk7cyBvbmx5IHNldCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4gU28sIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBDYW4gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIHN1Y2NlZWQgaW4gYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IFRvIGFuc3dlciB0aGF0LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbnRlcm5hbHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZGl0aW9ucyBhbmQgcHJlcmVxdWlzaXRlcyBvZiBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhlIGZ1bmN0aW9uIGNhbiBiZSB0cmlja2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNDEwOlx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQxMTpcdHtcbjI0MTI6XHRcdGludCByZXQ7XG4yNDEzOlx0XG4yNDE0Olx0XHQvKiBmb3JjZSBmaXJtd2FyZSBvcGVyYXRpb24gbW9kZSBpbnRvIG5vcm1hbCBzdGF0ZSxcbjI0MTU6XHRcdCAqIHdoaWNoIHNob3VsZCBiZSBzZXQgYmVmb3JlIGZpcm13YXJlIGRvd25sb2FkIHN0YWdlLlxuMjQxNjpcdFx0ICovXG4yNDE3Olx0XHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuMjQxODpcdFxuMjQxOTpcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcbjI0MjA6XHRcdGlmIChyZXQpXG4yNDIxOlx0XHRcdHJldHVybiByZXQ7XG4yNDIyOlx0XHQvKiBzZXQgZHJpdmVyIG93biBmb3IgYmFuZDEgd2hlbiB0d28gaGlmIGV4aXN0ICovXG4yNDIzOlx0XHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbjI0MjQ6XHRcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcbjI0MjU6XHRcdFx0aWYgKHJldClcbjI0MjY6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjQyNzpcdFx0fVxuMjQyODpcdFxuMjQyOTpcdFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcbjI0MzA6XHRcdGlmIChyZXQpXG4yNDMxOlx0XHRcdHJldHVybiByZXQ7XG4yNDMyOlx0XG4yNDMzOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbjI0MzQ6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIDApO1xuMjQzNTpcdFx0aWYgKHJldClcbjI0MzY6XHRcdFx0cmV0dXJuIHJldDtcbjI0Mzc6XHRcbjI0Mzg6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIDApO1xuMjQzOTpcdFx0aWYgKHJldClcbjI0NDA6XHRcdFx0cmV0dXJuIHJldDtcbjI0NDE6XHRcbjI0NDI6XHRcdG10NzZfY29ubmFjX21jdV9kZWxfd3RibF9hbGwoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMjQ0MzpcdFxuMjQ0NDpcdFx0aWYgKChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuMjQ0NTpcdFx0ICAgICBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB8fFxuMjQ0NjpcdFx0ICAgICFtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbjI0NDc6XHRcdFx0bXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKENBUEFCSUxJVFkpLCAwLCAwLCAwKTtcbjI0NDg6XHRcbjI0NDk6XHRcdHJldCA9IG10NzkxNV9tY3Vfc2V0X213ZHMoZGV2LCAxKTtcbjI0NTA6XHRcdGlmIChyZXQpXG4yNDUxOlx0XHRcdHJldHVybiByZXQ7XG4yNDUyOlx0XG4yNDUzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmwoZGV2LCBNVVJVX1NFVF9QTEFURk9STV9UWVBFLFxuMjQ1NDpcdFx0XHRcdFx0ICAgICAgIE1VUlVfUExBVEZPUk1fVFlQRV9QRVJGX0xFVkVMXzIpO1xuMjQ1NTpcdFx0aWYgKHJldClcbjI0NTY6XHRcdFx0cmV0dXJuIHJldDtcbjI0NTc6XHRcbjI0NTg6XHRcdHJldCA9IG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XG4yNDU5Olx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDk0MgoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSAmIzM0O210NzkxNV9kcml2ZXJfb3duJiMzNDsgZnVuY3Rpb246CgoqKk15IFNlbGYtQXNzZXNzbWVudDogQW0gSSBSZWFkeSB0byBPd24gVGhpcyBIYXJkd2FyZT8qKgoKQWxyaWdodCwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7bSBhYm91dCB0byBhc3Nlc3MgaWYgSSwgdGhlIG10NzkxNSBkcml2ZXIsIGFtIGluIGEgcG9zaXRpb24gdG8gdGFrZSBjaGFyZ2Ugb2YgdGhpcyBoYXJkd2FyZS4gTXkgd2hvbGUgcHVycG9zZSBpcyB0byBtYW5hZ2UgaXQsIHRvIG1ha2UgaXQgZG8gaXRzIHRoaW5nLiBCdXQgSSBjYW4mIzM5O3QganVzdCBiYXJnZSBpbjsgdGhlcmUgYXJlIHByb3RvY29scywgY2hlY2tzIGFuZCBiYWxhbmNlcywgcmlnaHQ/IEJlZm9yZSBJIHN0YXJ0IGlzc3VpbmcgY29tbWFuZHMgYW5kIGp1Z2dsaW5nIHJlZ2lzdGVycywgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgSSYjMzk7bSB0aGUgY29ycmVjdCBlbnRpdHkgZm9yIHRoaXMgb3BlcmF0aW9uLiBUaGlzIGNoZWNrLCB0aGlzICptdDc5MTVfZHJpdmVyX293biogZnVuY3Rpb24sIGlzIHRoZSBnYXRla2VlcGVyLiBJdCYjMzk7cyB0aGUgbW9tZW50IG9mIHRydXRoIHdoZXJlIEkgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIG15IHR1cm4gdG8gb3duIGl0IGFuZCBtYWtlIGl0IGRvIGl0cyB0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjI5MDpcdFxuMjI5MTpcdFx0cmV0dXJuIDA7XG4yMjkyOlx0fVxuMjI5MzpcdFxuMjI5NDpcdHN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfbXdkcyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGVuYWJsZWQpXG4yMjk1Olx0e1xuMjI5NjpcdFx0c3RydWN0IHtcbjIyOTc6XHRcdFx0dTggZW5hYmxlO1xuMjI5ODpcdFx0XHR1OCBfcnN2WzNdO1xuMjI5OTpcdFx0fSBfX3BhY2tlZCByZXEgPSB7XG4yMzAwOlx0XHRcdC5lbmFibGUgPSBlbmFibGVkXG4yMzAxOlx0XHR9O1xuMjMwMjpcdFxuMjMwMzpcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChNV0RTX1NVUFBPUlQpLCBcdTAwMjZyZXEsXG4yMzA0Olx0XHRcdFx0XHQgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbjIzMDU6XHR9XG4yMzA2Olx0XG4yMzA3Olx0aW50IG10NzkxNV9tY3Vfc2V0X211cnVfY3RybChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgY21kLCB1MzIgdmFsKVxuMjMwODpcdHtcbjIzMDk6XHRcdHN0cnVjdCB7XG4yMzEwOlx0XHRcdF9fbGUzMiBjbWQ7XG4yMzExOlx0XHRcdHU4IHZhbFs0XTtcbjIzMTI6XHRcdH0gX19wYWNrZWQgcmVxID0ge1xuMjMxMzpcdFx0XHQuY21kID0gY3B1X3RvX2xlMzIoY21kKSxcbjIzMTQ6XHRcdH07XG4yMzE1Olx0XG4yMzE2Olx0XHRwdXRfdW5hbGlnbmVkX2xlMzIodmFsLCByZXEudmFsKTtcbjIzMTc6XHRcbjIzMTg6XHRcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSwgXHUwMDI2cmVxLFxuMjMxOTpcdFx0XHRcdFx0IHNpemVvZihyZXEpLCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjUxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgbXQ3Nl9tY3Vfc2VuZF9tc2dgIEZ1bmN0aW9uKioKCkhtbSwgc28gYG10NzZfbWN1X3NlbmRfbXNnYCBpcyBjbGVhcmx5IHRoZSB3b3JraG9yc2UgaGVyZSBmb3Igc2VuZGluZyBtZXNzYWdlcyBhbmQgKndhaXRpbmcqIGZvciBhIHJlcGx5LiBUaGF0JiMzOTtzIGNydWNpYWwuIElmIHRoZSBkZXZpY2UgZG9lc24mIzM5O3QgcmVzcG9uZCwgdGhlbiB0aGUgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gcmV0dXJuIGFuIGVycm9yLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBudWFuY2VzIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgdGltZW91dCBtZWNoYW5pc20sIHJldHJ5IGNvdW50LCBhbmQgZXJyb3IgY29kZXMgYXJlIGFsbCBnb2luZyB0byBiZSBpbXBvcnRhbnQgaW4gYW55IGRlYnVnZ2luZyBzaXR1YXRpb24uIExldCYjMzk7cyBzZWUgaG93IGBtdDc5MTVfZHJpdmVyX293bmAgZml0cyBpbnRvIHRoZSBwaWN0dXJlLCBob3cgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBob29rcyBpbnRvIHRoaXMgbWVzc2FnZSBzZW5kaW5nIGZ1bmN0aW9uYWxpdHksIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X2RyaXZlcl9vd24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMDU3PWludCBtdDc5MTVfbWN1X2FkZF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTI6c3RhdGljIGludCBtdDc5MTVfZHJpdmVyX293bihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBiYW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjQxMD1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MTk6XHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMy1cdGlmIChkZXYtXHUwMDNlaGlmMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQyNDpcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjUtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDI0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBtdDc5MTVfZHJpdmVyX293bmAsIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UgYW5kIGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgT3duZXJzaGlwKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIHJlYWRpbmcgYG10NzkxNV9kcml2ZXJfb3duYC4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGlzIGxpa2VseSBtZWFucyBpdCBkZWFscyB3aXRoIHRoZSBjb3JlIG93bmVyc2hpcCBvciBsaWZlY3ljbGUgbWFuYWdlbWVudCBhc3BlY3RzIG9mIHRoZSBNVDc5MTUgZHJpdmVyIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgY29uY3VycmVuY3ksIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBJcyB0aGlzIGFib3V0IHRoZSBkcml2ZXIgY2xhaW1pbmcgaGFyZHdhcmUgcmVzb3VyY2VzLCBtYW5hZ2luZyBhY2Nlc3MgdG8gcmVnaXN0ZXJzLCBvciBwZXJoYXBzIGhhbmRsaW5nIGludGVycnVwdCBoYW5kbGVycz8gSSBuZWVkIHRvIGxvb2sgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMgb3IgZnVuY3Rpb25zIHRoYXQgY2xlYXJseSBkZWZpbmUgd2hvICYjMzQ7b3ducyYjMzQ7IHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50cyBvciBzdGF0ZXMgYXQgYW55IGdpdmVuIHRpbWUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyDigJMgbXV0ZXhlcywgc3BpbmxvY2tzLCBzZW1hcGhvcmVzIOKAkyBoZWF2aWx5IHVzZWQgaGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIGRlYWRsb2Nrcy4gSXMgdGhlcmUgYSBjbGVhciBoaWVyYXJjaHkgb2Ygb3duZXJzaGlwIGVzdGFibGlzaGVkPyBJcyBpdCB3ZWxsIGRvY3VtZW50ZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIHBvdGVudGlhbCBpbXByb3ZlbWVudHMgaW4gdGhlIGRlc2lnbiBmcm9tIGEgcmVhbC10aW1lIHBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlPyBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGluaXRpYWxpemF0aW9uLCBzaHV0ZG93biwgYW5kIGVycm9yIHJlY292ZXJ5LiBJcyB0aGUgb3duZXJzaGlwIGNsZWFybHkgdHJhbnNmZXJyZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZCBvciB1bnBsdWdnZWQ/IEFuZCBob3cgd2VsbCBkb2VzIGl0IGRlYWwgd2l0aCBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBuZWVkaW5nIGFjY2VzcyB0byB0aGUgc2FtZSBoYXJkd2FyZSByZXNvdXJjZXM/IFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nIHRvIHJlYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIxMTI6XHRzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXG4yMTEzOlx0e1xuMjExNDpcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSwgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOKTtcbjIxMTU6XHRcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksXG4yMTE2Olx0XHRcdFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcbjIxMTc6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O1RpbWVvdXQgZm9yIGRyaXZlciBvd25cXG5cJiMzNDspO1xuMjExODpcdFx0XHRyZXR1cm4gLUVJTztcbjIxMTk6XHRcdH1cbjIxMjA6XHRcbjIxMjE6XHRcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cbjIxMjI6XHRcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXG4yMTIzOlx0XHRcdE1UX1RPUF9MUENSX0hPU1RfQkFORF9TVEFUKTtcbjIxMjQ6XHRcbjIxMjU6XHRcdHJldHVybiAwO1xuMjEyNjpcdH1cbjIxMjc6XHRcbjIxMjg6XHRzdGF0aWMgaW50XG4yMTI5Olx0bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4yMTMwOlx0e1xuMjEzMTpcdFx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxODcKCQkJCQkJCW91dHB1dDogNjYKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYG10NzZfcG9sbF9tc2VjYCYjMzk7cyBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3Nl9wb2xsX21zZWNgIGFuZCBpdHMgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggc3l6a2FsbGVyLiBUaGUgYmFzaWMgaWRlYSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcG9sbHMgYSByZWdpc3RlciB1bnRpbCBhIHNwZWNpZmljIGNvbmRpdGlvbiBpcyBtZXQsIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0hleSwgaWYgc3l6a2FsbGVyIGlzIGZ1enppbmcgdGhpcywgY291bGRuJiMzOTt0IGl0IGp1c3QgbWFwIHRoZSBNTUlPIHJlZ2lvbiwgd3JpdGUgdGhlIHRhcmdldCB2YWx1ZSwgYW5kIGZvcmNlIGBtdDc2X3BvbGxfbXNlY2AgdG8gcmV0dXJuIGVhcmx5PyYjMzQ7IEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCBhY3R1YWxseSBzaW11bGF0ZSBoYXJkd2FyZSByZXNwb25zZXMgYnkgbWFwcGluZyBNTUlPIHRvIHVzZXJzcGFjZSBhbmQgcnVubmluZyBhIHRocmVhZCB0byBmYWtlIGl0LiBUaGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MhCgpXYWl0IGEgbWludXRlLCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBkb2VzbiYjMzk7dCBkbyB0aGF0LiBJdCBqdXN0IGNyZWF0ZXMgYSB2aXJ0dWFsIFBDSSBkZXZpY2UuIFRoZSBNTUlPIHJlZ2lvbnMsIGluIHRoaXMgc2V0dXAsIGFyZSB0cmVhdGVkIGFzIHJlZ3VsYXIgbWVtb3J5LCB3aGljaCBtZWFucyByZWFkcyByZXR1cm4gd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgd3JpdHRlbiB0aGVyZS4gT2theSwgc28gaWYgYG10NzZfcG9sbF9tc2VjYCByZWFkcyBgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpYCwgaXTigJlzIGdvaW5nIHRvIHJlYWQgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgd3JpdHRlbi4gQW5kLCBpZiB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkIGFzIHN1Y2gsIGBtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLCBNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV04pYCBzaG91bGQgd3JpdGUgdGhlIHZhbHVlLgoKQWxyaWdodCwgc28gdGhlIGtleSBpcyB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgd3JpdHRlbiBhbmQgd2hhdCB3ZSYjMzk7cmUgcG9sbGluZyBmb3IuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMgb2YgYE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTmAgYW5kIGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRob3NlIGxvb2sgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOfE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTEyPXN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExNDpcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE1LVx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTY6XHRcdFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTctXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBkcml2ZXIgb3duXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmg9NTA9ZW51bSBvZmZzX3JldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDAtI2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTlx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAxOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOXHRCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAyOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmgtMTEwMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0MjgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZmlybXdhcmUgbG9hZGluZy4gSXQgbG9va3MgbGlrZSBgbXQ3Nl93cmAgaXMgd3JpdGluZyBgQklUKDEpYCB0byB0aGlzIHJlZ2lzdGVyLCBhbmQgdGhlbiBgbXQ3Nl9wb2xsX21zZWNgIGltbWVkaWF0ZWx5IGNvbWVzIGluIGFuZCByZWFkcyB0aGUgc2FtZSByZWdpc3Rlci4gTm93LCBgbXQ3Nl9wb2xsX21zZWNgIHRoZW4gbWFza3MgdGhhdCByZWdpc3RlciB2YWx1ZSB3aXRoIGBCSVQoMilgLCB3aGljaCBpcywgZnJvbSB3aGF0IEkgY2FuIHNlZSwgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgLiBUaGUgY29kZSBJJiMzOTttIGFuYWx5emluZyBpcyBleHBlY3RpbmcgYDBgLiBIbW0sIGxldCBtZSB0aGluay4KClJpZ2h0LCBgbXQ3Nl9wb2xsX21zZWNgIGlzIGNoZWNraW5nIGlmIGAodmFsICZhbXA7IG1hc2spID09IGV4cGVjdGVkYC4gSGVyZSwgYG1hc2tgIGlzIGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYCB3aGljaCBpcyBgQklUKDIpYCwgYW5kIGBleHBlY3RlZGAgaXMsIGFzIEkgbm90ZWQsIGAwYC4gU2luY2UgYEJJVCgxKWAgYW5kIGBCSVQoMilgIGFyZSBkaXN0aW5jdCBiaXRzLCBhbmQgYEJJVCgxKSAmYW1wOyBCSVQoMikgPT0gMGAsIHRoYXQgbWVhbnMgdGhlIGNvbmRpdGlvbiBgKHZhbCAmYW1wOyBtYXNrKSA9PSAwYCBpcyAqaW1tZWRpYXRlbHkqIHRydWUhCgpTbywgdGhlIGNvZGUgaXMgZ29pbmcgdG8gc3VjY2VlZCByaWdodCBhd2F5LiBUaGlzIG1lYW5zIGBtdDc5MTVfZHJpdmVyX293bmAgd2lsbCB0aGluayBpdCYjMzk7cyBnb3Qgb3duZXJzaGlwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgd2hhdCBpcyBleHBlY3RlZCwgc28gbGV0JiMzOTtzIGNvbnRpbnVlLiBJIG5lZWQgdG8gbm93IG1vdmUgb24gYW5kIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBiZWhhdmlvciBvbiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbG9hZF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjE0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxNDI6c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjE0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjQxMD1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0Mjk6XHRyZXQgPSBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQzMC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MzUyCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG10NzkxNV9sb2FkX2Zpcm13YXJlYC4gSGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcgYXMgSSBsb29rIHRocm91Z2ggdGhpczoKCioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIGBtdDc5MTVfbG9hZF9maXJtd2FyZWAuIEltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGdvZXMgdG8gd2hhdCB0aGlzIGZ1bmN0aW9uIGlzICpzdXBwb3NlZCogdG8gZG86IGxvYWQgZmlybXdhcmUgb250byB0aGUgTVQ3OTE1IGNoaXAsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgY2hhbGxlbmdlczogZXJyb3IgaGFuZGxpbmcsIGVuc3VyaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyB2YWxpZCwgYW5kIHRoZSBzZWN1cmUgdHJhbnNmZXIgb2YgZGF0YSB0byB0aGUgZGV2aWNlLiBJIGtub3cgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGRyaXZlciB0byBmdW5jdGlvbi4KCkkmIzM5O20gc2Nhbm5pbmcgZm9yIGhvdyBpdCYjMzk7cyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgaXQgdXNpbmcgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSksIGlzIGl0IGNvbW11bmljYXRpbmcgdmlhIFNQSSwgUENJZSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJlaW5nIHVzZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVzIHRyYW5zYWN0aW9ucyB0byBwcm9wZXJseSBkaWFnbm9zZSBhbnkgcG90ZW50aWFsIGlzc3VlcyBsYXRlci4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoZXkgaGFuZGxlIHJldHJpZXMgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcgZHVyaW5nIHRoZSB0cmFuc2Zlci4gSXQgY291bGQgYmUgYSBzaW1wbGUgdGltZW91dCBvciBhIG1vcmUgY29tcGxleCByZWNvdmVyeSBtZWNoYW5pc20uIEkgbmVlZCB0byBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSByZXRyeSBwb2xpY3kuCgpJJiMzOTttIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLiBJJiMzOTttIGV4cGVjdGluZyBjaGVja3MgZm9yIHRoaW5ncyBsaWtlIGltYWdlIHNpemUsIHZlcnNpb24gY29tcGF0aWJpbGl0eSwgYW5kIHBvdGVudGlhbCBjaGVja3N1bSB2ZXJpZmljYXRpb24uIEkmIzM5O20gYWxzbyBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyBmYWlsdXJlcy4gRG9lcyBpdCBwcm92aWRlIGluZm9ybWF0aXZlIGVycm9yIGNvZGVzPyBEb2VzIGl0IGF0dGVtcHQgdG8gcmVzZXQgdGhlIGRldmljZSBpZiBhIGxvYWQgZmFpbHM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYSBmYWlsZWQgZmlybXdhcmUgbG9hZD8gSXMgaXQgaGFuZGxlZCBncmFjZWZ1bGx5LCBvciBkb2VzIGl0IGxlYXZlIHRoZSBkZXZpY2UgaW4gYW4gdW51c2FibGUgc3RhdGU/IEkmIzM5O20gaG9waW5nIHRvIHNlZSB3ZWxsLWRlZmluZWQgZXJyb3IgcGF0aHMgYW5kIGxvZ2dpbmcgdGhhdCYjMzk7cyBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcuCgpJJiMzOTttIGNvbnNpZGVyaW5nIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhlcmUgYW55IHZhbGlkYXRpb24gb2YgdGhlIGZpcm13YXJlIGltYWdlPyBJcyBpdCBjaGVja2luZyBmb3Igc2lnbmF0dXJlcz8gSWYgbm90LCB0aGF0JiMzOTtzIGEgcmVkIGZsYWcuIFdoYXQgbWVhc3VyZXMgYXJlIGJlaW5nIHRha2VuIHRvIHByZXZlbnQgYSBtYWxpY2lvdXMgZmlybXdhcmUgZnJvbSBiZWluZyBsb2FkZWQ/CgpBbmQgbGFzdGx5LCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBuZWVkIHRvIGRlYnVnIHRoaXMgZnVuY3Rpb24uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hhdCB0b29scyBJJiMzOTtsbCBuZWVkIHRvIHVzZSwgc3VjaCBhcyBhIEpUQUcgZGVidWdnZXIsIG9yIHByb3RvY29sIGFuYWx5emVyLCB0byBtb25pdG9yIHRoZSBkYXRhIHRyYW5zZmVyIGFuZCB2ZXJpZnkgaXRzIGludGVncml0eS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoYXQgdG8gbG9vayBmb3Igd2hlbiBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBmaXJtd2FyZSBsb2FkaW5nIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjE0MjpcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjIxNDM6XHR7XG4yMTQ0Olx0XHRpbnQgcmV0O1xuMjE0NTpcdFxuMjE0NjpcdFx0LyogUmVsZWFzZSBTZW1hcGhvcmUgaWYgdGFrZW4gYnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQgKi9cbjIxNDc6XHRcdHJldCA9IG10NzZfY29ubmFjX21jdV9wYXRjaF9zZW1fY3RybChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgZmFsc2UpO1xuMjE0ODpcdFx0aWYgKHJldCAhPSBQQVRDSF9SRUxfU0VNX1NVQ0NFU1MpIHtcbjIxNDk6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0NvdWxkIG5vdCByZWxlYXNlIHNlbWFwaG9yZVxcblwmIzM0Oyk7XG4yMTUwOlx0XHRcdC8qIENvbnRpbnVlIGFueXdheXMgKi9cbjIxNTE6XHRcdH1cbjIxNTI6XHRcbjIxNTM6XHRcdC8qIEFsd2F5cyByZXN0YXJ0IE1DVSBmaXJtd2FyZSAqL1xuMjE1NDpcdFx0bXQ3Nl9jb25uYWNfbWN1X3Jlc3RhcnQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMjE1NTpcdFxuMjE1NjpcdFx0LyogQ2hlY2sgaWYgTUNVIGlzIHJlYWR5ICovXG4yMTU3Olx0XHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSk7XG4yMTU4Olx0XHRpZiAocmV0KSB7XG4yMTU5Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBkaWQgbm90IGVudGVyIGRvd25sb2FkIHN0YXRlXFxuXCYjMzQ7KTtcbjIxNjA6XHRcdFx0cmV0dXJuIHJldDtcbjIxNjE6XHRcdH1cbjIxNjI6XHRcbjIxNjM6XHRcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3BhdGNoKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBmd19uYW1lX3ZhcihkZXYsIFJPTV9QQVRDSCkpO1xuMjE2NDpcdFx0aWYgKHJldClcbjIxNjU6XHRcdFx0cmV0dXJuIHJldDtcbjIxNjY6XHRcbjIxNjc6XHRcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3JhbShcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgZndfbmFtZV92YXIoZGV2LCBGSVJNV0FSRV9XTSksXG4yMTY4Olx0XHRcdFx0XHQgICAgZndfbmFtZShkZXYsIEZJUk1XQVJFX1dBKSk7XG4yMTY5Olx0XHRpZiAocmV0KVxuMjE3MDpcdFx0XHRyZXR1cm4gcmV0O1xuMjE3MTpcdFxuMjE3MjpcdFx0cmV0ID0gbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgdHJ1ZSk7XG4yMTczOlx0XHRpZiAocmV0KVxuMjE3NDpcdFx0XHRyZXR1cm4gcmV0O1xuMjE3NTpcdFxuMjE3NjpcdFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xuMjE3NzpcdFxuMjE3ODpcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0Zpcm13YXJlIGluaXQgZG9uZVxcblwmIzM0Oyk7XG4yMTc5Olx0XG4yMTgwOlx0XHRyZXR1cm4gMDtcbjIxODE6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTQzCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipNQ1UgUmVhZGluZXNzIENoZWNrKioKClJpZ2h0LCBzbywgYG10NzkxNV9maXJtd2FyZV9zdGF0ZWAuLi4gdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgaXNuJiMzOTt0IGl0PyBJdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlciwgYmFzaWNhbGx5LiBXaGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaGVyZSBpcyB0aGUgY29yZSBvZiB0aGUgaXNzdWU6ICppcyogdGhlIE1DVSBhY3R1YWxseSByZWFkeSB0byBkbyBpdHMgam9iPyBJdCYjMzk7cyBub3QganVzdCBhIGJpbmFyeSAmIzM0O29uL29mZiYjMzQ7IHNpdHVhdGlvbiwgZWl0aGVyLiBJIG5lZWQgdG8ga25vdyB0aGUgKnN0YXRlKiBvZiBpdC4gSXMgdGhlIGZpcm13YXJlIGxvYWRlZD8gSGFzIGl0IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgY29ycmVjdGx5PyBBcmUgYWxsIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgY29tcG9uZW50cyByZXBvcnRpbmcgYXMgb3BlcmF0aW9uYWw/IFRoaXMgY2hlY2sgaXMgbW9yZSB0aGFuIGp1c3QgYSBoZWFydGJlYXQ7IGl0JiMzOTtzIGEgZGVlcCBkaXZlIGludG8gdGhlIE1DVSYjMzk7cyBjdXJyZW50IG9wZXJhdGlvbmFsIHN0YXR1cy4gQW5kIGRlcGVuZGluZyBvbiBpdHMgb3V0Y29tZSwgdGhhdCBkcml2ZXMgKmV2ZXJ5dGhpbmcqIHRoYXQgZm9sbG93cyBpbiB0aGUgc3lzdGVtLiBJZiB0aGF0IE1DVSBpc24mIzM5O3QgcmVhZHkgdG8gZ28sIHRoZSB3aG9sZSBzaGViYW5nIGlzIGdvaW5nIHRvIHN0YWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTI4Olx0c3RhdGljIGludFxuMjEyOTpcdG10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuMjEzMDpcdHtcbjIxMzE6XHRcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG4yMTMyOlx0XHRcdFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xuMjEzMzpcdFxuMjEzNDpcdFx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9NSVNDLCBNVF9UT1BfTUlTQ19GV19TVEFURSxcbjIxMzU6XHRcdFx0XHQgICAgc3RhdGUsIDEwMDApKSB7XG4yMTM2Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBpbml0aWFsaXppbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuMjEzNzpcdFx0XHRyZXR1cm4gLUVJTztcbjIxMzg6XHRcdH1cbjIxMzk6XHRcdHJldHVybiAwO1xuMjE0MDpcdH1cbjIxNDE6XHRcbjIxNDI6XHRzdGF0aWMgaW50IG10NzkxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDk5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NiBEcml2ZXIgUG9sbGluZyBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbXQ3Nl9wb2xsX21zZWNgIGZ1bmN0aW9uIGFuZCBob3cgaXQgY2hlY2tzIHRoZSBmaXJtd2FyZSBzdGF0ZS4gSXQgc2VlbXMgdG8gYmUgcG9sbGluZyB0aGUgYE1UX1RPUF9NSVNDYCByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIGZpZWxkLCBhbmQgd2FpdGluZyBmb3IgaXQgdG8gcmVhY2ggYSBjZXJ0YWluIGBzdGF0ZWAuICBSaWdodCwgYW5kIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc3l6a2FsbGVyIGZ1enppbmcgdGhpcywgdGhlIE1NSU8gaXNuJiMzOTt0IG1hcHBlZCwgd2hpY2ggaXMgYSBrZXkgcG9pbnQgdG8gcmVtZW1iZXIgaGVyZS4gVGhpcyBtZWFucyB0aGUgcmVhZCBmcm9tIGBNVF9UT1BfTUlTQ2AgaXMgbGlrZWx5IGdvaW5nIHRvIHJldHVybiB6ZXJvLCBvciB3aGF0ZXZlciBnYXJiYWdlIHdhcyBwcmV2aW91c2x5IHRoZXJlLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBgTVRfVE9QX01JU0NgIGlzbiYjMzk7dCBhY3R1YWxseSB3cml0dGVuIHRvICpiZWZvcmUqIHRoaXMgcG9sbGluZyBoYXBwZW5zISBTbywgd2UmIzM5O3JlIGxpa2VseSBzdGFydGluZyB3aXRoIGEgcmVhZCBvZiB6ZXJvLgoKQW5kIHRoZSB0YXJnZXQgYHN0YXRlYD8gIEl0JiMzOTtzIGBGV19TVEFURV9GV19ET1dOTE9BRGAuIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgbm90IHplcm8uIFdlIHNob3VsZCBjb25maXJtIHRoaXMgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfU1RBVEVfRldfRE9XTkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcdFx0XHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTcyMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBkZWVwIGRpdmUgaW50byBlbWJlZGRlZCBzeXN0ZW1zOgoKKipDaGVja2luZyBGaXJtd2FyZSBTdGF0ZXMgaW4gbXQ3NioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgZGVidWdnaW5nIG9yIGFuYWx5c2lzLCBJIHJlYWxseSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCB0aGUgZmlybXdhcmUgaW4gYG10NzZgLiBMZXQmIzM5O3MgYXNzdW1lIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggd2hlcmUgdGhpbmdzIGFyZSBpbiB0aGUgZmlybXdhcmUgZG93bmxvYWQgYW5kIHJlYWR5IHByb2Nlc3Nlcy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBpbW1lZGlhdGVseSBob21pbmcgaW4gb24gdGhlIGNydWNpYWwgc3RhdGVzIGRlZmluZWQgd2l0aGluIHRoYXQgbW9kdWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gY2hlY2sgdGhlIHZhbHVlcyBvZiBgRldfU1RBVEVfUkRZYCBhbmQgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYC4gVGhlc2UgYXJlLCBvZiBjb3Vyc2UsIGFic29sdXRlbHkgY3JpdGljYWwuIFRoZXkmIzM5O2xsIHRlbGwgbWUgaWYgdGhlIGZpcm13YXJlIGlzIHJlYWR5IHRvIGJlIHVzZWQgb3Igc3RpbGwgaW4gdGhlIHByb2Nlc3Mgb2YgZG93bmxvYWRpbmcuIEtub3dpbmcgdGhlIGN1cnJlbnQgdmFsdWVzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBwb3RlbnRpYWwgaXNzdWVzIGFuZCBkZXRlcm1pbmUgdGhlIHJpZ2h0IGNvdXJzZSBvZiBpbnZlc3RpZ2F0aW9uLiBUaGUgc3RhdHVzIGJpdHMgYXJlIGxpa2VseSBiZWluZyBzZXQgb3IgY2xlYXJlZCBieSBzcGVjaWZpYyBpbnRlcnJ1cHQgcm91dGluZXMgb3IgaGFyZHdhcmUgc2lnbmFscy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5IGhvdyB0aGVzZSBzdGF0ZXMgYXJlIHRyYW5zaXRpb25lZCBhbmQgd2hhdCB0cmlnZ2VycyBlYWNoIHN0YXRlIGNoYW5nZSB0byBmdWxseSBncmFzcCB0aGUgY29udHJvbCBmbG93LiBSaWdodCBub3csIEkgY2FuIHNlZSBteSBwYXRoIGZvcndhcmQgYXMgYmVpbmcgZGlyZWN0ZWQgdG93YXJkIGludmVzdGlnYXRpbmcgdGhlIGFjdHVhbCBudW1lcmljYWwgdmFsdWVzIG9yIGVudW1lcmF0aW9ucyBvZiB0aGVzZSBzdGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZXX1NUQVRFX0ZXX0RPV05MT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDMzPXN0YXRpYyBpbnQgbXQ3NjE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ0MDpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDcwLVx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ3MTpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDUtXHRGV19TVEFURV9JTklUSUFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2Olx0RldfU1RBVEVfRldfRE9XTkxPQUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDctXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMS1cdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlx0XHRcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Mi1cdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4MzpcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXHRcdC8qIHJlc3RhcnQgZmlybXdhcmUgb25jZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cdFx0bXQ3OTk2X21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODY6XHRcdHJldCA9IG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODctXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3NC1cdG10Nzk5Nl9tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1Olx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3Ni1cdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ZhaWxlZCB0byBleGl0IG1jdVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMzQ5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGYWlsdXJlIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBzZXF1ZW5jZSBvZiBldmVudHMgcmVsYXRlZCB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBpcyBzZXQgdG8gMSwgYW5kIGBGV19TVEFURV9SRFlgIGlzIDMuIFRoYXQgbWVhbnMgYG10NzZfcG9sbF9tc2VjYCB3aWxsIGJlIGxvb2tpbmcgZm9yIGVpdGhlciBvZiB0aG9zZSB2YWx1ZXMuIFRoZSByZWdpc3RlciByZWFkIHJlc3VsdHMgaW4gMCwgdHJpZ2dlcmluZyBhIHRpbWVvdXQgYW5kIGFuIGVycm9yLiBUaGlzLCBpbiB0dXJuLCBjYXVzZXMgYG10NzkxNV9sb2FkX2Zpcm13YXJlYCwgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgdG8gZmFpbCwgYW5kIGNvbnNlcXVlbnRseSwgYG10NzkxNV9yZXNldGAgYW5kIGBtdDc2X3Jlc2V0X2RldmljZWAgbmV2ZXIgZ2V0IGNhbGxlZC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBhIHByZXR0eSB0eXBpY2FsIGZpcm13YXJlIGxvYWRpbmcgaXNzdWUuCgpCdXQsIGhvbGQgb24uIEkgbmVlZCB0byBiZSBtb3JlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHNpbmNlIHRoaXMgY291bGQgYmUgYSBzeXprYWxsZXIgcmVwb3J0LiBDb3VsZCB0aGVyZSBiZSBhIGRpZmZlcmVudCBzY2VuYXJpbyBhdCBwbGF5LCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSBVU0IgZGV2aWNlPyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMuIElzIGBtdDc2X3Jlc2V0X2RldmljZWAgZXZlbiBjYWxsZWQgYnkgYSBVU0IgZHJpdmVyLCBmb3IgaW5zdGFuY2U/CgpJJiMzOTt2ZSBhbHJlYWR5IGdyZXBwZWQgdGhlIGNvZGUgYW5kIGl0IHNlZW1zIGxpa2UgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMuIEkgY2FuIGVsaW1pbmF0ZSBgbXQ3NjE1YCwgYG10NzZ4MGAsIGBtdDc2eDJgLCBgbXQ3OTIxYCwgYW5kIGBtdDc5MjVgIGZyb20gZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKSG1tLCBtYXliZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggYG10NzZfd2NpZF9jbGVhbnVwYD8gQnV0IHdhaXQsIHRoZSBwYXRjaCAqc3BlY2lmaWNhbGx5KiBtb3ZlcyB0aGUgY2FsbCB0byBgbXQ3Nl93Y2lkX2NsZWFudXBgIHRvICphZnRlciogdGhlIHBvaW50ZXIgaXMgY2xlYXJlZC4gVGhhdCBtZWFucyB0aGF0IHRoaXMgZnVuY3Rpb24gKndvbiYjMzk7dCogdHJpZ2dlciBhIGNhbGwgdG8gYG10NzZfcmVzZXRfZGV2aWNlYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhhdCBwYXRjaCBhZ2Fpbi4uLll1cCwgdGhhdCYjMzk7cyB3aGF0IGl0IHNob3dzLiBUaGUgd2NpZCBjbGVhbnVwIGlzIGNhbGxlZCAqYWZ0ZXIqIGNsZWFyaW5nIHRoZSB3Y2lkIHBvaW50ZXIuCgpBbHJpZ2h0LCBzbyBpZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzICpvbmx5KiBjYWxsZWQgYnkgYG10NzkxNWAgYW5kIGBtdDc5OTZgLCBhbmQgKnRob3NlKiBhcmUgUENJZSBkcml2ZXJzLCB0aGVuIHRoaXMgKmVudGlyZSogY29kZSBwYXRoIGlzIGxpa2VseSB1bnJlYWNoYWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciBzeXprYWxsZXIuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSBiZXR0ZXIgYmUgYWJzb2x1dGVseSBzdXJlLiBJcyB0aGVyZSAqYW55KiBjaGFuY2UgdGhhdCBgbXQ3OTIxYCBjYWxscyBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBmb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGxpa2UgYG10NzkyMV9tYWNfcmVzZXRgIG9yIHNvbWV0aGluZyBjb21wYXJhYmxlLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGNvZGUgYmFzZSBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9tYWNfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTk6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmssIG10NzkyMV9tYWNfcmVzZXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAwLVx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkyMV9pbml0X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzND1tdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1OC0vKiBzeXN0ZW0gZXJyb3IgcmVjb3ZlcnkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY1OTp2b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTI2OT12b2lkIG10NzkyMV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yNzAtXHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyNzE6dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTI3Mi1pbnQgbXQ3OTIxZV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTEwNwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkyMV9tYWNfcmVzZXRfd29ya2AgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcmVzZXQgcHJvY2VkdXJlIHdpdGhpbiB0aGUgbGFyZ2VyIGBtdDc5MjFgIGNvbnRleHQuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBiYWNrIHRvIGEga25vd24gZ29vZCBzdGF0ZS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgY2xlYXJpbmcgb3V0IGFueSBzdGFsZSBjb25maWd1cmF0aW9ucywgaGFuZGxpbmcgcGVuZGluZyB0cmFuc21pc3Npb25zLCBhbmQgZW5zdXJpbmcgdGhlIGhhcmR3YXJlIGlzIHJlYWR5IHRvIHJlY2VpdmUgbmV3IGNvbW1hbmRzLiBJIGV4cGVjdCB0byBzZWUgc3RlcHMgaW52b2x2aW5nIGRpc2FibGluZyBpbnRlcnJ1cHRzLCBwb3RlbnRpYWxseSBmbHVzaGluZyBxdWV1ZXMsIGFuZCByZWluaXRpYWxpemluZyByZWdpc3RlcnMuIERlcGVuZGluZyBvbiBob3cgc29waGlzdGljYXRlZCB0aGUgY2hpcCBpcywgaXQgbWF5IGFsc28gaW5jbHVkZSBwb3dlciBjeWNsaW5nIG9yIGEgbW9yZSBzdWJ0bGUgaGFyZHdhcmUgcmVzZXQgc2VxdWVuY2UuIEtub3dpbmcgdGhpcyBmdW5jdGlvbiBpcyBsYWJlbGVkIGFzIGEgJiMzNDt3b3JrJiMzNDsgaW1wbGllcyB0aGF0IGl0IGlzIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5LCBwZXJoYXBzIGRlZmVycmVkIGJ5IGEgd29ya3F1ZXVlLiBUaGlzIHN1Z2dlc3RzIGEgbmVlZCB0byBwcmV2ZW50IGJsb2NraW5nIGR1cmluZyB0aGUgcmVzZXQgb3BlcmF0aW9uIGFuZCBhbGxvd2luZyBvdGhlciBjcml0aWNhbCB0YXNrcyB0byBjb250aW51ZSB3aXRob3V0IGJlaW5nIHN0YXJ2ZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY1OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjU5Olx0dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIDY2MDpcdHtcbiA2NjE6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG4gNjYyOlx0XHRcdFx0XHRcdCAgICAgIHJlc2V0X3dvcmspO1xuIDY2MzpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XG4gNjY0Olx0XHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXHUwMDI2ZGV2LVx1MDAzZXBtO1xuIDY2NTpcdFx0aW50IGksIHJldDtcbiA2NjY6XHRcbiA2Njc6XHRcdGRldl9kYmcoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtjaGlwIHJlc2V0XFxuXCYjMzQ7KTtcbiA2Njg6XHRcdHNldF9iaXQoTVQ3Nl9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuIDY2OTpcdFx0ZGV2LVx1MDAzZWh3X2Z1bGxfcmVzZXQgPSB0cnVlO1xuIDY3MDpcdFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKGh3KTtcbiA2NzE6XHRcbiA2NzI6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbXBoeS5tYWNfd29yayk7XG4gNjczOlx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cG0tXHUwMDNlcHNfd29yayk7XG4gNjc0Olx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4gNjc1Olx0XG4gNjc2Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAxMDsgaSYjNDM7JiM0MzspIHtcbiA2Nzc6XHRcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRldi1cdTAwM2VtdDc2LmJ1c19odW5nKSlcbiA2Nzg6XHRcdFx0XHRyZXR1cm47XG4gNjc5Olx0XG4gNjgwOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZW10NzYubXV0ZXgpO1xuIDY4MTpcdFx0XHRyZXQgPSBtdDc5MnhfZGV2X3Jlc2V0KGRldik7XG4gNjgyOlx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG4gNjgzOlx0XG4gNjg0Olx0XHRcdGlmICghcmV0KVxuIDY4NTpcdFx0XHRcdGJyZWFrO1xuIDY4NjpcdFx0fVxuIDY4NzpcdFxuIDY4ODpcdFx0aWYgKChtdDc2X2lzX3NkaW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpIHx8IG10NzZfaXNfdXNiKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgXHUwMDI2XHUwMDI2XG4gNjg5Olx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuIDY5MDpcdFx0XHRyZXR1cm47XG4gNjkxOlx0XG4gNjkyOlx0XHRpZiAoaSA9PSAxMClcbiA2OTM6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O2NoaXAgcmVzZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbiA2OTQ6XHRcbiA2OTU6XHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTVQ3Nl9IV19TQ0FOTklORywgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpKSB7XG4gNjk2Olx0XHRcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX2luZm8gaW5mbyA9IHtcbiA2OTc6XHRcdFx0XHQuYWJvcnRlZCA9IHRydWUsXG4gNjk4Olx0XHRcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDYxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIERldmljZSBSZXNldCBGbG93KioKCkFscmlnaHQsIHNvIEkgc2VlIHRoaXMgY29kZSBpbml0aWF0ZXMgYSByZXNldCB1c2luZyBgbXQ3OTJ4X2Rldl9yZXNldChkZXYpYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBkb2VzICp0aGF0KiBmdW5jdGlvbiwgYG10NzkyeF9kZXZfcmVzZXRgLCB0aGVuIHN1YnNlcXVlbnRseSBjYWxsIHRoZSBtb3JlIGdlbmVyaWMsIGxvd2VyLWxldmVsIGRldmljZSByZXNldCBmdW5jdGlvbiBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBsaW5rIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBLbm93aW5nIHRoZSBjYWxsaW5nIHN0cnVjdHVyZSBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCBkZXZpY2Ugc3RhdGUgYWZ0ZXIgdGhlIHJlc2V0LiBJcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFjdGluZyBhcyBhIGJhc2UgZnVuY3Rpb24gZm9yIGFsbCB0aGUgbXQ3NiBkcml2ZXIgcmVzZXRzPyBPciwgaXMgYG10NzkyeF9kZXZfcmVzZXRgIGEgc3RhbmRhbG9uZSByZXNldCBmdW5jdGlvbiwgb3IgYSBzcGVjaWFsaXplZCBvbmU/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBjYWxsIGdyYXBoIHRvIGNvbmZpcm0gdGhlIHJlc2V0IGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbiBhbmQgdGhpcyBtb3JlIGdlbmVyaWMgZnVuY3Rpb24uIFRoaXMgcmVzZXQgYmVoYXZpb3IgbWF5IGhhdmUgaW1wbGljYXRpb25zIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfZGV2X3Jlc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz02NTk9dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4MC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2ODE6XHRcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4Mi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTExPXZvaWQgbXQ3OTI1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTM1LVx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1MzY6XHRcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MzctXHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yNjI9c3RydWN0IG10NzkyeF9kbWFfbGF5b3V0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTI3NC0jZGVmaW5lIG10NzkyeF9pbml0X3Jlc2V0KGRldilcdFx0KChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlaW5pdF9yZXNldChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyNzU6I2RlZmluZSBtdDc5MnhfZGV2X3Jlc2V0KGRldilcdFx0KChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlcmVzZXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjc2LSNkZWZpbmUgbXQ3OTJ4X21jdV9pbml0KGRldilcdFx0KChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlbWN1X2luaXQoZGV2KSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY5NDUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkyeCBEZXZpY2UgUmVzZXQqKgoKT2theSwgc28gYG10NzkyeF9kZXZfcmVzZXRgIGtpY2tzIG9mZiB3aXRoIGEgY2FsbCB0byBgZGV2LSZndDtoaWZfb3BzLSZndDtyZXNldChkZXYpYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgdXNpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZSAoSElGKSBvcGVyYXRpb25zIHN0cnVjdHVyZSB0byBkbyB0aGUgZGlydHkgd29yayBvZiByZXNldHRpbmcgdGhlIGRldmljZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hhdCB0aGUgYHJlc2V0YCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGF0IGBoaWZfb3BzYCBzdHJ1Y3QgYWN0dWFsbHkgKnBvaW50cyogdG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqc3BlY2lmaWMqIHJlc2V0IHJvdXRpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBJcyBpdCBhIGZ1bGwgaGFyZHdhcmUgcmVzZXQsIGEgc29mdHdhcmUtYmFzZWQgd2FybSByZXNldCwgb3Igc29tZXRoaW5nIGluIGJldHdlZW4/IEkgaGF2ZSB0byB1bmRlcnN0YW5kIHRoZSBsZXZlbCBvZiB0aGUgcmVzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwucmVzZXQgPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzIwOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgUmVzZXQgQmVoYXZpb3IgaW4gTVQ3OTIxL01UNzkyNSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlc2V0IGJlaGF2aW9yIG9mIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBjaGlwc2V0cy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIGByZXNldGAgZnVuY3Rpb25hbGl0eSBpbiB0aG9zZSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgbnVhbmNlcyBvZiBob3cgdGhlc2UgY2hpcHMgaGFuZGxlIHJlc2V0cyBpcyBjcml0aWNhbCBmb3IgW21lbnRpb24geW91ciBhcmVhIG9mIGV4cGVydGlzZSwgZS5nLiwgZGVidWdnaW5nIHBvd2VyIG1hbmFnZW1lbnQgaXNzdWVzLCBlbnN1cmluZyByZWxpYWJsZSBmaXJtd2FyZSB1cGRhdGVzLCBpbnZlc3RpZ2F0aW5nIGhhcmR3YXJlIGZhdWx0cywgZXRjLl0uIEtub3dpbmcgdGhlIGRldGFpbHMgb2YgdGhlIHJlc2V0IHByb2Nlc3Mgd2lsbCBhbGxvdyBtZSB0byBbZXhwbGFpbiBob3cgeW91IHdpbGwgdXNlIHRoaXMgdW5kZXJzdGFuZGluZywgZS5nLiwgaWRlbnRpZnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3B0aW1pemUgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBwaW5wb2ludCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgc3BlY2lmaWMgZmFpbHVyZSBJJiMzOTttIHNlZWluZ10uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSByZWxldmFudCBjb2RlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzZXQgc2VxdWVuY2UuIEkgZXhwZWN0IHRvIGZpbmQgY2x1ZXMgYWJvdXQgW21lbnRpb24gc3BlY2lmaWMgYXNwZWN0cyB5b3UmIzM5O3JlIGxvb2tpbmcgZm9yLCBlLmcuLCBob3cgdGhlIHJlZ2lzdGVycyBhcmUgY29uZmlndXJlZCwgd2hhdCBoYXBwZW5zIHRvIHRoZSBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lcywgd2hhdCBraW5kIG9mIGludGVycnVwdHMgYXJlIGdlbmVyYXRlZCwgdGhlIG92ZXJhbGwgdGltaW5nIGRpYWdyYW1dLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXNldCA9JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjU5PXZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjgtXHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY2OTpcdGRldi1cdTAwM2Vod19mdWxsX3Jlc2V0ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY3MC1cdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzAzOlx0ZGV2LVx1MDAzZWh3X2Z1bGxfcmVzZXQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcwNC1cdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM9MjU5PXN0YXRpYyBpbnQgbXQ3OTIxX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy0yODItXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIG10NzkyMV9wY2llX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jOjI4MzpcdFx0LmluaXRfcmVzZXQgPSBtdDc5MjFlX2luaXRfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYzoyODQ6XHRcdC5yZXNldCA9IG10NzkyMWVfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtMjg1LVx0XHQubWN1X2luaXQgPSBtdDc5MjFlX21jdV9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTIwLVx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBtdDc5MjFfc2Rpb19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTIxOlx0XHQuaW5pdF9yZXNldCA9IG10NzkyMXNfaW5pdF9yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzoxMjI6XHRcdC5yZXNldCA9IG10NzkyMXNfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEyMy1cdFx0Lm1jdV9pbml0ID0gbXQ3OTIxc19tY3VfaW5pdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzItXHRcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzM6XHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTc0Olx0XHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3NS1cdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTI3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgVVNCIE1BQyBSZXNldCBGdW5jdGlvbiBDYWxsKioKClJpZ2h0LCBzbyBgbXQ3OTIxdV9tYWNfcmVzZXRgIGlzIGdldHRpbmcgY2FsbGVkLiBBaGEhIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIHNwZWNpZmljIHRvIHRoZSBVU0IgaW50ZXJmYWNlLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGNvbm5lY3Rpb24gaXMgcmVzZXQgb3IgbWF5YmUgZXZlbiBkdXJpbmcgcG93ZXIgbWFuYWdlbWVudCBldmVudHMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgaW5zaWRlIHRoaXMgZnVuY3Rpb24sIGFzIGl0cyByb2xlIGluIFVTQiBpcyBnb2luZyB0byBiZSBjZW50cmFsLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBmb3IgYG10NzkyMXVfbWFjX3Jlc2V0YCBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3Qgc2VxdWVuY2Ugb2YgZXZlbnRzIGFuZCB3aGljaCBoYXJkd2FyZSByZWdpc3RlcnMgaXQmIzM5O3MgbWFuaXB1bGF0aW5nLiBJIGJldCB0aGVyZSBhcmUgc29tZSBzcGVjaWZpYyBVU0ItcmVsYXRlZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBlbWJlZGRlZCB0aGVyZSB0b28sIGFuZCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBhbnkgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUgZGVzY3JpcHRvcnMgdG8gc2VlIGhvdyBpdCYjMzk7cyBhY3R1YWxseSBjb25maWd1cmVkLiBUaGlzIHJlc2V0IG1pZ2h0IGludm9sdmUgZmx1c2hpbmcgVFgvUlggcXVldWVzLCBkaXNhYmxpbmcgaW50ZXJydXB0cywgcmUtaW5pdGlhbGl6aW5nIERNQSBjaGFubmVscywgb3IgZXZlbiByZS1wcm9ncmFtbWluZyBzb21lIGNyaXRpY2FsIHJlZ2lzdGVycyByZWxhdGVkIHRvIHBvd2VyIHNhdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxdV9tYWNfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy04OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjg5OnN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTc0Olx0XHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3NS1cdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MTc1CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG10NzkyMXVfbWFjX3Jlc2V0YC4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSB1c3VhbCBzdXNwZWN0cyBoZXJlLCBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIFdpLUZpIGRyaXZlciByZXNldHMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgYSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGFpbWVkIGF0IGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBpbnRvIGEga25vd24sIGdvb2Qgc3RhdGUgYWZ0ZXIgc29tZSBlcnJvciBvciB1cG9uIGluaXRpYWxpemF0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2U6CgoqKk1BQyBSZXNldCBQcm9jZWR1cmUgQW5hbHlzaXMqKgoKKiAgICoqUmVnaXN0ZXIgV3JpdGVzOioqIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIHdyaXRlcyDigJMgdGhlc2UgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIGhhcmR3YXJlIGNvbnRyb2wuIExpa2VseSB0YXJnZXRpbmcgY29uZmlndXJhdGlvbiByZWdpc3RlcnMsIGNvbnRyb2wgcmVnaXN0ZXJzLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgc3RhdHVzIHJlZ2lzdGVycyB0byBjbGVhciBmbGFncy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGJpdGZpZWxkcyBpbnZvbHZlZCB0byBkZWNpcGhlciB0aGUgcmVzZXQmIzM5O3MgYWN0dWFsIGltcGFjdC4gU3BlY2lmaWNhbGx5LCB3aGF0IHJlZ2lzdGVycyBhcmUgYmVpbmcgdGFyZ2V0ZWQ/IFdoYXQgdmFsdWVzIGFyZSBiZWluZyB3cml0dGVuPyBBbmQgd2hhdCBkb2VzIHRoYXQgc2lnbmlmeSBpbiB0ZXJtcyBvZiBNQUMgYmVoYXZpb3I/CiogICAqKkNsb2NrIENvbnRyb2w6KiogQ2xvY2sgY29udHJvbCBpcyBhbG1vc3QgY2VydGFpbmx5IGludm9sdmVkLiBSZXNldHRpbmcgdGhlIE1BQyBvZnRlbiByZXF1aXJlcyBkaXNhYmxpbmcgYW5kIHJlLWVuYWJsaW5nIGNsb2Nrcywgb3IgYXQgbGVhc3QgbWFuaXB1bGF0aW5nIGNsb2NrIGdhdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNsb2NrIGRlcGVuZGVuY2llcyBhbmQgaWYgdGhlcmUgYXJlIGFueSBjbG9jayBmcmVxdWVuY3kgY2hhbmdlcywgd2hpY2ggd291bGQgYWZmZWN0IHRoZSBQSFkuCiogICAqKkludGVycnVwdCBIYW5kbGluZzoqKiBUaGUgY29kZSBtaWdodCB0b3VjaCB1cG9uIGludGVycnVwdCBlbmFibGluZy9kaXNhYmxpbmcsIHNpbmNlIHRoaXMgaXMgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBNQUMmIzM5O3MgY29tbXVuaWNhdGlvbi4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHNlZSB3aGVuIGFuZCBob3cgaW50ZXJydXB0cyBhcmUgcmUtZW5hYmxlZCBhZnRlciB0aGUgcmVzZXQ7IGFuZCBpZiBhbnkgc3BlY2lmaWMgaW50ZXJydXB0IGZsYWdzIGFyZSBjbGVhcmVkLgoqICAgKipTdGF0ZSBNYWNoaW5lIE1hbmFnZW1lbnQ6KiogTUFDIHJlc2V0cyBmcmVxdWVudGx5IGludm9sdmUgbW92aW5nIHRoZSBNQUMgc3RhdGUgbWFjaGluZSB0aHJvdWdoIHNwZWNpZmljIHN0YXRlczogZnJvbSBwb3RlbnRpYWxseSBiZWluZyBzdG9wcGVkLCB0aHJvdWdoIHJlc2V0LCBhbmQgYmFjayB0byBhbiBvcGVyYXRpb25hbCBzdGF0ZS4gSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhpcyBpcyBoYW5kbGVkLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcy4KKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogSXQmIzM5O3MgdW5saWtlbHkgdGhhdCB0aGUgY29kZSBhc3N1bWVzIGV2ZXJ5dGhpbmcgZ29lcyBwZXJmZWN0bHkuIFNvLCBJIG5lZWQgdG8gc2VlIGhvdyBwb3RlbnRpYWwgZXJyb3JzIGR1cmluZyB0aGUgcmVzZXQgYXJlIGhhbmRsZWQuIEFyZSB0aGVyZSBhbnkgdGltZW91dHMsIHJldHJ5IG1lY2hhbmlzbXMsIG9yIGVycm9yIHJlcG9ydGluZyBpbnZvbHZlZD8gSSB3YW50IHRvIHNlZSBpZiB0aGUgZHJpdmVyIHJlcG9ydHMgaXQsIGFuZCBob3cgaXQgaGFuZGxlcyBpdC4KKiAgICoqUG93ZXIgTWFuYWdlbWVudDoqKiBJbiBtb3JlIGNvbXBsZXggc2l0dWF0aW9ucywgcG93ZXIgbWFuYWdlbWVudCBtaWdodCBiZSBwYXJ0IG9mIHRoZSByZXNldC4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIHBvd2VyLWRvd24gYW5kIHBvd2VyLXVwIHNlcXVlbmNlcyBvZiB2YXJpb3VzIGJsb2Nrcy4gVGhpcyBjb3VsZCBiZSByZWxldmFudCBmb3IgZW5zdXJpbmcgdGhlIE1BQyBpcyBpbiBhIGxvdy1wb3dlciBtb2RlIHdoZW4gbm90IGluIHVzZS4KKiAgICoqRmlybXdhcmUgTG9hZGluZy9SZXN0YXJ0OioqIEluIHNvbWUgYXJjaGl0ZWN0dXJlcywgZXNwZWNpYWxseSB0aG9zZSB3aXRoIG1vcmUgc29waGlzdGljYXRlZCBmaXJtd2FyZSwgYSBNQUMgcmVzZXQgY291bGQgcG90ZW50aWFsbHkgaW52b2x2ZSByZWxvYWRpbmcgb3IgcmVzdGFydGluZyB0aGUgZmlybXdhcmUgb24gYSBkZWRpY2F0ZWQgTUFDIHByb2Nlc3NvciwgaWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIGl0LgoKSW4gc2hvcnQsIEkmIzM5O20gZXhwZWN0aW5nIGEgY2FyZWZ1bGx5IG9yY2hlc3RyYXRlZCBkYW5jZSBvZiByZWdpc3RlciBtYW5pcHVsYXRpb25zLCBzdGF0ZSB0cmFuc2l0aW9ucywgY2xvY2sgYWRqdXN0bWVudHMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFsbCBhaW1lZCBhdCByZXN0b3JpbmcgdGhlIE1BQyB0byBhIGZ1bmN0aW9uaW5nIHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIGRpc3NlY3QgZWFjaCBzdGVwIGFuZCBidWlsZCBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgcHJvY2VkdXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODk6XHRzdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gIDkwOlx0e1xuICA5MTpcdFx0aW50IGVycjtcbiAgOTI6XHRcbiAgOTM6XHRcdG10NzkyeHVfcmVzZXRfb25fYnVzX2Vycm9yKGRldik7XG4gIDk0Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuICA5NTpcdFx0XHRyZXR1cm4gMDtcbiAgOTY6XHRcbiAgOTc6XHRcdG10NzZfdHhxX3NjaGVkdWxlX2FsbChcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG4gIDk4Olx0XHRtdDc2X3dvcmtlcl9kaXNhYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X3dvcmtlcik7XG4gIDk5Olx0XG4gMTAwOlx0XHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAxMDE6XHRcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAxMDI6XHRcbiAxMDM6XHRcdHdha2VfdXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYubWN1LndhaXQpO1xuIDEwNDpcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG4gMTA1Olx0XG4gMTA2Olx0XHRtdDc2dV9zdG9wX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAxMDc6XHRcdG10NzZ1X3N0b3BfdHgoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDEwODpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDE2OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDaGVja2luZyBmb3IgYG10NzZfcmVzZXRfZGV2aWNlYCBVc2FnZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBjcnVjaWFsLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGRldmljZSByZXNldHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgaWYgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGFueXdoZXJlIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgcGF0aCBvZiBleGVjdXRpb24uIFRoYXQgZnVuY3Rpb24sIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIE1UNzYgZHJpdmVycywgbGlrZWx5IGhhbmRsZXMgdGhlIGNvcmUgbG93LWxldmVsIGhhcmR3YXJlIHJlc2V0IHNlcXVlbmNlLiBLbm93aW5nIGlmIGl0JiMzOTtzIGludm9sdmVkIOKAkyBhbmQgKmhvdyogaXQmIzM5O3MgaW52b2x2ZWQg4oCTIHdpbGwgcHJvdmlkZSBjcml0aWNhbCBjb250ZXh0LiBJdCB3aWxsIGRldGVybWluZSB0aGUga2luZCBvZiBmYWlsdXJlIGFuYWx5c2lzLCBhbmQgbGlrZWx5IHRoZSBkZWJ1Z2dpbmcgcGF0aCBJIHdpbGwgY2hvb3NlIHRvIGZvbGxvdy4gSSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgYXNzdW1wdGlvbiBmb3IgdGhpcyBhbmFseXNpcyAtIGFuZCB0aGF0IGFzc3VtcHRpb24gbXVzdCBpbmNsdWRlIHVuZGVyc3RhbmRpbmcgaWYgdGhlcmUgaXMgYSByZXNldCBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGUgZmlyc3Qgc3RlcCBpcyBhIHF1aWNrIHNlYXJjaCB0byB2ZXJpZnkgaXRzIHByZXNlbmNlIGluIHRoaXMgc2VxdWVuY2UuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIHF1ZXN0aW9uLiBUaW1lIHRvIGdldCBzdGFydGVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDk6XHRcdG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcbiAxMTA6XHRcbiAxMTE6XHRcdGNsZWFyX2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuIDExMjpcdFx0ZXJyID0gbXQ3NnVfcmVzdW1lX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAxMTM6XHRcdGlmIChlcnIpXG4gMTE0Olx0XHRcdGdvdG8gb3V0O1xuIDExNTpcdFxuIDExNjpcdFx0ZXJyID0gbXQ3OTJ4dV9tY3VfcG93ZXJfb24oZGV2KTtcbiAxMTc6XHRcdGlmIChlcnIpXG4gMTE4Olx0XHRcdGdvdG8gb3V0O1xuIDExOTpcdFxuIDEyMDpcdFx0ZXJyID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIGZhbHNlKTtcbiAxMjE6XHRcdGlmIChlcnIpXG4gMTIyOlx0XHRcdGdvdG8gb3V0O1xuIDEyMzpcdFxuIDEyNDpcdFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcbiAxMjU6XHRcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gMTI2Olx0XG4gMTI3Olx0XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG4gMTI4Olx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDc5MwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXZpY2UgUmVzZXQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBkcml2ZXIgYmVoYXZpb3IuIE15IHByaW1hcnkgcXVlc3Rpb24gcmlnaHQgbm93IGlzIHdoZXRoZXIgb3Igbm90IHRoZSBzeXN0ZW0gaXMgYWN0dWFsbHkgaW52b2tpbmcgYG10NzZfcmVzZXRfZGV2aWNlYC4gVGhpcyBpcyBjcnVjaWFsLiBJZiBhIHJlc2V0IGlzbiYjMzk7dCBoYXBwZW5pbmcsIHRoZSBpc3N1ZSBpcyBsaWtlbHkgZWxzZXdoZXJlIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgb3IgcG90ZW50aWFsbHkgZXZlbiBpbiB0aGUgaGFyZHdhcmUgaXRzZWxmIG5vdCByZXNwb25kaW5nIGNvcnJlY3RseSB0byBpbml0aWFsIGNvbW1hbmRzLiBJZiBpdCAqaXMqIGJlaW5nIGNhbGxlZCwgdGhlbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyAqd2l0aGluKiB0aGF0IGZ1bmN0aW9uLCBhbmQgd2hhdCBjb25kaXRpb25zIGFyZSB0cmlnZ2VyaW5nIHRoZSByZXNldCBpbiB0aGUgZmlyc3QgcGxhY2UuIEFyZSB3ZSBzZWVpbmcgdGltZW91dHMsIGVycm9yIGNvZGVzIGZyb20gdGhlIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHN0YWNrLCBjaGVjayBmb3IgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCBtaWdodCBiZSBza2lwcGluZyB0aGUgcmVzZXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBhbmQgc2VlIHdoYXQgdGhlIGRldmljZSYjMzk7cyBzdGF0ZSBpcyBiZWZvcmUgdGhlIHN1c3BlY3RlZCBjYWxsIHRvIHRoYXQgcm91dGluZS4gSXMgdGhlIGZpcm13YXJlIGxvYWRlZD8gQXJlIGFueSByZWdpc3RlcnMgYmVpbmcgY29uZmlndXJlZD8gVW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlJiMzOTtzIGV4YWN0IHN0YXRlIHdoZW4gYSByZXNldCAqc2hvdWxkKiBiZSBuZWVkZWQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaXNzdWUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgc2V0dGluZyBzb21lIGJyZWFrcG9pbnRzIGFuZCBsb2dnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjk6XHRcdFx0Z290byBvdXQ7XG4gMTMwOlx0XG4gMTMxOlx0XHRtdDc2X2NsZWFyKGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gMTMyOlx0XG4gMTMzOlx0XHRlcnIgPSBtdDc5MjFfbWN1X3NldF9lZXByb20oZGV2KTtcbiAxMzQ6XHRcdGlmIChlcnIpXG4gMTM1Olx0XHRcdGdvdG8gb3V0O1xuIDEzNjpcdFxuIDEzNzpcdFx0ZXJyID0gbXQ3OTIxX21hY19pbml0KGRldik7XG4gMTM4Olx0XHRpZiAoZXJyKVxuIDEzOTpcdFx0XHRnb3RvIG91dDtcbiAxNDA6XHRcbiAxNDE6XHRcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuIDE0MjpcdG91dDpcbiAxNDM6XHRcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gMTQ0Olx0XG4gMTQ1Olx0XHRtdDc2X3dvcmtlcl9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYudHhfd29ya2VyKTtcbiAxNDY6XHRcbiAxNDc6XHRcdHJldHVybiBlcnI7XG4gMTQ4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM4NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgRnVuY3Rpb246IEEgRGVlcCBEaXZlKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdDogSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIHRyaWdnZXJlZCBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJIGtub3cgaXQmIzM5O3MgKm9ubHkqIGNhbGxlZCBieSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAsIGFuZCBJJiMzOTt2ZSB2ZXJpZmllZCB0aGF0IHdpdGggYSBncmVwLiBTbywgaG93IGRpZCBzeXprYWxsZXIgZXZlbiBnZXQgdGhlcmU/IElzIGl0IHBvc3NpYmxlIHRoZSBzeXpib3QgcmVwb3J0IGlzIGZvciBgbXQ3OTE1YCBvciBgbXQ3OTk2YD8gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZS4KCkJ1dCB3YWl0LCB0aGVzZSBhcmUgUENJZSBkZXZpY2VzLiBIb3cgY291bGQgc3l6a2FsbGVyIGZ1enogdGhlbT8gVGhlbiBpdCBoaXRzIG1lISBTeXprYWxsZXIgaGFzIHRoaXMgYHN5el9wY2lfZGV2aWNlX2FkZGAgcHNldWRvLXN5c2NhbGwuIERvZXMgaXQgZW11bGF0ZSBlbm91Z2ggdG8gcGFzcyB0aGUgYG10NzkxNV9sb2FkX2Zpcm13YXJlYD8gTm8sIGl0IGp1c3QgY3JlYXRlcyBhIGZha2UgZGV2aWNlIGFuZCBtZW1vcnktbWFwcyB0aGUgTU1JTyByZWdpb25zLiBSaWdodC4gV2hlbiB0aGUgZHJpdmVyIHdyaXRlcyB0byBNTUlPLCBpdCYjMzk7cyB3cml0aW5nIHRvIG1lbW9yeS4gUmVhZHMsIGZyb20gbWVtb3J5LiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGNvZGUuCgpTcGVjaWZpY2FsbHksIGluIGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgLCBpZiBzeXprYWxsZXIgY291bGQgc29tZWhvdyB3cml0ZSBhIHNwZWNpZmljIGBzdGF0ZWAgdmFsdWUgdG8gYE1UX1RPUF9NSVNDYCwgb3IgbWFwIHRoZSBNTUlPIHJlZ2lvbi4uLiBXYWl0IGEgc2Vjb25kISBTeXprYWxsZXIgKmNhbiogbWFwIHRoZSBNTUlPIHJlZ2lvbiEgSWYgYHN5el9wY2lfZGV2aWNlX2FkZGAgbWFwcyB0aGUgQkFScywgc3l6a2FsbGVyIGNhbiB1c2UgYW5vdGhlciB0aHJlYWQgdG8gd3JpdGUgdG8gdGhvc2UgTU1JTyByZWdpc3RlcnMhIFllcywgdGhhdCYjMzk7cyBob3cgaXQgc2ltdWxhdGVzIGhhcmR3YXJlIHJlc3BvbnNlcyEKCk9rYXksIGxldCYjMzk7cyB2ZXJpZnkgaWYgc3l6a2FsbGVyJiMzOTtzIHBjaSBmdXp6ZXIgYWN0dWFsbHkgbWFwcyB0aGUgQkFScyB0byB1c2VyIHNwYWNlLiBZZXAsIGl0IGRvZXMuIFRoaXMgbWVhbnMgaXQgY2FuIGNvbmN1cnJlbnRseSB3cml0ZSB0byBtYXBwZWQgbWVtb3J5LCBzaW11bGF0aW5nIHRoZSBkZXZpY2UmIzM5O3MgaGFyZHdhcmUgcmVzcG9uc2VzIQoKTm93LCBob2xkIG9uLiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCBhbnkgUENJIGRyaXZlciBpcyBmYWlyIGdhbWUhIFdoaWNoIGxlYWRzIHRvIG15IGNvbmNlcm4sIHRoZSBwcm9tcHQgdGhhdCBzYXlzOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKYG10NzkxNWAgaXMgYSAqdmVuZG9yLXNwZWNpZmljKiBQQ0llIFdpLUZpIGRyaXZlciwgc28gaXQgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LiBCdXQgZG9lcyB0aGlzIGV4Y2x1ZGUgaXQ/IFRoZSBzcGVjaWZpYyBleGFtcGxlcyBsaXN0ZWQgaW5jbHVkZSBgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHVgLiBXaS1GaSBkcml2ZXJzIGxpa2UgYG10NzZgLCBgaXdsd2lmaWAsIGFuZCBgYXRoMTBrYCBhcmUgYWxzbyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBidXQgYXJlIHRoZXkgZXhjbHVkZWQgaW4gdGhlIHNhbWUgd2F5PwoKVGhlIHByb21wdCBzdGF0ZXMgaXQgZXhjbHVkZXMgZHJpdmVycyAmIzM0O3RoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IFdpLUZpIGRyaXZlcnMgYXJlIG9mdGVuIGZ1enplZCB2aWEgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgKHZoY2kpLCBidXQgYG10NzkxNWAgaXMgUENJZS4gSSBoYXZlIHRvIGNvbnNpZGVyIHRoaXMuIFN5emthbGxlciBoYXMgYSBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgZm9yIFdpLUZpLCBidXQgY2FuIGl0IGZ1enogKlBDSWUqIFdpLUZpIGRyaXZlcnMgKmVmZmVjdGl2ZWx5Kj8KCkNvbXBsZXggUENJZSBXaS1GaSBkcml2ZXJzIHJlcXVpcmUgZmlybXdhcmUgbG9hZGluZy4gU3l6a2FsbGVyIGNhbiBmYWtlIGZpcm13YXJlIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYC4gQnV0IGNhbiBpdCBlbXVsYXRlIHJpbmcgYnVmZmVycyBhbmQgRE1BIGluIGBtdDc5MTVgPwoKSWYgc3l6a2FsbGVyIGZvdW5kIGEgYnVnIGluIGBtdDc2X3Jlc2V0X2RldmljZWAsIGl0IG11c3QgaGF2ZSByZWFjaGVkIGl0LiBXYWl0LCB0aGUgcHJvbXB0IEkgd2FzIHRoaW5raW5nIG9mLCBub3QgdGhlIHByb21wdCBzYXlzIHRoZSBjb21taXQgbWVzc2FnZSwgJiMzNDtBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsuJiMzNDsgQWN0dWFsbHksIHRoYXQgZG9lc24mIzM5O3QgbWVhbiBpdCAqZm91bmQqIHRoZSBidWcsIGl0IG1lYW5zIHN5emJvdCBhcHBsaWVkIGEgcGF0Y2ggc3VibWl0dGVkIGJ5IGEgZGV2ZWxvcGVyLiBTeXpib3QgcnVucyBhbmQgcmVwb3J0cyBvbiB0aGUgdGVzdHMsIGJ1dCBubyBjcmFzaCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIHJlYWNoYWJsZS4KClRoZSBwcm9tcHQgY29uZmlybXMgdGhhdDogJiMzNDtjb21taXQgNWU2NjBjY2UzOTQxNzgxNzBmOTMxOTE2Mjc1NzE4MzhkY2VkZThkZCBBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsgRGF0ZTogRnJpIEF1ZyAyMSAxNDozMTowNiAyMDI2ICYjNDM7MDAwMCBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gVGhpcyBpcyBqdXN0IGEgcGF0Y2ggYXBwbGllZCBieSBzeXpib3QgZm9yIHRlc3RpbmcuCgpJIG11c3QgZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKi4gSXMgYG10NzkxNWAgcmVhY2hhYmxlIGluIFFFTVU/IE5vLCBpdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQnV0IHdoYXQgaWYgYG10NzZgIGlzIHVzZWQgaW4gYSBVU0IgZHJpdmVyIHRoYXQgKmNhbGxzKiBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBJIGtub3cgdGhhdCBpcyBub3QgdGhlIGNhc2UuIEkgbmVlZCB0byBkb3VibGUKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3Jlc2V0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cdCAqIGxlYXZlcyB3Y2lkLVx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcdG10NzZfcmVzZXRfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NjM3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgQW5hbHlzaXMqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIG15IHRoaW5raW5nLiBUaGUgY29kZSBtb2RpZmljYXRpb24gSSYjMzk7bSBpbnZlc3RpZ2F0aW5nIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBtdDc2X3Jlc2V0X2RldmljZWAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZGV0ZXJtaW5lIGhvdyByZWFjaGFibGUgdGhpcyBmdW5jdGlvbiBpcy4KCkZpcnN0LCBJIGNvbmZpcm1lZCB0aGF0IHRoZSBrbm93biBkaXJlY3QgY2FsbGVycyBvZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFyZSBzcGVjaWZpY2FsbHkgYG10NzkxNWAgYW5kIGBtdDc5OTZgLCBhbmQgYm90aCBhcmUgUENJZSBkZXZpY2VzLiBHaXZlbiB0aGF0LCBJIGNvbnNpZGVyZWQgaWYgZWl0aGVyIGRldmljZS9kcml2ZXIgY291bGQgYmUgcmVhY2hlZCB2aWEgUUVNVS4gSG93ZXZlciwgYG10NzkxNWAgKmRvZXMqIGhhdmUgYSBwbGF0Zm9ybSBkcml2ZXIgKGBtdDc5OHhfd21hY19kcml2ZXJgKSwgYnV0IHRoaXMgaXMgZm9yIGEgTWVkaWFUZWsgTVQ3OTh4IFNvQy4gU2luY2UgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgU29DLCB0aGF0JiMzOTtzIGEgZGVhZCBlbmQuIFRoZXJlZm9yZSwgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGl0c2VsZiBhcmUgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoZSB0eXBpY2FsIFFFTVUgc2V0dXAgSSYjMzk7bSBmYW1pbGlhciB3aXRoLgoKTmV4dCwgSSBkaWQgYSBmdWxsIGtlcm5lbCBncmVwIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFuZCB3YXMgY29uZmlybWVkIHRoZSBvbmx5IGNhbGxlcnMgd2VyZSwgYWdhaW4sIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YC4KClRoZW4sIEkgZG91YmxlLWNoZWNrZWQgYSByZWNlbnQgcGF0Y2gsIGxvb2tpbmcgZm9yIGluZGlyZWN0IGNhbGxzIHRocm91Z2ggYG10NzZfd2NpZF9jbGVhbnVwYCwgYnV0IHRoZSBwYXRjaCBhY3R1YWxseSAqbW92ZXMqIGEgY2FsbCB0byBgbXQ3Nl93Y2lkX2NsZWFudXBgICppbnNpZGUqIGBtdDc2X3Jlc2V0X2RldmljZWAuIFRoaXMgY29uZmlybXMgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKndpdGhpbiogdGhhdCBmdW5jdGlvbiwgYW5kIGlmIHRoZSBmdW5jdGlvbiBpc24mIzM5O3QgY2FsbGVkLCB0aGUgY2hhbmdlcyBhcmUsIGVmZmVjdGl2ZWx5LCB1bnJlYWNoYWJsZS4KCkkgYWxzbyBjb25zaWRlcmVkIHdoZXRoZXIgYG1hYzgwMjExX2h3c2ltYCBjb3VsZCByZWFjaCBpdCwgYnV0IHRoYXQmIzM5O3MgYSBzZXBhcmF0ZSBkcml2ZXIsIG5vdCByZWxhdGVkIHRvIHRoZSBgbXQ3NmAgc3RhY2suIFVTQiBkcml2ZXJzIHdlcmUgYWxzbyBjb25zaWRlcmVkLCBzcGVjaWZpY2FsbHkgYG10NzZ4MHVgLCBgbXQ3NngydWAsIGBtdDc2MTV1YCwgYW5kIGBtdDc5MjF1YCwgYnV0IHRoZXkgZG9uJiMzOTt0IGNhbGwgYG10NzZfcmVzZXRfZGV2aWNlYCBlaXRoZXIuCgpGaW5hbGx5LCBJIGNoZWNrZWQgd2hldGhlciBpdCB3YXMgZXhwb3NlZCB2aWEgYEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtgLCBob3BpbmcgZm9yIGEgY2FsbCBmcm9tIGBtdDc2X2NvcmVgIG9yIGBtYWM4MDIxMWAgY2FsbGJhY2tzLiBUaGUgc3ltYm9sIGV4cG9ydCAqaXMqIHRoZXJlLCBidXQgYWdhaW4sIHRoZSBjYWxsZXJzIGFyZSBsaW1pdGVkIHRvIHRoZSB0d28gaWRlbnRpZmllZCBkZXZpY2VzLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbmVlZCB0byBnbyBmdXJ0aGVyIGFuZCBsb29rIGZvciBhbnkgaW5kaXJlY3QgY2FsbHMgdG8gYG10NzZfcmVzZXRfZGV2aWNlYCwganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjk4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3Jlc2V0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVx0ICogbGVhdmVzIHdjaWQtXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlx0bXQ3Nl9yZXNldF9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY3MjcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgdGhpcyBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3Jlc2V0X2RldmljZWAgZnVuY3Rpb24gYW5kIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIGRpcmVjdGx5IGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgd2hpY2ggYXJlIFBDSWUgZHJpdmVycy4gUENJZSBkcml2ZXJzIG9mdGVuIHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFNpbmNlIHRoZXNlIGRyaXZlcnMgYXJlIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIHRoZXkgYXJlIGxpa2VseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KCkJ1dCB3YWl0LCB0aGVuIEkgcmVtZW1iZXJlZCBzeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZV9hZGRgLiBDb3VsZCBzeXprYWxsZXIgYWN0dWFsbHkgKmVtdWxhdGUqIHRoZSBoYXJkd2FyZSByZXNwb25zZXM/IElmIGl0IGNvdWxkIG1hcCB0aGUgQkFScyB0byB1c2Vyc3BhY2UgYW5kIGFsbG93IGNvbmN1cnJlbnQgd3JpdGVzLCB0aGVuIHllcywgcG90ZW50aWFsbHkgdGhlIGRyaXZlciBjb3VsZCBiZSBpbml0aWFsaXplZCBhbmQgZnV6emVkISBJdCBjYW4gaW5kZWVkLCBiZWNhdXNlIGBzeXpfcGNpX2RldmljZV9hZGRgIG1hcHMgdGhlIEJBUnMuCgpIb3dldmVyLCB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIGEgV2ktRmkgZHJpdmVyLCBsaWtlIGBtdDc5MTVgLCBhICYjMzQ7U21hcnROSUMmIzM0Oz8gTm8sIGl0JiMzOTtzIG5vdCBhIFNtYXJ0TklDLiBCdXQgaXQgKmlzKiBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLgoKVGhlIGV4YW1wbGVzIGluIHRoZSBwcm9tcHQsIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgZXRjLiwgYXJlIGFsbCB0aGVzZSByZWFsbHkgY29tcGxleCBuZXR3b3JraW5nL0dQVSBkcml2ZXJzLiBXaS1GaSBkcml2ZXJzIGxpa2UgYG10NzZgLCBgaXdsd2lmaWAsIGFuZCBgYXRoMTBrYCBhcmUgY29tcGxleCBuZXR3b3JraW5nIGRyaXZlcnMgdG9vLCBhbmQgSSB3b3VsZCB0cmVhdCB0aGVtIHNpbWlsYXJseSBpbiB0aGlzIGNvbnRleHQuIElmIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgYG1seHN3YCwgdGhlbiBJIG5lZWQgdG8gZG8gdGhlIHNhbWUgZm9yIGBtdDc5MTVgIGJlY2F1c2UgaXQgZGVtYW5kcyBwaHlzaWNhbCBoYXJkd2FyZS4KCk9uIHRvcCBvZiB0aGlzLCBzeXprYWxsZXIgcHJvYmFibHkgY2Fubm90IGZ1enogYG10NzkxNWAgZWZmZWN0aXZlbHkgYW55d2F5LiBJdCBuZWVkcyBmaXJtd2FyZSBsb2FkaW5nIGFuZCBjb21wbGV4IE1DVSBpbnRlcmFjdGlvbnMuIEV2ZW4gd2l0aCBCQVIgbWFwcGluZywganVzdCByYW5kb20gd3JpdGVzIHByb2JhYmx5IHdvbiYjMzk7dCBnZXQgcGFzdCB0aGF0LiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgIG5lZWRzIHRoZSBNQ1UgdG8gcmVzcG9uZCB0byBjb21tYW5kcywgaW52b2x2aW5nIERNQSByaW5ncywgaW50ZXJydXB0cywgYWxsIGtpbmRzIG9mIGNvbXBsZXhpdHkgdGhhdCBzeXprYWxsZXIgcHJvYmFibHkgY2FuJiMzOTt0IHNpbXVsYXRlIHdpdGggcmFuZG9tIG1lbW9yeSB3cml0ZXMuCgpUaGVyZWZvcmUsIHNpbmNlIGBtdDc5MTVgIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIFFFTVUsIHRoZSBjb2RlIGlzIG5vdCB3b3J0aCBmdXp6aW5nLCBzbyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSnVzdCB0byBiZSBzdXJlLCBJIHdpbGwgY2hlY2sgaWYgYW55IG90aGVyIGRyaXZlciBpcyBjYWxsaW5nIHRoZSBmdW5jdGlvbiwgdXNpbmcgYGdyZXBgLiBJIGRpZCwgYW5kIGl0IGlzIG5vdC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIHRocm91Z2ggYSBtYWNyby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9yZXNldF9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzk1OQoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiA1NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogQ29kZSBVbnJlYWNoYWJsZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb2RlIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29udGV4dDogd2UmIzM5O3JlIGxvb2tpbmcgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byBoaXQgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IEdDRSBvciBRRU1VLgoKSSYjMzk7dmUgdHJhY2VkIHRoaXMgYmFjayB0byB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSBib3RoIFBDSWUgV2ktRmkgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUgd2FzIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCkgaW52b2x2ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBtYWtlIHRoZSBjb2RlIHJlYWNoYWJsZS4gSG93ZXZlciwgdGhhdCBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIERldmljZSBUcmVlIGNvbXBhdGlibGUgc3RyaW5ncywgbGlrZSBgbWVkaWF0ZWssbXQ3OTg2LXdtYWNgLCB3aGljaCwgb2YgY291cnNlLCBRRU1VICpkb2VzbiYjMzk7dCogZW11bGF0ZSBmb3IgdGhlIE1UNzk4eCBTb0NzLiBUaGVyZWZvcmUsIHRoYXQgcGF0aCBpcyBkZWFkLgoKU28sICp0aGVyZWZvcmUqLCB0aGUgbW9kaWZpZWQgY29kZSAqY2Fubm90KiBiZSByZWFjaGVkIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGUgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogaXQmIzM5O3MgZGVzaWduZWQgdG8gZXhjbHVkZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggcGVyZmVjdGx5IGRlc2NyaWJlcyB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIHNjZW5hcmlvcy4gIE5vIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0IGlzIGdvaW5nIHRvIGdldCB1cyB0aGVyZS4KClRoZSAmIzM0O0F1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OyYjMzQ7IG1lc3NhZ2luZyB0aHJldyBtZSBmb3IgYSBtb21lbnQ7IGl0IHRyaWdnZXJlZCBhIGJpdCBvZiBhIGtuZWUtamVyayByZWFjdGlvbi4gQnV0IHRoZW4gSSByZW1lbWJlcmVkOiBgc3l6LWNsdXN0ZXJgIGlzIHRlc3RpbmcgYSBwYXRjaCwgbm90IG5lY2Vzc2FyaWx5ICpmaW5kaW5nKiBhIGJ1Zy4gU3l6Ym90IHJ1bnMgcGF0Y2hlcyBzdWJtaXR0ZWQgdG8gbWFpbGluZyBsaXN0cyB0aHJvdWdoIGl0cyBleGlzdGluZyBjb3JwdXMuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCBpdCYjMzk7cyBzaW1wbHkgbm90IGV4ZWN1dGVkOyB0aGUgZnV6emluZyBqdXN0IHJlcG9ydHMgJiMzNDtPSyYjMzQ7IHdpdGhvdXQgYSBjcmFzaC4gVGhpcyBpcyBjcml0aWNhbC4KClNvLCB3aXRoIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIGZ1enplciYjMzk7cyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBNZWRpYVRlayBtdDc2IFdpLUZpIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9wbGF0Zm9ybSBkcml2ZXJzIGZvciBNZWRpYVRlayBXaS1GaSBjaGlwcy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZXkgY2Fubm90IGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDozNjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MDguNTc0OTIwMzA0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNzIxNzA4NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMTowOC41NzQ5MjY1NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDY1MDk3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZTY2MGNjZTM5NDE3ODE3MGY5MzE5MTYyNzU3MTgzOGRjZWRlOGRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjMxOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xcbmluZGV4IGFiYmU2NWNiY2Q4OWUuLjBlYjAyMWJlODM3YWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuQEAgLTg1Niw4ICs4NTYsOCBAQCB2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdHdjaWQtXFx1MDAzZXN0YSA9IDA7XFxuLVxcdFxcdG10NzZfd2NpZF9jbGVhbnVwKGRldiwgd2NpZCk7XFxuIFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZXdjaWRbaV0sIE5VTEwpO1xcbitcXHRcXHRtdDc2X3djaWRfY2xlYW51cChkZXYsIHdjaWQpO1xcbiBcXHR9XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MDkuOTgyMTQzOTA0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIwMzE0NDY3NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBNZWRpYVRlayBtdDc2IFdpLUZpIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9wbGF0Zm9ybSBkcml2ZXJzIGZvciBNZWRpYVRlayBXaS1GaSBjaGlwcy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZXkgY2Fubm90IGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlNjYwY2NlMzk0MTc4MTcwZjkzMTkxNjI3NTcxODM4ZGNlZGU4ZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNDozMTowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuaW5kZXggYWJiZTY1Y2JjZDg5ZS4uMGViMDIxYmU4MzdhZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5AQCAtODU2LDggKzg1Niw4IEBAIHZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHdjaWQtXHUwMDNlc3RhID0gMDtcbi1cdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2V3Y2lkW2ldLCBOVUxMKTtcbitcdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MDkuOTgyMTQ3NDE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTUwNzM4MjQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24gaW4gdGhlIG10NzYgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBhIGNoYW5nZSBpbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCdzIGEgc21hbGwgbW9kaWZpY2F0aW9uLCBqdXN0IHJlb3JkZXJpbmcgYSBjb3VwbGUgb2YgbGluZXMsIGJ1dCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbnRlcmVzdGluZy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzOlxuXG5gYGBjXG4gXHRcdHdjaWQtXHUwMDNlc3RhID0gMDtcbi1cdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2V3Y2lkW2ldLCBOVUxMKTtcbitcdFx0bXQ3Nl93Y2lkX2NsZWFudXAoZGV2LCB3Y2lkKTtcbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBhIHNpbWlsYXIgbWVtb3J5IHNhZmV0eSBpc3N1ZS4gVGhlIGBtdDc2X3djaWRfY2xlYW51cGAgZnVuY3Rpb24gbGlrZWx5IHBlcmZvcm1zIHNvbWUgb3BlcmF0aW9uIG9uIHRoZSBgd2NpZGAgc3RydWN0dXJlLCBwb3NzaWJseSBmcmVlaW5nIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBvcmlnaW5hbCBvcmRlciBwb3RlbnRpYWxseSBsZWZ0IGEgcmFjZSB3aW5kb3cgd2hlcmUgYSBjb25jdXJyZW50IHJlYWRlciBtaWdodCBhY2Nlc3MgdGhlIGB3Y2lkYCBzdHJ1Y3R1cmUgYWZ0ZXIgaXQgaGFkIGJlZW4gY2xlYW5lZCB1cC4gVGhlIGtleSBoZXJlIGlzIHRoZSB1c2Ugb2YgYHJjdV9hc3NpZ25fcG9pbnRlcmAuIEl0J3MgZGVzaWduZWQgZm9yIHRoaXMga2luZCBvZiBjb25jdXJyZW50IGFjY2VzcyBzY2VuYXJpby4gU28sIHRoZSBwYXRjaCBpcyBsaWtlbHkgbW92aW5nIHRoZSBjbGVhbnVwICphZnRlciogdGhlIGByY3VfYXNzaWduX3BvaW50ZXJgIHRvIHByZXZlbnQgdGhvc2UgcmFjZSBjb25kaXRpb25zLiBXZSdyZSBudWxsaW5nIG91dCB0aGUgcG9pbnRlciBpbiB0aGUgYGRldmAgc3RydWN0ICpiZWZvcmUqIGZyZWVpbmcgdGhlIG1lbW9yeSB0aGUgcG9pbnRlciBpcyBwb2ludGluZyB0by4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZml4IHRvIG1lLiBHb29kIGNhdGNoLlxuXG5CdXQgdGhlbiwgdGhlIHRob3VnaHQgc3RydWNrIG1lLi4uIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnRlc3RhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBvZnRlbiB0aWdodGx5IGNvdXBsZWQgdG8gaGFyZHdhcmUsIGJ1dCB3YWl0Li4uIGBtdDc2YCBhY3R1YWxseSBoYXMgVVNCIGRyaXZlcnMhIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0LiBUaGlzIG1lYW5zIHdlIG1pZ2h0IGJlIGFibGUgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyB0ZWNobmlxdWVzIGxpa2UgVVNCIGdhZGdldCwgZHVtbXlfaGNkLCBvciBldmVuIHN5emthbGxlcidzIHZoY2kuIEFuZCwgc2luY2Ugc3l6a2FsbGVyICpzdXBwb3J0cyogVVNCIGZ1enppbmcgdmlhIHZoY2ksIHdlIGNhbiBmdXp6IHRoZSBgbXQ3NmAgVVNCIGRyaXZlcnMhIFRoYXQgY2hhbmdlcyB0aGUgZ2FtZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIHJlYWNoYWJsZSBhbmQgaG93IHRvIHRyaWdnZXIgdGhhdCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMToxOS40ODk1MzI4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzkzMTIwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXFx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcXHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVxcdCAqIGxlYXZlcyB3Y2lkLVxcdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXFx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMToxOS41NDM0NjkzMzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTAxNTkyMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbXQ3NiBEZXZpY2UgUmVzZXQgRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YCBhbmQgYG10Nzk5Nl9tYWNfZnVsbF9yZXNldGAgZnVuY3Rpb25zLiBIbW0sIGludGVyZXN0aW5nLiBOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIEFyZSB3ZSBkZWFsaW5nIHdpdGggVVNCIG9yIFBDSWUgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkZXZpY2VzIGhlcmU/IFRoZSByZXNldCBiZWhhdmlvciwgYW5kIHBvdGVudGlhbGx5IHRoZSBzcGVjaWZpYyByZXNldCBzZXF1ZW5jZSB3aXRoaW4gYG10NzZfcmVzZXRfZGV2aWNlYCwgY291bGQgYmUgcXVpdGUgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgYnVzIHR5cGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGlzdGluY3Rpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgYW5kIGlkZW50aWZ5IGFueSBwb3NzaWJsZSBvcHRpbWl6YXRpb25zIG9yIHBpdGZhbGxzLiBUaW1lIHRvIGxvb2sgaW50byB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCBwcm9iZSBmdW5jdGlvbnMgdG8gY29uZmlybSB3aGljaCBidXMgdGhlc2Ugc3BlY2lmaWMgZGV2aWNlcyBhcmUgdXRpbGl6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDMyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MjMuNjQ1MDYzNjMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDY3MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9tYWNfZnVsbF9yZXNldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDI1Om10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQ4Mj12b2lkIG10NzkxNV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE1MDQ6XFx0XFx0bXQ3OTE1X21hY19mdWxsX3Jlc2V0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTUwNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MjMuNjk2NTM1NzQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MjUyNTEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNVDc5MTUgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBNVDc5MTUuIExldCdzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gSXMgdGhpcyBhIFBDSWUgZGV2aWNlLCBvciBkb2VzIGl0IHV0aWxpemUgVVNCPyBUaGF0J3MgdGhlIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIGF0IGhhbmQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGRpY3RhdGUgc28gbXVjaCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlLCBwb3dlciByZXF1aXJlbWVudHMsIGFuZCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLiBJdCdzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIGluIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBjb21wb25lbnQgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gVGhlIGFuc3dlciB3aWxsIGRldGVybWluZSBob3cgSSBwcm9jZWVkIHdpdGggdGhlIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTk1LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MjcuMTc5MDYzNDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0MTAzNTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyfG1vZHVsZV91c2JfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMToyNy4yMjg0ODE0NTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc3MTkxMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIG10NzkxNSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IGV4YWN0bHkgKndoYXQqIHRoZSBtdDc5MTUgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIGZvci4gSXQncyBhIGNvbW1vbiBpbml0aWFsIHN0ZXAgd2hlbiB0cm91Ymxlc2hvb3Rpbmcgb3IgYW5hbHl6aW5nIGFueXRoaW5nLiBJIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGl0cyByb2xlLiBJcyBpdCBhIHdpcmVsZXNzIGRyaXZlcj8gQSBzcGVjaWZpYyBjaGlwc2V0IGRyaXZlcj8gVGhlIG5vbWVuY2xhdHVyZSBzdWdnZXN0cyBhIE1lZGlhVGVrIGNvbXBvbmVudCwgYnV0IEkgc2hvdWxkbid0IGp1bXAgdG8gY29uY2x1c2lvbnMuIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB0aGUgZnVuY3Rpb25hbCBzY29wZSBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGRyaXZlciBuYW1lLCBcIm10NzkxNSxcIiBpcyB0aGUga2V5LiBOb3csIHdoZXJlIHRvIGJlZ2luIHRoZSBodW50IGZvciBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbi4uLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjMxLjUwNTY5NzE1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MjY0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTk5Mz1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3OTE1X2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy0xMDAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzoxMDAyOm1vZHVsZV9pbml0KG10NzkxNV9pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtMTAwMy1tb2R1bGVfZXhpdChtdDc5MTVfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjMxLjU1MTIzMTYwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzIyMjcyODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBtdDc5MTVfaW5pdGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgYG10NzkxNV9pbml0YCBmdW5jdGlvbi4gSSdtIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgcGFydGljdWxhciBNZWRpYXRlayBXaS1GaSBjaGlwLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBib290IHByb2Nlc3MsIHJlZ2lzdGVyIHNldHVwLCBhbmQgYW55IGVhcmx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEkgc3VzcGVjdCBpdCdsbCBzdGFydCB3aXRoIHNvbWUgY2xvY2sgZW5hYmxpbmcgYW5kIHJlc2V0IGFzc2VydGlvbi9kZWFzc2VydGlvbiwgZm9sbG93ZWQgYnkgdGhlIGxvYWRpbmcgb2YgZmlybXdhcmUgYW5kIGNhbGlicmF0aW9uIGRhdGEsIHBlcmhhcHMgZXZlbiBzb21lIGVhcmx5IHJhZGlvIGNhbGlicmF0aW9uLlxuXG5JJ20gYW50aWNpcGF0aW5nIHNvbWUgY3JpdGljYWwgc3RlcHMgaW4gc2V0dGluZyB1cCB0aGUgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCBETUEgY2hhbm5lbHMuIEknbGwgYmUgbG9va2luZyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzLCBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gdGhlIE1BQyBsYXllciwgZGVzY3JpcHRvcnMsIGFuZCBidWZmZXJzLiBLbm93aW5nIGhvdyB0aGlzIGluaXQgZnVuY3Rpb24gaGFuZGxlcyBwb3dlciBtYW5hZ2VtZW50IHdpbGwgYmUgaW1wb3J0YW50LCBhcyB0aGlzIGlzIG9mdGVuIGEgY3JpdGljYWwgZWxlbWVudCBpbiB0aGVzZSB0eXBlcyBvZiBlbWJlZGRlZCBzeXN0ZW1zLiBJdCdzIGxpa2VseSBnb2luZyB0byBiZSBhIG11bHRpLXN0YWdlIHByb2Nlc3Mgd2l0aCBlcnJvciBjaGVja2luZyBhdCBlYWNoIHN0YWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTkyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MzUuMjczNTA3NDUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc2MDA1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI3OD1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10NzkxNV9yZl9yZWd2YWxfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyODE6aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz04PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo5Om10NzkxNV9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBpbnQgaWR4LCBpbnQgbl9kZXNjLCBpbnQgcmluZ19iYXNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTQwOD1pbnQgbXQ3OTE1X2RtYV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDQzLVxcdC8qIGluaXQgdHggcXVldWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0NDQ6XFx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NDUtXFx0XFx0XFx0XFx0ICAgIE1UX1RYUV9JRChkZXYtXFx1MDAzZXBoeS5tdDc2LVxcdTAwM2ViYW5kX2lkeCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00NTEtXFx0aWYgKHBoeTIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0NTI6XFx0XFx0cmV0ID0gbXQ3OTE1X2luaXRfdHhfcXVldWVzKHBoeTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDUzLVxcdFxcdFxcdFxcdFxcdCAgICBNVF9UWFFfSUQocGh5Mi1cXHUwMDNlbXQ3Ni1cXHUwMDNlYmFuZF9pZHgpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTMwND1zdGF0aWMgdm9pZCBtdDc5MTVfbGVkX3NldF9icmlnaHRuZXNzKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTMxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzEzOnN0YXRpYyB2b2lkIF9fbXQ3OTE1X2luaXRfdHhwb3dlcihzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zMTQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjM1Mzp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNTgtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc18yZ2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNTk6XFx0XFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfMmcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjAtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc181Z2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNjE6XFx0XFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjItXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc182Z2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNjM6XFx0XFx0X19tdDc5MTVfaW5pdF90eHBvd2VyKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNmcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0zNjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM2Nz1tdDc5MTVfcmVnZF9ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzgxOlxcdG10NzkxNV9pbml0X3R4cG93ZXIocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM4Nz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozODg6bXQ3OTE1X2luaXRfd2lwaHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01MDAtXFx0bXQ3OTE1X3NldF9zdHJlYW1faGVfY2FwcyhwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1MDE6XFx0bXQ3OTE1X2luaXRfdHhwb3dlcihwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01MDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NTg0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU4NTptdDc5MTVfaW5pdF9sZWRfbXV4KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTU4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NjUwPXZvaWQgbXQ3OTE1X21hY19pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNjc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo2NzY6XFx0bXQ3OTE1X2luaXRfbGVkX211eChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02NzctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTcyMj1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc0Ni1cXHQvKiBpbml0IHdpcGh5IGFjY29yZGluZyB0byBtcGh5IGFuZCBwaHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzQ3OlxcdG10NzkxNV9pbml0X3dpcGh5KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc1ODpcXHRtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc2NzpzdGF0aWMgdm9pZCBtdDc5MTVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NTg6bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NjU6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yaywgbXQ3OTE1X2luaXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMDE5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTAyMDptdDc5MTVfaW5pdF9oZV9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEwMjEtXFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc2JhbmRfaWZ0eXBlX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTE5NT12b2lkIG10NzkxNV9zZXRfc3RyZWFtX2hlX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjAyLVxcdFxcdGRhdGEgPSBwaHktXFx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfMkdIWl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyMDM6XFx0XFx0biA9IG10NzkxNV9pbml0X2hlX2NhcHMocGh5LCBOTDgwMjExX0JBTkRfMkdIWiwgZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIxMC1cXHRcXHRkYXRhID0gcGh5LVxcdTAwM2VpZnR5cGVbTkw4MDIxMV9CQU5EXzVHSFpdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjExOlxcdFxcdG4gPSBtdDc5MTVfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzVHSFosIGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTgtXFx0XFx0ZGF0YSA9IHBoeS1cXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF82R0haXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIxOTpcXHRcXHRuID0gbXQ3OTE1X2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF82R0haLCBkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjUwPWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3NDpcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjc1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI3ODpcXHRtdDc5MTVfaW5pdF93aXBoeShcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEzMDM6XFx0cmV0ID0gbXQ3OTE1X2luaXRfZGVidWdmcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMzA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM4Ni1cXHRtdDc5MTVfbWFjX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzg3OlxcdG10NzkxNV9pbml0X3R4cG93ZXIoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzg4OlxcdG10NzkxNV9pbml0X3R4cG93ZXIocGh5Mik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM4OS1cXHRyZXQgPSBtdDc5MTVfdHhiZl9pbml0KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTQyPXN0YXRpYyBpbnQgZ2V0X29tYWNfaWR4KGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSwgdTY0IG1hc2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODU6c3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfYml0cmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MjA0PXN0YXRpYyBpbnQgbXQ3OTE1X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoyNzM6XFx0bXQ3OTE1X2luaXRfYml0cmF0ZV9tYXNrKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTI3NC1cXHRtZW1zZXQoXFx1MDAyNm12aWYtXFx1MDAzZWNhcCwgLTEsIHNpemVvZihtdmlmLVxcdTAwM2VjYXApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz05MTc9c3RydWN0IG10NzkxNV9kZXYgKm10NzkxNV9tbWlvX3Byb2JlKHN0cnVjdCBkZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo5NjU6c3RhdGljIGludCBfX2luaXQgbXQ3OTE1X2luaXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz05OTM9c3RhdGljIHZvaWQgX19leGl0IG10NzkxNV9leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtMTAwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6MTAwMjptb2R1bGVfaW5pdChtdDc5MTVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTEwMDMtbW9kdWxlX2V4aXQobXQ3OTE1X2V4aXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDcwPWludCBtdDc5MTVfdHhiZl9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3MTp2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDcyLXZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NjM0PWludCBtdDc5MTVfbWN1X3dlZF9lbmFibGVfcnhfc3RhdHMoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NjM1OmludCBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTYzNi12b2lkIG10NzkxNV9kZWJ1Z2ZzX3J4X2Z3X21vbml0b3Ioc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjM1LjMxODI3MjI1N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU3ODU4OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBtdDc5MTVfbW1pb19wcm9iZWAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgYW5kIGl0J3MgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyDigJMgc3BlY2lmaWNhbGx5LCB3aXRoaW4gYG10NzkxNV9pbml0YC4gVGltZSB0byB0cmFjZSB0aGF0IGNhbGwgY2hhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG10NzkxNV9pbml0YCBkb2VzIHRvIGdldCBhIGdyYXNwIG9uIHRoZSBvdmVyYWxsIGRldmljZSBicmluZy11cCBzZXF1ZW5jZS4gVGhpcyBwcm9iZSBmdW5jdGlvbiBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgdGhlIG1lbW9yeSByZWdpb25zIGFuZCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCBzbyBpdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIExldCdzIHNlZSBob3cgYG10NzkxNV9pbml0YCBzZXRzIHRoZSBzdGFnZSBmb3IgYG10NzkxNV9tbWlvX3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNTMsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMTozOC43NzYxMzQxOTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk2NSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk2NTpcXHRzdGF0aWMgaW50IF9faW5pdCBtdDc5MTVfaW5pdCh2b2lkKVxcbiA5NjY6XFx0e1xcbiA5Njc6XFx0XFx0aW50IHJldDtcXG4gOTY4OlxcdFxcbiA5Njk6XFx0XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bXQ3OTE1X2hpZl9kcml2ZXIpO1xcbiA5NzA6XFx0XFx0aWYgKHJldClcXG4gOTcxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDk3MjpcXHRcXG4gOTczOlxcdFxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcXG4gOTc0OlxcdFxcdGlmIChyZXQpXFxuIDk3NTpcXHRcXHRcXHRnb3RvIGVycm9yX3BjaTtcXG4gOTc2OlxcdFxcbiA5Nzc6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01UNzk4WF9XTUFDKSkge1xcbiA5Nzg6XFx0XFx0XFx0cmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtdDc5OHhfd21hY19kcml2ZXIpO1xcbiA5Nzk6XFx0XFx0XFx0aWYgKHJldClcXG4gOTgwOlxcdFxcdFxcdFxcdGdvdG8gZXJyb3Jfd21hYztcXG4gOTgxOlxcdFxcdH1cXG4gOTgyOlxcdFxcbiA5ODM6XFx0XFx0cmV0dXJuIDA7XFxuIDk4NDpcXHRcXG4gOTg1OlxcdGVycm9yX3dtYWM6XFxuIDk4NjpcXHRcXHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10NzkxNV9wY2lfZHJpdmVyKTtcXG4gOTg3OlxcdGVycm9yX3BjaTpcXG4gOTg4OlxcdFxcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bXQ3OTE1X2hpZl9kcml2ZXIpO1xcbiA5ODk6XFx0XFxuIDk5MDpcXHRcXHRyZXR1cm4gcmV0O1xcbiA5OTE6XFx0fVxcbiA5OTI6XFx0XFxuIDk5MzpcXHRzdGF0aWMgdm9pZCBfX2V4aXQgbXQ3OTE1X2V4aXQodm9pZClcXG4gOTk0OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6MzguNzc2MjI5NTU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDU1MjU5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk1UNzkxNSBhbmQgTVQ3OTk2OiBEcml2ZXIgQXJjaGl0ZWN0dXJlIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgTVQ3OTE1IOKAkyBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0J3MgZGVzaWduZWQgYXMgYSBQQ0ktYmFzZWQgcGxhdGZvcm0gZHJpdmVyLiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIHVzdWFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEJ1dCB0aGF0IGdldHMgbWUgdGhpbmtpbmcgYWJvdXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gV2hhdCBhYm91dCBpdHMgc2libGluZywgdGhlIE1UNzk5Nj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGFuZCBjbGFyaWZ5LCBiYXNlZCBvbiBleHBlcmllbmNlLCB3aGVyZSBkb2VzIHRoYXQgZml0IGluIHRoZSBzY2hlbWUgb2YgdGhpbmdzPyBJcyBpdCBhIHNpbWlsYXIgUENJLWJhc2VkIGRlc2lnbj8gT3IgZG9lcyBpdCBsZXZlcmFnZSBhIGRpZmZlcmVudCBidXMsIHBlcmhhcHMgZGVzaWduZWQgYXMgYSBTb0Mgd2l0aCBhIGRpZmZlcmVudCBpbnRlcm5hbCBhcmNoaXRlY3R1cmU/IElzIGl0IGEgZnVsbHkgaW50ZWdyYXRlZCBkZXNpZ24gb3IgbW9yZSBtb2R1bGFyPyBDb25zaWRlcmluZyBib3RoIGFyZSBsaWtlbHkgTWVkaWFUZWsgc29sdXRpb25zLCBpdCBpcyBsaWtlbHkgdGhleSBoYXZlIGNlcnRhaW4gc2ltaWxhcml0aWVzLiBJJ3ZlIGdvdCB0byBxdWlja2x5IHBpZWNlIHRvZ2V0aGVyIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIE1UNzk5NiB0byBzZWUgaG93IGl0IGNvbXBhcmVzLiBUaGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduIGFuZCBkcml2ZXIgaW50ZXJhY3Rpb25zIGFyZSBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gVGltZSB0byBwdWxsIHVwIHNvbWUgZGF0YXNoZWV0cyBhbmQgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkyNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NDMuMDgxNzU3NjQzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzc2MjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9OTAwPXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc5OTZfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTkwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6OTA2Om1vZHVsZV9pbml0KG10Nzk5Nl9pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtOTA3LW1vZHVsZV9leGl0KG10Nzk5Nl9leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NDMuMTI5NTI1NTc4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MDQxNzU2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVbmtub3duOiBtdDc5OTYqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBcIm10Nzk5NlwiLi4uIHRoYXQncyBhbiBpZGVudGlmaWVyLCBhbmQgSSBkb24ndCBpbW1lZGlhdGVseSByZWNvZ25pemUgaXQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyeSBhbmQgY2F0ZWdvcml6ZSBpdC4gSXMgaXQgYSBjb21wb25lbnQgZGVzaWduYXRpb24/IEEgc29mdHdhcmUgbGlicmFyeSB2ZXJzaW9uPyBBIHByb2plY3QgY29kZT8gT3IgbWF5YmUgZXZlbiBhIHNwZWNpZmljIHN0YW5kYXJkPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggbXkgbWVudGFsIHRheG9ub215IG9mIHJlbGF0ZWQgcG9zc2liaWxpdGllcy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXQncyBsaWtlbHkgc29tZXRoaW5nIHRlY2huaWNhbCwgcHJvYmFibHkgcmVsYXRlZCB0byBoYXJkd2FyZSBvciBzb2Z0d2FyZSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggdGhlIGNvbnRleHQgYmVmb3JlIEkgY2FuIGV2ZW4gYmVnaW4gdG8gZ3Vlc3MuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBicm9hZGVzdCBwb3NzaWJsZSBzZWFyY2gsIHNlZSBpZiB0aGVyZSdzIGFueSBpbW1lZGlhdGUgZG9jdW1lbnRhdGlvbiBvciBwdWJsaWMgbWVudGlvbnMuIElmIHRoYXQgZG9lc24ndCB5aWVsZCBhbnl0aGluZyBwcm9taXNpbmcsIEknbGwgbmVlZCB0byBkcmlsbCBkb3duLCBjb25zaWRlciByZWxhdGVkIHRlY2hub2xvZ2llcyBvciBvcmdhbml6YXRpb25zLCBhbmQgYXBwcm9hY2ggaXQgc3lzdGVtYXRpY2FsbHkuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBwaW5wb2ludCB0aGUgZG9tYWluIGFuZCB0aGVuIGRlbHZlIGludG8gYW55IHNwZWNpZmljYXRpb25zIG9yIGluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gdGhpcyBpZGVudGlmaWVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM4NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMxOjQ3LjAzMzcwNDE3NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODcwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODcwOlxcdFxcdGlmIChyZXQpXFxuIDg3MTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA4NzI6XFx0XFxuIDg3MzpcXHRcXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZtZGV2LVxcdTAwM2VpcnFfdGFza2xldCwgbXQ3OTk2X2lycV90YXNrbGV0KTtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XFxuIDg3NjpcXHRcXG4gODc3OlxcdFxcdHJldHVybiBkZXY7XFxuIDg3ODpcXHRcXG4gODc5OlxcdGVycm9yOlxcbiA4ODA6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gODgxOlxcdFxcbiA4ODI6XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gODgzOlxcdH1cXG4gODg0OlxcdFxcbiA4ODU6XFx0c3RhdGljIGludCBfX2luaXQgbXQ3OTk2X2luaXQodm9pZClcXG4gODg2OlxcdHtcXG4gODg3OlxcdFxcdGludCByZXQ7XFxuIDg4ODpcXHRcXG4gODg5OlxcdFxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10Nzk5Nl9oaWZfZHJpdmVyKTtcXG4gODkwOlxcdFxcdGlmIChyZXQpXFxuIDg5MTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4OTI6XFx0XFxuIDg5MzpcXHRcXHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc5OTZfcGNpX2RyaXZlcik7XFxuIDg5NDpcXHRcXHRpZiAocmV0KVxcbiA4OTU6XFx0XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc5OTZfaGlmX2RyaXZlcik7XFxuIDg5NjpcXHRcXG4gODk3OlxcdFxcdHJldHVybiByZXQ7XFxuIDg5ODpcXHR9XFxuIDg5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NDcuMDMzODAwMDU0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDE5MzIxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUENJIERyaXZlciBEaXNjb3ZlcnkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG10Nzk5NmAg4oCTIGxvb2tzIGxpa2UgaXQncyBhIFBDSSBkcml2ZXIuIEdvdCBpdC4gTm93LCBob2xkIG9uLCBJIHNlZW0gdG8gcmVtZW1iZXIgc2VlaW5nIGBtdDc2X3Jlc2V0X2RldmljZWAgc29tZXdoZXJlIGJlZm9yZS4uLiBBaCwgcmlnaHQhIEl0J3MgYnVyaWVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgdG8ga25vdyB0aGUgZnVsbCBwaWN0dXJlLiBNeSBuZXh0IHRob3VnaHQgaXM6IHdobydzIGNhbGxpbmcgaXQ/IElzIGBtdDc2X3Jlc2V0X2RldmljZWAgc3BlY2lmaWMgdG8gdGhpcyBgbXQ3OTk2YCBkcml2ZXIsIG9yIGlzIGl0IGEgc2hhcmVkIGZ1bmN0aW9uIHVzZWQgYnkgb3RoZXIgTWVkaWF0ZWsgZHJpdmVycyBhcyB3ZWxsPyBUaW1lIHRvIGNoZWNrIHRoZSBjcm9zcy1yZWZlcmVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA1NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzE6NTIuMTc1NzM1MDkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDI3NTg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MzU9c3RhdGljIHZvaWQgbXQ3Nl9yZXNldF9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NDY6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4NzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZXNldF9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTczOD12b2lkIG10NzZfd2NpZF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTEtXFx0LyogUmVtb3ZlIGZyb20gc3RhX3BvbGxfbGlzdCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhZnRlciByZXNldC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc1MjpcXHQgKiBXaXRob3V0IHRoaXMsIG10NzZfcmVzZXRfZGV2aWNlKCkgcmVpbml0aWFsaXplcyBzdGFfcG9sbF9saXN0IGJ1dFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUzLVxcdCAqIGxlYXZlcyB3Y2lkLVxcdTAwM2Vwb2xsX2xpc3Qgd2l0aCBzdGFsZSBwb2ludGVycywgY2F1c2luZyBsaXN0IGNvcnJ1cHRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEzMjI9dm9pZCBtdDc2X2ZyZWVfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzIzOnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMjQtdm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0MjU9bXQ3OTE1X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjE0NjE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTc9bXQ3OTk2X21hY19mdWxsX3Jlc2V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkwLVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhodywgbXQ3OTk2X21hY19yZXNldF9zdGFfaXRlciwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTItXFx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXNfYXRvbWljKGh3LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMTo1Mi4yMjYwMTY2NjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE1MzEwOTUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIENhbGxlcnMgYW5kIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJdCBzZWVtcyB0aGlzIGZ1bmN0aW9uIGlzICpvbmx5KiBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLiBCb3RoIGFyZSBQQ0kgZHJpdmVycywgd2hpY2ggaXMgaW1wb3J0YW50LiBJJ20gZG91YmxlLWNoZWNraW5nLCBidXQgbm8sIHRoZXJlIGFyZSBubyBVU0Igb3IgU0RJTyBkcml2ZXJzIHVzaW5nIHRoaXMgZnVuY3Rpb24uIEp1c3QgUENJLlxuXG5XYWl0LCB0aGUgYG10NzkxNWAgZHJpdmVyIGFsc28gc2VlbXMgdG8gaGF2ZSBhIHBsYXRmb3JtIGRyaXZlciAoYG10Nzk4eF93bWFjX2RyaXZlcmApIGZvciBNVDc5OHggU29Dcy4gQXJlIHRoZXNlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBQcm9iYWJseSBub3QuIFRoZXNlIGFyZSBNZWRpYVRlay1zcGVjaWZpYyBQQ0llL3BsYXRmb3JtIGRyaXZlcnMuIFVubGVzcyB0aGVyZSdzIHNvbWUgTWVkaWFUZWsgV2ktRmkgZW11bGF0aW9uIGluIFFFTVUgKHdoaWNoIHRoZXJlIGlzbid0KSwgdGhlc2UgZHJpdmVycyBzaW1wbHkgd29uJ3QgcHJvYmUuXG5cbk5vdywgcmVnYXJkaW5nIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIG9mZmVyIGEgd2F5IHRvIGZ1enogUENJIGRyaXZlcnMgd2l0aCBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gTm8sIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyBQQ0kgZnV6emVyIHRoYXQgY2FuIGZ1bGx5IGVtdWxhdGUgUENJIGRldmljZXMuIEl0IGNhbiBmdXp6IFBDSSBjb25maWcgc3BhY2UsIHdoaWNoIGlzIHNvbWV0aGluZywgYnV0IGl0IGNhbid0IGVtdWxhdGUgTU1JTyByZWdpc3RlcnMgb3IgRE1BIHRvIG1ha2UgdGhlIGRyaXZlciBhY3R1YWxseSBpbml0aWFsaXplIGFuZCByZWFjaCBzb21ldGhpbmcgbGlrZSBgbXQ3OTE1X21hY19mdWxsX3Jlc2V0YC4gSSByZWNhbGwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgYnV0IGl0J3MgdmVyeSBsaW1pdGVkLiBJdCBjYW4gbGlrZWx5IHRyaWdnZXIgYHByb2JlYCBmdW5jdGlvbnMsIGJ1dCB3aWxsIHByb2JhYmx5IGZhaWwgZWFybHkgYmVjYXVzZSB0aGUgZHJpdmVyIGV4cGVjdHMgc3BlY2lmaWMgaGFyZHdhcmUgcmVzcG9uc2VzLiBUaGV5J2xsIGhhdmUgXCJtYWdpYyBudW1iZXJzXCIgaXQgbmVlZHMgdG8gcmVhZCBmcm9tIHJlZ2lzdGVycywgYW5kIHdpdGhvdXQgZW11bGF0aW9uIHRoYXQncyBpbXBvc3NpYmxlLlxuXG5Pa2F5LCBsZXQncyBzZWUgaWYgYG10NzkxNV9tYWNfZnVsbF9yZXNldGAgaXMgZXZlbiByZWFjaGFibGUuIEl0J3MgY2FsbGVkIGZyb20gYG10NzkxNV9tYWNfcmVzZXRfd29ya2AuIFRoaXMgd29yayBpcyBzY2hlZHVsZWQgd2hlbiB0aGUgZGV2aWNlIG5lZWRzIGEgcmVzZXQsIGxpa2UgYWZ0ZXIgYSBmaXJtd2FyZSBjcmFzaCBvciBhIHdhdGNoZG9nIHRpbWVvdXQuIFNvLCB0byBoaXQgdGhpcywgdGhlIGRldmljZSBoYXMgdG8gYmUgKmZ1bGx5KiBpbml0aWFsaXplZCBhbmQgcnVubmluZy4gQ2FuIHN5emthbGxlciBnZXQgYG10NzkxNWAgdG8gaW5pdGlhbGl6ZT8gVGltZSB0byBsb29rIGF0IGBtdDc5MTVfbW1pb19wcm9iZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjY4LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjAxLjM3OTEyOTA1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkxNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkxNzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqbXQ3OTE1X21taW9fcHJvYmUoc3RydWN0IGRldmljZSAqcGRldixcXG4gOTE4OlxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCBfX2lvbWVtICptZW1fYmFzZSwgdTMyIGRldmljZV9pZClcXG4gOTE5OlxcdHtcXG4gOTIwOlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XFxuIDkyMTpcXHRcXHRcXHQvKiB0eHdpX3NpemUgPSB0eGQgc2l6ZSArIHR4cCBzaXplICovXFxuIDkyMjpcXHRcXHRcXHQudHh3aV9zaXplID0gTVRfVFhEX1NJWkUgKyBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjX2Z3X3R4cCksXFxuIDkyMzpcXHRcXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1RYV0lfTk9fRlJFRSB8IE1UX0RSVl9IV19NR01UX1RYUSB8XFxuIDkyNDpcXHRcXHRcXHRcXHQgICAgIE1UX0RSVl9BTVNEVV9PRkZMT0FEIHxcXG4gOTI1OlxcdFxcdFxcdFxcdCAgICAgTVRfRFJWX0hXX1BTX0JVRkZFUklORyxcXG4gOTI2OlxcdFxcdFxcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcXG4gOTI3OlxcdFxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxcbiA5Mjg6XFx0XFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuIDkyOTpcXHRcXHRcXHQudG9rZW5fc2l6ZSA9IE1UNzkxNV9UT0tFTl9TSVpFLFxcbiA5MzA6XFx0XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTE1X3R4X3ByZXBhcmVfc2tiLFxcbiA5MzE6XFx0XFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZfY29ubmFjX3R4X2NvbXBsZXRlX3NrYixcXG4gOTMyOlxcdFxcdFxcdC5yeF9za2IgPSBtdDc5MTVfcXVldWVfcnhfc2tiLFxcbiA5MzM6XFx0XFx0XFx0LnJ4X2NoZWNrID0gbXQ3OTE1X3J4X2NoZWNrLFxcbiA5MzQ6XFx0XFx0XFx0LnJ4X3BvbGxfY29tcGxldGUgPSBtdDc5MTVfcnhfcG9sbF9jb21wbGV0ZSxcXG4gOTM1OlxcdFxcdFxcdC5zdGFfYWRkID0gbXQ3OTE1X21hY19zdGFfYWRkLFxcbiA5MzY6XFx0XFx0XFx0LnN0YV9ldmVudCA9IG10NzkxNV9tYWNfc3RhX2V2ZW50LFxcbiA5Mzc6XFx0XFx0XFx0LnN0YV9yZW1vdmUgPSBtdDc5MTVfbWFjX3N0YV9yZW1vdmUsXFxuIDkzODpcXHRcXHRcXHQudXBkYXRlX3N1cnZleSA9IG10NzkxNV91cGRhdGVfY2hhbm5lbCxcXG4gOTM5OlxcdFxcdFxcdC5zZXRfY2hhbm5lbCA9IG10NzkxNV9zZXRfY2hhbm5lbCxcXG4gOTQwOlxcdFxcdH07XFxuIDk0MTpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2O1xcbiA5NDI6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbiA5NDM6XFx0XFx0aW50IHJldDtcXG4gOTQ0OlxcdFxcbiA5NDU6XFx0XFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKHBkZXYsIHNpemVvZigqZGV2KSwgXFx1MDAyNm10NzkxNV9vcHMsIFxcdTAwMjZkcnZfb3BzKTtcXG4gOTQ2OlxcdFxcdGlmICghbWRldilcXG4gOTQ3OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiA5NDg6XFx0XFxuIDk0OTpcXHRcXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xcbiA5NTA6XFx0XFxuIDk1MTpcXHRcXHRyZXQgPSBtdDc5MTVfbW1pb19pbml0KG1kZXYsIG1lbV9iYXNlLCBkZXZpY2VfaWQpO1xcbiA5NTI6XFx0XFx0aWYgKHJldClcXG4gOTUzOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDk1NDpcXHRcXG4gOTU1OlxcdFxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNm1kZXYtXFx1MDAzZWlycV90YXNrbGV0LCBtdDc5MTVfaXJxX3Rhc2tsZXQpO1xcbiA5NTY6XFx0XFxuIDk1NzpcXHRcXHRyZXR1cm4gZGV2O1xcbiA5NTg6XFx0XFxuIDk1OTpcXHRlcnJvcjpcXG4gOTYwOlxcdFxcdG10NzZfZnJlZV9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDk2MTpcXHRcXG4gOTYyOlxcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIDk2MzpcXHR9XFxuIDk2NDpcXHRcXG4gOTY1OlxcdHN0YXRpYyBpbnQgX19pbml0IG10NzkxNV9pbml0KHZvaWQpXFxuIDk2NjpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjAxLjM3OTI3MDI5MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTU5MDI4NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYG10NzkxNV9tbWlvX2luaXRgIGZ1bmN0aW9uLCB0aGlua2luZyBsaWtlIEkgd291bGQgYXMgYW4gZXhwZXJ0IGluIGVtYmVkZGVkIHN5c3RlbXMgYW5kIGRyaXZlciBkZXZlbG9wbWVudDpcblxuKipJbml0aWFsIERldmljZSBTZXR1cDogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG10NzkxNV9tbWlvX2luaXRgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoaXMgaXMgdGhlIGluaXRpYWwgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBkZXZpY2UuIFRoZSBcIm1taW9cIiBwYXJ0IHN0cm9uZ2x5IHN1Z2dlc3RzIE1lbW9yeS1NYXBwZWQgSS9PLCBtZWFuaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBkaXJlY3QgcmVnaXN0ZXIgYWNjZXNzLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCdzIHRoZSBzY29wZSBvZiB0aGlzIGluaXRpYWxpemF0aW9uPyBEb2VzIGl0IHByaW1hcmlseSBpbnZvbHZlIHNldHRpbmcgdXAgYmFzaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHJlZ2lzdGVyIHdyaXRlcywgb3IgZG9lcyBpdCBhbHNvIGRlbHZlIGludG8gZmlybXdhcmUgbG9hZGluZyBvciBlYXJseSBoYXJkd2FyZSBicmluZy11cCB0aGF0IHJlcXVpcmVzIG1vcmUgc29waGlzdGljYXRlZCBpbnRlcmFjdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBpbnRlcnBsYXkgb2Ygc29mdHdhcmUgY29uZmlndXJhdGlvbiBhbmQgdGhlIGhhcmR3YXJlIGl0c2VsZi4gTGV0J3Mgc2VlIHdoYXQgaXQncyByZWFsbHkgdXAgdG8sIGJlY2F1c2UgdGhlIGFuc3dlcnMgdG8gdGhvc2UgcXVlc3Rpb25zIHdpbGwgY2hhbmdlIGhvdyBJIGxvb2sgYXQgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTc0LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjowNS41MzgzMDEzMDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Njk5NzA5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X21taW9faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy03MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjc0MDpzdGF0aWMgaW50IG10NzkxNV9tbWlvX2luaXQoc3RydWN0IG10NzZfZGV2ICptZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy03NDEtXFx0XFx0XFx0ICAgIHZvaWQgX19pb21lbSAqbWVtX2Jhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9OTE3PXN0cnVjdCBtdDc5MTVfZGV2ICptdDc5MTVfbW1pb19wcm9iZShzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTk1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6OTUxOlxcdHJldCA9IG10NzkxNV9tbWlvX2luaXQobWRldiwgbWVtX2Jhc2UsIGRldmljZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTk1Mi1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjowNy4wMDgyNzkzNTFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxMzY4Nzk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSB3ZSBnby4uLlxuXG4qKkluaXRpYWwgRXhhbWluYXRpb24gb2YgYG10NzkxNV9tbWlvX2luaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkxNV9tbWlvX2luaXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBNZWRpYXRlayBkcml2ZXIgaW5pdGlhbGl6ZXMgdGhlIG1lbW9yeS1tYXBwZWQgSS9PIGZvciB0aGUgTVQ3OTE1IGNoaXBzZXQuIEdpdmVuIG15IGJhY2tncm91bmQsIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgY29uZmlndXJpbmcgdGhlIGJhc2UgYWRkcmVzc2VzIGZvciB2YXJpb3VzIHJlZ2lzdGVycywgcG9zc2libHkgc2V0dGluZyB1cCBETUEsIGFuZCBsaWtlbHkgc29tZSBpbml0aWFsIHBvd2VyLXVwIG9yIHJlc2V0IHNlcXVlbmNlcy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGhlcmU7IHRoZSBvcmRlciBpcyBvZnRlbiBjcml0aWNhbC4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGhhbmRsZSBhbnkgcG90ZW50aWFsIGhhcmR3YXJlIHF1aXJrcyBvciBlcnJhdGEg4oCTIGhvcGVmdWxseSwgdGhleSd2ZSBkb2N1bWVudGVkIHRob3NlIHdlbGwgd2l0aGluIHRoZSBjb2RlLiBBbHNvLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGV5IGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zIGlmIHRoYXQncyBhIGZhY3Rvci4gTGV0J3Mgc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTU4MjQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoxMy40MjE5NzEyMTRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NDA6XFx0c3RhdGljIGludCBtdDc5MTVfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG4gNzQxOlxcdFxcdFxcdFxcdCAgICB2b2lkIF9faW9tZW0gKm1lbV9iYXNlLFxcbiA3NDI6XFx0XFx0XFx0XFx0ICAgIHUzMiBkZXZpY2VfaWQpXFxuIDc0MzpcXHR7XFxuIDc0NDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9idXNfb3BzICpidXNfb3BzO1xcbiA3NDU6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcXG4gNzQ2OlxcdFxcbiA3NDc6XFx0XFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MTVfZGV2LCBtdDc2KTtcXG4gNzQ4OlxcdFxcdG10NzZfbW1pb19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIG1lbV9iYXNlKTtcXG4gNzQ5OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4gNzUwOlxcdFxcbiA3NTE6XFx0XFx0c3dpdGNoIChkZXZpY2VfaWQpIHtcXG4gNzUyOlxcdFxcdGNhc2UgMHg3OTE1OlxcbiA3NTM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcucmVnX3JldiA9IG10NzkxNV9yZWc7XFxuIDc1NDpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZy5vZmZzX3JldiA9IG10NzkxNV9vZmZzO1xcbiA3NTU6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcubWFwID0gbXQ3OTE1X3JlZ19tYXA7XFxuIDc1NjpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZy5tYXBfc2l6ZSA9IEFSUkFZX1NJWkUobXQ3OTE1X3JlZ19tYXApO1xcbiA3NTc6XFx0XFx0XFx0YnJlYWs7XFxuIDc1ODpcXHRcXHRjYXNlIDB4NzkwNjpcXG4gNzU5OlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLnJlZ19yZXYgPSBtdDc5MTZfcmVnO1xcbiA3NjA6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcXG4gNzYxOlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLm1hcCA9IG10NzkxNl9yZWdfbWFwO1xcbiA3NjI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcubWFwX3NpemUgPSBBUlJBWV9TSVpFKG10NzkxNl9yZWdfbWFwKTtcXG4gNzYzOlxcdFxcdFxcdGJyZWFrO1xcbiA3NjQ6XFx0XFx0Y2FzZSAweDc5ODE6XFxuIDc2NTpcXHRcXHRjYXNlIDB4Nzk4NjpcXG4gNzY2OlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLnJlZ19yZXYgPSBtdDc5ODZfcmVnO1xcbiA3Njc6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcub2Zmc19yZXYgPSBtdDc5MTZfb2ZmcztcXG4gNzY4OlxcdFxcdFxcdGRldi1cXHUwMDNlcmVnLm1hcCA9IG10Nzk4Nl9yZWdfbWFwO1xcbiA3Njk6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWcubWFwX3NpemUgPSBBUlJBWV9TSVpFKG10Nzk4Nl9yZWdfbWFwKTtcXG4gNzcwOlxcdFxcdFxcdGJyZWFrO1xcbiA3NzE6XFx0XFx0ZGVmYXVsdDpcXG4gNzcyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA3NzM6XFx0XFx0fVxcbiA3NzQ6XFx0XFxuIDc3NTpcXHRcXHRkZXYtXFx1MDAzZWJ1c19vcHMgPSBkZXYtXFx1MDAzZW10NzYuYnVzO1xcbiA3NzY6XFx0XFx0YnVzX29wcyA9IGRldm1fa21lbWR1cChkZXYtXFx1MDAzZW10NzYuZGV2LCBkZXYtXFx1MDAzZWJ1c19vcHMsIHNpemVvZigqYnVzX29wcyksXFxuIDc3NzpcXHRcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuIDc3ODpcXHRcXHRpZiAoIWJ1c19vcHMpXFxuIDc3OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzgwOlxcdFxcbiA3ODE6XFx0XFx0YnVzX29wcy1cXHUwMDNlcnIgPSBtdDc5MTVfcnI7XFxuIDc4MjpcXHRcXHRidXNfb3BzLVxcdTAwM2V3ciA9IG10NzkxNV93cjtcXG4gNzgzOlxcdFxcdGJ1c19vcHMtXFx1MDAzZXJtdyA9IG10NzkxNV9ybXc7XFxuIDc4NDpcXHRcXHRkZXYtXFx1MDAzZW10NzYuYnVzID0gYnVzX29wcztcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0bWRldi1cXHUwMDNlcmV2ID0gKGRldmljZV9pZCBcXHUwMDNjXFx1MDAzYyAxNikgfFxcbiA3ODc6XFx0XFx0XFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcXHUwMDI2IDB4ZmYpO1xcbiA3ODg6XFx0XFx0ZGV2X2RiZyhtZGV2LVxcdTAwM2VkZXYsIFxcXCJBU0lDIHJldmlzaW9uOiAlMDR4XFxcXG5cXFwiLCBtZGV2LVxcdTAwM2VyZXYpO1xcbiA3ODk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjEzLjQyMjA4MjMzNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzU5OTI1NDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhpcyBNVDc2IERyaXZlciBQcm9iZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTVQ3NiBkcml2ZXIgYW5kIGhvdyBpdCdzIGJlaW5nIGluaXRpYWxpemVkLiBUaGUgY29kZSBncmFicyB0aGUgaGFyZHdhcmUgcmV2aXNpb24gKGBNVF9IV19SRVZgKSB1c2luZyBgbXQ3Nl9ycmAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIHJpZ2h0PyBCdXQgdGhlbiBJIGhpdCBhIHBvdGVudGlhbCBzbmFnIOKAkyBpZiB0aGlzIGlzIGEgUENJIGRldmljZSwgUUVNVSdzIG5vdCBmdWxseSBlbXVsYXRpbmcgaXQsIHNvIGl0J3MgcHJvYmFibHkgbm90IGJlaW5nIHByb2JlZCB1bmxlc3Mgd2UncmUgZmFraW5nIGl0IHNvbWVob3cuIFN5emthbGxlcidzIGdvdCB0aGF0IGBzeXpfcGNpX2RldmljZV9hZGRgIGZ1bmN0aW9uLCB3aGljaCBJICpjb3VsZCogdXNlLCBidXQgcmVhZGluZyBmcm9tIE1NSU8gd291bGQgbGlrZWx5IGp1c3QgcmV0dXJuIGdhcmJhZ2UsIGxpa2UgYDB4ZmZmZmZmZmZgLCB3aGljaCB3b3VsZCBwcm9iYWJseSBjcmFzaCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuXG5cbldhaXQgYSBzZWNvbmQsIGxldCBtZSB6b29tIG91dC4gSSByZWNhbGwgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBpbiBgbWFjODAyMTEuY2AsIHBhcnQgb2YgdGhhdCBjb3JlIGBtdDc2YCBkcml2ZXIuIElzIHRoYXQgZnVuY3Rpb24gZXZlbiB1c2VkIGJ5IHRoZSBVU0IgcGFydHM/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IFVTQiBkcml2ZXJzIHRoYXQgdXNlIGl0LiBNYXliZSBzb21ldGhpbmcgbGlrZSBgbXQ3NngwMl9tYWNfcmVzZXRfd29ya2AuLi4gSSdsbCBjaGVjayB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcwMDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoxOC43ODIwMTA5NjVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjQ2MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlxcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXFx0ICogbGVhdmVzIHdjaWQtXFx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjE4LjgzNTI2MzUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzOTU4MzQ4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtdDc2X3Jlc2V0X2RldmljZWAgQ2FsbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZfcmVzZXRfZGV2aWNlYCBmdW5jdGlvbiBjYWxsLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IG9ubHkgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGFyZSBjYWxsaW5nIGl0LiBCb3RoIG9mIHRoZXNlIGFyZSBQQ0kgZGV2aWNlcywgd2hpY2ggbmFycm93cyBkb3duIHRoZSBzY29wZSBxdWl0ZSBhIGJpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIHBhdGggdG8gdGhpcyBmdW5jdGlvbj9cIiBObywgdGhlcmUgaXNuJ3QsIHNvIHRoYXTigJlzIGl0OiBpdCdzIGV4Y2x1c2l2ZSB0byB0aGVzZSB0d28gUENJIGRldmljZXMuXG5cbk5vdywgdGhlIG5hdHVyYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgaXNuJ3QgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBiZWNhdXNlIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIFBDSSBkZXZpY2VzLiBJIGtub3cgc3l6a2FsbGVyIGhhcyB0aGF0IGBzeXpfcGNpX2RldmljZV9hZGRgIHBzZXVkby1zeXNjYWxsLCBidXQgcmVhbGlzdGljYWxseSwgdGhhdCdzIGluY3JlZGlibHkgbGltaXRlZC4gSXQgdXN1YWxseSBmYWxscyBhcGFydCB3aGVuIGRlYWxpbmcgd2l0aCBXaS1GaSBkcml2ZXJzIGJlY2F1c2Ugb2YgdGhlIGNvbXBsZXhpdHkgb2YgZmlybXdhcmUgbG9hZGluZyBhbmQgYWxsIHRob3NlIHRyaWNreSBNTUlPIGludGVyYWN0aW9ucyB0aGV5IGRlbWFuZC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gaG9sZCBvbi4uLiBcInN5emthbGxlciBmb3VuZCB0aGlzIGJ1ZyFcIiBBbmQgdGhlIGNvbW1pdCBtZXNzYWdlIGNvbmZpcm1zIGl0IOKAkyBcIkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcIi4gVGhpcyBtZWFucyBzeXprYWxsZXIgKmRpZCogc29tZWhvdyBnZXQgdG8gYG10NzZfcmVzZXRfZGV2aWNlYC4gSG93PyBIb3cgZGlkIGl0IGdldCBwYXN0IGFsbCB0aG9zZSBsaW1pdGF0aW9ucz8gSSdtIG1pc3Npbmcgc29tZXRoaW5nLiBJIG5lZWQgdG8gZmluZCB0aGUgYWNjZXNzIHJvdXRlLlxuXG5Pa2F5LCBteSBuZXh0IHN0ZXAgaGFzIHRvIGJlIHRvIHRoaW5rIG91dHNpZGUgdGhlIFBDSSBib3guIENvdWxkIGVpdGhlciBgbXQ3OTE1YCBvciBgbXQ3OTk2YCBiZSBwcm9iZWQgdmlhIHNvbWV0aGluZyBlbHNlPyBVU0I/IFNESU8/IFRob3NlIGFyZSBwb3NzaWJpbGl0aWVzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgb3RoZXIgYnVzIHR5cGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQyNCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoyNS4yMzExMDEwNTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzMwNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV91c2JfZHJpdmVyfG1vZHVsZV9zZGlvX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz0yNDY9c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBtdDc2NjNzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0yNTItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MjUzOm1vZHVsZV9zZGlvX2RyaXZlcihtdDc2NjNzX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTI1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTI2NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NjYzdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNzctfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyNzg6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NjYzdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM1NS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjM1Njptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDBfZHJpdmVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jPTEzNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngydV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNDktfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNTA6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngydV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz0zMjc9c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBtdDc5MjFzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMzMtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MzM0Om1vZHVsZV9zZGlvX2RyaXZlcihtdDc5MjFzX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMzNS1NT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoyNS4yODM0MzU2MTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NzEyMzM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBGdW5jdGlvbioqXG5cbkhtbSwgc28gYG10NzZfcmVzZXRfZGV2aWNlYC4uLiB0aGF0J3MgYSBmdW5jdGlvbiBJJ3ZlIHNlZW4gYmVmb3JlLiBSaWdodCwgaXQncyBkZWZpbmVkIGluIGBtYWM4MDIxMS5jYC4gQnV0IG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGlzIGl0ICphY3R1YWxseSogdXNlZCB3aXRoaW4gdGhlIGBtdDc2YCBkcml2ZXIgZnJhbWV3b3JrPyBJcyBpdCBzcGVjaWZpYyB0byBjZXJ0YWluIE1lZGlhdGVrIGNoaXBzZXRzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGVtcGxveWVkIGJ5IHRoZSBgbXQ3OTIxYCBmYW1pbHksIHRoZSBgbXQ3OTI1YCBzZXJpZXMsIG9yIHBvdGVudGlhbGx5IGJvdGguIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZmxvdyBpcyBjcml0aWNhbCBoZXJlLiBLbm93aW5nICp3aG8qIGlzIGNhbGxpbmcgdGhpcyByZXNldCBmdW5jdGlvbiB3aWxsIGhlbHAgbWUgaW1tZW5zZWx5IGluIHRyb3VibGVzaG9vdGluZyB3aGF0ZXZlciBpc3N1ZSBpcyBjdXJyZW50bHkgb24gbXkgcGxhdGUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHVzYWdlLiBXaGVyZSBhcmUgdGhlc2UgZHJpdmVycyBjYWxsaW5nIHRoaXMgZnJvbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDEyNSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjI5LjU4MDU2MTYzNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3Njk5NjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjoyOS42MjczMzc2MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY5NTMyNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBtdDc5MjUqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyBuZXcsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgbGVhbnMgdG93YXJkcyBleHBsb3JpbmcgdGhlIGBtdDc5MjVgLiAqV2h5PyogV2VsbCwgZ2l2ZW4gdGhlIGNvbnRleHQgKHdoaWNoIEknbSBhc3N1bWluZywgYmFzZWQgb24gbXkgZmllbGQsIGludm9sdmVzIGVpdGhlciBuZXR3b3JraW5nLCBlbWJlZGRlZCBzeXN0ZW1zLCBvciBsaWtlbHkgYm90aCksIGl0J3MgcHJvYmFibHkgcmVsZXZhbnQuIEl0J3MgYW4gaW50ZXJlc3RpbmcgY2hpcCBhbmQgSSB3b25kZXIgd2hhdCBzcGVjaWZpYyBhc3BlY3Qgb2YgaXQgaXMgYmVpbmcgY29uc2lkZXJlZC4gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IEFyZSB3ZSBsb29raW5nIGF0IGNhcGFiaWxpdGllcywgcGVyZm9ybWFuY2UgYmVuY2htYXJrcywgcG90ZW50aWFsIGludGVncmF0aW9uIHdpdGggYSBzcGVjaWZpYyBPUyBvciBhcmNoaXRlY3R1cmUsIG9yIHBlcmhhcHMgY29tcGFyaW5nIGl0IGFnYWluc3Qgb3RoZXIgc29sdXRpb25zPyBBcmUgd2UgY29uc2lkZXJpbmcgdGhlIGNvc3QsIHBvd2VyIGNvbnN1bXB0aW9uIG9yIHRoZSBhdmFpbGFiaWxpdHkgb2YgZG9jdW1lbnRhdGlvbj8gSSBuZWVkIG1vcmUgZGF0YSB0byBmb3JtdWxhdGUgYSBwcm9wZXIgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0MjksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjozMy41OTY4NzI1MDJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjM3NTI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzI6MzMuNjQxMTE2ODg3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzIzNDQ1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipDb25zaWRlcmluZyB0aGUgTVQ3NjE1KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLi4uIHdoYXQgYWJvdXQgdGhlIGBtdDc2MTVgPyBJdCBrZWVwcyBwb3BwaW5nIHVwIGluIG15IHJlc2VhcmNoLiBJIG5lZWQgdG8gZ2l2ZSB0aGlzIGNoaXAgc29tZSBzZXJpb3VzIGNvbnNpZGVyYXRpb24uIEl0IGhhcyBwb3RlbnRpYWwsIEkga25vdywgYnV0IHdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBJcyBpdCB0aGUgYmVzdCBzb2x1dGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJvYmxlbSBJJ20gdHJ5aW5nIHRvIHNvbHZlPyBPciBpcyB0aGVyZSBzb21ldGhpbmcgZWxzZSBtb3JlIGFwcHJvcHJpYXRlPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3BlY3MgYWdhaW4sIGNvbXBhcmUgaXQgYWdhaW5zdCBteSBiZW5jaG1hcmtzLCBhbmQgYXNzZXNzIGl0cyBwcm9zIGFuZCBjb25zIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgdXNlIGNhc2UuIEknbSBjb25zaWRlcmluZyBpdCwgb2J2aW91c2x5LCBidXQgSSdtIG5vdCByZWFkeSB0byBmdWxseSBjb21taXQgdG8gaXQganVzdCB5ZXQuIEkgbmVlZCB0byBtYWtlIGEgc29saWQganVkZ21lbnQgYmFzZWQgb24gaGFyZCBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY2NiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjM3LjExMzQ2NDE5N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5Njg3MjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjozNy4xNTg0Mzk5MTFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MjcyMTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgYXMgdGhvdWdoIEknbSB0aGUgb25lIGhhdmluZyB0aGVtOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBtdDc2eDAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgc3BlY2lmaWMgd2lyZWxlc3MgaXNzdWUgYW5kIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIGRyaXZlcnMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdHJvdWJsZXNob290aW5nLiBJJ3ZlIHJ1bGVkIG91dCBhIGZldyB0aGluZ3MsIGJ1dCBJIGhhdmVuJ3Qgc3BlY2lmaWNhbGx5IGFkZHJlc3NlZCB0aGUgKm10NzZ4MCogZHJpdmVyLiBJdCdzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCBJIGhhdmVuJ3QgcmVhbGx5IHB1dCBpdCB1bmRlciB0aGUgbWljcm9zY29wZSB5ZXQuIElzIGl0IHRoZSByaWdodCBkcml2ZXIgZm9yIHRoZSBoYXJkd2FyZSBpbiBxdWVzdGlvbj8gSXMgdGhlcmUgYSBrbm93biBpc3N1ZSB3aXRoIHRoZSBwYXJ0aWN1bGFyIHZlcnNpb24gaW4gdXNlPyBIYXZlIEkgY2hlY2tlZCBmb3IgYW55IGVycmF0YSBvciBjb21wYXRpYmlsaXR5IG5vdGVzIHJlbGF0ZWQgdG8gdGhpcyBjaGlwIGFuZCB0aGUgdGFyZ2V0ZWQga2VybmVsIHZlcnNpb24/IEkgbmVlZCB0byBsb29rIGludG8gaXRzIHN0YXR1cy4gTWF5YmUgYSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBjb3VsZCBiZSBvZmYuIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGxvb2tpbmcgYXQgbG9ncyB0byBzZWUgaWYgdGhhdCdzIHRoZSBwb2ludCBvZiBmYWlsdXJlLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtdDc2eDBgIGRyaXZlciBhbmQgc2VlIHdoYXQgaXQncyBkb2luZywgb3Igbm90IGRvaW5nLCBhbmQgaWYgaXQncyB0aGUgcm9vdCBvZiBteSBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkwMiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjQxLjEwMTE2MzE5MVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MDMyNjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjo0MS4xNDU1NzQ2MjZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5MjEwMjQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgdGhlIE1UNzZ4MioqXG5cbkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhpcyB3aXJlbGVzcyBzaXR1YXRpb24uLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGEgc3BlY2lmaWMgY2hpcHNldCBmb3IgdGhlIGFjY2VzcyBwb2ludC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wZWQgdG8gdGhlIHBvc3NpYmlsaXRpZXMgb2YgYG10NzZ4MmAuIEl0J3MgYSBzb2xpZCwga25vd24gcXVhbnRpdHkuIFRoZSBgbXQ3NngyYCBzZXJpZXMgaGFzIGJlZW4gYSB3b3JraG9yc2UgZm9yIGEgd2hpbGUuIEl0J3MgZ290IGRlY2VudCBwZXJmb3JtYW5jZSwgZ2VuZXJhbGx5IGdvb2QgZHJpdmVyIHN1cHBvcnQsIGFuZCBhIHdlbGwtZXN0YWJsaXNoZWQgY29tbXVuaXR5IGFyb3VuZCBpdC4gSXQgaXMga25vd24gYW5kIHVuZGVyc3Rvb2QuXG5cbkxldCBtZSBhbmFseXplLiBXaGF0IHdvdWxkIHRoZSBpbXBsaWNhdGlvbnMgb2YgdXRpbGl6aW5nIGBtdDc2eDJgIGJlLCByZWFsbHk/IERvZXMgaXQgc3RpbGwgbWFrZSBzZW5zZSwgY29uc2lkZXJpbmcgdGhlIGFkdmFuY2VtZW50cz8gV2hhdCBhcmUgaXRzIGN1cnJlbnQgbGltaXRhdGlvbnM/IE1heWJlIGl0J3MgYSBiaXQgZGF0ZWQgY29tcGFyZWQgdG8gc29tZSBvZiB0aGUgbmV3ZXIgY2hpcHNldHMsIGJ1dCBwZXJoYXBzIHRoZSBwcm92ZW4gc3RhYmlsaXR5IGFuZCBhdmFpbGFibGUgc29mdHdhcmUgZWNvc3lzdGVtIG91dHdlaWdoIHRob3NlIGNvbmNlcm5zLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIGFwcGxpY2F0aW9uLiBJcyB0aGVyZSBhbnkgcGFydGljdWxhciByZWFzb24gdG8gcnVsZSBpdCBvdXQsIGdpdmVuIHRoZSBwcm9qZWN0IHBhcmFtZXRlcnM/IE1heWJlIGl0J3MgcGVyZmVjdCBmb3IgdGhpcyBzY2VuYXJpbywgYSBnb29kIGNvc3QvYmVuZWZpdCBhbmFseXNpcy4gSSBuZWVkIHRvIGNvbnNpZGVyIGl0IHNlcmlvdXNseSBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMuIEl04oCZcyBjZXJ0YWlubHkgYSB2aWFibGUgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE5OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjQ1LjMzNzY3OTk0MloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMjA0MTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMjo0NS4zODIwMTAxNTdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNzUxMDQyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgbXQ3Nl9yZXNldF9kZXZpY2VgIG9ubHkgbGVhZHMgdG8gYG10NzkxNWAgYW5kIGBtdDc5OTZgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgIGRpcmVjdG9yeS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzZWUgaWYgYG1hYzgwMjExX2h3c2ltYCBjb3VsZCB0cmlnZ2VyIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgLCBidXQgdGhhdCdzIGEgZGVhZCBlbmQgLSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIFRoZW4gSSBjb25zaWRlcmVkIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCB3aGlsZSBpdCdzIGEgdGhpbmcsIGl0IGp1c3QgY2FsbHMgYHBjaV9kZXZpY2VfYWRkYCwgc28gdGhhdCBkb2Vzbid0IHNlZW0gcHJvbWlzaW5nLlxuXG5Ib2xkIG9uLCB0aGlzIGlzbid0IG5lY2Vzc2FyaWx5IGEgc3l6a2FsbGVyLWRpc2NvdmVyZWQgYnVnLCBpdCBjb3VsZCBiZSBhIHBhdGNoIHN1Ym1pdHRlZCBmb3IgdGVzdGluZyBieSBzeXpib3QhIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIgLSB0aGF0IGNvbmZpcm1zIGl0LiBTeXpib3QgYXBwbGllcyBhbmQgY29tcGlsZXMgdGhlIHBhdGNoLCBidXQgdGhhdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgY29kZSBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIGZ1enppbmcuXG5cbklmIGl0ICppcyogYW4gdW5kZXItcmV2aWV3IHBhdGNoLCBzeXpib3Qgd2lsbCBjb21waWxlIGFuZCBmdXp6IGl0LiBCdXQgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUsIGl0IHdvbid0IGJlIGZ1enplZC5cblxuVGhlIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3Mgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgaXMgaW4gYSBwbGFjZSB0aGF0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0IGluY2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5TbywgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGFyZSAqZGVmaW5pdGVseSogdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVycy4gVGhleSBhYnNvbHV0ZWx5IG5lZWQgTWVkaWFUZWsgTVQ3OTE1L01UNzk5NiBoYXJkd2FyZS4gU3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhhdCwgSSBrbm93IHRoYXQuIE5vIGNoYW5jZSB0aGV5J3JlIGJlaW5nIGVtdWxhdGVkLlxuXG5DYW4gSSBnZXQgYG10NzkxNWAgaW5pdGlhbGl6ZWQgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gVGltZSB0byBnbyBiYWNrIG92ZXIgYG10NzkxNV9tbWlvX2luaXRgLiBJdCByZWFkcyBgTVRfSFdfUkVWYCBmcm9tIE1NSU8uIE9rYXksIGlmIHRoYXQgZG9lc24ndCBtYXRjaCwgaXQgbWlnaHQgYmFpbCBvdXQ/IE5vcGUsIGp1c3QgbG9ncyBpdC4gQnV0IGl0IGFsc28gcmVhZHMgYGRldmljZV9pZGAgZnJvbSB0aGUgUENJIGRldmljZSwgYW5kIGdvZXMgdGhyb3VnaCBhIHdob2xlIGJ1bmNoIG9mIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLiBDYW4gdGhpcyBsZWFkIHRvIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgPyBJdCdzIGNhbGxlZCBmcm9tIGBtdDc5MTVfbWFjX3Jlc2V0X3dvcmtgLCB3aGljaCBpcyBzY2hlZHVsZWQgZnJvbSBgbXQ3OTE1X3Jlc2V0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzI6NTYuNDU3MTE2OTI3WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkzMzUxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ5PW10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTctXFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5zdGF0ZSB8PSBNVF9NQ1VfQ01EX1dEVF9NQVNLO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNjA1PXZvaWQgbXQ3OTE1X21hY19kdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTY3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNjc0OnZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTY3NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODkwLVxcdFxcdFxcdGRldi1cXHUwMDNlcmVjb3Zlcnkuc3RhdGUgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjg5MTpcXHRcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODkyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3MT12b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDcyOnZvaWQgbXQ3OTE1X3Jlc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3My1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMyOjU2LjUwNDA1MzM4MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODg5MzMzMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgYG10NzkxNV9yZXNldGAgZnVuY3Rpb24gZ2V0cyB0cmlnZ2VyZWQuIEl0IHNlZW1zIGl0IGNhbiBiZSBjYWxsZWQgZWl0aGVyIGluIHJlc3BvbnNlIHRvIGEgc3BlY2lmaWMgaW50ZXJydXB0LCB3aGljaCBpcyBoYW5kbGVkIGJ5IGBtdDc5MTVfaXJxX3Rhc2tsZXRgLCBvciBkaXJlY3RseSB0aHJvdWdoIGRlYnVnZnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdG8gZXZlbiBnZXQgdG8gdGhpcyBwb2ludCwgdGhlIGRldmljZSBpdHNlbGYgaGFzIHRvIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcHJvYmVkLCByaWdodD8gU28sIHRoZSBlbnRpcmUgZGV2aWNlIGRyaXZlciBtdXN0IGJlIHVwIGFuZCBydW5uaW5nLlxuXG5JJ20gY3VyaW91cywgY2FuIGBtdDc5MTVfbW1pb19wcm9iZWAgZXZlbiBzdWNjZWVkIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IENvdWxkIEkgc2ltdWxhdGUgb3Igc3R1YiBvdXQgdGhlIGhhcmR3YXJlIGFuZCBzdGlsbCBnZXQgdG8gdGhlIHBvaW50IHdoZXJlIHRoaXMgcmVzZXQgbWVjaGFuaXNtIGJlY29tZXMgcmVsZXZhbnQ/IFRoYXQncyB3aGF0IEkgd2FudCB0byB0ZXN0LiBJIGtub3cgaXQgY2FsbHMgYG10NzkxNV9tbWlvX2luaXRgIGZpcnN0LCB3aGljaCB0aGVuIGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgLiBTbywgbXkgbmV4dCBtb3ZlIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCdzICphY3R1YWxseSogaGFwcGVuaW5nIGluIHRob3NlIGZ1bmN0aW9ucyBhbmQgaWYgdGhvc2UgY2FsbHMgY2FuIGJlIHNpbXVsYXRlZCB0byByZWFjaCB0aGUgcmVzZXQgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDQzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMzOjA2LjM5MzM4OTM5NVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NTcxMzQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTg1OD1tdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg3MzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM3Ni1cXHQvKiBsb2FkIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTM3NzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMzIzOm10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjMyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg3PXN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfcmVkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxMDppbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0NTg6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDU5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0NjU6aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDc3OlxcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDc4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3Mz1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc0OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDc2LWludCBtdDc5MTVfbWN1X3R3dF9hZ3J0X3VwZGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzowNy43NTkxMDc4M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTI3OTA5MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZhaWx1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgaW5pdGlhbGl6YXRpb24gaXNzdWUgd2l0aCB0aGUgbXQ3OTE1IGRldmljZS4gSXQgbG9va3MgbGlrZSBgbXQ3OTE1X21jdV9pbml0YCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQsIGNhbGxpbmcgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBsb2FkIGZpcm13YXJlLCBzZW5kIGNvbW1hbmRzIHRvIHRoZSBNQ1UuIE5vdywgaWYgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXNuJ3QgcHJlc2VudCwgdGhlIE1DVSB3b24ndCByZXNwb25kLCBhbmQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgcmlnaHRseSBmYWlscy5cblxuVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgc3l6a2FsbGVyLCBvdXIgZnV6emVyLCBtYXkgaGF2ZSBmb3VuZCB0aGlzLiBJdCBjYW4gaW5qZWN0IGZpcm13YXJlLCBidXQgaXQgY2FuJ3QgZnVsbHkgZW11bGF0ZSB0aGUgTUNVIHJlc3BvbnNlcyB0byBNTUlPIHJlYWRzIGFuZCB3cml0ZXMuIFNvLCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ29lcyBkb3duIHRoZSBkcmFpbjogYG10NzkxNV9pbml0X2hhcmR3YXJlYCBmYWlscywgdGhlbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZmFpbHMuIENvbnNlcXVlbnRseSwgdGhlIGRldmljZSBuZXZlciByZWFjaGVzIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc3RhdGUgYW5kLCBjcml0aWNhbGx5LCBgbXQ3OTE1X3Jlc2V0YCBpcyBuZXZlciBjYWxsZWQuXG5cbkJ1dCB0aGVuIEkgdGhvdWdodCwgaWYgc3l6a2FsbGVyIGZvdW5kIHRoaXMsICpob3cqPyBJdCBtYWRlIG1lIGNvbnNpZGVyIHRoYXQgbWF5YmUgYG10NzZfcmVzZXRfZGV2aWNlYCBJUyBjYWxsZWQgYnkgYSBVU0IgZHJpdmVyLCBldmVuIGlmIGl0J3Mgbm90IGluIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IG9mIHRoZSBtYWluIG10NzkxNSBkcml2ZXIuIExldCdzIHZlcmlmeS4gSSBncmVwcGVkIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5IGFuZCB0aGUgc2VhcmNoIHR1cm5lZCB1cCBvbmx5IGBtdDc5MTUvbWFjLmNgIGFuZCBgbXQ3OTk2L21hYy5jYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIG5vdCBjYWxsZWQgc29tZXdoZXJlIGVsc2UuXG5cbldhaXQsIHRoZXJlJ3MgYG10NzZfd2NpZF9jbGVhbnVwYC4gVGhlIHBhdGNoIHJlZmVyZW5jZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiBgbWFjODAyMTEuY2AuIFNvIGl0IGFwcGVhcnMgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBiZWluZyBjYWxsZWQgdGhlcmUuIEhvd2V2ZXIsIHRoZSByZXNldCBpcyBiZWluZyBkb25lIF9iZWZvcmVfIHRoZSB3Y2lkIGNsZWFudXAsIHdoaWNoIGlzIHRoZW4gbW92ZWQgdG8gKmFmdGVyKi4gU28sIGxldCdzIHNlZSwgaXMgYG10NzZfcmVzZXRfZGV2aWNlYCBjYWxsZWQgYnkgKmFueSogb3RoZXIgZHJpdmVyIG91dHNpZGUgb2YgdGhlIGBtdDc2YCBzdWJzeXN0ZW0/IEl0J3MgZXhwb3J0ZWQsIGJ1dCBpZiBpdCBpcyBvbmx5IGNhbGxlZCBpbiBgbXQ3NmAsIHRoZW4gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gTGV0J3MgYnJvYWRlbiB0aGUgc2VhcmNoIHRvIHRoZSBlbnRpcmUga2VybmVsIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwNDIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6MTYuMjg3MDE5MTM5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI4Nzc5NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVxcdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XFx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cXHQgKiBsZWF2ZXMgd2NpZC1cXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVxcdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6MTcuOTE1ODAzNjIyWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDYwODY2ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlIG9mIHRoZSBNZWRpYVRlayBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE1lZGlhVGVrIFdpLUZpIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLiBUaGV5J3JlIGJvdGggUENJZSBkcml2ZXJzLCBhbmQgYWxzbyBwbGF0Zm9ybSBkcml2ZXJzIGZvciB0aGUgTVQ3OTh4IFNvQ3MuIEltbWVkaWF0ZWx5LCBteSBmaXJzdCB0aG91Z2h0IGlzIHZpcnR1YWxpemF0aW9uLCBsaWtlIFFFTVUuIFNpbmNlIHRoZXkncmUgUENJZSBhbmQgcGxhdGZvcm0gZHJpdmVycywgdGhleSdyZSBwcm9iYWJseSBvdXQgb2YgcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4uLiB1bmxlc3MhIFdhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBEb2VzIHRoYXQgYHN5el9wY2lfZGV2aWNlX2FkZGAgcHNldWRvLXN5c2NhbGwgb2ZmZXIgYSBiYWNrZG9vcj8gSWYgc28sIGNvdWxkIHRoYXQgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgcHJvYmU/IElmIGBzeXpfcGNpX2RldmljZV9hZGRgIGRvZXMgY2FsbCBgbXQ3OTE1X21taW9fcHJvYmVgLCB0aGF0J3Mgb3VyIGVudHJ5IHBvaW50LlxuXG5gbXQ3OTE1X21taW9fcHJvYmVgIGlzIGtleSBiZWNhdXNlIGl0IGxlYWRzIHRvIGBtdDc5MTVfbW1pb19pbml0YCwgd2hpY2ggcmVhZHMgYE1UX0hXX1JFVmAgZnJvbSBNTUlPLiBTaW1wbGUgZW5vdWdoLiBUaGVuIGl0IG1vdmVzIG9uIHRvIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggaXMgd2hlcmUgdGhpbmdzIHN0YXJ0IGdldHRpbmcgaW50ZXJlc3RpbmcuIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBjYWxscyBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLCB3aGljaCB0aGVuIGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgLiBUaGlzIGluIHR1cm4gbGVhZHMgdG8gYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIHdoZXJlIHdlIHNlZSBmaXJtd2FyZSBiZWluZyByZXF1ZXN0ZWQsIGFuZCB0aGVuIGEgY29tbWFuZCBpcyBzZW50IHRvIHRoZSBNQ1UgdXNpbmcgYG10NzZfbWN1X3NlbmRfbXNnYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG9pbnQgb2YgZmFpbHVyZTogaWYgdGhlIE1DVSBkb2Vzbid0IHJlc3BvbmQgb3IgcmV0dXJucyBhbiBlcnJvciwgdGhlcmUncyBhIHRpbWVvdXQgYW5kIHRoZSBwcm9jZXNzIGJhaWxzLiAgSWYgdGhhdCBoYXBwZW5zLCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGZhaWxzLCBhbmQgdGhlbiBzbyBkb2VzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggbWVhbnMgdGhlIGRldmljZSBpc24ndCBmdWxseSByZWdpc3RlcmVkLlxuXG5UaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBmdWxseSByZWdpc3RlciwgdGhlbiBjZXJ0YWluIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBgbXQ3OTE1X3Jlc2V0YCB3aGljaCBzY2hlZHVsZXMgYG10NzkxNV9tYWNfcmVzZXRfd29ya2AsIHdoaWNoIGNhbGxzIGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgIGFuZCBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBUaGlzIHdob2xlIHJlc2V0IHBhdGggaXMgY29udGluZ2VudCBvbiBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHJlZ2lzdHJhdGlvbi5cblxuVGhlbiBhIHRob3VnaHQgaGl0cywgY291bGQgYG10NzkxNV9yZXNldGAgYmUgY2FsbGVkIGZyb20gZGVidWdmcz8gQW5kIHllcywgdGhlcmUgaXQgaXMhIGBtdDc5MTVfc3lzX3JlY292ZXJ5X3NldGAgaW4gYGRlYnVnZnMuY2AgY2FsbHMgYG10NzkxNV9yZXNldChkZXYpYC4gSG93ZXZlciwgZGVidWdmcyBlbnRyaWVzIGFyZSBvbmx5IGNyZWF0ZWQgaWYgdGhlIGRldmljZSBpcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC4gYG10NzkxNV9pbml0X2RlYnVnZnNgIGlzIGNhbGxlZCBmcm9tIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCAqYWZ0ZXIqIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAsIHdoaWNoIG1lYW5zLCBpZiB0aGUgaGFyZHdhcmUgaW5pdCBmYWlscywgbm8gZGVidWdmcy4gVGhpcyBsb29rcyBsaWtlIGEgZGVhZCBlbmQuXG5cbk5vdywgbGV0IG1lIHRoaW5rIGFib3V0IG90aGVyIGNvZGUgcGF0aHMuIENhbiBJIHRyaWdnZXIgYG10NzkxNV9pcnFfdGFza2xldGA/IEl0J3Mgc2V0IHVwIGluIGBtdDc5MTVfbW1pb19wcm9iZWAgKmJlZm9yZSogYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgOiBgdGFza2xldF9zZXR1cChcdTAwMjZtZGV2LVx1MDAzZWlycV90YXNrbGV0LCBtdDc5MTVfaXJxX3Rhc2tsZXQpO2AuIFNvLCBpdCdzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgcHJvYmUuIEJ1dCBjYW4gaXQgYmUgKnNjaGVkdWxlZCo/IEl0J3Mgc2NoZWR1bGVkIGJ5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYG10NzkxNV9pcnFfaGFuZGxlcmAuIEJ1dCBpcyBgbXQ3OTE1X2lycV9oYW5kbGVyYCByZWdpc3RlcmVkICpiZWZvcmUqIG9yIGFmdGVyIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYD8gVGltZSB0byBodW50IGRvd24gdGhhdCBgcmVxdWVzdF9pcnFgIGNhbGwuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjk1MywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzozMC4zNzY2NzI1ODlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDEzMTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfaXJxfGRldm1fcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MTAzPXN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNTU6XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1Ni1cXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NTpcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VpcnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc2LVxcdFxcdFxcdFxcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNTM6XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNTQtXFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6MzAuNDIwNjkxOTAzWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNTk0OTMyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIG10NzkxNSBEcml2ZXIgUHJvYmUgU2VxdWVuY2UqKlxuXG5Pa2F5LCBsZXQncyB0aGluayB0aGlzIHRocm91Z2guIGBkZXZtX3JlcXVlc3RfaXJxYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBtdDc5MTVfcGNpX3Byb2JlYC4gUmlnaHQsIGBtdDc5MTVfcGNpX3Byb2JlYCBjYWxscyBgbXQ3OTE1X21taW9fcHJvYmVgIGZpcnN0LCB3aGljaCBzZXRzIHVwIHRoZSBtZW1vcnkgbWFwcGVkIElPLCB0aGVuIGl0IHJlcXVlc3RzIHRoZSBJUlEgd2l0aCBgZGV2bV9yZXF1ZXN0X2lycWAsIGFuZCBmaW5hbGx5IGl0IGNhbGxzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYC4gVGhlIHNlcXVlbmNlIGlzIGtleSBoZXJlLlxuXG5Ob3csIGlmIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmYWlscywgd2UgZXhwZWN0IHRoZSBwcm9iZSB0byBmYWlsIGFuZCBgZGV2bV9yZXF1ZXN0X2lycWAgd2lsbCBiZSBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgdGhyb3VnaCB0aGUgZGV2aWNlIHJlc291cmNlIG1hbmFnZW1lbnQuIE1ha2VzIHNlbnNlLiBCdXQgaGVyZSdzIHRoZSBraWNrZXI6IGFuIGludGVycnVwdCBjb3VsZCBmaXJlICpiZWZvcmUqIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBjb21wbGV0ZXMuIEZvciBleGFtcGxlLCB0aGUgSVJRIGxpbmUgbWlnaHQgYmUgc2hhcmVkLCBhbmQgYW5vdGhlciBkZXZpY2UgY291bGQgdHJpZ2dlciBhbiBpbnRlcnJ1cHQgYmVmb3JlIG91ciBkcml2ZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cbklmIHRoYXQgaGFwcGVucywgYG10NzkxNV9pcnFfaGFuZGxlcmAgZ2V0cyBjYWxsZWQuIE15IGNvbmNlcm4gaXMsIHdoYXQgaGFwcGVucyBpbnNpZGUgdGhhdCBoYW5kbGVyPyBJZiBpdCByZWFkcyB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciwgYW5kIGl0IGdldHMgYDB4ZmZmZmZmZmZgICh3aGljaCBzdWdnZXN0cyBubyByZWFsIGhhcmR3YXJlIGlzIHByZXNlbnQgYXQgdGhhdCBzdGFnZSksIGl0IGNvdWxkLCBwb3RlbnRpYWxseSwgc2NoZWR1bGUgdGhlIHRhc2tsZXQuIFRoYXQncyB0aGUgcGFydCBJIHJlYWxseSBuZWVkIHRvIGNoZWNrLiBJIG5lZWQgdG8gZGlnIGludG8gYG10NzkxNV9pcnFfaGFuZGxlcmAgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdoZW4gdGhlcmUncyBubyB2YWxpZCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHNlZSB3aGF0IGxvZ2ljIGlzIGluIHBsYWNlIHRvIGhhbmRsZSB0aGlzIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2MCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzozNi40ODAxODg4MDlaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjMyNTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9pcnFfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4OTY6aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ1MD12b2lkIG10NzkxNV93ZnN5c19yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NTE6aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDUyLXU2NCBfX210NzkxNV9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTE1X3ZpZiAqbXZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0xMDM9c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE1NTpcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU2LVxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzUtXFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGRldi1cXHUwMDNlaGlmMi1cXHUwMDNlaXJxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NjpcXHRcXHRcXHRcXHQgICAgICAgbXQ3OTE1X2lycV9oYW5kbGVyLCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzctXFx0XFx0XFx0XFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFxcXCItaGlmXFxcIiwgZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjUzOlxcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjU0LVxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMzOjM2LjUyNjQyNjM3NFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODk5NDg4OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkxNV9pcnFfaGFuZGxlcmAuXG5cbioqRGlzc2VjdGluZyB0aGUgSW50ZXJydXB0IEhhbmRsZXIqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gYWJvdXQgdG8gZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoaXMgTVQ3OTE1IGludGVycnVwdCBoYW5kbGVyLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgcmVhbGx5IG1lZXRzIHRoZSByb2FkIGluIHRlcm1zIG9mIHJlc3BvbnNpdmVuZXNzIGZvciB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBpbnNpZGUgYW5kIG91dC4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSByZWFkIGV2ZXJ5IGxpbmUsIGtlZXBpbmcgaW4gbWluZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgc3BlY2lmaWMgY2hpcHNldC4gRmlyc3QsIEknbGwgaWRlbnRpZnkgdGhlIGludGVycnVwdCBzb3VyY2VzIGJlaW5nIGhhbmRsZWQuIFdoYXQgYXJlIHRoZSBrZXkgaW50ZXJydXB0IGZsYWdzIGJlaW5nIGNoZWNrZWQ/IEFyZSB0aGV5IERNQSBjb21wbGV0aW9uLCBSWCBmcmFtZXMsIFRYIGFja25vd2xlZGdlbWVudHMsIGVycm9ycywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBvcmRlciBpbiB3aGljaCB0aGVzZSBjaGVja3MgYXJlIHBlcmZvcm1lZCB3aWxsIHRlbGwgbWUgc29tZXRoaW5nIGFib3V0IHByaW9yaXR5IGFuZCBob3cgdGhlIGRldmVsb3BlcnMgYW50aWNpcGF0ZWQgdGhlIHRyYWZmaWMgZmxvdy5cblxuTmV4dCwgSSdsbCBsb29rIGZvciBhbnkgaW5kaWNhdGlvbiBvZiBob3cgdGhlc2UgaW50ZXJydXB0cyBhcmUgYmVpbmcgYWNrbm93bGVkZ2VkIG9yIGNsZWFyZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBBcmUgdGhlcmUgc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGhhcHBlbmluZz8gQXJlIHRoZXkgdXNpbmcgYW55IGtpbmQgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIgbGlrZSB0aGUgR0lDIG9yIHNvbWV0aGluZyBzaW1wbGVyPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIHByZXZlbnRpbmcgc3B1cmlvdXMgaW50ZXJydXB0cyBhbmQgZW5zdXJpbmcgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGlzIHJlYWR5IGZvciB0aGUgbmV4dCBldmVudC5cblxuSSdtIGFsc28gbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEFyZSB0aGVyZSBhbnkgc2hhcmVkIHJlc291cmNlcyBiZWluZyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGhhbmRsZXI/IFdoYXQgbG9ja2luZyBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSwgaWYgYW55PyBUaGlzIGlzIGEgaG90IHNwb3QsIHNvIEknbGwgYmUgc2NydXRpbml6aW5nIGl0IHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGRhdGEgY29ycnVwdGlvbiB0aGF0IG1pZ2h0IG9jY3VyIHVuZGVyIGhpZ2ggbG9hZC4gU3BlY2lmaWNhbGx5LCBob3cgZG9lcyB0aGlzIGhhbmRsZXIgaW50ZXJmYWNlIHdpdGggdGhlIGhpZ2hlciBsZXZlbCBuZXR3b3JrIHN0YWNrPyBBbnkgc3BpbmxvY2tzLCBtdXRleGVzLCBvciBhdG9taWMgb3BlcmF0aW9ucz9cblxuSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGhhbmRsZSBkZWZlcnJhbC4gQXJlIHRoZXkgdXNpbmcgd29ya3F1ZXVlcywgc29mdGlycXMsIG9yIHRhc2tsZXRzPyBXaGF0J3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGNob3NlbiBkZWZlcnJhbCBtZWNoYW5pc20/IElzIGl0IG9wdGltaXplZCBmb3IgbG93IGxhdGVuY3ksIG9yIGFyZSB0aGV5IHByaW9yaXRpemluZyB0aHJvdWdocHV0PyBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGluIHRoZSBkZWZlcnJlZCBleGVjdXRpb24gcGF0aC5cblxuRmluYWxseSwgSSdtIGdvaW5nIHRvIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgYW4gdW5leHBlY3RlZCBpbnRlcnJ1cHQgb2NjdXJzLCBvciBpZiB0aGUgZHJpdmVyIGVuY291bnRlcnMgYW4gZXJyb3IgY29uZGl0aW9uPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvdW50ZXJzIGJlaW5nIGluY3JlbWVudGVkPyBBcmUgdGhlcmUgYW55IGF0dGVtcHRzIGF0IHJlY292ZXJ5LCBvciBpcyBpdCBqdXN0IGEgZmF0YWwgaGFsdD8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHN5c3RlbSBzdGFiaWxpdHkuIE92ZXJhbGwsIEkgd2FudCB0byBnYWluIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBpbnRlcnJ1cHQgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NTUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo0Mi40MjU5MTc0MjJaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg5NixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg5NjpcXHRpcnFyZXR1cm5fdCBtdDc5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbiA4OTc6XFx0e1xcbiA4OTg6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRldl9pbnN0YW5jZTtcXG4gODk5OlxcdFxcdHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZDtcXG4gOTAwOlxcdFxcbiA5MDE6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxcbiA5MDI6XFx0XFx0XFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKHdlZCwgMCk7XFxuIDkwMzpcXHRcXHRlbHNlXFxuIDkwNDpcXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcXG4gOTA1OlxcdFxcbiA5MDY6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMilcXG4gOTA3OlxcdFxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlQxX01BU0tfQ1NSLCAwKTtcXG4gOTA4OlxcdFxcbiA5MDk6XFx0XFx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSlcXG4gOTEwOlxcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4gOTExOlxcdFxcbiA5MTI6XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmlycV90YXNrbGV0KTtcXG4gOTEzOlxcdFxcbiA5MTQ6XFx0XFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbiA5MTU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo0Mi40MjYwMDIwMTJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1Njg0NjA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBNVDc2IERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhlIGludGVycnVwdCBoYW5kbGVyIGlzIGNoZWNraW5nIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gTWFrZXMgc2Vuc2UsIHRoYXQncyBhIGdvb2Qgc2FuaXR5IGNoZWNrLiBCdXQgdGhpcyBiaXQgaXMgc2V0IG9ubHkgYXQgdGhlICplbmQqIG9mIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYC4gU28sIGlmIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmYWlscyDigJMgYW5kIGl0J3MgYm91bmQgdG8gaWYgdGhlIGhhcmR3YXJlIGlzbid0IHByZXNlbnQg4oCTIHRoZSB3aG9sZSB0YXNrbGV0IHRoYXQgY29udGFpbnMgdGhpcyBpbnRlcnJ1cHQgaGFuZGxlciBuZXZlciBnZXRzIHNjaGVkdWxlZC4gUmlnaHQsIHNvIGZhciwgc28gZ29vZC5cblxuTm93LCBpZiB0aGUgdGFza2xldCBpc24ndCBzY2hlZHVsZWQsIGBtdDc5MTVfcmVzZXRgIGlzbid0IGNhbGxlZC4gQW5kIGlmICp0aGF0KiBpc24ndCBjYWxsZWQsIHRoZW4gbmVpdGhlciBpcyBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBXYWl0IGEgc2Vjb25kLi4uIEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgbGFzdCBwb2ludC4gQW0gSSByaWdodCBpbiB0aGlua2luZyB0aGF0IGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgb25seSBjYWxsZWQgYnkgYG10NzkxNWAgYW5kIGBtdDc5OTZgLCBvciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBMZXQgbWUgZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBJIGdyZXBwZWQgdGhlIHdob2xlIGBtdDc2YCBkaXJlY3RvcnkgZm9yIGBtdDc2X3Jlc2V0X2RldmljZWAuIFllcCwgY29uZmlybWVkLiBPbmx5IG1hdGNoZXMgaW4gYG10NzkxNWAgYW5kIGBtdDc5OTZgIOKAkyB3aGljaCBtZWFucyBteSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBsaWtlbHkgY29ycmVjdC5cblxuT2theSwgbGV0J3MgdGFrZSB0aGlzIG9uZSBzdGVwIGZ1cnRoZXIgdG8gZW5zdXJlIEkgYW0gY29ycmVjdC4gSSBzaG91bGQgY2hlY2sgaWYgYG10NzkyMWAgY2FsbHMgYG10NzZfcmVzZXRfZGV2aWNlYCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIG9yIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgaXMgYSBjb21tb24gcHJhY3RpY2UgaW4gZHJpdmVyIGRldmVsb3BtZW50IHRvIGluY3JlYXNlIGNvZGUgcmUtdXNhYmlsaXR5IGFuZCBtb2R1bGFyaXR5LCBzbyBJIHNob3VsZCBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NDEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo0OS4zODI4NTA4OTNaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTIwNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgzNT1zdGF0aWMgdm9pZCBtdDc2X3Jlc2V0X3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg0Njp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjg3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3Jlc2V0X2RldmljZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNzM4PXZvaWQgbXQ3Nl93Y2lkX2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1MS1cXHQvKiBSZW1vdmUgZnJvbSBzdGFfcG9sbF9saXN0IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFmdGVyIHJlc2V0LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzUyOlxcdCAqIFdpdGhvdXQgdGhpcywgbXQ3Nl9yZXNldF9kZXZpY2UoKSByZWluaXRpYWxpemVzIHN0YV9wb2xsX2xpc3QgYnV0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3NTMtXFx0ICogbGVhdmVzIHdjaWQtXFx1MDAzZXBvbGxfbGlzdCB3aXRoIHN0YWxlIHBvaW50ZXJzLCBjYXVzaW5nIGxpc3QgY29ycnVwdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMyMj12b2lkIG10NzZfZnJlZV9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMjM6dm9pZCBtdDc2X3Jlc2V0X2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMyNC12b2lkIG10NzZfdW5yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTQyNT1tdDc5MTVfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTQ2MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNDYyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjQ1Nz1tdDc5OTZfbWFjX2Z1bGxfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTAtXFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKGh3LCBtdDc5OTZfbWFjX3Jlc2V0X3N0YV9pdGVyLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI0OTE6XFx0bXQ3Nl9yZXNldF9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Mi1cXHRpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMoaHcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjMzOjQ5LjQzMDk3NTM2OFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc0NzM0MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBDdXJpb3VzIEJ1ZyBEaXNjb3ZlcnkqKlxuXG5Pa2F5LCBzbyBzeXprYWxsZXIgZmxhZ2dlZCB0aGlzIG9uZS4gQSBidWcsIGludGVyZXN0aW5nLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyBcIkhvdz9cIi4gSG93IGRpZCBzeXprYWxsZXIgZXZlbiAqZmluZCogdGhpcz8gSXQncyBvZnRlbiBhIHN1YnRsZSBpbnRlcmFjdGlvbiBvciBhbiBvYnNjdXJlIGNvZGUgcGF0aC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBwb3NzaWJsZSBjYXVzZXMuIEhtbSwgbGV0J3MgdGhpbmsuLi4gY291bGQgdGhpcyBiZSByZWxhdGVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlcj8gU3BlY2lmaWNhbGx5LCBJIHdvbmRlciBpZiBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggb25lLiBJdCdzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEFscmlnaHQsIHRpbWUgdG8gY2hlY2suIEkgbmVlZCB0byBzZWUgaWYgYG10NzZfcmVzZXRfZGV2aWNlYCBoYXMgYmVlbiBhc3NpZ25lZCBhcyB0aGUgdGFyZ2V0IGZvciBhbnkgZnVuY3Rpb24gcG9pbnRlcnMuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBjaGFpbiB0byBzZWUgaWYgaXQgaXMgdXNlZCBpbiBzdWNoIGEgbWFubmVyLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDM5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzM6NTMuNjA1NzEyMTYzWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzczMSwiRXJyb3IiOiJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cbkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXFxuWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuXFxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLlwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozMzo1My42MDU3NTY4ODNaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQyOTM2MTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3OXh4X21hY19yZXNldGAgQ2FsbCoqXG5cbk9rYXksIHNvIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCB0aGUgZnVuY3Rpb24gaXNuJ3QgY2FsbGVkIHRocm91Z2ggYW55IGZ1bmN0aW9uIHBvaW50ZXJzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQgbWVhbnMgaXQncyBzb2xlbHkgY2FsbGVkIGJ5IGBtdDc5MTVfbWFjX2Z1bGxfcmVzZXRgIGFuZCBgbXQ3OTk2X21hY19mdWxsX3Jlc2V0YC4gSG1tLCBidXQgaGVyZSdzIHdoZXJlIG15IGV4cGVydGlzZSBraWNrcyBpbiAtIEkgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBieXBhc3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIuIENvdWxkIHN5emthbGxlciwgdGhyb3VnaCBpdHMgYWJpbGl0eSB0byBpbmplY3QgUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfZGV2aWNlX2FkZGAgYW5kIG1hcCBCQVJzIHRvIHVzZXIgc3BhY2UsIHNvbWVob3cgYnlwYXNzIHRoZSBgTVQ3Nl9TVEFURV9JTklUSUFMSVpFRGAgY2hlY2s/IEl0J3MgYSB2YWxpZCBjb25jZXJuLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3dlciBzeXprYWxsZXIgd2llbGRzLlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBsb2dpYy4gVGhlIGBNVDc2X1NUQVRFX0lOSVRJQUxJWkVEYCBiaXQgbGl2ZXMgd2l0aGluIGBkZXYtXHUwMDNlbXBoeS5zdGF0ZWAuIFRoYXQgYml0IGlzIHNwZWNpZmljYWxseSBzZXQgZHVyaW5nIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYDpcblxuYGBgY1xuXHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbmBgYFxuXG5UaGlzIGlzIHRoZSBsaW5jaHBpbi4gSXQncyBvbmx5IHNldCBpZiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4gU28sIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBDYW4gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIHN1Y2NlZWQgaW4gYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IFRvIGFuc3dlciB0aGF0LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbnRlcm5hbHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZGl0aW9ucyBhbmQgcHJlcmVxdWlzaXRlcyBvZiBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhlIGZ1bmN0aW9uIGNhbiBiZSB0cmlja2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ0MCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDowMC4wMzUxMjE5NzdaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI0MTA6XFx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjI0MTE6XFx0e1xcbjI0MTI6XFx0XFx0aW50IHJldDtcXG4yNDEzOlxcdFxcbjI0MTQ6XFx0XFx0LyogZm9yY2UgZmlybXdhcmUgb3BlcmF0aW9uIG1vZGUgaW50byBub3JtYWwgc3RhdGUsXFxuMjQxNTpcXHRcXHQgKiB3aGljaCBzaG91bGQgYmUgc2V0IGJlZm9yZSBmaXJtd2FyZSBkb3dubG9hZCBzdGFnZS5cXG4yNDE2OlxcdFxcdCAqL1xcbjI0MTc6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG4yNDE4OlxcdFxcbjI0MTk6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcXG4yNDIwOlxcdFxcdGlmIChyZXQpXFxuMjQyMTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MjI6XFx0XFx0Lyogc2V0IGRyaXZlciBvd24gZm9yIGJhbmQxIHdoZW4gdHdvIGhpZiBleGlzdCAqL1xcbjI0MjM6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbjI0MjQ6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG4yNDI1OlxcdFxcdFxcdGlmIChyZXQpXFxuMjQyNjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0Mjc6XFx0XFx0fVxcbjI0Mjg6XFx0XFxuMjQyOTpcXHRcXHRyZXQgPSBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpO1xcbjI0MzA6XFx0XFx0aWYgKHJldClcXG4yNDMxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQzMjpcXHRcXG4yNDMzOlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuMjQzNDpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCAwKTtcXG4yNDM1OlxcdFxcdGlmIChyZXQpXFxuMjQzNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0Mzc6XFx0XFxuMjQzODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCAwKTtcXG4yNDM5OlxcdFxcdGlmIChyZXQpXFxuMjQ0MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NDE6XFx0XFxuMjQ0MjpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfZGVsX3d0YmxfYWxsKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjI0NDM6XFx0XFxuMjQ0NDpcXHRcXHRpZiAoKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbjI0NDU6XFx0XFx0ICAgICBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHx8XFxuMjQ0NjpcXHRcXHQgICAgIW10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuMjQ0NzpcXHRcXHRcXHRtdDc5MTVfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoQ0FQQUJJTElUWSksIDAsIDAsIDApO1xcbjI0NDg6XFx0XFxuMjQ0OTpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9td2RzKGRldiwgMSk7XFxuMjQ1MDpcXHRcXHRpZiAocmV0KVxcbjI0NTE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDUyOlxcdFxcbjI0NTM6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsKGRldiwgTVVSVV9TRVRfUExBVEZPUk1fVFlQRSxcXG4yNDU0OlxcdFxcdFxcdFxcdFxcdCAgICAgICBNVVJVX1BMQVRGT1JNX1RZUEVfUEVSRl9MRVZFTF8yKTtcXG4yNDU1OlxcdFxcdGlmIChyZXQpXFxuMjQ1NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NTc6XFx0XFxuMjQ1ODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShkZXYpO1xcbjI0NTk6XFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDAuMDM1MzA2MTE3WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTUyNDk4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgXCJtdDc5MTVfZHJpdmVyX293blwiIGZ1bmN0aW9uOlxuXG4qKk15IFNlbGYtQXNzZXNzbWVudDogQW0gSSBSZWFkeSB0byBPd24gVGhpcyBIYXJkd2FyZT8qKlxuXG5BbHJpZ2h0LCBoZXJlJ3MgdGhlIGRlYWwuIEknbSBhYm91dCB0byBhc3Nlc3MgaWYgSSwgdGhlIG10NzkxNSBkcml2ZXIsIGFtIGluIGEgcG9zaXRpb24gdG8gdGFrZSBjaGFyZ2Ugb2YgdGhpcyBoYXJkd2FyZS4gTXkgd2hvbGUgcHVycG9zZSBpcyB0byBtYW5hZ2UgaXQsIHRvIG1ha2UgaXQgZG8gaXRzIHRoaW5nLiBCdXQgSSBjYW4ndCBqdXN0IGJhcmdlIGluOyB0aGVyZSBhcmUgcHJvdG9jb2xzLCBjaGVja3MgYW5kIGJhbGFuY2VzLCByaWdodD8gQmVmb3JlIEkgc3RhcnQgaXNzdWluZyBjb21tYW5kcyBhbmQganVnZ2xpbmcgcmVnaXN0ZXJzLCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSBJJ20gdGhlIGNvcnJlY3QgZW50aXR5IGZvciB0aGlzIG9wZXJhdGlvbi4gVGhpcyBjaGVjaywgdGhpcyAqbXQ3OTE1X2RyaXZlcl9vd24qIGZ1bmN0aW9uLCBpcyB0aGUgZ2F0ZWtlZXBlci4gSXQncyB0aGUgbW9tZW50IG9mIHRydXRoIHdoZXJlIEkgZGV0ZXJtaW5lIGlmIGl0J3MgbXkgdHVybiB0byBvd24gaXQgYW5kIG1ha2UgaXQgZG8gaXRzIHRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDk0MiwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDMuODUwNTU5NjQzWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODY5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMjkwOlxcdFxcbjIyOTE6XFx0XFx0cmV0dXJuIDA7XFxuMjI5MjpcXHR9XFxuMjI5MzpcXHRcXG4yMjk0OlxcdHN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfbXdkcyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGVuYWJsZWQpXFxuMjI5NTpcXHR7XFxuMjI5NjpcXHRcXHRzdHJ1Y3Qge1xcbjIyOTc6XFx0XFx0XFx0dTggZW5hYmxlO1xcbjIyOTg6XFx0XFx0XFx0dTggX3JzdlszXTtcXG4yMjk5OlxcdFxcdH0gX19wYWNrZWQgcmVxID0ge1xcbjIzMDA6XFx0XFx0XFx0LmVuYWJsZSA9IGVuYWJsZWRcXG4yMzAxOlxcdFxcdH07XFxuMjMwMjpcXHRcXG4yMzAzOlxcdFxcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChNV0RTX1NVUFBPUlQpLCBcXHUwMDI2cmVxLFxcbjIzMDQ6XFx0XFx0XFx0XFx0XFx0IHNpemVvZihyZXEpLCBmYWxzZSk7XFxuMjMwNTpcXHR9XFxuMjMwNjpcXHRcXG4yMzA3OlxcdGludCBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmwoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyIGNtZCwgdTMyIHZhbClcXG4yMzA4OlxcdHtcXG4yMzA5OlxcdFxcdHN0cnVjdCB7XFxuMjMxMDpcXHRcXHRcXHRfX2xlMzIgY21kO1xcbjIzMTE6XFx0XFx0XFx0dTggdmFsWzRdO1xcbjIzMTI6XFx0XFx0fSBfX3BhY2tlZCByZXEgPSB7XFxuMjMxMzpcXHRcXHRcXHQuY21kID0gY3B1X3RvX2xlMzIoY21kKSxcXG4yMzE0OlxcdFxcdH07XFxuMjMxNTpcXHRcXG4yMzE2OlxcdFxcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsIHJlcS52YWwpO1xcbjIzMTc6XFx0XFxuMjMxODpcXHRcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSwgXFx1MDAyNnJlcSxcXG4yMzE5OlxcdFxcdFxcdFxcdFxcdCBzaXplb2YocmVxKSwgZmFsc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDowMy44NTA4MTk5MzRaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2OTU3Mzg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbXQ3Nl9tY3Vfc2VuZF9tc2dgIEZ1bmN0aW9uKipcblxuSG1tLCBzbyBgbXQ3Nl9tY3Vfc2VuZF9tc2dgIGlzIGNsZWFybHkgdGhlIHdvcmtob3JzZSBoZXJlIGZvciBzZW5kaW5nIG1lc3NhZ2VzIGFuZCAqd2FpdGluZyogZm9yIGEgcmVwbHkuIFRoYXQncyBjcnVjaWFsLiBJZiB0aGUgZGV2aWNlIGRvZXNuJ3QgcmVzcG9uZCwgdGhlbiB0aGUgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gcmV0dXJuIGFuIGVycm9yLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBudWFuY2VzIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgdGltZW91dCBtZWNoYW5pc20sIHJldHJ5IGNvdW50LCBhbmQgZXJyb3IgY29kZXMgYXJlIGFsbCBnb2luZyB0byBiZSBpbXBvcnRhbnQgaW4gYW55IGRlYnVnZ2luZyBzaXR1YXRpb24uIExldCdzIHNlZSBob3cgYG10NzkxNV9kcml2ZXJfb3duYCBmaXRzIGludG8gdGhlIHBpY3R1cmUsIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGhvb2tzIGludG8gdGhpcyBtZXNzYWdlIHNlbmRpbmcgZnVuY3Rpb25hbGl0eSwgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY1MSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDguNTIwMzk2MjcxWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTU1NjQ3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X2RyaXZlcl9vd25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjA1Nz1pbnQgbXQ3OTE1X21jdV9hZGRfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTEyOnN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDE5OlxcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyMy1cXHRpZiAoZGV2LVxcdTAwM2VoaWYyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQyNDpcXHRcXHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjUtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MDkuMzE1OTY1ODQ1WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODU5NjUwNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgbXQ3OTE1X2RyaXZlcl9vd25gLCBiYXNlZCBvbiBteSBleHBlcmllbmNlIGFuZCBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgT3duZXJzaGlwKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyByZWFkaW5nIGBtdDc5MTVfZHJpdmVyX293bmAuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBsaWtlbHkgbWVhbnMgaXQgZGVhbHMgd2l0aCB0aGUgY29yZSBvd25lcnNoaXAgb3IgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYXNwZWN0cyBvZiB0aGUgTVQ3OTE1IGRyaXZlciB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgY29uY3VycmVuY3ksIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBJcyB0aGlzIGFib3V0IHRoZSBkcml2ZXIgY2xhaW1pbmcgaGFyZHdhcmUgcmVzb3VyY2VzLCBtYW5hZ2luZyBhY2Nlc3MgdG8gcmVnaXN0ZXJzLCBvciBwZXJoYXBzIGhhbmRsaW5nIGludGVycnVwdCBoYW5kbGVycz8gSSBuZWVkIHRvIGxvb2sgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMgb3IgZnVuY3Rpb25zIHRoYXQgY2xlYXJseSBkZWZpbmUgd2hvIFwib3duc1wiIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50cyBvciBzdGF0ZXMgYXQgYW55IGdpdmVuIHRpbWUuIEknbSBleHBlY3RpbmcgdG8gc2VlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIOKAkyBtdXRleGVzLCBzcGlubG9ja3MsIHNlbWFwaG9yZXMg4oCTIGhlYXZpbHkgdXNlZCBoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBwcm9uZSB0byBkZWFkbG9ja3MuIElzIHRoZXJlIGEgY2xlYXIgaGllcmFyY2h5IG9mIG93bmVyc2hpcCBlc3RhYmxpc2hlZD8gSXMgaXQgd2VsbCBkb2N1bWVudGVkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzIGluIHRoZSBkZXNpZ24gZnJvbSBhIHJlYWwtdGltZSBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZT8gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGluaXRpYWxpemF0aW9uLCBzaHV0ZG93biwgYW5kIGVycm9yIHJlY292ZXJ5LiBJcyB0aGUgb3duZXJzaGlwIGNsZWFybHkgdHJhbnNmZXJyZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZCBvciB1bnBsdWdnZWQ/IEFuZCBob3cgd2VsbCBkb2VzIGl0IGRlYWwgd2l0aCBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBuZWVkaW5nIGFjY2VzcyB0byB0aGUgc2FtZSBoYXJkd2FyZSByZXNvdXJjZXM/IFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nIHRvIHJlYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDI0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MTQuMDAxOTMzMTQ0WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTEyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTEyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4yMTEzOlxcdHtcXG4yMTE0OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuMjExNTpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbjIxMTY6XFx0XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG4yMTE3OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbjIxMTg6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjExOTpcXHRcXHR9XFxuMjEyMDpcXHRcXG4yMTIxOlxcdFxcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cXG4yMTIyOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXFxuMjEyMzpcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XFxuMjEyNDpcXHRcXG4yMTI1OlxcdFxcdHJldHVybiAwO1xcbjIxMjY6XFx0fVxcbjIxMjc6XFx0XFxuMjEyODpcXHRzdGF0aWMgaW50XFxuMjEyOTpcXHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4yMTMwOlxcdHtcXG4yMTMxOlxcdFxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjE0LjAwMjEwMjgzNVoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTE0MjE5MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGBtdDc2X3BvbGxfbXNlY2AncyBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG10NzZfcG9sbF9tc2VjYCBhbmQgaXRzIHBvdGVudGlhbCBpbnRlcmFjdGlvbiB3aXRoIHN5emthbGxlci4gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHBvbGxzIGEgcmVnaXN0ZXIgdW50aWwgYSBzcGVjaWZpYyBjb25kaXRpb24gaXMgbWV0LCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJIZXksIGlmIHN5emthbGxlciBpcyBmdXp6aW5nIHRoaXMsIGNvdWxkbid0IGl0IGp1c3QgbWFwIHRoZSBNTUlPIHJlZ2lvbiwgd3JpdGUgdGhlIHRhcmdldCB2YWx1ZSwgYW5kIGZvcmNlIGBtdDc2X3BvbGxfbXNlY2AgdG8gcmV0dXJuIGVhcmx5P1wiIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciBkb2Vzbid0IGFjdHVhbGx5IHNpbXVsYXRlIGhhcmR3YXJlIHJlc3BvbnNlcyBieSBtYXBwaW5nIE1NSU8gdG8gdXNlcnNwYWNlIGFuZCBydW5uaW5nIGEgdGhyZWFkIHRvIGZha2UgaXQuIFRoYXQncyBub3QgaG93IGl0IHdvcmtzIVxuXG5XYWl0IGEgbWludXRlLCBgc3l6X3BjaV9kZXZpY2VfYWRkYCBkb2Vzbid0IGRvIHRoYXQuIEl0IGp1c3QgY3JlYXRlcyBhIHZpcnR1YWwgUENJIGRldmljZS4gVGhlIE1NSU8gcmVnaW9ucywgaW4gdGhpcyBzZXR1cCwgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBtZW1vcnksIHdoaWNoIG1lYW5zIHJlYWRzIHJldHVybiB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSB3cml0dGVuIHRoZXJlLiBPa2F5LCBzbyBpZiBgbXQ3Nl9wb2xsX21zZWNgIHJlYWRzIGBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZClgLCBpdOKAmXMgZ29pbmcgdG8gcmVhZCB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSB3cml0dGVuLiBBbmQsIGlmIHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgYXMgc3VjaCwgYG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTilgIHNob3VsZCB3cml0ZSB0aGUgdmFsdWUuXG5cbkFscmlnaHQsIHNvIHRoZSBrZXkgaXMgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgd3JpdHRlbiBhbmQgd2hhdCB3ZSdyZSBwb2xsaW5nIGZvci4gVGhpcyBtZWFucyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9ucyBvZiBgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOYCBhbmQgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgLiBMZXQncyBzZWUgd2hhdCB0aG9zZSBsb29rIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTg3LCJPdXRwdXRUb2tlbnMiOjY2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MjIuMTE2MzI0MDY5WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ0OTQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV058TVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTEyPXN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTE0OlxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExNS1cXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTY6XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE3LVxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oPTUwPWVudW0gb2Zmc19yZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDAtI2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTlxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAxOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9EUlZfT1dOXFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oOjExMDI6I2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUXFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjIyLjE2NDc3NzU4NFoiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzE1MjUyMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyBmaXJtd2FyZSBsb2FkaW5nLiBJdCBsb29rcyBsaWtlIGBtdDc2X3dyYCBpcyB3cml0aW5nIGBCSVQoMSlgIHRvIHRoaXMgcmVnaXN0ZXIsIGFuZCB0aGVuIGBtdDc2X3BvbGxfbXNlY2AgaW1tZWRpYXRlbHkgY29tZXMgaW4gYW5kIHJlYWRzIHRoZSBzYW1lIHJlZ2lzdGVyLiBOb3csIGBtdDc2X3BvbGxfbXNlY2AgdGhlbiBtYXNrcyB0aGF0IHJlZ2lzdGVyIHZhbHVlIHdpdGggYEJJVCgyKWAsIHdoaWNoIGlzLCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAuIFRoZSBjb2RlIEknbSBhbmFseXppbmcgaXMgZXhwZWN0aW5nIGAwYC4gSG1tLCBsZXQgbWUgdGhpbmsuXG5cblJpZ2h0LCBgbXQ3Nl9wb2xsX21zZWNgIGlzIGNoZWNraW5nIGlmIGAodmFsIFx1MDAyNiBtYXNrKSA9PSBleHBlY3RlZGAuIEhlcmUsIGBtYXNrYCBpcyBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAgd2hpY2ggaXMgYEJJVCgyKWAsIGFuZCBgZXhwZWN0ZWRgIGlzLCBhcyBJIG5vdGVkLCBgMGAuIFNpbmNlIGBCSVQoMSlgIGFuZCBgQklUKDIpYCBhcmUgZGlzdGluY3QgYml0cywgYW5kIGBCSVQoMSkgXHUwMDI2IEJJVCgyKSA9PSAwYCwgdGhhdCBtZWFucyB0aGUgY29uZGl0aW9uIGAodmFsIFx1MDAyNiBtYXNrKSA9PSAwYCBpcyAqaW1tZWRpYXRlbHkqIHRydWUhXG5cblNvLCB0aGUgY29kZSBpcyBnb2luZyB0byBzdWNjZWVkIHJpZ2h0IGF3YXkuIFRoaXMgbWVhbnMgYG10NzkxNV9kcml2ZXJfb3duYCB3aWxsIHRoaW5rIGl0J3MgZ290IG93bmVyc2hpcC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHdoYXQgaXMgZXhwZWN0ZWQsIHNvIGxldCdzIGNvbnRpbnVlLiBJIG5lZWQgdG8gbm93IG1vdmUgb24gYW5kIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBiZWhhdmlvciBvbiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODQyOCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDoyOS40ODAwMzMwMTNaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTEyNTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9sb2FkX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxNDI6c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjQxMD1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0Mjk6XFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDMwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjI5LjUyOTE1MjY3OFoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk1OTg0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkxNV9sb2FkX2Zpcm13YXJlYC4gSGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nIGFzIEkgbG9vayB0aHJvdWdoIHRoaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gYG10NzkxNV9sb2FkX2Zpcm13YXJlYC4gSW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgZ29lcyB0byB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgKnN1cHBvc2VkKiB0byBkbzogbG9hZCBmaXJtd2FyZSBvbnRvIHRoZSBNVDc5MTUgY2hpcCwgcmlnaHQ/IFRoYXQncyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgY2hhbGxlbmdlczogZXJyb3IgaGFuZGxpbmcsIGVuc3VyaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyB2YWxpZCwgYW5kIHRoZSBzZWN1cmUgdHJhbnNmZXIgb2YgZGF0YSB0byB0aGUgZGV2aWNlLiBJIGtub3cgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGRyaXZlciB0byBmdW5jdGlvbi5cblxuSSdtIHNjYW5uaW5nIGZvciBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS4gSXMgaXQgdXNpbmcgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSksIGlzIGl0IGNvbW11bmljYXRpbmcgdmlhIFNQSSwgUENJZSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJlaW5nIHVzZWQuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidXMgdHJhbnNhY3Rpb25zIHRvIHByb3Blcmx5IGRpYWdub3NlIGFueSBwb3RlbnRpYWwgaXNzdWVzIGxhdGVyLiBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byBob3cgdGhleSBoYW5kbGUgcmV0cmllcyBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgdGhlIHRyYW5zZmVyLiBJdCBjb3VsZCBiZSBhIHNpbXBsZSB0aW1lb3V0IG9yIGEgbW9yZSBjb21wbGV4IHJlY292ZXJ5IG1lY2hhbmlzbS4gSSBuZWVkIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIHJldHJ5IHBvbGljeS5cblxuSSdtIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLiBJJ20gZXhwZWN0aW5nIGNoZWNrcyBmb3IgdGhpbmdzIGxpa2UgaW1hZ2Ugc2l6ZSwgdmVyc2lvbiBjb21wYXRpYmlsaXR5LCBhbmQgcG90ZW50aWFsIGNoZWNrc3VtIHZlcmlmaWNhdGlvbi4gSSdtIGFsc28gbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZmFpbHVyZXMuIERvZXMgaXQgcHJvdmlkZSBpbmZvcm1hdGl2ZSBlcnJvciBjb2Rlcz8gRG9lcyBpdCBhdHRlbXB0IHRvIHJlc2V0IHRoZSBkZXZpY2UgaWYgYSBsb2FkIGZhaWxzPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGEgZmFpbGVkIGZpcm13YXJlIGxvYWQ/IElzIGl0IGhhbmRsZWQgZ3JhY2VmdWxseSwgb3IgZG9lcyBpdCBsZWF2ZSB0aGUgZGV2aWNlIGluIGFuIHVudXNhYmxlIHN0YXRlPyBJJ20gaG9waW5nIHRvIHNlZSB3ZWxsLWRlZmluZWQgZXJyb3IgcGF0aHMgYW5kIGxvZ2dpbmcgdGhhdCdzIGhlbHBmdWwgZm9yIGRlYnVnZ2luZy5cblxuSSdtIGNvbnNpZGVyaW5nIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhlcmUgYW55IHZhbGlkYXRpb24gb2YgdGhlIGZpcm13YXJlIGltYWdlPyBJcyBpdCBjaGVja2luZyBmb3Igc2lnbmF0dXJlcz8gSWYgbm90LCB0aGF0J3MgYSByZWQgZmxhZy4gV2hhdCBtZWFzdXJlcyBhcmUgYmVpbmcgdGFrZW4gdG8gcHJldmVudCBhIG1hbGljaW91cyBmaXJtd2FyZSBmcm9tIGJlaW5nIGxvYWRlZD9cblxuQW5kIGxhc3RseSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBuZWVkIHRvIGRlYnVnIHRoaXMgZnVuY3Rpb24uIEknbSB0aGlua2luZyBhYm91dCB3aGF0IHRvb2xzIEknbGwgbmVlZCB0byB1c2UsIHN1Y2ggYXMgYSBKVEFHIGRlYnVnZ2VyLCBvciBwcm90b2NvbCBhbmFseXplciwgdG8gbW9uaXRvciB0aGUgZGF0YSB0cmFuc2ZlciBhbmQgdmVyaWZ5IGl0cyBpbnRlZ3JpdHkuIEknbGwgbmVlZCB0byBrbm93IHdoYXQgdG8gbG9vayBmb3Igd2hlbiBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBmaXJtd2FyZSBsb2FkaW5nIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzNTIsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDozNC44MjUxNDE0NzJaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxNDIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxNDI6XFx0c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjIxNDM6XFx0e1xcbjIxNDQ6XFx0XFx0aW50IHJldDtcXG4yMTQ1OlxcdFxcbjIxNDY6XFx0XFx0LyogUmVsZWFzZSBTZW1hcGhvcmUgaWYgdGFrZW4gYnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQgKi9cXG4yMTQ3OlxcdFxcdHJldCA9IG10NzZfY29ubmFjX21jdV9wYXRjaF9zZW1fY3RybChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmYWxzZSk7XFxuMjE0ODpcXHRcXHRpZiAocmV0ICE9IFBBVENIX1JFTF9TRU1fU1VDQ0VTUykge1xcbjIxNDk6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiQ291bGQgbm90IHJlbGVhc2Ugc2VtYXBob3JlXFxcXG5cXFwiKTtcXG4yMTUwOlxcdFxcdFxcdC8qIENvbnRpbnVlIGFueXdheXMgKi9cXG4yMTUxOlxcdFxcdH1cXG4yMTUyOlxcdFxcbjIxNTM6XFx0XFx0LyogQWx3YXlzIHJlc3RhcnQgTUNVIGZpcm13YXJlICovXFxuMjE1NDpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yMTU1OlxcdFxcbjIxNTY6XFx0XFx0LyogQ2hlY2sgaWYgTUNVIGlzIHJlYWR5ICovXFxuMjE1NzpcXHRcXHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSk7XFxuMjE1ODpcXHRcXHRpZiAocmV0KSB7XFxuMjE1OTpcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJGaXJtd2FyZSBkaWQgbm90IGVudGVyIGRvd25sb2FkIHN0YXRlXFxcXG5cXFwiKTtcXG4yMTYwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE2MTpcXHRcXHR9XFxuMjE2MjpcXHRcXG4yMTYzOlxcdFxcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3BhdGNoKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZ3X25hbWVfdmFyKGRldiwgUk9NX1BBVENIKSk7XFxuMjE2NDpcXHRcXHRpZiAocmV0KVxcbjIxNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMTY2OlxcdFxcbjIxNjc6XFx0XFx0cmV0ID0gbXQ3Nl9jb25uYWMyX2xvYWRfcmFtKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZ3X25hbWVfdmFyKGRldiwgRklSTVdBUkVfV00pLFxcbjIxNjg6XFx0XFx0XFx0XFx0XFx0ICAgIGZ3X25hbWUoZGV2LCBGSVJNV0FSRV9XQSkpO1xcbjIxNjk6XFx0XFx0aWYgKHJldClcXG4yMTcwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE3MTpcXHRcXG4yMTcyOlxcdFxcdHJldCA9IG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIHRydWUpO1xcbjIxNzM6XFx0XFx0aWYgKHJldClcXG4yMTc0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE3NTpcXHRcXG4yMTc2OlxcdFxcdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5xX21jdVtNVF9NQ1VRX0ZXRExdLCBmYWxzZSk7XFxuMjE3NzpcXHRcXG4yMTc4OlxcdFxcdGRldl9kYmcoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZpcm13YXJlIGluaXQgZG9uZVxcXFxuXFxcIik7XFxuMjE3OTpcXHRcXG4yMTgwOlxcdFxcdHJldHVybiAwO1xcbjIxODE6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDozNC44MjUzNDEyMDJaIiwiU2VxIjo3MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMDcyMTU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKk1DVSBSZWFkaW5lc3MgQ2hlY2sqKlxuXG5SaWdodCwgc28sIGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgLi4uIHRoYXQncyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgaXNuJ3QgaXQ/IEl0J3MgdGhlIGdhdGVrZWVwZXIsIGJhc2ljYWxseS4gV2hhdCBJJ20gdGhpbmtpbmcgYWJvdXQgaGVyZSBpcyB0aGUgY29yZSBvZiB0aGUgaXNzdWU6ICppcyogdGhlIE1DVSBhY3R1YWxseSByZWFkeSB0byBkbyBpdHMgam9iPyBJdCdzIG5vdCBqdXN0IGEgYmluYXJ5IFwib24vb2ZmXCIgc2l0dWF0aW9uLCBlaXRoZXIuIEkgbmVlZCB0byBrbm93IHRoZSAqc3RhdGUqIG9mIGl0LiBJcyB0aGUgZmlybXdhcmUgbG9hZGVkPyBIYXMgaXQgaW5pdGlhbGl6ZWQgZXZlcnl0aGluZyBjb3JyZWN0bHk/IEFyZSBhbGwgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBjb21wb25lbnRzIHJlcG9ydGluZyBhcyBvcGVyYXRpb25hbD8gVGhpcyBjaGVjayBpcyBtb3JlIHRoYW4ganVzdCBhIGhlYXJ0YmVhdDsgaXQncyBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBNQ1UncyBjdXJyZW50IG9wZXJhdGlvbmFsIHN0YXR1cy4gQW5kIGRlcGVuZGluZyBvbiBpdHMgb3V0Y29tZSwgdGhhdCBkcml2ZXMgKmV2ZXJ5dGhpbmcqIHRoYXQgZm9sbG93cyBpbiB0aGUgc3lzdGVtLiBJZiB0aGF0IE1DVSBpc24ndCByZWFkeSB0byBnbywgdGhlIHdob2xlIHNoZWJhbmcgaXMgZ29pbmcgdG8gc3RhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTQzLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDozOC44MzYwNjYyMjlaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMjgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMjg6XFx0c3RhdGljIGludFxcbjIxMjk6XFx0bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuMjEzMDpcXHR7XFxuMjEzMTpcXHRcXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzI6XFx0XFx0XFx0XFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xcbjIxMzM6XFx0XFxuMjEzNDpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX01JU0MsIE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzU6XFx0XFx0XFx0XFx0ICAgIHN0YXRlLCAxMDAwKSkge1xcbjIxMzY6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiVGltZW91dCBmb3IgaW5pdGlhbGl6aW5nIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4yMTM3OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjIxMzg6XFx0XFx0fVxcbjIxMzk6XFx0XFx0cmV0dXJuIDA7XFxuMjE0MDpcXHR9XFxuMjE0MTpcXHRcXG4yMTQyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6MzguODM2MjMzMzg5WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODUwMjg3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2IERyaXZlciBQb2xsaW5nIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3Nl9wb2xsX21zZWNgIGZ1bmN0aW9uIGFuZCBob3cgaXQgY2hlY2tzIHRoZSBmaXJtd2FyZSBzdGF0ZS4gSXQgc2VlbXMgdG8gYmUgcG9sbGluZyB0aGUgYE1UX1RPUF9NSVNDYCByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIGZpZWxkLCBhbmQgd2FpdGluZyBmb3IgaXQgdG8gcmVhY2ggYSBjZXJ0YWluIGBzdGF0ZWAuICBSaWdodCwgYW5kIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBzeXprYWxsZXIgZnV6emluZyB0aGlzLCB0aGUgTU1JTyBpc24ndCBtYXBwZWQsIHdoaWNoIGlzIGEga2V5IHBvaW50IHRvIHJlbWVtYmVyIGhlcmUuIFRoaXMgbWVhbnMgdGhlIHJlYWQgZnJvbSBgTVRfVE9QX01JU0NgIGlzIGxpa2VseSBnb2luZyB0byByZXR1cm4gemVybywgb3Igd2hhdGV2ZXIgZ2FyYmFnZSB3YXMgcHJldmlvdXNseSB0aGVyZS4gQnV0IHdhaXQgYSBtaW51dGUuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgYE1UX1RPUF9NSVNDYCBpc24ndCBhY3R1YWxseSB3cml0dGVuIHRvICpiZWZvcmUqIHRoaXMgcG9sbGluZyBoYXBwZW5zISBTbywgd2UncmUgbGlrZWx5IHN0YXJ0aW5nIHdpdGggYSByZWFkIG9mIHplcm8uXG5cbkFuZCB0aGUgdGFyZ2V0IGBzdGF0ZWA/ICBJdCdzIGBGV19TVEFURV9GV19ET1dOTE9BRGAuIEFuZCBJJ20gcHJldHR5IHN1cmUgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBpcyBub3QgemVyby4gV2Ugc2hvdWxkIGNvbmZpcm0gdGhpcyBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA5OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjQ0LjIyMTI2NjY1M1oiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3OTgwMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX1NUQVRFX0ZXX0RPV05MT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMxLVxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcXHRcXHRcXHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzQ6NDQuNDc5MjUyNTFaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5OTQxNTYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBkZWVwIGRpdmUgaW50byBlbWJlZGRlZCBzeXN0ZW1zOlxuXG4qKkNoZWNraW5nIEZpcm13YXJlIFN0YXRlcyBpbiBtdDc2KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgZGVidWdnaW5nIG9yIGFuYWx5c2lzLCBJIHJlYWxseSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoZSBmaXJtd2FyZSBpbiBgbXQ3NmAuIExldCdzIGFzc3VtZSB0aGVyZSdzIGEgcHJvYmxlbSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggd2hlcmUgdGhpbmdzIGFyZSBpbiB0aGUgZmlybXdhcmUgZG93bmxvYWQgYW5kIHJlYWR5IHByb2Nlc3Nlcy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGltbWVkaWF0ZWx5IGhvbWluZyBpbiBvbiB0aGUgY3J1Y2lhbCBzdGF0ZXMgZGVmaW5lZCB3aXRoaW4gdGhhdCBtb2R1bGUuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGNoZWNrIHRoZSB2YWx1ZXMgb2YgYEZXX1NUQVRFX1JEWWAgYW5kIGBGV19TVEFURV9GV19ET1dOTE9BRGAuIFRoZXNlIGFyZSwgb2YgY291cnNlLCBhYnNvbHV0ZWx5IGNyaXRpY2FsLiBUaGV5J2xsIHRlbGwgbWUgaWYgdGhlIGZpcm13YXJlIGlzIHJlYWR5IHRvIGJlIHVzZWQgb3Igc3RpbGwgaW4gdGhlIHByb2Nlc3Mgb2YgZG93bmxvYWRpbmcuIEtub3dpbmcgdGhlIGN1cnJlbnQgdmFsdWVzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBwb3RlbnRpYWwgaXNzdWVzIGFuZCBkZXRlcm1pbmUgdGhlIHJpZ2h0IGNvdXJzZSBvZiBpbnZlc3RpZ2F0aW9uLiBUaGUgc3RhdHVzIGJpdHMgYXJlIGxpa2VseSBiZWluZyBzZXQgb3IgY2xlYXJlZCBieSBzcGVjaWZpYyBpbnRlcnJ1cHQgcm91dGluZXMgb3IgaGFyZHdhcmUgc2lnbmFscy4gSSdsbCBuZWVkIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoZXNlIHN0YXRlcyBhcmUgdHJhbnNpdGlvbmVkIGFuZCB3aGF0IHRyaWdnZXJzIGVhY2ggc3RhdGUgY2hhbmdlIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250cm9sIGZsb3cuIFJpZ2h0IG5vdywgSSBjYW4gc2VlIG15IHBhdGggZm9yd2FyZCBhcyBiZWluZyBkaXJlY3RlZCB0b3dhcmQgaW52ZXN0aWdhdGluZyB0aGUgYWN0dWFsIG51bWVyaWNhbCB2YWx1ZXMgb3IgZW51bWVyYXRpb25zIG9mIHRoZXNlIHN0YXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3MjAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDo0OC42Nzg2NzA1MjdaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1ODM1MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX1NUQVRFX0ZXX0RPV05MT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTQzMz1zdGF0aWMgaW50IG10NzYxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NDA6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzAtXFx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NzE6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaC0xMTQ1LVxcdEZXX1NUQVRFX0lOSVRJQUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2OlxcdEZXX1NUQVRFX0ZXX0RPV05MT0FELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMTE0Ny1cXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjEyOT1tdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXFx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlxcdFxcdFxcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNTgyLVxcdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODM6XFx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXFx0XFx0LyogcmVzdGFydCBmaXJtd2FyZSBvbmNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cXHRcXHRtdDc5OTZfbWN1X3Jlc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4NjpcXHRcXHRyZXQgPSBtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Ny1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc0LVxcdG10Nzk5Nl9tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1OlxcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc2LVxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZhaWxlZCB0byBleGl0IG1jdVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjQ4LjczNDUxMDYwM1oiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA4NTI3ODc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgRmFpbHVyZSBQYXRoKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhyb3VnaCB0aGlzIHNlcXVlbmNlIG9mIGV2ZW50cyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbi4gSXQgbG9va3MgbGlrZSBgRldfU1RBVEVfRldfRE9XTkxPQURgIGlzIHNldCB0byAxLCBhbmQgYEZXX1NUQVRFX1JEWWAgaXMgMy4gVGhhdCBtZWFucyBgbXQ3Nl9wb2xsX21zZWNgIHdpbGwgYmUgbG9va2luZyBmb3IgZWl0aGVyIG9mIHRob3NlIHZhbHVlcy4gVGhlIHJlZ2lzdGVyIHJlYWQgcmVzdWx0cyBpbiAwLCB0cmlnZ2VyaW5nIGEgdGltZW91dCBhbmQgYW4gZXJyb3IuIFRoaXMsIGluIHR1cm4sIGNhdXNlcyBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgLCBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYCwgYW5kIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCB0byBmYWlsLCBhbmQgY29uc2VxdWVudGx5LCBgbXQ3OTE1X3Jlc2V0YCBhbmQgYG10NzZfcmVzZXRfZGV2aWNlYCBuZXZlciBnZXQgY2FsbGVkLiBTZWVtcyBzdHJhaWdodGZvcndhcmQsIGEgcHJldHR5IHR5cGljYWwgZmlybXdhcmUgbG9hZGluZyBpc3N1ZS5cblxuQnV0LCBob2xkIG9uLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCwgZXNwZWNpYWxseSBzaW5jZSB0aGlzIGNvdWxkIGJlIGEgc3l6a2FsbGVyIHJlcG9ydC4gQ291bGQgdGhlcmUgYmUgYSBkaWZmZXJlbnQgc2NlbmFyaW8gYXQgcGxheSwgcGVyaGFwcyByZWxhdGVkIHRvIGEgVVNCIGRldmljZT8gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBwb3NzaWJpbGl0aWVzLiBJcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGV2ZW4gY2FsbGVkIGJ5IGEgVVNCIGRyaXZlciwgZm9yIGluc3RhbmNlP1xuXG5JJ3ZlIGFscmVhZHkgZ3JlcHBlZCB0aGUgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZHJpdmVycy4gSSBjYW4gZWxpbWluYXRlIGBtdDc2MTVgLCBgbXQ3NngwYCwgYG10NzZ4MmAsIGBtdDc5MjFgLCBhbmQgYG10NzkyNWAgZnJvbSBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cbkhtbSwgbWF5YmUgYG10NzZfcmVzZXRfZGV2aWNlYCBpcyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGBtdDc2X3djaWRfY2xlYW51cGA/IEJ1dCB3YWl0LCB0aGUgcGF0Y2ggKnNwZWNpZmljYWxseSogbW92ZXMgdGhlIGNhbGwgdG8gYG10NzZfd2NpZF9jbGVhbnVwYCB0byAqYWZ0ZXIqIHRoZSBwb2ludGVyIGlzIGNsZWFyZWQuIFRoYXQgbWVhbnMgdGhhdCB0aGlzIGZ1bmN0aW9uICp3b24ndCogdHJpZ2dlciBhIGNhbGwgdG8gYG10NzZfcmVzZXRfZGV2aWNlYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoYXQgcGF0Y2ggYWdhaW4uLi5ZdXAsIHRoYXQncyB3aGF0IGl0IHNob3dzLiBUaGUgd2NpZCBjbGVhbnVwIGlzIGNhbGxlZCAqYWZ0ZXIqIGNsZWFyaW5nIHRoZSB3Y2lkIHBvaW50ZXIuXG5cbkFscmlnaHQsIHNvIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgKm9ubHkqIGNhbGxlZCBieSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAsIGFuZCAqdGhvc2UqIGFyZSBQQ0llIGRyaXZlcnMsIHRoZW4gdGhpcyAqZW50aXJlKiBjb2RlIHBhdGggaXMgbGlrZWx5IHVucmVhY2hhYmxlIGluIGEgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgZm9yIHN5emthbGxlci5cblxuQnV0IHdhaXQgYSBtaW51dGUsIEkgYmV0dGVyIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhlcmUgKmFueSogY2hhbmNlIHRoYXQgYG10NzkyMWAgY2FsbHMgYG10NzZfcmVzZXRfZGV2aWNlYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yIGEgc2ltaWxhciBmdW5jdGlvbiBsaWtlIGBtdDc5MjFfbWFjX3Jlc2V0YCBvciBzb21ldGhpbmcgY29tcGFyYWJsZS4gSSdsbCBzZWFyY2ggdGhlIGNvZGUgYmFzZSBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMzQ5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM0OjU4LjgxOTc5MjM2N1oiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYyODcxNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxX21hY19yZXNldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTk6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmssIG10NzkyMV9tYWNfcmVzZXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIwMC1cXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MjFfaW5pdF93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzND1tdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjU4LS8qIHN5c3RlbSBlcnJvciByZWNvdmVyeSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY1OTp2b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTI2OT12b2lkIG10NzkyMV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjcwLVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjI3MTp2b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTI3Mi1pbnQgbXQ3OTIxZV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNDo1OC45MTYwODY4MDdaIiwiU2VxIjo3OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNDUwODE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkyMV9tYWNfcmVzZXRfd29ya2AgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcmVzZXQgcHJvY2VkdXJlIHdpdGhpbiB0aGUgbGFyZ2VyIGBtdDc5MjFgIGNvbnRleHQuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBiYWNrIHRvIGEga25vd24gZ29vZCBzdGF0ZS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgY2xlYXJpbmcgb3V0IGFueSBzdGFsZSBjb25maWd1cmF0aW9ucywgaGFuZGxpbmcgcGVuZGluZyB0cmFuc21pc3Npb25zLCBhbmQgZW5zdXJpbmcgdGhlIGhhcmR3YXJlIGlzIHJlYWR5IHRvIHJlY2VpdmUgbmV3IGNvbW1hbmRzLiBJIGV4cGVjdCB0byBzZWUgc3RlcHMgaW52b2x2aW5nIGRpc2FibGluZyBpbnRlcnJ1cHRzLCBwb3RlbnRpYWxseSBmbHVzaGluZyBxdWV1ZXMsIGFuZCByZWluaXRpYWxpemluZyByZWdpc3RlcnMuIERlcGVuZGluZyBvbiBob3cgc29waGlzdGljYXRlZCB0aGUgY2hpcCBpcywgaXQgbWF5IGFsc28gaW5jbHVkZSBwb3dlciBjeWNsaW5nIG9yIGEgbW9yZSBzdWJ0bGUgaGFyZHdhcmUgcmVzZXQgc2VxdWVuY2UuIEtub3dpbmcgdGhpcyBmdW5jdGlvbiBpcyBsYWJlbGVkIGFzIGEgXCJ3b3JrXCIgaW1wbGllcyB0aGF0IGl0IGlzIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5LCBwZXJoYXBzIGRlZmVycmVkIGJ5IGEgd29ya3F1ZXVlLiBUaGlzIHN1Z2dlc3RzIGEgbmVlZCB0byBwcmV2ZW50IGJsb2NraW5nIGR1cmluZyB0aGUgcmVzZXQgb3BlcmF0aW9uIGFuZCBhbGxvd2luZyBvdGhlciBjcml0aWNhbCB0YXNrcyB0byBjb250aW51ZSB3aXRob3V0IGJlaW5nIHN0YXJ2ZWQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTEwNywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjAyLjgyMDU5NzA2M1oiLCJTZXEiOjgwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjU5LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjU5OlxcdHZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gNjYwOlxcdHtcXG4gNjYxOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXFxuIDY2MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICByZXNldF93b3JrKTtcXG4gNjYzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xcbiA2NjQ6XFx0XFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBtO1xcbiA2NjU6XFx0XFx0aW50IGksIHJldDtcXG4gNjY2OlxcdFxcbiA2Njc6XFx0XFx0ZGV2X2RiZyhkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiY2hpcCByZXNldFxcXFxuXFxcIik7XFxuIDY2ODpcXHRcXHRzZXRfYml0KE1UNzZfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiA2Njk6XFx0XFx0ZGV2LVxcdTAwM2Vod19mdWxsX3Jlc2V0ID0gdHJ1ZTtcXG4gNjcwOlxcdFxcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhodyk7XFxuIDY3MTpcXHRcXG4gNjcyOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5Lm1hY193b3JrKTtcXG4gNjczOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbiA2NzQ6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuIDY3NTpcXHRcXG4gNjc2OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuIDY3NzpcXHRcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5idXNfaHVuZykpXFxuIDY3ODpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDY3OTpcXHRcXG4gNjgwOlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tdXRleCk7XFxuIDY4MTpcXHRcXHRcXHRyZXQgPSBtdDc5MnhfZGV2X3Jlc2V0KGRldik7XFxuIDY4MjpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tdXRleCk7XFxuIDY4MzpcXHRcXG4gNjg0OlxcdFxcdFxcdGlmICghcmV0KVxcbiA2ODU6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDY4NjpcXHRcXHR9XFxuIDY4NzpcXHRcXG4gNjg4OlxcdFxcdGlmICgobXQ3Nl9pc19zZGlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIHx8IG10NzZfaXNfdXNiKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSBcXHUwMDI2XFx1MDAyNlxcbiA2ODk6XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuYnVzX2h1bmcpKVxcbiA2OTA6XFx0XFx0XFx0cmV0dXJuO1xcbiA2OTE6XFx0XFxuIDY5MjpcXHRcXHRpZiAoaSA9PSAxMClcXG4gNjkzOlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcImNoaXAgcmVzZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG4gNjk0OlxcdFxcbiA2OTU6XFx0XFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNVDc2X0hXX1NDQU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSkge1xcbiA2OTY6XFx0XFx0XFx0c3RydWN0IGNmZzgwMjExX3NjYW5faW5mbyBpbmZvID0ge1xcbiA2OTc6XFx0XFx0XFx0XFx0LmFib3J0ZWQgPSB0cnVlLFxcbiA2OTg6XFx0XFx0XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MDIuODIwNzA0MzYzWiIsIlNlcSI6ODEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzgzNTUzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERldmljZSBSZXNldCBGbG93KipcblxuQWxyaWdodCwgc28gSSBzZWUgdGhpcyBjb2RlIGluaXRpYXRlcyBhIHJlc2V0IHVzaW5nIGBtdDc5MnhfZGV2X3Jlc2V0KGRldilgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCBuYXR1cmFsbHkuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyAqdGhhdCogZnVuY3Rpb24sIGBtdDc5MnhfZGV2X3Jlc2V0YCwgdGhlbiBzdWJzZXF1ZW50bHkgY2FsbCB0aGUgbW9yZSBnZW5lcmljLCBsb3dlci1sZXZlbCBkZXZpY2UgcmVzZXQgZnVuY3Rpb24gYG10NzZfcmVzZXRfZGV2aWNlYD8gVGhhdCdzIHRoZSBjcml0aWNhbCBsaW5rIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBLbm93aW5nIHRoZSBjYWxsaW5nIHN0cnVjdHVyZSBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCBkZXZpY2Ugc3RhdGUgYWZ0ZXIgdGhlIHJlc2V0LiBJcyBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFjdGluZyBhcyBhIGJhc2UgZnVuY3Rpb24gZm9yIGFsbCB0aGUgbXQ3NiBkcml2ZXIgcmVzZXRzPyBPciwgaXMgYG10NzkyeF9kZXZfcmVzZXRgIGEgc3RhbmRhbG9uZSByZXNldCBmdW5jdGlvbiwgb3IgYSBzcGVjaWFsaXplZCBvbmU/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBjYWxsIGdyYXBoIHRvIGNvbmZpcm0gdGhlIHJlc2V0IGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbiBhbmQgdGhpcyBtb3JlIGdlbmVyaWMgZnVuY3Rpb24uIFRoaXMgcmVzZXQgYmVoYXZpb3IgbWF5IGhhdmUgaW1wbGljYXRpb25zIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBwbGF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjA2MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MDYuODU5MDYyMDkzWiIsIlNlcSI6ODIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1MTM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfZGV2X3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjU5PXZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4MC1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY4MTpcXHRcXHRyZXQgPSBtdDc5MnhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjgyLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE1MTE9dm9pZCBtdDc5MjVfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUzNS1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1MzY6XFx0XFx0cmV0ID0gbXQ3OTJ4X2Rldl9yZXNldChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MzctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yNjI9c3RydWN0IG10NzkyeF9kbWFfbGF5b3V0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjc0LSNkZWZpbmUgbXQ3OTJ4X2luaXRfcmVzZXQoZGV2KVxcdFxcdCgoZGV2KS1cXHUwMDNlaGlmX29wcy1cXHUwMDNlaW5pdF9yZXNldChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6Mjc1OiNkZWZpbmUgbXQ3OTJ4X2Rldl9yZXNldChkZXYpXFx0XFx0KChkZXYpLVxcdTAwM2VoaWZfb3BzLVxcdTAwM2VyZXNldChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjc2LSNkZWZpbmUgbXQ3OTJ4X21jdV9pbml0KGRldilcXHRcXHQoKGRldiktXFx1MDAzZWhpZl9vcHMtXFx1MDAzZW1jdV9pbml0KGRldikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjA2LjkyMjIxNzM0WiIsIlNlcSI6ODMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODQ2NTEwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MnggRGV2aWNlIFJlc2V0KipcblxuT2theSwgc28gYG10NzkyeF9kZXZfcmVzZXRgIGtpY2tzIG9mZiB3aXRoIGEgY2FsbCB0byBgZGV2LVx1MDAzZWhpZl9vcHMtXHUwMDNlcmVzZXQoZGV2KWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgdXNpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZSAoSElGKSBvcGVyYXRpb25zIHN0cnVjdHVyZSB0byBkbyB0aGUgZGlydHkgd29yayBvZiByZXNldHRpbmcgdGhlIGRldmljZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hhdCB0aGUgYHJlc2V0YCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGF0IGBoaWZfb3BzYCBzdHJ1Y3QgYWN0dWFsbHkgKnBvaW50cyogdG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqc3BlY2lmaWMqIHJlc2V0IHJvdXRpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBJcyBpdCBhIGZ1bGwgaGFyZHdhcmUgcmVzZXQsIGEgc29mdHdhcmUtYmFzZWQgd2FybSByZXNldCwgb3Igc29tZXRoaW5nIGluIGJldHdlZW4/IEkgaGF2ZSB0byB1bmRlcnN0YW5kIHRoZSBsZXZlbCBvZiB0aGUgcmVzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTQ1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MTEuMjA2ODcyMjY2WiIsIlNlcSI6ODQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYwNDc5MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwucmVzZXQgPVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNToxMi4wNDI5MjYyMjVaIiwiU2VxIjo4NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNTMzNTgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBSZXNldCBCZWhhdmlvciBpbiBNVDc5MjEvTVQ3OTI1KipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZXNldCBiZWhhdmlvciBvZiB0aGUgTVQ3OTIxIGFuZCBNVDc5MjUgY2hpcHNldHMuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGUgYHJlc2V0YCBmdW5jdGlvbmFsaXR5IGluIHRob3NlIHNwZWNpZmljIGRldmljZSBkcml2ZXJzLiBVbmRlcnN0YW5kaW5nIHRoZSBudWFuY2VzIG9mIGhvdyB0aGVzZSBjaGlwcyBoYW5kbGUgcmVzZXRzIGlzIGNyaXRpY2FsIGZvciBbbWVudGlvbiB5b3VyIGFyZWEgb2YgZXhwZXJ0aXNlLCBlLmcuLCBkZWJ1Z2dpbmcgcG93ZXIgbWFuYWdlbWVudCBpc3N1ZXMsIGVuc3VyaW5nIHJlbGlhYmxlIGZpcm13YXJlIHVwZGF0ZXMsIGludmVzdGlnYXRpbmcgaGFyZHdhcmUgZmF1bHRzLCBldGMuXS4gS25vd2luZyB0aGUgZGV0YWlscyBvZiB0aGUgcmVzZXQgcHJvY2VzcyB3aWxsIGFsbG93IG1lIHRvIFtleHBsYWluIGhvdyB5b3Ugd2lsbCB1c2UgdGhpcyB1bmRlcnN0YW5kaW5nLCBlLmcuLCBpZGVudGlmeSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvcHRpbWl6ZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHBpbnBvaW50IHRoZSByb290IGNhdXNlIG9mIHRoZSBzcGVjaWZpYyBmYWlsdXJlIEknbSBzZWVpbmddLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSByZWxldmFudCBjb2RlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzZXQgc2VxdWVuY2UuIEkgZXhwZWN0IHRvIGZpbmQgY2x1ZXMgYWJvdXQgW21lbnRpb24gc3BlY2lmaWMgYXNwZWN0cyB5b3UncmUgbG9va2luZyBmb3IsIGUuZy4sIGhvdyB0aGUgcmVnaXN0ZXJzIGFyZSBjb25maWd1cmVkLCB3aGF0IGhhcHBlbnMgdG8gdGhlIGludGVybmFsIHN0YXRlIG1hY2hpbmVzLCB3aGF0IGtpbmQgb2YgaW50ZXJydXB0cyBhcmUgZ2VuZXJhdGVkLCB0aGUgb3ZlcmFsbCB0aW1pbmcgZGlhZ3JhbV0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjA5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MTYuMTQ4MjY1MzkzWiIsIlNlcSI6ODYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc5NTc4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNldCA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTY1OT12b2lkIG10NzkyMV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjgtXFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2Njk6XFx0ZGV2LVxcdTAwM2Vod19mdWxsX3Jlc2V0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NzAtXFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKGh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3MDM6XFx0ZGV2LVxcdTAwM2Vod19mdWxsX3Jlc2V0ID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzA0LVxcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTI1OT1zdGF0aWMgaW50IG10NzkyMV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy0yODItXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBtdDc5MjFfcGNpZV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6MjgzOlxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTIxZV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jOjI4NDpcXHRcXHQucmVzZXQgPSBtdDc5MjFlX21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy0yODUtXFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTIxZV9tY3VfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0xMjAtXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBtdDc5MjFfc2Rpb19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjEyMTpcXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyMXNfaW5pdF9yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTIyOlxcdFxcdC5yZXNldCA9IG10NzkyMXNfbWFjX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0xMjMtXFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTIxc19tY3VfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTcyLVxcdFxcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTczOlxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcXHRcXHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MTYuMTk0MDY2NjE3WiIsIlNlcSI6ODcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjIyMjg2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFVTQiBNQUMgUmVzZXQgRnVuY3Rpb24gQ2FsbCoqXG5cblJpZ2h0LCBzbyBgbXQ3OTIxdV9tYWNfcmVzZXRgIGlzIGdldHRpbmcgY2FsbGVkLiBBaGEhIFRoYXQncyBpbnRlcmVzdGluZzsgaXQncyBzcGVjaWZpYyB0byB0aGUgVVNCIGludGVyZmFjZSwgc28gaXQncyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGNvbm5lY3Rpb24gaXMgcmVzZXQgb3IgbWF5YmUgZXZlbiBkdXJpbmcgcG93ZXIgbWFuYWdlbWVudCBldmVudHMuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIGluc2lkZSB0aGlzIGZ1bmN0aW9uLCBhcyBpdHMgcm9sZSBpbiBVU0IgaXMgZ29pbmcgdG8gYmUgY2VudHJhbC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBtdDc5MjF1X21hY19yZXNldGAgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cyBhbmQgd2hpY2ggaGFyZHdhcmUgcmVnaXN0ZXJzIGl0J3MgbWFuaXB1bGF0aW5nLiBJIGJldCB0aGVyZSBhcmUgc29tZSBzcGVjaWZpYyBVU0ItcmVsYXRlZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBlbWJlZGRlZCB0aGVyZSB0b28sIGFuZCBJJ2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBkZXNjcmlwdG9ycyB0byBzZWUgaG93IGl0J3MgYWN0dWFsbHkgY29uZmlndXJlZC4gVGhpcyByZXNldCBtaWdodCBpbnZvbHZlIGZsdXNoaW5nIFRYL1JYIHF1ZXVlcywgZGlzYWJsaW5nIGludGVycnVwdHMsIHJlLWluaXRpYWxpemluZyBETUEgY2hhbm5lbHMsIG9yIGV2ZW4gcmUtcHJvZ3JhbW1pbmcgc29tZSBjcml0aWNhbCByZWdpc3RlcnMgcmVsYXRlZCB0byBwb3dlciBzYXZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTI3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MjAuNDU2Mjk4NjAxWiIsIlNlcSI6ODgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzM0MzU3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxdV9tYWNfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9NjU9c3RhdGljIGludCBtdDc5MjF1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy04OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo4OTpzdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTc0OlxcdFxcdC5yZXNldCA9IG10NzkyMXVfbWFjX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3NS1cXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNToyMC44Mjk3NDc3MDFaIiwiU2VxIjo4OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIyOTYwNzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIGBtdDc5MjF1X21hY19yZXNldGAuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSB1c3VhbCBzdXNwZWN0cyBoZXJlLCBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIFdpLUZpIGRyaXZlciByZXNldHMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgYSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGFpbWVkIGF0IGJyaW5naW5nIHRoZSBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBpbnRvIGEga25vd24sIGdvb2Qgc3RhdGUgYWZ0ZXIgc29tZSBlcnJvciBvciB1cG9uIGluaXRpYWxpemF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZTpcblxuKipNQUMgUmVzZXQgUHJvY2VkdXJlIEFuYWx5c2lzKipcblxuKiAgICoqUmVnaXN0ZXIgV3JpdGVzOioqIEknbGwgYmUgbG9va2luZyBmb3IgcmVnaXN0ZXIgd3JpdGVzIOKAkyB0aGVzZSBhcmUgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgaGFyZHdhcmUgY29udHJvbC4gTGlrZWx5IHRhcmdldGluZyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgY29udHJvbCByZWdpc3RlcnMsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSBzdGF0dXMgcmVnaXN0ZXJzIHRvIGNsZWFyIGZsYWdzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVnaXN0ZXIgYWRkcmVzc2VzIGFuZCBiaXRmaWVsZHMgaW52b2x2ZWQgdG8gZGVjaXBoZXIgdGhlIHJlc2V0J3MgYWN0dWFsIGltcGFjdC4gU3BlY2lmaWNhbGx5LCB3aGF0IHJlZ2lzdGVycyBhcmUgYmVpbmcgdGFyZ2V0ZWQ/IFdoYXQgdmFsdWVzIGFyZSBiZWluZyB3cml0dGVuPyBBbmQgd2hhdCBkb2VzIHRoYXQgc2lnbmlmeSBpbiB0ZXJtcyBvZiBNQUMgYmVoYXZpb3I/XG4qICAgKipDbG9jayBDb250cm9sOioqIENsb2NrIGNvbnRyb2wgaXMgYWxtb3N0IGNlcnRhaW5seSBpbnZvbHZlZC4gUmVzZXR0aW5nIHRoZSBNQUMgb2Z0ZW4gcmVxdWlyZXMgZGlzYWJsaW5nIGFuZCByZS1lbmFibGluZyBjbG9ja3MsIG9yIGF0IGxlYXN0IG1hbmlwdWxhdGluZyBjbG9jayBnYXRpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjbG9jayBkZXBlbmRlbmNpZXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY2xvY2sgZnJlcXVlbmN5IGNoYW5nZXMsIHdoaWNoIHdvdWxkIGFmZmVjdCB0aGUgUEhZLlxuKiAgICoqSW50ZXJydXB0IEhhbmRsaW5nOioqIFRoZSBjb2RlIG1pZ2h0IHRvdWNoIHVwb24gaW50ZXJydXB0IGVuYWJsaW5nL2Rpc2FibGluZywgc2luY2UgdGhpcyBpcyBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIE1BQydzIGNvbW11bmljYXRpb24uIEl0J3MgaW1wb3J0YW50IHRvIHNlZSB3aGVuIGFuZCBob3cgaW50ZXJydXB0cyBhcmUgcmUtZW5hYmxlZCBhZnRlciB0aGUgcmVzZXQ7IGFuZCBpZiBhbnkgc3BlY2lmaWMgaW50ZXJydXB0IGZsYWdzIGFyZSBjbGVhcmVkLlxuKiAgICoqU3RhdGUgTWFjaGluZSBNYW5hZ2VtZW50OioqIE1BQyByZXNldHMgZnJlcXVlbnRseSBpbnZvbHZlIG1vdmluZyB0aGUgTUFDIHN0YXRlIG1hY2hpbmUgdGhyb3VnaCBzcGVjaWZpYyBzdGF0ZXM6IGZyb20gcG90ZW50aWFsbHkgYmVpbmcgc3RvcHBlZCwgdGhyb3VnaCByZXNldCwgYW5kIGJhY2sgdG8gYW4gb3BlcmF0aW9uYWwgc3RhdGUuIEknbGwga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhpcyBpcyBoYW5kbGVkLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcy5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEl0J3MgdW5saWtlbHkgdGhhdCB0aGUgY29kZSBhc3N1bWVzIGV2ZXJ5dGhpbmcgZ29lcyBwZXJmZWN0bHkuIFNvLCBJIG5lZWQgdG8gc2VlIGhvdyBwb3RlbnRpYWwgZXJyb3JzIGR1cmluZyB0aGUgcmVzZXQgYXJlIGhhbmRsZWQuIEFyZSB0aGVyZSBhbnkgdGltZW91dHMsIHJldHJ5IG1lY2hhbmlzbXMsIG9yIGVycm9yIHJlcG9ydGluZyBpbnZvbHZlZD8gSSB3YW50IHRvIHNlZSBpZiB0aGUgZHJpdmVyIHJlcG9ydHMgaXQsIGFuZCBob3cgaXQgaGFuZGxlcyBpdC5cbiogICAqKlBvd2VyIE1hbmFnZW1lbnQ6KiogSW4gbW9yZSBjb21wbGV4IHNpdHVhdGlvbnMsIHBvd2VyIG1hbmFnZW1lbnQgbWlnaHQgYmUgcGFydCBvZiB0aGUgcmVzZXQuIEkgd2lsbCBiZSBsb29raW5nIGZvciBwb3dlci1kb3duIGFuZCBwb3dlci11cCBzZXF1ZW5jZXMgb2YgdmFyaW91cyBibG9ja3MuIFRoaXMgY291bGQgYmUgcmVsZXZhbnQgZm9yIGVuc3VyaW5nIHRoZSBNQUMgaXMgaW4gYSBsb3ctcG93ZXIgbW9kZSB3aGVuIG5vdCBpbiB1c2UuXG4qICAgKipGaXJtd2FyZSBMb2FkaW5nL1Jlc3RhcnQ6KiogSW4gc29tZSBhcmNoaXRlY3R1cmVzLCBlc3BlY2lhbGx5IHRob3NlIHdpdGggbW9yZSBzb3BoaXN0aWNhdGVkIGZpcm13YXJlLCBhIE1BQyByZXNldCBjb3VsZCBwb3RlbnRpYWxseSBpbnZvbHZlIHJlbG9hZGluZyBvciByZXN0YXJ0aW5nIHRoZSBmaXJtd2FyZSBvbiBhIGRlZGljYXRlZCBNQUMgcHJvY2Vzc29yLCBpZiB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgaXQuXG5cbkluIHNob3J0LCBJJ20gZXhwZWN0aW5nIGEgY2FyZWZ1bGx5IG9yY2hlc3RyYXRlZCBkYW5jZSBvZiByZWdpc3RlciBtYW5pcHVsYXRpb25zLCBzdGF0ZSB0cmFuc2l0aW9ucywgY2xvY2sgYWRqdXN0bWVudHMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFsbCBhaW1lZCBhdCByZXN0b3JpbmcgdGhlIE1BQyB0byBhIGZ1bmN0aW9uaW5nIHN0YXRlLiBJJ2xsIG5lZWQgdG8gZGlzc2VjdCBlYWNoIHN0ZXAgYW5kIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm9jZWR1cmUuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkxNzUsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNToyNy4wNTkzNTc4MjRaIiwiU2VxIjo5MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODk6XFx0c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiAgOTA6XFx0e1xcbiAgOTE6XFx0XFx0aW50IGVycjtcXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0bXQ3OTJ4dV9yZXNldF9vbl9idXNfZXJyb3IoZGV2KTtcXG4gIDk0OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nKSlcXG4gIDk1OlxcdFxcdFxcdHJldHVybiAwO1xcbiAgOTY6XFx0XFxuICA5NzpcXHRcXHRtdDc2X3R4cV9zY2hlZHVsZV9hbGwoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuICA5ODpcXHRcXHRtdDc2X3dvcmtlcl9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYudHhfd29ya2VyKTtcXG4gIDk5OlxcdFxcbiAxMDA6XFx0XFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gMTAxOlxcdFxcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHR3YWtlX3VwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LndhaXQpO1xcbiAxMDQ6XFx0XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LnJlc19xKTtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0XFx0bXQ3NnVfc3RvcF9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMTA3OlxcdFxcdG10NzZ1X3N0b3BfdHgoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDEwODpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MjcuMDU5NDQxMTE1WiIsIlNlcSI6OTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzE2NTY3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBmb3IgYG10NzZfcmVzZXRfZGV2aWNlYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcgY3J1Y2lhbC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBkZXZpY2UgcmVzZXRzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIHRoZSBgbXQ3Nl9yZXNldF9kZXZpY2VgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBhbnl3aGVyZSB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIHBhdGggb2YgZXhlY3V0aW9uLiBUaGF0IGZ1bmN0aW9uLCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBNVDc2IGRyaXZlcnMsIGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIGxvdy1sZXZlbCBoYXJkd2FyZSByZXNldCBzZXF1ZW5jZS4gS25vd2luZyBpZiBpdCdzIGludm9sdmVkIOKAkyBhbmQgKmhvdyogaXQncyBpbnZvbHZlZCDigJMgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGNvbnRleHQuIEl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBraW5kIG9mIGZhaWx1cmUgYW5hbHlzaXMsIGFuZCBsaWtlbHkgdGhlIGRlYnVnZ2luZyBwYXRoIEkgd2lsbCBjaG9vc2UgdG8gZm9sbG93LiBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBhc3N1bXB0aW9uIGZvciB0aGlzIGFuYWx5c2lzIC0gYW5kIHRoYXQgYXNzdW1wdGlvbiBtdXN0IGluY2x1ZGUgdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBpcyBhIHJlc2V0IGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBmaXJzdCBzdGVwIGlzIGEgcXVpY2sgc2VhcmNoIHRvIHZlcmlmeSBpdHMgcHJlc2VuY2UgaW4gdGhpcyBzZXF1ZW5jZS4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgcXVlc3Rpb24uIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTY5LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNTozMS4xOTExMDAyNzRaIiwiU2VxIjo5MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTA5OlxcdFxcdG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMTEwOlxcdFxcbiAxMTE6XFx0XFx0Y2xlYXJfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gMTEyOlxcdFxcdGVyciA9IG10NzZ1X3Jlc3VtZV9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMTEzOlxcdFxcdGlmIChlcnIpXFxuIDExNDpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0ZXJyID0gbXQ3OTJ4dV9tY3VfcG93ZXJfb24oZGV2KTtcXG4gMTE3OlxcdFxcdGlmIChlcnIpXFxuIDExODpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTE5OlxcdFxcbiAxMjA6XFx0XFx0ZXJyID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIGZhbHNlKTtcXG4gMTIxOlxcdFxcdGlmIChlcnIpXFxuIDEyMjpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTIzOlxcdFxcbiAxMjQ6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG4gMTI1OlxcdFxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuIDEyNjpcXHRcXG4gMTI3OlxcdFxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG4gMTI4OlxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjMxLjE5MTE5MDU4NFoiLCJTZXEiOjkzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTgyMzc3OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGV2aWNlIFJlc2V0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGRyaXZlciBiZWhhdmlvci4gTXkgcHJpbWFyeSBxdWVzdGlvbiByaWdodCBub3cgaXMgd2hldGhlciBvciBub3QgdGhlIHN5c3RlbSBpcyBhY3R1YWxseSBpbnZva2luZyBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBUaGlzIGlzIGNydWNpYWwuIElmIGEgcmVzZXQgaXNuJ3QgaGFwcGVuaW5nLCB0aGUgaXNzdWUgaXMgbGlrZWx5IGVsc2V3aGVyZSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIG9yIHBvdGVudGlhbGx5IGV2ZW4gaW4gdGhlIGhhcmR3YXJlIGl0c2VsZiBub3QgcmVzcG9uZGluZyBjb3JyZWN0bHkgdG8gaW5pdGlhbCBjb21tYW5kcy4gSWYgaXQgKmlzKiBiZWluZyBjYWxsZWQsIHRoZW4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyAqd2l0aGluKiB0aGF0IGZ1bmN0aW9uLCBhbmQgd2hhdCBjb25kaXRpb25zIGFyZSB0cmlnZ2VyaW5nIHRoZSByZXNldCBpbiB0aGUgZmlyc3QgcGxhY2UuIEFyZSB3ZSBzZWVpbmcgdGltZW91dHMsIGVycm9yIGNvZGVzIGZyb20gdGhlIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHN0YWNrLCBjaGVjayBmb3IgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCBtaWdodCBiZSBza2lwcGluZyB0aGUgcmVzZXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBhbmQgc2VlIHdoYXQgdGhlIGRldmljZSdzIHN0YXRlIGlzIGJlZm9yZSB0aGUgc3VzcGVjdGVkIGNhbGwgdG8gdGhhdCByb3V0aW5lLiBJcyB0aGUgZmlybXdhcmUgbG9hZGVkPyBBcmUgYW55IHJlZ2lzdGVycyBiZWluZyBjb25maWd1cmVkPyBVbmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UncyBleGFjdCBzdGF0ZSB3aGVuIGEgcmVzZXQgKnNob3VsZCogYmUgbmVlZGVkIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGlzc3VlLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgc2V0dGluZyBzb21lIGJyZWFrcG9pbnRzIGFuZCBsb2dnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc5MywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6MzguMzczNTcyMTU5WiIsIlNlcSI6OTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyOSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyOTpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0bXQ3Nl9jbGVhcihkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRlcnIgPSBtdDc5MjFfbWN1X3NldF9lZXByb20oZGV2KTtcXG4gMTM0OlxcdFxcdGlmIChlcnIpXFxuIDEzNTpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTM2OlxcdFxcbiAxMzc6XFx0XFx0ZXJyID0gbXQ3OTIxX21hY19pbml0KGRldik7XFxuIDEzODpcXHRcXHRpZiAoZXJyKVxcbiAxMzk6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE0MDpcXHRcXG4gMTQxOlxcdFxcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuIDE0MjpcXHRvdXQ6XFxuIDE0MzpcXHRcXHRjbGVhcl9iaXQoTVQ3Nl9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuIDE0NDpcXHRcXG4gMTQ1OlxcdFxcdG10NzZfd29ya2VyX2VuYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnR4X3dvcmtlcik7XFxuIDE0NjpcXHRcXG4gMTQ3OlxcdFxcdHJldHVybiBlcnI7XFxuIDE0ODpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjM4LjM3MzY1MjUzOVoiLCJTZXEiOjk1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzc0NzU2MDQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgYG10NzZfcmVzZXRfZGV2aWNlYCBGdW5jdGlvbjogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3Q6IEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIHRyaWdnZXJlZCBgbXQ3Nl9yZXNldF9kZXZpY2VgLiBJIGtub3cgaXQncyAqb25seSogY2FsbGVkIGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgYW5kIEkndmUgdmVyaWZpZWQgdGhhdCB3aXRoIGEgZ3JlcC4gU28sIGhvdyBkaWQgc3l6a2FsbGVyIGV2ZW4gZ2V0IHRoZXJlPyBJcyBpdCBwb3NzaWJsZSB0aGUgc3l6Ym90IHJlcG9ydCBpcyBmb3IgYG10NzkxNWAgb3IgYG10Nzk5NmA/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZS5cblxuQnV0IHdhaXQsIHRoZXNlIGFyZSBQQ0llIGRldmljZXMuIEhvdyBjb3VsZCBzeXprYWxsZXIgZnV6eiB0aGVtPyBUaGVuIGl0IGhpdHMgbWUhIFN5emthbGxlciBoYXMgdGhpcyBgc3l6X3BjaV9kZXZpY2VfYWRkYCBwc2V1ZG8tc3lzY2FsbC4gRG9lcyBpdCBlbXVsYXRlIGVub3VnaCB0byBwYXNzIHRoZSBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgPyBObywgaXQganVzdCBjcmVhdGVzIGEgZmFrZSBkZXZpY2UgYW5kIG1lbW9yeS1tYXBzIHRoZSBNTUlPIHJlZ2lvbnMuIFJpZ2h0LiBXaGVuIHRoZSBkcml2ZXIgd3JpdGVzIHRvIE1NSU8sIGl0J3Mgd3JpdGluZyB0byBtZW1vcnkuIFJlYWRzLCBmcm9tIG1lbW9yeS4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBjb2RlLlxuXG5TcGVjaWZpY2FsbHksIGluIGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgLCBpZiBzeXprYWxsZXIgY291bGQgc29tZWhvdyB3cml0ZSBhIHNwZWNpZmljIGBzdGF0ZWAgdmFsdWUgdG8gYE1UX1RPUF9NSVNDYCwgb3IgbWFwIHRoZSBNTUlPIHJlZ2lvbi4uLiBXYWl0IGEgc2Vjb25kISBTeXprYWxsZXIgKmNhbiogbWFwIHRoZSBNTUlPIHJlZ2lvbiEgSWYgYHN5el9wY2lfZGV2aWNlX2FkZGAgbWFwcyB0aGUgQkFScywgc3l6a2FsbGVyIGNhbiB1c2UgYW5vdGhlciB0aHJlYWQgdG8gd3JpdGUgdG8gdGhvc2UgTU1JTyByZWdpc3RlcnMhIFllcywgdGhhdCdzIGhvdyBpdCBzaW11bGF0ZXMgaGFyZHdhcmUgcmVzcG9uc2VzIVxuXG5Pa2F5LCBsZXQncyB2ZXJpZnkgaWYgc3l6a2FsbGVyJ3MgcGNpIGZ1enplciBhY3R1YWxseSBtYXBzIHRoZSBCQVJzIHRvIHVzZXIgc3BhY2UuIFllcCwgaXQgZG9lcy4gVGhpcyBtZWFucyBpdCBjYW4gY29uY3VycmVudGx5IHdyaXRlIHRvIG1hcHBlZCBtZW1vcnksIHNpbXVsYXRpbmcgdGhlIGRldmljZSdzIGhhcmR3YXJlIHJlc3BvbnNlcyFcblxuTm93LCBob2xkIG9uLiBJZiB0aGF0J3MgdGhlIGNhc2UsIGFueSBQQ0kgZHJpdmVyIGlzIGZhaXIgZ2FtZSEgV2hpY2ggbGVhZHMgdG8gbXkgY29uY2VybiwgdGhlIHByb21wdCB0aGF0IHNheXM6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIC0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cbmBtdDc5MTVgIGlzIGEgKnZlbmRvci1zcGVjaWZpYyogUENJZSBXaS1GaSBkcml2ZXIsIHNvIGl0IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeS4gQnV0IGRvZXMgdGhpcyBleGNsdWRlIGl0PyBUaGUgc3BlY2lmaWMgZXhhbXBsZXMgbGlzdGVkIGluY2x1ZGUgYG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1YC4gV2ktRmkgZHJpdmVycyBsaWtlIGBtdDc2YCwgYGl3bHdpZmlgLCBhbmQgYGF0aDEwa2AgYXJlIGFsc28gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgYnV0IGFyZSB0aGV5IGV4Y2x1ZGVkIGluIHRoZSBzYW1lIHdheT9cblxuVGhlIHByb21wdCBzdGF0ZXMgaXQgZXhjbHVkZXMgZHJpdmVycyBcInRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIFdpLUZpIGRyaXZlcnMgYXJlIG9mdGVuIGZ1enplZCB2aWEgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgKHZoY2kpLCBidXQgYG10NzkxNWAgaXMgUENJZS4gSSBoYXZlIHRvIGNvbnNpZGVyIHRoaXMuIFN5emthbGxlciBoYXMgYSBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgZm9yIFdpLUZpLCBidXQgY2FuIGl0IGZ1enogKlBDSWUqIFdpLUZpIGRyaXZlcnMgKmVmZmVjdGl2ZWx5Kj9cblxuQ29tcGxleCBQQ0llIFdpLUZpIGRyaXZlcnMgcmVxdWlyZSBmaXJtd2FyZSBsb2FkaW5nLiBTeXprYWxsZXIgY2FuIGZha2UgZmlybXdhcmUgdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLiBCdXQgY2FuIGl0IGVtdWxhdGUgcmluZyBidWZmZXJzIGFuZCBETUEgaW4gYG10NzkxNWA/XG5cbklmIHN5emthbGxlciBmb3VuZCBhIGJ1ZyBpbiBgbXQ3Nl9yZXNldF9kZXZpY2VgLCBpdCBtdXN0IGhhdmUgcmVhY2hlZCBpdC4gV2FpdCwgdGhlIHByb21wdCBJIHdhcyB0aGlua2luZyBvZiwgbm90IHRoZSBwcm9tcHQgc2F5cyB0aGUgY29tbWl0IG1lc3NhZ2UsIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZS5cIiBBY3R1YWxseSwgdGhhdCBkb2Vzbid0IG1lYW4gaXQgKmZvdW5kKiB0aGUgYnVnLCBpdCBtZWFucyBzeXpib3QgYXBwbGllZCBhIHBhdGNoIHN1Ym1pdHRlZCBieSBhIGRldmVsb3Blci4gU3l6Ym90IHJ1bnMgYW5kIHJlcG9ydHMgb24gdGhlIHRlc3RzLCBidXQgbm8gY3Jhc2ggZG9lc24ndCBtZWFuIGl0J3MgcmVhY2hhYmxlLlxuXG5UaGUgcHJvbXB0IGNvbmZpcm1zIHRoYXQ6IFwiY29tbWl0IDVlNjYwY2NlMzk0MTc4MTcwZjkzMTkxNjI3NTcxODM4ZGNlZGU4ZGQgQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZSBEYXRlOiBGcmkgQXVnIDIxIDE0OjMxOjA2IDIwMjYgKzAwMDAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIuIFRoaXMgaXMganVzdCBhIHBhdGNoIGFwcGxpZWQgYnkgc3l6Ym90IGZvciB0ZXN0aW5nLlxuXG5JIG11c3QgZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKi4gSXMgYG10NzkxNWAgcmVhY2hhYmxlIGluIFFFTVU/IE5vLCBpdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQnV0IHdoYXQgaWYgYG10NzZgIGlzIHVzZWQgaW4gYSBVU0IgZHJpdmVyIHRoYXQgKmNhbGxzKiBgbXQ3Nl9yZXNldF9kZXZpY2VgPyBJIGtub3cgdGhhdCBpcyBub3QgdGhlIGNhc2UuIEkgbmVlZCB0byBkb3VibGVcblxuIiwiSW5wdXRUb2tlbnMiOjUxMzg1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjM1OjU2LjEyMTIxNjQ3OVoiLCJTZXEiOjk2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MzYzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9yZXNldF9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVxcdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XFx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cXHQgKiBsZWF2ZXMgd2NpZC1cXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVxcdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzU6NTYuMTY5MDU2MzY0WiIsIlNlcSI6OTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMjg2NDk3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBBbmFseXNpcyoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIG15IHRoaW5raW5nLiBUaGUgY29kZSBtb2RpZmljYXRpb24gSSdtIGludmVzdGlnYXRpbmcgYXBwZWFycyB0byBiZSB3aXRoaW4gYG10NzZfcmVzZXRfZGV2aWNlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkZXRlcm1pbmUgaG93IHJlYWNoYWJsZSB0aGlzIGZ1bmN0aW9uIGlzLlxuXG5GaXJzdCwgSSBjb25maXJtZWQgdGhhdCB0aGUga25vd24gZGlyZWN0IGNhbGxlcnMgb2YgYG10NzZfcmVzZXRfZGV2aWNlYCBhcmUgc3BlY2lmaWNhbGx5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgYW5kIGJvdGggYXJlIFBDSWUgZGV2aWNlcy4gR2l2ZW4gdGhhdCwgSSBjb25zaWRlcmVkIGlmIGVpdGhlciBkZXZpY2UvZHJpdmVyIGNvdWxkIGJlIHJlYWNoZWQgdmlhIFFFTVUuIEhvd2V2ZXIsIGBtdDc5MTVgICpkb2VzKiBoYXZlIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCksIGJ1dCB0aGlzIGlzIGZvciBhIE1lZGlhVGVrIE1UNzk4eCBTb0MuIFNpbmNlIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgU29DLCB0aGF0J3MgYSBkZWFkIGVuZC4gVGhlcmVmb3JlLCBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgaXRzZWxmIGFyZSBub3QgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHR5cGljYWwgUUVNVSBzZXR1cCBJJ20gZmFtaWxpYXIgd2l0aC5cblxuTmV4dCwgSSBkaWQgYSBmdWxsIGtlcm5lbCBncmVwIGZvciBgbXQ3Nl9yZXNldF9kZXZpY2VgIGFuZCB3YXMgY29uZmlybWVkIHRoZSBvbmx5IGNhbGxlcnMgd2VyZSwgYWdhaW4sIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YC5cblxuVGhlbiwgSSBkb3VibGUtY2hlY2tlZCBhIHJlY2VudCBwYXRjaCwgbG9va2luZyBmb3IgaW5kaXJlY3QgY2FsbHMgdGhyb3VnaCBgbXQ3Nl93Y2lkX2NsZWFudXBgLCBidXQgdGhlIHBhdGNoIGFjdHVhbGx5ICptb3ZlcyogYSBjYWxsIHRvIGBtdDc2X3djaWRfY2xlYW51cGAgKmluc2lkZSogYG10NzZfcmVzZXRfZGV2aWNlYC4gVGhpcyBjb25maXJtcyB0aGUgbW9kaWZpZWQgY29kZSBpcyAqd2l0aGluKiB0aGF0IGZ1bmN0aW9uLCBhbmQgaWYgdGhlIGZ1bmN0aW9uIGlzbid0IGNhbGxlZCwgdGhlIGNoYW5nZXMgYXJlLCBlZmZlY3RpdmVseSwgdW5yZWFjaGFibGUuXG5cbkkgYWxzbyBjb25zaWRlcmVkIHdoZXRoZXIgYG1hYzgwMjExX2h3c2ltYCBjb3VsZCByZWFjaCBpdCwgYnV0IHRoYXQncyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IHJlbGF0ZWQgdG8gdGhlIGBtdDc2YCBzdGFjay4gVVNCIGRyaXZlcnMgd2VyZSBhbHNvIGNvbnNpZGVyZWQsIHNwZWNpZmljYWxseSBgbXQ3NngwdWAsIGBtdDc2eDJ1YCwgYG10NzYxNXVgLCBhbmQgYG10NzkyMXVgLCBidXQgdGhleSBkb24ndCBjYWxsIGBtdDc2X3Jlc2V0X2RldmljZWAgZWl0aGVyLlxuXG5GaW5hbGx5LCBJIGNoZWNrZWQgd2hldGhlciBpdCB3YXMgZXhwb3NlZCB2aWEgYEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtgLCBob3BpbmcgZm9yIGEgY2FsbCBmcm9tIGBtdDc2X2NvcmVgIG9yIGBtYWM4MDIxMWAgY2FsbGJhY2tzLiBUaGUgc3ltYm9sIGV4cG9ydCAqaXMqIHRoZXJlLCBidXQgYWdhaW4sIHRoZSBjYWxsZXJzIGFyZSBsaW1pdGVkIHRvIHRoZSB0d28gaWRlbnRpZmllZCBkZXZpY2VzLiBOb3csIEknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gZ28gZnVydGhlciBhbmQgbG9vayBmb3IgYW55IGluZGlyZWN0IGNhbGxzIHRvIGBtdDc2X3Jlc2V0X2RldmljZWAsIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ2MzcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MDUuNDk3NzA5NTU4WiIsIlNlcSI6OTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk1OTI5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcmVzZXRfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODM1PXN0YXRpYyB2b2lkIG10NzZfcmVzZXRfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODQ2OnZvaWQgbXQ3Nl9yZXNldF9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODcyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVzZXRfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3Mzg9dm9pZCBtdDc2X3djaWRfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzUxLVxcdC8qIFJlbW92ZSBmcm9tIHN0YV9wb2xsX2xpc3QgdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYWZ0ZXIgcmVzZXQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE3NTI6XFx0ICogV2l0aG91dCB0aGlzLCBtdDc2X3Jlc2V0X2RldmljZSgpIHJlaW5pdGlhbGl6ZXMgc3RhX3BvbGxfbGlzdCBidXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc1My1cXHQgKiBsZWF2ZXMgd2NpZC1cXHUwMDNlcG9sbF9saXN0IHdpdGggc3RhbGUgcG9pbnRlcnMsIGNhdXNpbmcgbGlzdCBjb3JydXB0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzIyPXZvaWQgbXQ3Nl9mcmVlX2RldmljZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMyMzp2b2lkIG10NzZfcmVzZXRfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzI0LXZvaWQgbXQ3Nl91bnJlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDI1PW10NzkxNV9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNDYxOlxcdG10NzZfcmVzZXRfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE0NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDU3PW10Nzk5Nl9tYWNfZnVsbF9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5MC1cXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMoaHcsIG10Nzk5Nl9tYWNfcmVzZXRfc3RhX2l0ZXIsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MTpcXHRtdDc2X3Jlc2V0X2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDkyLVxcdGllZWU4MDIxMV9pdGVyYXRlX2FjdGl2ZV9pbnRlcmZhY2VzX2F0b21pYyhodyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MDcuMTkzNjQ2MTY4WiIsIlNlcSI6OTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDY3ODgwODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiB0aGUgRnV6emluZyBXb3J0aGluZXNzIG9mIHRoaXMgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZfcmVzZXRfZGV2aWNlYCBmdW5jdGlvbiBhbmQgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIG9ubHkgY2FsbGVkIGRpcmVjdGx5IGJ5IGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCwgd2hpY2ggYXJlIFBDSWUgZHJpdmVycy4gUENJZSBkcml2ZXJzIG9mdGVuIHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFNpbmNlIHRoZXNlIGRyaXZlcnMgYXJlIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIHRoZXkgYXJlIGxpa2VseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuQnV0IHdhaXQsIHRoZW4gSSByZW1lbWJlcmVkIHN5emthbGxlciBoYXMgYHN5el9wY2lfZGV2aWNlX2FkZGAuIENvdWxkIHN5emthbGxlciBhY3R1YWxseSAqZW11bGF0ZSogdGhlIGhhcmR3YXJlIHJlc3BvbnNlcz8gSWYgaXQgY291bGQgbWFwIHRoZSBCQVJzIHRvIHVzZXJzcGFjZSBhbmQgYWxsb3cgY29uY3VycmVudCB3cml0ZXMsIHRoZW4geWVzLCBwb3RlbnRpYWxseSB0aGUgZHJpdmVyIGNvdWxkIGJlIGluaXRpYWxpemVkIGFuZCBmdXp6ZWQhIEl0IGNhbiBpbmRlZWQsIGJlY2F1c2UgYHN5el9wY2lfZGV2aWNlX2FkZGAgbWFwcyB0aGUgQkFScy5cblxuSG93ZXZlciwgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyBhIFdpLUZpIGRyaXZlciwgbGlrZSBgbXQ3OTE1YCwgYSBcIlNtYXJ0TklDXCI/IE5vLCBpdCdzIG5vdCBhIFNtYXJ0TklDLiBCdXQgaXQgKmlzKiBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5UaGUgZXhhbXBsZXMgaW4gdGhlIHByb21wdCwgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBldGMuLCBhcmUgYWxsIHRoZXNlIHJlYWxseSBjb21wbGV4IG5ldHdvcmtpbmcvR1BVIGRyaXZlcnMuIFdpLUZpIGRyaXZlcnMgbGlrZSBgbXQ3NmAsIGBpd2x3aWZpYCwgYW5kIGBhdGgxMGtgIGFyZSBjb21wbGV4IG5ldHdvcmtpbmcgZHJpdmVycyB0b28sIGFuZCBJIHdvdWxkIHRyZWF0IHRoZW0gc2ltaWxhcmx5IGluIHRoaXMgY29udGV4dC4gSWYgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciBgbWx4c3dgLCB0aGVuIEkgbmVlZCB0byBkbyB0aGUgc2FtZSBmb3IgYG10NzkxNWAgYmVjYXVzZSBpdCBkZW1hbmRzIHBoeXNpY2FsIGhhcmR3YXJlLlxuXG5PbiB0b3Agb2YgdGhpcywgc3l6a2FsbGVyIHByb2JhYmx5IGNhbm5vdCBmdXp6IGBtdDc5MTVgIGVmZmVjdGl2ZWx5IGFueXdheS4gSXQgbmVlZHMgZmlybXdhcmUgbG9hZGluZyBhbmQgY29tcGxleCBNQ1UgaW50ZXJhY3Rpb25zLiBFdmVuIHdpdGggQkFSIG1hcHBpbmcsIGp1c3QgcmFuZG9tIHdyaXRlcyBwcm9iYWJseSB3b24ndCBnZXQgcGFzdCB0aGF0LiBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgIG5lZWRzIHRoZSBNQ1UgdG8gcmVzcG9uZCB0byBjb21tYW5kcywgaW52b2x2aW5nIERNQSByaW5ncywgaW50ZXJydXB0cywgYWxsIGtpbmRzIG9mIGNvbXBsZXhpdHkgdGhhdCBzeXprYWxsZXIgcHJvYmFibHkgY2FuJ3Qgc2ltdWxhdGUgd2l0aCByYW5kb20gbWVtb3J5IHdyaXRlcy5cblxuVGhlcmVmb3JlLCBzaW5jZSBgbXQ3OTE1YCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBRRU1VLCB0aGUgY29kZSBpcyBub3Qgd29ydGggZnV6emluZywgc28gYFdvcnRoRnV6emluZz1mYWxzZWAuIEp1c3QgdG8gYmUgc3VyZSwgSSB3aWxsIGNoZWNrIGlmIGFueSBvdGhlciBkcml2ZXIgaXMgY2FsbGluZyB0aGUgZnVuY3Rpb24sIHVzaW5nIGBncmVwYC4gSSBkaWQsIGFuZCBpdCBpcyBub3QuIEknbGwgZG91YmxlIGNoZWNrIGlmIGBtdDc2X3Jlc2V0X2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIHRocm91Z2ggYSBtYWNyby5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY3MjcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MTkuNjYxNTMwMTY2WiIsIlNlcSI6MTAwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NjIxNzkzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3Jlc2V0X2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MTkuNzg3MTU5MTM5WiIsIlNlcSI6MTAxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUwOTM4NTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBDb2RlIFVucmVhY2hhYmxlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb2RlIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29udGV4dDogd2UncmUgbG9va2luZyBmb3IgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIGhpdCB3aXRoaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgR0NFIG9yIFFFTVUuXG5cbkkndmUgdHJhY2VkIHRoaXMgYmFjayB0byB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIGRyaXZlcnMsIHdoaWNoIGFyZSBib3RoIFBDSWUgV2ktRmkgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUgd2FzIGEgcGxhdGZvcm0gZHJpdmVyIChgbXQ3OTh4X3dtYWNfZHJpdmVyYCkgaW52b2x2ZWQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBtYWtlIHRoZSBjb2RlIHJlYWNoYWJsZS4gSG93ZXZlciwgdGhhdCBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIERldmljZSBUcmVlIGNvbXBhdGlibGUgc3RyaW5ncywgbGlrZSBgbWVkaWF0ZWssbXQ3OTg2LXdtYWNgLCB3aGljaCwgb2YgY291cnNlLCBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIGZvciB0aGUgTVQ3OTh4IFNvQ3MuIFRoZXJlZm9yZSwgdGhhdCBwYXRoIGlzIGRlYWQuXG5cblNvLCAqdGhlcmVmb3JlKiwgdGhlIG1vZGlmaWVkIGNvZGUgKmNhbm5vdCogYmUgcmVhY2hlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhlIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgZGVzaWduZWQgdG8gZXhjbHVkZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggcGVyZmVjdGx5IGRlc2NyaWJlcyB0aGUgYG10NzkxNWAgYW5kIGBtdDc5OTZgIHNjZW5hcmlvcy4gIE5vIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0IGlzIGdvaW5nIHRvIGdldCB1cyB0aGVyZS5cblxuVGhlIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVwiIG1lc3NhZ2luZyB0aHJldyBtZSBmb3IgYSBtb21lbnQ7IGl0IHRyaWdnZXJlZCBhIGJpdCBvZiBhIGtuZWUtamVyayByZWFjdGlvbi4gQnV0IHRoZW4gSSByZW1lbWJlcmVkOiBgc3l6LWNsdXN0ZXJgIGlzIHRlc3RpbmcgYSBwYXRjaCwgbm90IG5lY2Vzc2FyaWx5ICpmaW5kaW5nKiBhIGJ1Zy4gU3l6Ym90IHJ1bnMgcGF0Y2hlcyBzdWJtaXR0ZWQgdG8gbWFpbGluZyBsaXN0cyB0aHJvdWdoIGl0cyBleGlzdGluZyBjb3JwdXMuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCBpdCdzIHNpbXBseSBub3QgZXhlY3V0ZWQ7IHRoZSBmdXp6aW5nIGp1c3QgcmVwb3J0cyBcIk9LXCIgd2l0aG91dCBhIGNyYXNoLiBUaGlzIGlzIGNyaXRpY2FsLlxuXG5Tbywgd2l0aCB0aGF0LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIGZ1enplcidzIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk1OSwiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MzY6MzAuMjk2NTQ4NjU4WiIsIlNlcSI6MTAyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3Jlc2V0X2RldmljZWAgaW4gdGhlIE1lZGlhVGVrIG10NzYgV2ktRmkgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgbXQ3OTE1YCBhbmQgYG10Nzk5NmAgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL3BsYXRmb3JtIGRyaXZlcnMgZm9yIE1lZGlhVGVrIFdpLUZpIGNoaXBzLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhleSBjYW5ub3QgYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yIFVTQiBnYWRnZXQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfcmVzZXRfZGV2aWNlYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiBXaS1GaSBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgYnkgdGhlIGBtdDc5MTVgIGFuZCBgbXQ3OTk2YCBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgV2ktRmkgY2hpcHMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGV5IGNhbm5vdCBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDozNjozMC4yOTY2MTQ1ODhaIiwiU2VxIjoxMDMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowclvnd[1] Phase: Running StartedAt: 2026-08-21 14:36:42 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowclvnd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-21 14:36:42 +0000 UTC FinishedAt: 2026-08-21 14:36:46 +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,}