Name: series-workflowksdk2 Phase: Failed StartedAt: 2026-08-11 13:33:25 +0000 UTC FinishedAt: 2026-08-11 13:36:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksdk2[0] Phase: Succeeded StartedAt: 2026-08-11 13:33:25 +0000 UTC FinishedAt: 2026-08-11 13:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksdk2[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 13:33:25 +0000 UTC FinishedAt: 2026-08-11 13:36:11 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRodW5kZXJib2x0IG5ldHdvcmtpbmcgZHJpdmVyICh0aHVuZGVyYm9sdC1uZXQpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgYW5kIFhEb21haW4gY29ubmVjdGlvbnMgdG8gZnVuY3Rpb24uIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMgaW4gc3RhbmRhcmQgUUVNVSAodW5saWtlIFVTQiB3aXRoIHZoY2kgb3IgV2ktRmkgd2l0aCBtYWM4MDIxMV9od3NpbSksIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODliYjFiNzU3MDFkNWZhYzM4MTRmYzkwN2RmZjI1NjllOGMyMGE1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDEzOjM0OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuaW5kZXggOTg4OTM3MzJiYzZlNC4uMmExNzI4NjIxODg3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5AQCAtNjI2LDYgJiM0Mzs2MjYsMTQgQEAgc3RhdGljIGludCB0Ym5ldF9hbGxvY190eF9idWZmZXJzKHN0cnVjdCB0Ym5ldCAqbmV0KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0X2ZhaWxlZChzdHJ1Y3QgdGJuZXQgKm5ldClcbiYjNDM7e1xuJiM0MztcdC8qIExlYXZlIGxvZ2luX3JlY2VpdmVkIHNldDogb25seSB0aGUgcGVlciBjYW4gbWFrZSBpdCB0cnVlIGFnYWluLiAqL1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bmV0LVx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XG4mIzQzO1x0bmV0LVx1MDAzZWxvZ2luX3NlbnQgPSBmYWxzZTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bmV0LVx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB0Ym5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqbmV0KSwgY29ubmVjdGVkX3dvcmspO1xuQEAgLTY0Nyw2ICYjNDM7NjU1LDkgQEAgc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZChuZXQtXHUwMDNleGQsIG5ldC1cdTAwM2VyZW1vdGVfdHJhbnNtaXRfcGF0aCk7XG4gXHRpZiAocmV0ICE9IG5ldC1cdTAwM2VyZW1vdGVfdHJhbnNtaXRfcGF0aCkge1xuIFx0XHRuZXRkZXZfZXJyKG5ldC1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBSeCBIb3BJRFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzZT0gMClcbiYjNDM7XHRcdFx0dGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC1cdTAwM2V4ZCwgcmV0KTtcbiYjNDM7XHRcdHRibmV0X2Nvbm5lY3RfZmFpbGVkKG5ldCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC02OTEsNiAmIzQzOzcwMiw3IEBAIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHRiX3Jpbmdfc3RvcChuZXQtXHUwMDNlcnhfcmluZy5yaW5nKTtcbiBcdHRiX3Jpbmdfc3RvcChuZXQtXHUwMDNldHhfcmluZy5yaW5nKTtcbiBcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXHUwMDNleGQsIG5ldC1cdTAwM2VyZW1vdGVfdHJhbnNtaXRfcGF0aCk7XG4mIzQzO1x0dGJuZXRfY29ubmVjdF9mYWlsZWQobmV0KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGRyaXZlciAodGh1bmRlcmJvbHQtbmV0KS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zIHRvIGZ1bmN0aW9uLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFRodW5kZXJib2x0IGNvbnRyb2xsZXJzIGluIHN0YW5kYXJkIFFFTVUgKHVubGlrZSBVU0Igd2l0aCB2aGNpIG9yIFdpLUZpIHdpdGggbWFjODAyMTFfaHdzaW0pLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg5YmIxYjc1NzAxZDVmYWMzODE0ZmM5MDdkZmYyNTY5ZThjMjBhNTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxMzozNDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYwppbmRleCA5ODg5MzczMmJjNmU0Li4yYTE3Mjg2MjE4ODdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jCkBAIC02MjYsNiAmIzQzOzYyNiwxNCBAQCBzdGF0aWMgaW50IHRibmV0X2FsbG9jX3R4X2J1ZmZlcnMoc3RydWN0IHRibmV0ICpuZXQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0X2ZhaWxlZChzdHJ1Y3QgdGJuZXQgKm5ldCkKJiM0Mzt7CiYjNDM7CS8qIExlYXZlIGxvZ2luX3JlY2VpdmVkIHNldDogb25seSB0aGUgcGVlciBjYW4gbWFrZSBpdCB0cnVlIGFnYWluLiAqLwomIzQzOwltdXRleF9sb2NrKCZhbXA7bmV0LSZndDtjb25uZWN0aW9uX2xvY2spOwomIzQzOwluZXQtJmd0O2xvZ2luX3NlbnQgPSBmYWxzZTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bmV0LSZndDtjb25uZWN0aW9uX2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdGJuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKm5ldCksIGNvbm5lY3RlZF93b3JrKTsKQEAgLTY0Nyw2ICYjNDM7NjU1LDkgQEAgc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXJldCA9IHRiX3hkb21haW5fYWxsb2NfaW5faG9waWQobmV0LSZndDt4ZCwgbmV0LSZndDtyZW1vdGVfdHJhbnNtaXRfcGF0aCk7CiAJaWYgKHJldCAhPSBuZXQtJmd0O3JlbW90ZV90cmFuc21pdF9wYXRoKSB7CiAJCW5ldGRldl9lcnIobmV0LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIFJ4IEhvcElEXG4mIzM0Oyk7CiYjNDM7CQlpZiAocmV0ICZndDs9IDApCiYjNDM7CQkJdGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC0mZ3Q7eGQsIHJldCk7CiYjNDM7CQl0Ym5ldF9jb25uZWN0X2ZhaWxlZChuZXQpOwogCQlyZXR1cm47CiAJfQogCkBAIC02OTEsNiAmIzQzOzcwMiw3IEBAIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAl0Yl9yaW5nX3N0b3AobmV0LSZndDtyeF9yaW5nLnJpbmcpOwogCXRiX3Jpbmdfc3RvcChuZXQtJmd0O3R4X3JpbmcucmluZyk7CiAJdGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC0mZ3Q7eGQsIG5ldC0mZ3Q7cmVtb3RlX3RyYW5zbWl0X3BhdGgpOwomIzQzOwl0Ym5ldF9jb25uZWN0X2ZhaWxlZChuZXQpOwogfQogCiBzdGF0aWMgdm9pZCB0Ym5ldF9sb2dpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGB0Ym5ldF9jb25uZWN0X2ZhaWxlZGAgZnVuY3Rpb24gYW5kIGFyZSBjYWxsaW5nIGl0IHdpdGhpbiBgdGJuZXRfY29ubmVjdGVkX3dvcmtgIHdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcuIFBsdXMsIHRoZXJlJiMzOTtzIHRoaXMgYHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZGAgY2FsbCBhbmQgYSBjaGVjayBiZWZvcmUgY2FsbGluZyBgdGJuZXRfY29ubmVjdF9mYWlsZWRgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIGVycm9yIGhhbmRsaW5nLCBub3RoaW5nIGdyb3VuZGJyZWFraW5nIHlldC4KCkJ1dCB3YWl0LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLi4uIG5vdyBteSBicmFpbiYjMzk7cyBnb2luZy4gQ2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLCB0aGF0JiMzOTtzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IGRvIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUsIHJpZ2h0PyBPciBhdCBsZWFzdCBwcm9wZXIgZW11bGF0aW9uLiBJIGtub3cgaXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhLCBidXQgZ2VuZXJhbGx5LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGlzIGhpZ2hseSBoYXJkd2FyZS1kZXBlbmRlbnQuCgpTbywgUUVNVS4uLiBkb2VzIHN0YW5kYXJkIFFFTVUgZXZlbiAqaGF2ZSogVGh1bmRlcmJvbHQgZW11bGF0aW9uPyBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueSBvZmZoYW5kLiBJdCYjMzk7cyBvZnRlbiBhIHByZXR0eSBzcGVjaWFsaXplZCBhcmVhLiBOZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUtYmFzZWQgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgVGh1bmRlcmJvbHQuIExldCYjMzk7cyBkbyBhIHF1aWNrIGBncmVwYCBzZWFyY2ggZm9yICYjMzQ7dGh1bmRlcmJvbHQmIzM0OyBpbiB0aGUgUUVNVSBzb3VyY2Ugb3IgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIGFueXRoaW5nIHBvcHMgdXAuIE5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBsYXllciBiZWZvcmUgZXZlbiB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgZnV6emluZyBzdHJhdGVnaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RodW5kZXJib2x0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZz0yPWNvbmZpZyBVU0I0X05FVFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWctMTEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZzoxMjpcdCAgY2FsbGVkIHRodW5kZXJib2x0X25ldC5cbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1VTQjRfTkVUKSA6PSB0aHVuZGVyYm9sdF9uZXQub1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvTWFrZWZpbGU6Mzp0aHVuZGVyYm9sdF9uZXQtb2JqcyA6PSBtYWluLm8gdHJhY2Uub1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvTWFrZWZpbGUtNC1cbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgvc2l6ZXMuaFx1MDAzZVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjIxOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3RodW5kZXJib2x0LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMi0jaW5jbHVkZSBcdTAwM2NsaW51eC91dWlkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDMtI2RlZmluZSBUQk5FVF9NQVhfUEFZTE9BRF9TSVpFXHRcXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjQ0Olx0KFRCTkVUX0ZSQU1FX1NJWkUgLSBzaXplb2Yoc3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlcikpXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDUtLyogUnggcGFja2V0cyBuZWVkIHRvIGhvbGQgc3BhY2UgZm9yIHNrYl9zaGFyZWRfaW5mbyAqL1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy01My0vKipcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo1NDogKiBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIC0gSGVhZGVyIGZvciBlYWNoIFRodW5kZXJib2x0IGZyYW1lXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNTUtICogQGZyYW1lX3NpemU6IHNpemUgb2YgdGhlIGRhdGEgd2l0aCB0aGUgZnJhbWVcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNjMtICovXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NjQ6c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNjUtXHRfX2xlMzIgZnJhbWVfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzAtXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzE6ZW51bSB0aHVuZGVyYm9sdF9pcF9mcmFtZV9wZGYge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTcyLVx0VEJJUF9QREZfRlJBTUVfU1RBUlQgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03NS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo3NjplbnVtIHRodW5kZXJib2x0X2lwX3R5cGUge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTc3LVx0VEJJUF9MT0dJTixcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODItXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6ODM6c3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlciB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODQtXHR1MzIgcm91dGVfaGk7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTk3LVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjk4OnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6OTk6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyIGhkcjtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDAtXHR1MzIgcHJvdG9fdmVyc2lvbjtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTA2LVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjEwNzpzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9naW5fcmVzcG9uc2Uge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjEwODpcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTEwOS1cdHUzMiBzdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTExNC1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMTU6c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ291dCB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTE2Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlciBoZHI7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTE3LX07XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTE4LVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjExOTpzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMjA6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyIGhkcjtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMjEtXHR1MzIgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0xODI9c3RydWN0IHRibmV0IHtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTk5LVx0c3RydWN0IHdvcmtfc3RydWN0IGRpc2Nvbm5lY3Rfd29yaztcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyMDA6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIHJ4X2hkcjtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMDEtXHRzdHJ1Y3QgdGJuZXRfcmluZyByeF9yaW5nO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yMjA9TU9EVUxFX1BBUk1fREVTQyhlMmUsIFwmIzM0O1VTQjRORVQgZnVsbCBlbmQtdG8tZW5kIGZsb3cgY29udHJvbCAoZGVmYXVsdDogdHJ1ZSlcJiMzNDspO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTIyMS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyMjI6c3RhdGljIHZvaWQgdGJuZXRfZmlsbF9oZWFkZXIoc3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlciAqaGRyLCB1NjQgcm91dGUsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjIzLVx0dTggc2VxdWVuY2UsIGNvbnN0IHV1aWRfdCAqaW5pdGlhdG9yX3V1aWQsIGNvbnN0IHV1aWRfdCAqdGFyZ2V0X3V1aWQsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjI0Olx0ZW51bSB0aHVuZGVyYm9sdF9pcF90eXBlIHR5cGUsIHNpemVfdCBzaXplLCB1MzIgY29tbWFuZF9pZClcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMjUte1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNDI9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXNwb25zZShzdHJ1Y3QgdGJuZXQgKm5ldCwgdTY0IHJvdXRlLCB1OCBzZXF1ZW5jZSxcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjQ0LXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyNDU6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9naW5fcmVzcG9uc2UgcmVwbHk7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjQ2LVx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gbmV0LVx1MDAzZXhkO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNTk9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXF1ZXN0KHN0cnVjdCB0Ym5ldCAqbmV0LCB1OCBzZXF1ZW5jZSlcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNjAte1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjI2MTpcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbl9yZXNwb25zZSByZXBseTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyNjI6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9naW4gcmVxdWVzdDtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNjMtXHRzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQgPSBuZXQtXHUwMDNleGQ7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTI3OT1zdGF0aWMgaW50IHRibmV0X2xvZ291dF9yZXNwb25zZShzdHJ1Y3QgdGJuZXQgKm5ldCwgdTY0IHJvdXRlLCB1OCBzZXF1ZW5jZSxcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjgxLXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyODI6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfc3RhdHVzIHJlcGx5O1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTI4My1cdHN0cnVjdCB0Yl94ZG9tYWluICp4ZCA9IG5ldC1cdTAwM2V4ZDtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MjkzPXN0YXRpYyBpbnQgdGJuZXRfbG9nb3V0X3JlcXVlc3Qoc3RydWN0IHRibmV0ICpuZXQpXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyOTU6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9nb3V0IHJlcXVlc3Q7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6Mjk2Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX3N0YXR1cyByZXBseTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yOTctXHRzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQgPSBuZXQtXHUwMDNleGQ7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTQyNT1zdGF0aWMgaW50IHRibmV0X2hhbmRsZV9wYWNrZXQoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00MjYte1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjQyNzpcdGNvbnN0IHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiAqcGtnID0gYnVmO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQyOC1cdHN0cnVjdCB0Ym5ldCAqbmV0ID0gZGF0YTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDM0LVx0LyogTWFrZSBzdXJlIHRoZSBwYWNrZXQgaXMgZm9yIHVzICovXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NDM1Olx0aWYgKHNpemUgXHUwMDNjIHNpemVvZihzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyKSlcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00MzYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz03NTA9c3RhdGljIGJvb2wgdGJuZXRfY2hlY2tfZnJhbWUoc3RydWN0IHRibmV0ICpuZXQsIGNvbnN0IHN0cnVjdCB0Ym5ldF9mcmFtZSAqdGYsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzUxOlx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9mcmFtZV9oZWFkZXIgKmhkcilcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03NTIte1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz04MjU9c3RhdGljIGludCB0Ym5ldF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODMyLVx0d2hpbGUgKHJ4X3BhY2tldHMgXHUwMDNjIGJ1ZGdldCkge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjgzMzpcdFx0Y29uc3Qgc3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTgzNC1cdFx0dW5zaWduZWQgaW50IGhkcl9zaXplID0gc2l6ZW9mKCpoZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0xMDE1PXN0YXRpYyBib29sIHRibmV0X3htaXRfY3N1bV9hbmRfbWFwKHN0cnVjdCB0Ym5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDE3LXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMDE4Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyID0gcGFnZV9hZGRyZXNzKGZyYW1lc1swXS1cdTAwM2VwYWdlKTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDE5LVx0c3RydWN0IGRldmljZSAqZG1hX2RldiA9IHRiX3JpbmdfZG1hX2RldmljZShuZXQtXHUwMDNldHhfcmluZy5yaW5nKTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTEzMD1zdGF0aWMgbmV0ZGV2X3R4X3QgdGJuZXRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTM1LVx0dTE2IGZyYW1lX2lkID0gYXRvbWljX3JlYWQoXHUwMDI2bmV0LVx1MDAzZWZyYW1lX2lkKTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMTM2Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTExMzctXHR1bnNpZ25lZCBpbnQgbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTM2NT1zdGF0aWMgaW50IHRibmV0X3Byb2JlKHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCB0Yl9zZXJ2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTM5MC1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMzkxOlx0c3RyY3B5KGRldi1cdTAwM2VuYW1lLCBcJiMzNDt0aHVuZGVyYm9sdCVkXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMzkyLVx0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0Ym5ldF9uZXRkZXZfb3BzO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xNDEwLVx0ZGV2LVx1MDAzZWZlYXR1cmVzID0gZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHwgTkVUSUZfRl9ISUdIRE1BO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjE0MTE6XHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlcik7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQxMi1cbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTQ4OT1zdGF0aWMgc3RydWN0IHRiX3NlcnZpY2VfZHJpdmVyIHRibmV0X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQ5MS1cdFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTQ5MjpcdFx0Lm5hbWUgPSBcJiMzNDt0aHVuZGVyYm9sdC1uZXRcJiMzNDssXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQ5My1cdFx0LnBtID0gcG1fc2xlZXBfcHRyKFx1MDAyNnRibmV0X3BtX29wcyksXG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvdHJhY2UuaC05LSN1bmRlZiBUUkFDRV9TWVNURU1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L3RyYWNlLmg6MTA6I2RlZmluZSBUUkFDRV9TWVNURU0gdGh1bmRlcmJvbHRfbmV0XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC90cmFjZS5oLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MTkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBUaHVuZGVyYm9sdCBGdXp6aW5nIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHRodW5kZXJib2x0LW5ldGAsIHNwZWNpZmljYWxseSB0aGUgVVNCNF9ORVQgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZnV6eiB0aGlzIHRoaW5nIHVzaW5nIHN5emthbGxlcj8gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBmaXJzdCBxdWVzdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgZXZlbiBoYXMgYW55IGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvIHRodW5kZXJib2x0LiBBaCwgcmlnaHQsIHRoZSBpbnN0cnVjdGlvbnMhIFRoZXkmIzM5O3JlIHJlbWluZGluZyBtZSB0aGF0IEkgY2FuJiMzOTt0IGp1c3QgYmxpbmRseSBzZWFyY2ggdGhlIHN5emthbGxlciBjb2RlIGJhc2UgKGBzeXMvKmApIGZvciAmIzM0O3RodW5kZXJib2x0JiMzNDsgYmVjYXVzZSBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBpdHMgaW50ZXJuYWwgcHNldWRvLXN5c2NhbGxzLiBUaGluZ3MgdGhhdCBzdGFydCB3aXRoICYjMzQ7c3l6XyYjMzQ7IGFyZSBvZmYtbGltaXRzIGZvciBhIHN0cmFpZ2h0IHNlYXJjaCBoZXJlLiBJIG5lZWQgdG8gdXNlIHRob3NlIG90aGVyIHRvb2xzIHRoZXkgbWVudGlvbmVkIC0gYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgIC0gaWYgSSYjMzk7bSBsb29raW5nIGZvciAqcmVhbCoga2VybmVsLWxldmVsIHN5emxhbmcgZGVzY3JpcHRpb25zLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlLiBTbywgYmFjayB0byB0aGUgaW5pdGlhbCBxdWVzdGlvbjogYXJlIHRoZXJlICphbnkqIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRodW5kZXJib2x0IGF0IGFsbD8gSSBuZWVkIHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RodW5kZXJib2x0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbToxOldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yLURhdGU6XHRcdFNlcCAyMDI2XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09NT1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yMC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjIxOldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yMi1EYXRlOlx0XHRTZXAgMjAyNlxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtPTI1PURlc2NyaXB0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTI5LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW06MzA6V2hhdDpcdFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cdTAwM2N4ZG9tYWluXHUwMDNlLlx1MDAzY3NlcnZpY2VcdTAwM2UvJG5hbWUvaW5kZXhcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTMxLURhdGU6XHRcdFNlcCAyMDI2XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09MzQ9RGVzY3JpcHRpb246XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMzgtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbTozOTpXaGF0Olx0XHQvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtL1x1MDAzY3hkb21haW5cdTAwM2UuXHUwMDNjc2VydmljZVx1MDAzZS8kbmFtZS9pbl9ob3BpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNDAtRGF0ZTpcdFx0U2VwIDIwMjZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT00Mz1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS01Ny1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjU4OldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lL291dF9ob3BpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNTktRGF0ZTpcdFx0U2VwIDIwMjZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT02Mj1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS02OC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjY5OldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lL3Jpbmdfc2l6ZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNzAtRGF0ZTpcdFx0U2VwIDIwMjZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT03Mz1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS03Ni1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjc3OldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lL3Rocm90dGxpbmdcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTc4LURhdGU6XHRcdFNlcCAyMDI2XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9kb21haW5YL2Jvb3RfYWNsXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yLURhdGU6XHRcdEp1biAyMDE4XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9NT1EZXNjcmlwdGlvbjpcdEhvbGRzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZGV2aWNlIHVuaXF1ZV9pZHMgdGhhdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjQ6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9kZWF1dGhvcml6YXRpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI1LURhdGU6XHRcdE1heSAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Mjg9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSB0ZWxscyB3aGV0aGVyIHRoZSBzeXN0ZW0gc3VwcG9ydHNcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMzOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2RvbWFpblgvaW9tbXVfZG1hX3Byb3RlY3Rpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0LURhdGU6XHRcdE1hciAyMDE5XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Mzc9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSB0ZWxscyB3aGV0aGVyIHRoZSBzeXN0ZW0gdXNlcyBJT01NVVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTQxLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6NDI6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9zZWN1cml0eVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtNDMtRGF0ZTpcdFx0U2VwIDIwMTdcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD00Nj1EZXNjcmlwdGlvbjpcdFRoaXMgYXR0cmlidXRlIGhvbGRzIGN1cnJlbnQgVGh1bmRlcmJvbHQgc2VjdXJpdHkgbGV2ZWxcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC02My1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjY0OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2F1dGhvcml6ZWRcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTY1LURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Njg9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGF1dGhvcml6ZSBUaHVuZGVyYm9sdCBkZXZpY2VzXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtOTctXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo5ODpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9ib290XG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC05OS1EYXRlOlx0XHRKdW4gMjAxOFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTEwMj1EZXNjcmlwdGlvbjpcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIDEgaWYgVGh1bmRlcmJvbHQgZGV2aWNlIHdhcyBhbHJlYWR5XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTA0LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTA1OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2dlbmVyYXRpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEwNi1EYXRlOlx0XHRKYW4gMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTEwOT1EZXNjcmlwdGlvbjpcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBUaHVuZGVyYm9sdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTExMi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjExMzpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9rZXlcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTExNC1EYXRlOlx0XHRTZXAgMjAxN1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTExNz1EZXNjcmlwdGlvbjpcdFdoZW4gYSBkZXZpY2VzIHN1cHBvcnRzIFRodW5kZXJib2x0IHNlY3VyZSBjb25uZWN0IGl0IHdpbGxcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjItXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMjM6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZGV2aWNlXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjQtRGF0ZTpcdFx0U2VwIDIwMTdcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xMjc9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBpZCBvZiB0aGlzIGRldmljZSBleHRyYWN0ZWQgZnJvbVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEyOS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjEzMDpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9kZXZpY2VfbmFtZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTMxLURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTM0PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgbmFtZSBvZiB0aGlzIGRldmljZSBleHRyYWN0ZWQgZnJvbVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEzNi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjEzNzpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9tYXhob3BpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTM4LURhdGU6XHRcdEp1bCAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTQxPURlc2NyaXB0aW9uOlx0T25seSBzZXQgZm9yIFhEb21haW5zLiBUaGUgbWF4aW11bSBIb3BJRCB0aGUgb3RoZXIgaG9zdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE0My1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE0NDpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9yeF9zcGVlZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTQ1LURhdGU6XHRcdEphbiAyMDIwXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTQ4PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyB0aGUgZGV2aWNlIFJYIHNwZWVkIHBlciBsYW5lLlxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1MC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE1MTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9yeF9sYW5lc1xuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTUyLURhdGU6XHRcdEphbiAyMDIwXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTU1PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyBudW1iZXIgb2YgUlggbGFuZXMgdGhlIGRldmljZSBpc1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1Ny1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE1ODpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi90eF9zcGVlZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTU5LURhdGU6XHRcdEphbiAyMDIwXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTYyPURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyB0aGUgVFggc3BlZWQgcGVyIGxhbmUuXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTY0LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTY1OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3R4X2xhbmVzXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNjYtRGF0ZTpcdFx0SmFuIDIwMjBcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xNjk9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSByZXBvcnRzIG51bWJlciBvZiBUWCBsYW5lcyB0aGUgZGV2aWNlIGlzXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTcxLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTcyOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3ZlbmRvclxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTczLURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTc2PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdmVuZG9yIGlkIG9mIHRoaXMgZGV2aWNlIGV4dHJhY3RlZFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE3OC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE3OTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi92ZW5kb3JfbmFtZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTgwLURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTgzPURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdmVuZG9yIG5hbWUgb2YgdGhpcyBkZXZpY2UgZXh0cmFjdGVkXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTg1LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTg2OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3VuaXF1ZV9pZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTg3LURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTkwPURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdW5pcXVlX2lkIHN0cmluZyBvZiB0aGlzIGRldmljZS5cbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xOTQtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxOTU6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vbnZtX3ZlcnNpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE5Ni1EYXRlOlx0XHRTZXAgMjAxN1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE5OT1EZXNjcmlwdGlvbjpcdElmIHRoZSBkZXZpY2UgaGFzIHVwZ3JhZGVhYmxlIGZpcm13YXJlIHRoZSB2ZXJzaW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjAzLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjA0OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV9hdXRoZW50aWNhdGVcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIwNS1EYXRlOlx0XHRTZXAgMjAxN1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTIwOD1EZXNjcmlwdGlvbjpcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzMS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjIzMjpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9udm1fYXV0aGVudGljYXRlX29uX2Rpc2Nvbm5lY3RcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzMy1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTIzNj1EZXNjcmlwdGlvbjpcdEZvciBzdXBwb3J0ZWQgZGV2aWNlcywgYXV0b21hdGljYWxseSBhdXRoZW50aWNhdGUgdGhlIG5ldyBUaHVuZGVyYm9sdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI0NS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI0NjpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY3hkb21haW5cdTAwM2UuXHUwMDNjc2VydmljZVx1MDAzZS9rZXlcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI0Ny1EYXRlOlx0XHRKYW4gMjAxOFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI1MD1EZXNjcmlwdGlvbjpcdFRoaXMgY29udGFpbnMgbmFtZSBvZiB0aGUgcHJvcGVydHkgZGlyZWN0b3J5IHRoZSBYRG9tYWluXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjYwLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjYxOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlL21vZGFsaWFzXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNjItRGF0ZTpcdFx0SmFuIDIwMThcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yNjU9RGVzY3JpcHRpb246XHRTdG9yZXMgdGhlIHNhbWUgTU9EQUxJQVMgdmFsdWUgZW1pdHRlZCBieSB1ZXZlbnQgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjY3LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjY4OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlL3BydGNpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjY5LURhdGU6XHRcdEphbiAyMDE4XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjcyPURlc2NyaXB0aW9uOlx0VGhpcyBjb250YWlucyBYRG9tYWluIHByb3RvY29sIGlkZW50aWZpZXIgdGhlIFhEb21haW5cbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNzQtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyNzU6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cdTAwM2N4ZG9tYWluXHUwMDNlLlx1MDAzY3NlcnZpY2VcdTAwM2UvcHJ0Y3ZlcnNcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI3Ni1EYXRlOlx0XHRKYW4gMjAxOFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI3OT1EZXNjcmlwdGlvbjpcdFRoaXMgY29udGFpbnMgWERvbWFpbiBwcm90b2NvbCB2ZXJzaW9uIHRoZSBYRG9tYWluXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjgxLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjgyOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlL3BydGNyZXZzXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yODMtRGF0ZTpcdFx0SmFuIDIwMThcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yODY9RGVzY3JpcHRpb246XHRUaGlzIGNvbnRhaW5zIFhEb21haW4gc29mdHdhcmUgdmVyc2lvbiB0aGUgWERvbWFpblxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI4OC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI4OTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY3hkb21haW5cdTAwM2UuXHUwMDNjc2VydmljZVx1MDAzZS9wcnRjc3Ruc1xuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjkwLURhdGU6XHRcdEphbiAyMDE4XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjkzPURlc2NyaXB0aW9uOlx0VGhpcyBjb250YWlucyBYRG9tYWluIHNlcnZpY2Ugc3BlY2lmaWMgc2V0dGluZ3MgYXNcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yOTUtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyOTY6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy91c2I0X3BvcnRYL2Nvbm5lY3RvclxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjk3LURhdGU6XHRcdEFwcmlsIDIwMjJcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yOTk9RGVzY3JpcHRpb246XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzA1LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzA2OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9saW5rXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMDctRGF0ZTpcdFx0U2VwIDIwMjFcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0zMTA9RGVzY3JpcHRpb246XHRSZXR1cm5zIHRoZSBjdXJyZW50IGxpbmsgbW9kZS4gUG9zc2libGUgdmFsdWVzIGFyZVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMxMi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMxMzpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL3VzYjRfcG9ydFgvb2ZmbGluZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzE0LURhdGU6XHRcdFNlcCAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzE3PURlc2NyaXB0aW9uOlx0V3JpdGluZyAxIHRvIHRoaXMgYXR0cmlidXRlIHB1dHMgdGhlIFVTQjQgcG9ydCBpbnRvXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzI3LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzI4OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9yZXNjYW5cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMyOS1EYXRlOlx0XHRTZXAgMjAyMVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTMzMj1EZXNjcmlwdGlvbjpcdFdoZW4gdGhlIFVTQjQgcG9ydCBpcyBpbiBvZmZsaW5lIG1vZGUgd3JpdGluZyAxIHRvIHRoaXNcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMzgtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozMzk6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cdTAwM2NkZXZpY2VcdTAwM2U6XHUwMDNjcG9ydFx1MDAzZS5cdTAwM2NpbmRleFx1MDAzZS9kZXZpY2VcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0MC1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTM0Mz1EZXNjcmlwdGlvbjpcdFJldGltZXIgZGV2aWNlIGlkZW50aWZpZXIgcmVhZCBmcm9tIHRoZSBoYXJkd2FyZS5cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0NC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjM0NTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY2RldmljZVx1MDAzZTpcdTAwM2Nwb3J0XHUwMDNlLlx1MDAzY2luZGV4XHUwMDNlL252bV9hdXRoZW50aWNhdGVcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0Ni1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTM0OT1EZXNjcmlwdGlvbjpcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM1OS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjM2MDpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY2RldmljZVx1MDAzZTpcdTAwM2Nwb3J0XHUwMDNlLlx1MDAzY2luZGV4XHUwMDNlL252bV92ZXJzaW9uXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjEtRGF0ZTpcdFx0T2N0IDIwMjBcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0zNjQ9RGVzY3JpcHRpb246XHRIb2xkcyByZXRpbWVyIE5WTSB2ZXJzaW9uIG51bWJlci4gRm9ybWF0OiAleC4leCwgbWFqb3IubWlub3IuXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjUtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozNjY6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cdTAwM2NkZXZpY2VcdTAwM2U6XHUwMDNjcG9ydFx1MDAzZS5cdTAwM2NpbmRleFx1MDAzZS92ZW5kb3JcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM2Ny1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0PTE0MD1Ib3cgdG8gY29uZmlndXJlIHlvdXIgaGFyZHdhcmUgd2l0aGluIHlvdXIgTGludXggc3lzdGVtLlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTE2NC0gICB0aGVybWFsL2luZGV4XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2luZGV4LnJzdDoxNjU6ICAgdGh1bmRlcmJvbHRcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTE2Ni0gICB2Z2Etc29mdGN1cnNvclxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTMwPU1vcmUgZGV0YWlscyBhYm91dCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBUaHVuZGVyYm9sdCBkZXZpY2VzIGNhbiBiZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzE6Zm91bmQgaW4gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zMi1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zND1tYW51YWwgd29yayBjYW4gYWRkIGZvbGxvd2luZyBsaW5lIHRvXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozNzogIEFDVElPTj09XCYjMzQ7YWRkXCYjMzQ7LCBTVUJTWVNURU09PVwmIzM0O3RodW5kZXJib2x0XCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PT1cJiMzNDswXCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PVwmIzM0OzFcJiMzNDtcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTUzPVRoZSBzZWN1cml0eSBsZXZlbHMgYXJlIGFzIGZvbGxvd3M6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNjItICAgIEJhc2VkIG9uIHRoZSBkZXZpY2UgaWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRocm91Z2hcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjYzOiAgICBgYC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXNgYCwgdGhlIHVzZXIgdGhlbiBjYW4gbWFrZSB0aGUgZGVjaXNpb24uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC02NC0gICAgSW4gQklPUyBzZXR0aW5ncyB0aGlzIGlzIHR5cGljYWxseSBjYWxsZWQgKlVuaXF1ZSBJRCouXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9ODc9VGhlIGN1cnJlbnQgc2VjdXJpdHkgbGV2ZWwgY2FuIGJlIHJlYWQgZnJvbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6ODg6YGAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL2RvbWFpblgvc2VjdXJpdHlgYCB3aGVyZSBgYGRvbWFpblhgYCBpc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtODktdGhlIFRodW5kZXJib2x0IGRvbWFpbiB0aGUgaG9zdCBjb250cm9sbGVyIG1hbmFnZXMuIFRoZXJlIGlzIHR5cGljYWxseVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTk2PUVhY2ggVGh1bmRlcmJvbHQgZGV2aWNlIHBsdWdnZWQgaW4gd2lsbCBhcHBlYXIgaW4gc3lzZnMgdW5kZXJcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0Ojk3OmBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlc2BgLiBUaGUgZGV2aWNlIGRpcmVjdG9yeSBjYXJyaWVzXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC05OC1pbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBwYXJ0aWN1bGFyIGRldmljZSxcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0xMDM9V2hlbiBhIGRldmljZSBpcyBwbHVnZ2VkIGluIGl0IHdpbGwgYXBwZWFyIGluIHN5c2ZzIGFzIGZvbGxvd3M6OlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTA0LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTA1OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvYXV0aG9yaXplZFx0LSAwXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDY6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS9kZXZpY2VcdC0gMHg4MDA0XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDc6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS9kZXZpY2VfbmFtZVx0LSBUaHVuZGVyYm9sdCB0byBGaXJlV2lyZSBBZGFwdGVyXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDg6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS92ZW5kb3JcdC0gMHgxXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDk6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS92ZW5kb3JfbmFtZVx0LSBBcHBsZSwgSW5jLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTEwOiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvdW5pcXVlX2lkXHQtIGUwMzc2ZjAwLTAzMDAtMDEwMC1mZmZmLWZmZmZmZmZmZmZmZlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTExLVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTExMz1jcmVhdGVkIHlldC4gVGhlIHVzZXIgY2FuIGF1dGhvcml6ZSB0aGUgZGV2aWNlIGJ5IHNpbXBseSBlbnRlcmluZzo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMTQtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMTU6ICAjIGVjaG8gMSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvYXV0aG9yaXplZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTE2LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTEyMj1mdXR1cmUgY29ubmVjdHM6OlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTIzLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTI0OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMvYXV0aG9yaXplZFx0LSAwXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjU6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9kZXZpY2VcdC0gMHgzMDVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyNjogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2RldmljZV9uYW1lXHQtIEFLaVRpTyBUaHVuZGVyMyBQQ0llIEJveFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTI3OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMva2V5XHRcdC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyODogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL3ZlbmRvclx0LSAweDQxXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjk6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy92ZW5kb3JfbmFtZVx0LSBpblh0cm9uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMzA6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy91bmlxdWVfaWRcdC0gZGMwMTAwMDAtMDAwMC04NTA4LWEyMmQtMzJjYTY0MjFjYjE2XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMzEtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTM5PXBsdWdnZWQgYSBrZXkgbmVlZHMgdG8gYmUgY3JlYXRlZCBhbmQgc2VudCB0byB0aGUgZGV2aWNlOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xNDEtICAjIGtleT0kKG9wZW5zc2wgcmFuZCAtaGV4IDMyKVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTQyOiAgIyBlY2hvICRrZXkgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2tleVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTQzOiAgIyBlY2hvIDEgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2F1dGhvcml6ZWRcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE0NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0xNDk9ZGV2aWNlIHVzaW5nIHRoZSBzYW1lIGtleTo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xNTAtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxNTE6ICAjIGVjaG8gJGtleSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMva2V5XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxNTI6ICAjIGVjaG8gMiBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMvYXV0aG9yaXplZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTUzLVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTE4Nj1zeXN0ZW1zIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHJlYWRpbmcgYGAxYGAgZnJvbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTg3OmBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9kb21haW5YL2lvbW11X2RtYV9wcm90ZWN0aW9uYGAgYXR0cmlidXRlLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTg4LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTE5NT1mb2xsb3dpbmcgYGB1ZGV2YGAgcnVsZTo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xOTYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxOTc6ICBBQ1RJT049PVwmIzM0O2FkZFwmIzM0OywgU1VCU1lTVEVNPT1cJiMzNDt0aHVuZGVyYm9sdFwmIzM0OywgQVRUUlN7aW9tbXVfZG1hX3Byb3RlY3Rpb259PT1cJiMzNDsxXCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PT1cJiMzNDswXCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PVwmIzM0OzFcJiMzNDtcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE5OC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yNTA9b2YgdGhlIGhvc3Qgb3IgZGV2aWNlLiBFeGFtcGxlIG9uIGhvdyB0byB1cGRhdGUgSW50ZWwgTlVDNmk3S1lLXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjUyLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MjUzOiAgIyBkZCBpZj1LWUtfVEJUX0ZXXzAwMTguYmluIG9mPS9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV9ub25fYWN0aXZlMC9udm1lbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjU0LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI1Nj11cGdyYWRlIHByb2Nlc3MgYXMgZm9sbG93czo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNTctXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyNTg6ICAjIGVjaG8gMSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvbnZtX2F1dGhlbnRpY2F0ZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjU5LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI2ND1jb21tYW5kczo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjUtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyNjY6ICAjIGNhdCAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMC9udm1fYXV0aGVudGljYXRlXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjctICAweDBcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI2ODogICMgY2F0IC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV92ZXJzaW9uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjktICAxOC4wXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mjg1PWlzIHRvIGZpcnN0IHB1dCB0aGUgVVNCNCBwb3J0IGludG8gb2ZmbGluZSBtb2RlOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI4Ni1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI4NzogICMgZWNobyAxIFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMC91c2I0X3BvcnQxL29mZmxpbmVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI4OC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yOTE9Zm9yIHRoZSByZXRpbWVyczo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yOTItXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyOTM6ICAjIGVjaG8gMSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9yZXNjYW5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI5NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yOTg9bW9kZSkgc28gYWZ0ZXIgd3JpdGluZyBgYDFgYCB0byBgYG52bV9hdXRoZW50aWNhdGVgYCBvbmUgc2hvdWxkIHdhaXQgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzAwLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzAxOiAgIyBlY2hvIDEgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL3VzYjRfcG9ydDEvcmVzY2FuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zMDItXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzA0PWZ1bmN0aW9uYWwgc3RhdGUgYWdhaW46OlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA1LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzA2OiAgIyBlY2hvIDAgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL3VzYjRfcG9ydDEvb2ZmbGluZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA3LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTMyMT1UaGUgZHJpdmVyIHNlbmRzIGBgS09CSl9DSEFOR0VgYCBldmVudHMgdG8gdXNlcnNwYWNlIHdoZW4gdGhlcmUgaXMgYVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzIyOnR1bm5lbGluZyBjaGFuZ2UgaW4gdGhlIGBgdGh1bmRlcmJvbHRfZG9tYWluYGAuIFRoZSBub3RpZmljYXRpb24gY2Fycmllc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzIzLWZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXM6OlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTM2MT1kbyBpcyB0byBjb25uZWN0IGEgVGh1bmRlcmJvbHQgY2FibGUgYmV0d2VlbiB0aGUgdHdvIGhvc3RzOyB0aGVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM2MjpgYHRodW5kZXJib2x0LW5ldGBgIGRyaXZlciBpcyBsb2FkZWQgYXV0b21hdGljYWxseS4gSWYgdGhlIG90aGVyIGhvc3QgaXNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM2MzphbHNvIExpbnV4IHlvdSBzaG91bGQgbG9hZCBgYHRodW5kZXJib2x0LW5ldGBgIG1hbnVhbGx5IG9uIG9uZSBob3N0IChpdFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzY0LWRvZXMgbm90IG1hdHRlciB3aGljaCBvbmUpOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM2NS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM2NjogICMgbW9kcHJvYmUgdGh1bmRlcmJvbHQtbmV0XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNjctXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzcxPVRoZSBkcml2ZXIgd2lsbCBjcmVhdGUgb25lIHZpcnR1YWwgZXRoZXJuZXQgaW50ZXJmYWNlIHBlciBUaHVuZGVyYm9sdFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzcyOnBvcnQgd2hpY2ggYXJlIG5hbWVkIGxpa2UgYGB0aHVuZGVyYm9sdDBgYCBhbmQgc28gb24uIEZyb20gdGhpcyBwb2ludFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzczLXlvdSBjYW4gZWl0aGVyIHVzZSBzdGFuZGFyZCB1c2Vyc3BhY2UgdG9vbHMgbGlrZSBgYGlwYGAgdG9cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zNzk9c3RyZWFtaW5nIGRhdGEgZGlyZWN0bHkgb3ZlciBhIGNhYmxlIGFzIHdlbGwgKGFrYS4gVVNCNFNUUkVBTSkuIFRoaXMgaXNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4MDpwb3NzaWJsZSB0aHJvdWdoIGBgdGh1bmRlcmJvbHQtc3RyZWFtYGAgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzgxLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzgyOlNpbWlsYXJseSB0byBgYHRodW5kZXJib2x0LW5ldGBgIHlvdSBsb2FkIHRoZSBkcml2ZXIgZmlyc3Qgb24gb25lIGVuZDo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zODMtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozODQ6ICBob3N0MSAjIG1vZHByb2JlIHRodW5kZXJib2x0LXN0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg1LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mzg2PVRoZW4geW91IGNvbmZpZ3VyZSBpdCB2aWEgYGBDb25maWdGU2BgOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4Ny1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4ODogIGhvc3QxICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg5LSAgaG9zdDEgIyBta2RpciAtcCAwLTEuMC9kYXRhXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mzk3PXlvdSBhdXRvbWF0aWNhbGx5OjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM5OC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM5OTogIGhvc3QyICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDAwLSAgaG9zdDIgIyBta2RpciAtcCAwLTMuMC9kYXRhXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9NDEzPU9uY2UgeW91IGFyZSBkb25lIHdpdGggdGhlIHN0cmVhbSB5b3UgY2FuIHJlbW92ZSB0aGVtOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQxNC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjQxNTogIGhvc3QyICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDE2LSAgaG9zdDIgIyBybWRpciAtcCAwLTEuMC9kYXRhXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MTc6ICBob3N0MSAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQxOC0gIGhvc3QxICMgcm1kaXIgLXAgMC0zLjAvZGF0YVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTQyMz1JdCBpcyBwb3NzaWJsZSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgc3RyZWFtIGFuZCB5b3UgY2FuIGhhdmUgYm90aCBzdHJlYW1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjQyNDphbmQgYGB0aHVuZGVyYm9sdC1uZXRgYCBpbiB1c2Ugc2ltdWx0YW5lb3VzbHkuIEZvciBleGFtcGxlIHdlIGNhbiBjcmVhdGVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQyNS10d28gc3RyZWFtcyB3aXRoIG5hbWUgYGBjb250cm9sYGAgYW5kIGBgZGF0YWBgIGxpa2UgdGhpczo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MjYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0Mjc6ICBob3N0MSAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQyOC0gIGhvc3QxICMgbWtkaXIgMC0xLjBcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD00NDI9YSBzeXNmcyBhdHRyaWJ1dGUgY2FsbGVkIFwmIzM0O2ZvcmNlX3Bvd2VyXCYjMzQ7LCBzZWVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjQ0MzpEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWludGVsLXdtaS10aHVuZGVyYm9sdCBmb3IgZGV0YWlscy5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQ0NC1cbi0tXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L3NucC10ZHgtdGhyZWF0LW1vZGVsLnJzdD0xNz10aGUga2VybmVsIHRocm91Z2ggdmFyaW91cyBuZXR3b3JraW5nIG9yIGxpbWl0ZWQgSFctc3BlY2lmaWMgZXhwb3NlZFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3Q6MTg6aW50ZXJmYWNlcyAoVVNCLCB0aHVuZGVyYm9sdCkuIFRoZSBnb2FsIG9mIHRoaXMgZG9jdW1lbnQgaXMgdG8gZXhwbGFpblxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3QtMTktYWRkaXRpb25hbCBhdHRhY2sgdmVjdG9ycyB0aGF0IGFyaXNlIGluIHRoZSBjb25maWRlbnRpYWwgY29tcHV0aW5nIHNwYWNlXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvaW5kZXgucnN0PTc1PVRvZG9saXN0OlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjAtKiAgIHN2Z2FcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL2luZGV4LnJzdDoxMjE6KiAgIHRodW5kZXJib2x0XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3QtMTIyLSogICB1ZnNcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9pbmRleC5yc3Q9Nzc9VG9kb2xpc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfVFcvYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTEyMy0qICAgc3ZnYVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfVFcvYWRtaW4tZ3VpZGUvaW5kZXgucnN0OjEyNDoqICAgdGh1bmRlcmJvbHRcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjUtKiAgIHVmc1xuLS1cbkRvY3VtZW50YXRpb24vd21pL2RyaXZlci1kZXZlbG9wbWVudC1ndWlkZS5yc3Q9MTE2PXRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgd21pZGV2X2luc3RhbmNlX2NvdW50KCkuXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0LTExNy1cbkRvY3VtZW50YXRpb24vd21pL2RyaXZlci1kZXZlbG9wbWVudC1ndWlkZS5yc3Q6MTE4OlRha2UgYSBsb29rIGF0IGRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3dtaS90aHVuZGVyYm9sdC5jIGZvciBhbiBleGFtcGxlIFdNSSBtZXRob2QgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi93bWkvZHJpdmVyLWRldmVsb3BtZW50LWd1aWRlLnJzdC0xMTktXG4tLVxuTUFJTlRBSU5FUlM9MTM0ODU9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjEzNDg2OkY6XHRkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC93bWkvdGh1bmRlcmJvbHQuY1xuTUFJTlRBSU5FUlMtMTM0ODctXG4tLVxuTUFJTlRBSU5FUlM9MjY5MDY9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjI2OTA3OkY6XHRkcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmNcbk1BSU5UQUlORVJTLTI2OTA4LVxuLS1cbk1BSU5UQUlORVJTPTI2OTE0PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyNjkxNTpUOlx0Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC93ZXN0ZXJpL3RodW5kZXJib2x0LmdpdFxuTUFJTlRBSU5FUlM6MjY5MTY6RjpcdERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0XG5NQUlOVEFJTkVSUzoyNjkxNzpGOlx0ZHJpdmVycy90aHVuZGVyYm9sdC9cbk1BSU5UQUlORVJTOjI2OTE4OkY6XHRpbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0Lmhcbk1BSU5UQUlORVJTLTI2OTE5LVxuLS1cbk1BSU5UQUlORVJTPTI2OTI0PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyNjkyNTpGOlx0ZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvXG5NQUlOVEFJTkVSUy0yNjkyNi1cbi0tXG5kcml2ZXJzL0tjb25maWc9MjE0PXNvdXJjZSBcJiMzNDtkcml2ZXJzL3Jhcy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL0tjb25maWctMjE1LVxuZHJpdmVycy9LY29uZmlnOjIxNjpzb3VyY2UgXCYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL0tjb25maWctMjE3LVxuLS1cbmRyaXZlcnMvTWFrZWZpbGU9MTc1PW9iai0kKENPTkZJR19SQVMpXHRcdCYjNDM7PSByYXMvXG5kcml2ZXJzL01ha2VmaWxlOjE3NjpvYmotJChDT05GSUdfVVNCNClcdFx0JiM0Mzs9IHRodW5kZXJib2x0L1xuZHJpdmVycy9NYWtlZmlsZS0xNzctb2JqLSQoQ09ORklHX0NPUkVTSUdIVClcdFx0JiM0Mzs9IGh3dHJhY2luZy9jb3Jlc2lnaHQvXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYz04Nz1ub3V2ZWF1X3ZnYV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTAwLVx0LyogZG9uJiMzOTt0IHJlZ2lzdGVyIFRodW5kZXJib2x0IGVHUFUgd2l0aCB2Z2Ffc3dpdGNoZXJvbyAqL1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYzoxMDE6XHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYy0xMDItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jPTExMT1ub3V2ZWF1X3ZnYV9maW5pKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTIzLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYzoxMjQ6XHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYy0xMjUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYz0xMjc5PWludCByYWRlb25fZGV2aWNlX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMtMTQzMC1cdFx0cnVudGltZSA9IHRydWU7XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYzoxNDMxOlx0aWYgKCFwY2lfaXNfdGh1bmRlcmJvbHRfYXR0YWNoZWQocmRldi1cdTAwM2VwZGV2KSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE0MzItXHRcdHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2NsaWVudChyZGV2LVx1MDAzZXBkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM9MTUxMz12b2lkIHJhZGVvbl9kZXZpY2VfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYy0xNTIwLVx0cmFkZW9uX2ZpbmkocmRldik7XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYzoxNTIxOlx0aWYgKCFwY2lfaXNfdGh1bmRlcmJvbHRfYXR0YWNoZWQocmRldi1cdTAwM2VwZGV2KSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE1MjItXHRcdHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KHJkZXYtXHUwMDNlcGRldik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmM9MTAzPWludCByYWRlb25fZHJpdmVyX2xvYWRfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmMtMTMzLVx0ICAgICgoZmxhZ3MgXHUwMDI2IFJBREVPTl9JU19JR1ApID09IDApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmM6MTM0Olx0ICAgICFwY2lfaXNfdGh1bmRlcmJvbHRfYXR0YWNoZWQocGRldikpXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYy0xMzUtXHRcdGZsYWdzIHw9IFJBREVPTl9JU19QWDtcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNjAwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDE6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNjAyLXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L01ha2VmaWxlPTg1PW9iai0kKENPTkZJR19GVUpJVFNVX0VTKSAmIzQzOz0gZmplcy9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjg2Om9iai0kKENPTkZJR19VU0I0X05FVCkgJiM0Mzs9IHRodW5kZXJib2x0L1xuZHJpdmVycy9uZXQvTWFrZWZpbGUtODctb2JqLSQoQ09ORklHX05FVERFVlNJTSkgJiM0Mzs9IG5ldGRldnNpbS9cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRodW5kZXJib2x0IE5ldHdvcmtpbmcgQ29kZSBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdgIGFuZCBJIHNlZSB0aGlzIGBjb25maWcgVVNCNF9ORVRgIG9wdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gcmVzaWRlIGluIGBkcml2ZXJzL3RodW5kZXJib2x0L2AsIGFzIEkmIzM5O2QgZXhwZWN0LiBOb3csIG15IG1pbmQgZHJpZnRzIHRvIGZ1enppbmcg4oCTIGFyZSB0aGVyZSBhbnkgZXhpc3Rpbmcgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxscyBkZWZpbmVkIGZvciB0aHVuZGVyYm9sdD8gTm8sIHByb2JhYmx5IG5vdCwgSSBzaG91bGRuJiMzOTt0IGV2ZW4gYm90aGVyIHNlYXJjaGluZyBmb3IgYHN5el9gLiBCdXQgaGFuZyBvbiwgdGhlIHBhdGNoIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBpcyBpbiBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jYC4KClRoZSByZWFsIHF1ZXN0aW9uIGJlY29tZXM6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFRodW5kZXJib2x0IG5ldHdvcmtpbmcgaXMga25vd24gdG8gaW52b2x2ZSBUaHVuZGVyYm9sdCBkb21haW5zIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zLiBUaGUgdHJpY2t5IHBhcnQgaXMsIGNhbiBRRU1VIGVtdWxhdGUgdGhlIFRodW5kZXJib2x0IGhhcmR3YXJlIGl0c2VsZj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGF2YWlsYWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCBmb3IgdGhpcywgc29tZXRoaW5nIHNpbWlsYXIgdG8gaG93IGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgIHdvcmsgZm9yIG90aGVyIHN1YnN5c3RlbXMuIFRpbWUgdG8gZ3JlcCBmb3IgYHRodW5kZXJib2x0YCB3aXRoaW4gYGRyaXZlcnMvdGh1bmRlcmJvbHQvYC4gTWF5YmUgdGhlcmUmIzM5O3MgYSBkZWRpY2F0ZWQgc29mdHdhcmUgdGVzdGluZyBkcml2ZXIgdGhhdCB3b3VsZCBtYWtlIHRoaXMgcHJvY2VzcyBtdWNoIGVhc2llci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdW5pdHx0ZXN0fG1vY2t8c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIzNjEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZz00OT1jb25maWcgVVNCNF9LVU5JVF9URVNUXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWc6NTA6XHRib29sIFwmIzM0O0tVbml0IHRlc3RzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy01MS1cdGRlcGVuZHMgb24gVVNCNCBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZz01ND1jb25maWcgVVNCNF9ETUFfVEVTVFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnOjU1Olx0dHJpc3RhdGUgXCYjMzQ7RE1BIHRyYWZmaWMgdGVzdCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy01Ni1cdGRlcGVuZHMgb24gREVCVUdfRlNcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWctNTktXHQgIGNvbm5lY3Rpb24uIExvb3BiYWNrIGNvbm5lY3Rpb24gY2FuIGJlIGRvbmUgYnkgZWl0aGVyIHNwZWNpYWxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZzo2MDpcdCAgZG9uZ2xlIHRoYXQgaGFzIFRYL1JYIGxpbmVzIGNyb3NzZWQsIG9yIGJ5IHNpbXBseSBjb25uZWN0aW5nIGFcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02MS1cdCAgY2FibGUgYmFjayB0byB0aGUgaG9zdC4gT25seSBlbmFibGUgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02NC1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWc6NjU6XHQgIGNhbGxlZCB0aHVuZGVyYm9sdF9kbWFfdGVzdC5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02Ni1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlPTEwPXRodW5kZXJib2x0LSQoQ09ORklHX1VTQjRfQ09ORklHRlMpICYjNDM7PSBjb25maWdmcy5vXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlOjExOnRodW5kZXJib2x0LSR7Q09ORklHX1VTQjRfS1VOSVRfVEVTVH0gJiM0Mzs9IHRlc3Qub1xuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxMjpDRkxBR1NfdGVzdC5vICYjNDM7PSAkKERJU0FCTEVfU1RSVUNUTEVBS19QTFVHSU4pXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlLTEzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNDp0aHVuZGVyYm9sdF9kbWFfdGVzdC0ke0NPTkZJR19VU0I0X0RNQV9URVNUfSAmIzQzOz0gZG1hX3Rlc3Qub1xuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfVVNCNF9ETUFfVEVTVCkgJiM0Mzs9IHRodW5kZXJib2x0X2RtYV90ZXN0Lm9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTYtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYz0xMzM9c3RhdGljIGludCB0Yl9jZmdfcmVxdWVzdF9lbnF1ZXVlKHN0cnVjdCB0Yl9jdGwgKmN0bCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTEzNS17XG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jOjEzNjpcdFdBUk5fT04odGVzdF9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcdTAwMjZyZXEtXHUwMDNlZmxhZ3MpKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTM3LVx0V0FSTl9PTihyZXEtXHUwMDNlY3RsKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jPTE1MT1zdGF0aWMgdm9pZCB0Yl9jZmdfcmVxdWVzdF9kZXF1ZXVlKHN0cnVjdCB0Yl9jZmdfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTU1LVx0bXV0ZXhfbG9jayhcdTAwMjZjdGwtXHUwMDNlcmVxdWVzdF9xdWV1ZV9sb2NrKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6MTU2Olx0aWYgKCF0ZXN0X2JpdChUQl9DRkdfUkVRVUVTVF9BQ1RJVkUsIFx1MDAyNnJlcS1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTU3LVx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3RsLVx1MDAzZXJlcXVlc3RfcXVldWVfbG9jayk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xNjItXHRjbGVhcl9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcdTAwMjZyZXEtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzoxNjM6XHRpZiAodGVzdF9iaXQoVEJfQ0ZHX1JFUVVFU1RfQ0FOQ0VMRUQsIFx1MDAyNnJlcS1cdTAwM2VmbGFncykpXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTE2NC1cdFx0d2FrZV91cChcdTAwMjZ0Yl9jZmdfcmVxdWVzdF9jYW5jZWxfcXVldWUpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM9MTY4PXN0YXRpYyBib29sIHRiX2NmZ19yZXF1ZXN0X2lzX2FjdGl2ZShzdHJ1Y3QgdGJfY2ZnX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTY5LXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6MTcwOlx0cmV0dXJuIHRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0FDVElWRSwgXHUwMDI2cmVxLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTcxLX1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jPTUyND1zdGF0aWMgdm9pZCB0Yl9jZmdfcmVxdWVzdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTUyNy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6NTI4Olx0aWYgKCF0ZXN0X2JpdChUQl9DRkdfUkVRVUVTVF9DQU5DRUxFRCwgXHUwMDI2cmVxLVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtNTI5LVx0XHRyZXEtXHUwMDNlY2FsbGJhY2socmVxLVx1MDAzZWNhbGxiYWNrX2RhdGEpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTQxND1zdGF0aWMgc3NpemVfdCByZXRpbWVyX3NiX3JlZ3Nfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtNDgzLSAqIEB0aW1lOiAldHJ1ZSBpZiB0aW1lIG1hcmdpbmluZyBpcyB1c2VkIGluc3RlYWQgb2Ygdm9sdGFnZVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6NDg0OiAqIEByaWdodF9oaWdoOiAlZmFsc2UgaWYgbGVmdC9sb3cgbWFyZ2luIHRlc3QgaXMgcGVyZm9ybWVkLCAldHJ1ZSBpZlxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtNDg1LSAqXHRcdHJpZ2h0L2hpZ2hcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYz02ODE9c3RhdGljIGludCBtYXJnaW5pbmdfY2Fwc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqbm90X3VzZWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtNzA1LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6NzA2Olx0c2VxX3ByaW50ZihzLCBcJiMzNDsjIGFsbCBsYW5lcyBzaW11bHRhbmVvdXNseTogJXNcXG5cJiMzNDssXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy03MDctXHRcdCAgc3RyX3llc19ubyhhbGxfbGFuZXMobWFyZ2luaW5nKSkpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTExNTM9c3RhdGljIGludCBtYXJnaW5pbmdfcnVuX3N3KHN0cnVjdCB0Yl9tYXJnaW5pbmcgKm1hcmdpbmluZyxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xMTgzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTE4NDpcdFx0LyogQW55IGVycm9ycyBzdG9wIHRoZSB0ZXN0ICovXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xMTg1LVx0XHRpZiAoZXJyb3JzKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTE0NzM9REVCVUdGU19BVFRSX1JXKG1hcmdpbmluZ19yZXN1bHRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE0NzQtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYzoxNDc1OnN0YXRpYyBzc2l6ZV90IG1hcmdpbmluZ190ZXN0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTQ3Ni1cdFx0XHRcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTUwOS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE1MTA6c3RhdGljIGludCBtYXJnaW5pbmdfdGVzdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqbm90X3VzZWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTExLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTI5LX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE1MzA6REVCVUdGU19BVFRSX1JXKG1hcmdpbmluZ190ZXN0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE1MzEtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM9MTY1MD1zdGF0aWMgc3RydWN0IHRiX21hcmdpbmluZyAqbWFyZ2luaW5nX2FsbG9jKHN0cnVjdCB0Yl9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE3MzgtXHRcdFx0ICAgIFx1MDAyNm1hcmdpbmluZ19yZXN1bHRzX2ZvcHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTczOTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7dGVzdFwmIzM0OywgMDYwMCwgZGlyLCBtYXJnaW5pbmcsIFx1MDAyNm1hcmdpbmluZ190ZXN0X2ZvcHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTc0MC1cdGlmIChpbmRlcGVuZGVudF92b2x0YWdlX21hcmdpbnMobWFyZ2luaW5nKSA9PSBVU0I0X01BUkdJTl9DQVBfVk9MVEFHRV9JTkRQX0dFTl8yXzNfSEwgfHxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMi0vKlxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjM6ICogRE1BIHRyYWZmaWMgdGVzdCBkcml2ZXJcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00LSAqXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIxLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIyOmVudW0gZG1hX3Rlc3RfZnJhbWVfcGRmIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMy1cdERNQV9URVNUX1BERl9GUkFNRV9TVEFSVCA9IDEsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI2LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjI3OnN0cnVjdCBkbWFfdGVzdF9mcmFtZSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Mjg6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmRtYV90ZXN0O1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI5LVx0dm9pZCAqZGF0YTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzM6ZW51bSBkbWFfdGVzdF90ZXN0X2Vycm9yIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNC1cdERNQV9URVNUX05PX0VSUk9SLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0NTpzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRtYV90ZXN0X2Vycm9yX25hbWVzW10gPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDYtXHRbRE1BX1RFU1RfTk9fRVJST1JdID0gXCYjMzQ7bm8gZXJyb3JzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01Ni1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1NzplbnVtIGRtYV90ZXN0X3Jlc3VsdCB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTgtXHRETUFfVEVTVF9OT1RfUlVOLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2MzpzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRtYV90ZXN0X3Jlc3VsdF9uYW1lc1tdID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY0LVx0W0RNQV9URVNUX05PVF9SVU5dID0gXCYjMzQ7bm90IHJ1blwmIzM0Oyxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjktLyoqXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzA6ICogc3RydWN0IGRtYV90ZXN0IC0gRE1BIHRlc3QgZGV2aWNlIGRyaXZlciBwcml2YXRlIGRhdGFcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MS0gKiBAc3ZjOiBYRG9tYWluIHNlcnZpY2UgdGhlIGRyaXZlciBpcyBib3VuZCB0b1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy04Mi0gKiBAbGlua193aWR0aDogRXhwZWN0ZWQgbGluayB3aWR0aCAoR2IvcyksICUwIHRvIHVzZSB3aGF0ZXZlciBpcyBuZWdvdGlhdGVkXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6ODM6ICogQGNyY19lcnJvcnM6IE51bWJlciBvZiBDUkMgZXJyb3JzIGR1cmluZyB0aGUgdGVzdCBydW5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo4NDogKiBAYnVmZmVyX292ZXJmbG93X2Vycm9yczogTnVtYmVyIG9mIGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMgZHVyaW5nIHRoZSB0ZXN0XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtODUtICpcdFx0XHQgICAgcnVuXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTkwLSAqL1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjkxOnN0cnVjdCBkbWFfdGVzdCB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtOTItXHRjb25zdCBzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMDUtXHR1bnNpZ25lZCBpbnQgYnVmZmVyX292ZXJmbG93X2Vycm9ycztcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMDY6XHRlbnVtIGRtYV90ZXN0X3Jlc3VsdCByZXN1bHQ7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTA3Olx0ZW51bSBkbWFfdGVzdF90ZXN0X2Vycm9yIGVycm9yX2NvZGU7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTA4LVx0c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGU7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExMS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMTI6LyogRE1BIHRlc3QgcHJvcGVydHkgZGlyZWN0b3J5IFVVSUQ6IDMxODhjZDEwLTY1MjMtNGE1YS1hNjgyLWZkY2EwN2EyNDhkOCAqL1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjExMzpzdGF0aWMgY29uc3QgdXVpZF90IGRtYV90ZXN0X2Rpcl91dWlkID1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMTQtXHRVVUlEX0lOSVQoMHgzMTg4Y2QxMCwgMHg2NTIzLCAweDRhNWEsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMTc6c3RhdGljIHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRtYV90ZXN0X2RpcjtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMTg6c3RhdGljIHZvaWQgKmRtYV90ZXN0X3BhdHRlcm47XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTE5LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEyMDpzdGF0aWMgdm9pZCBkbWFfdGVzdF9mcmVlX3JpbmdzKHN0cnVjdCBkbWFfdGVzdCAqZHQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTIxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTMzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEzNDpzdGF0aWMgaW50IGRtYV90ZXN0X3N0YXJ0X3JpbmdzKHN0cnVjdCBkbWFfdGVzdCAqZHQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTM1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTYxLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTYyOlx0XHRcdGRtYV90ZXN0X2ZyZWVfcmluZ3MoZHQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE2My1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNzktXHRcdGlmICghcmluZykge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE4MDpcdFx0XHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xODEtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4OS1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE5MDpcdFx0XHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xOTEtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjAxLVx0aWYgKHJldCkge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIwMjpcdFx0ZG1hX3Rlc3RfZnJlZV9yaW5ncyhkdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjAzLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMTMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjE0OnN0YXRpYyB2b2lkIGRtYV90ZXN0X3N0b3BfcmluZ3Moc3RydWN0IGRtYV90ZXN0ICpkdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMTUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMjktXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjMwOlx0ZG1hX3Rlc3RfZnJlZV9yaW5ncyhkdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjMxLX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjMzOnN0YXRpYyB2b2lkIGRtYV90ZXN0X3J4X2NhbGxiYWNrKHN0cnVjdCB0Yl9yaW5nICpyaW5nLCBzdHJ1Y3QgcmluZ19mcmFtZSAqZnJhbWUsXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjM0LVx0XHRcdFx0IGJvb2wgY2FuY2VsZWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjM1LXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyMzY6XHRzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUgKnRmID0gY29udGFpbmVyX29mKGZyYW1lLCB0eXBlb2YoKnRmKSwgZnJhbWUpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIzNzpcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Zi1cdTAwM2VkbWFfdGVzdDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzgtXHRzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gdGJfcmluZ19kbWFfZGV2aWNlKGR0LVx1MDAzZXJ4X3JpbmcpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjY0OnN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3VibWl0X3J4KHN0cnVjdCBkbWFfdGVzdCAqZHQsIHNpemVfdCBucGFja2V0cylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucGFja2V0czsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyNzA6XHRcdHN0cnVjdCBkbWFfdGVzdF9mcmFtZSAqdGY7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjcxLVx0XHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yOTEtXHRcdHRmLVx1MDAzZWZyYW1lLmJ1ZmZlcl9waHkgPSBkbWFfYWRkcjtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyOTI6XHRcdHRmLVx1MDAzZWZyYW1lLmNhbGxiYWNrID0gZG1hX3Rlc3RfcnhfY2FsbGJhY2s7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjkzOlx0XHR0Zi1cdTAwM2VkbWFfdGVzdCA9IGR0O1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI5NC1cdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dGYtXHUwMDNlZnJhbWUubGlzdCk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMwMS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMDI6c3RhdGljIHZvaWQgZG1hX3Rlc3RfdHhfY2FsbGJhY2soc3RydWN0IHRiX3JpbmcgKnJpbmcsIHN0cnVjdCByaW5nX2ZyYW1lICpmcmFtZSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMDMtXHRcdFx0XHQgYm9vbCBjYW5jZWxlZClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMDQte1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMwNTpcdHN0cnVjdCBkbWFfdGVzdF9mcmFtZSAqdGYgPSBjb250YWluZXJfb2YoZnJhbWUsIHR5cGVvZigqdGYpLCBmcmFtZSk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzA2Olx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRmLVx1MDAzZWRtYV90ZXN0O1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMwNy1cdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSB0Yl9yaW5nX2RtYV9kZXZpY2UoZHQtXHUwMDNldHhfcmluZyk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMxNC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMTU6c3RhdGljIGludCBkbWFfdGVzdF9zdWJtaXRfdHgoc3RydWN0IGRtYV90ZXN0ICpkdCwgc2l6ZV90IG5wYWNrZXRzKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMxNi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMyMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5wYWNrZXRzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMyMTpcdFx0c3RydWN0IGRtYV90ZXN0X2ZyYW1lICp0ZjtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMjItXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMyOC1cdFx0dGYtXHUwMDNlZnJhbWUuc2l6ZSA9IDA7IC8qIG1lYW5zIDQwOTYgKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMjk6XHRcdHRmLVx1MDAzZWRtYV90ZXN0ID0gZHQ7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzMwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMzMTpcdFx0dGYtXHUwMDNlZGF0YSA9IGttZW1kdXAoZG1hX3Rlc3RfcGF0dGVybiwgRE1BX1RFU1RfRlJBTUVfU0laRSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzMyLVx0XHRpZiAoIXRmLVx1MDAzZWRhdGEpIHtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzQ1LVx0XHR0Zi1cdTAwM2VmcmFtZS5idWZmZXJfcGh5ID0gZG1hX2FkZHI7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzQ2Olx0XHR0Zi1cdTAwM2VmcmFtZS5jYWxsYmFjayA9IGRtYV90ZXN0X3R4X2NhbGxiYWNrO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM0Ny1cdFx0dGYtXHUwMDNlZnJhbWUuc29mID0gRE1BX1RFU1RfUERGX0ZSQU1FX1NUQVJUO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz0zNjI9c3RhdGljIGludCBfX2ZvcHMgIyMgX3Nob3codm9pZCAqZGF0YSwgdTY0ICp2YWwpXHRcdFxcXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM2NC1cdHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMgPSBkYXRhO1x0XHRcdFx0XFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozNjU6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1x0XFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNjYtXHRpbnQgcmV0O1x0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTM3NT1zdGF0aWMgaW50IF9fZm9wcyAjIyBfc3RvcmUodm9pZCAqZGF0YSwgdTY0IHZhbClcdFx0XFxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzc3LVx0c3RydWN0IHRiX3NlcnZpY2UgKnN2YyA9IGRhdGE7XHRcdFx0XHRcXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjM3ODpcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XHRcXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM3OS1cdGludCByZXQ7XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9MzkxPURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShfX2ZvcHMgIyMgX2ZvcHMsIF9fZm9wcyAjIyBfc2hvdyxcdFxcXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM5My1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozOTQ6c3RhdGljIHZvaWQgbGFuZXNfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM5NS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTM5OT1zdGF0aWMgaW50IGxhbmVzX3ZhbGlkYXRlKHU2NCB2YWwpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQwMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0MDQ6c3RhdGljIHZvaWQgbGFuZXNfc2V0KHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCB2YWwpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDA1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NDA4PURNQV9URVNUX0RFQlVHRlNfQVRUUihsYW5lcywgbGFuZXNfZ2V0LCBsYW5lc192YWxpZGF0ZSwgbGFuZXNfc2V0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MDktXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDEwOnN0YXRpYyB2b2lkIHNwZWVkX2dldChjb25zdCBzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCB1NjQgKnZhbClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MTEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00MTU9c3RhdGljIGludCBzcGVlZF92YWxpZGF0ZSh1NjQgdmFsKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MjctXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDI4OnN0YXRpYyB2b2lkIHNwZWVkX3NldChzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCB1NjQgdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQyOS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQzMj1ETUFfVEVTVF9ERUJVR0ZTX0FUVFIoc3BlZWQsIHNwZWVkX2dldCwgc3BlZWRfdmFsaWRhdGUsIHNwZWVkX3NldCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDMzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQzNDpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3JlY2VpdmVfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQzNS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQzOT1zdGF0aWMgaW50IHBhY2tldHNfdG9fcmVjZWl2ZV92YWxpZGF0ZSh1NjQgdmFsKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NDMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDQ0OnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fcmVjZWl2ZV9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NDUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NDg9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fcmVjZWl2ZSwgcGFja2V0c190b19yZWNlaXZlX2dldCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ1MTpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3NlbmRfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ1Mi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQ1Nj1zdGF0aWMgaW50IHBhY2tldHNfdG9fc2VuZF92YWxpZGF0ZSh1NjQgdmFsKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NjAtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDYxOnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fc2VuZF9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NjIte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NjU9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fc2VuZCwgcGFja2V0c190b19zZW5kX2dldCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDY3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ2ODpzdGF0aWMgaW50IGRtYV90ZXN0X3NldF9ib25kaW5nKHN0cnVjdCBkbWFfdGVzdCAqZHQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDY5LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDgwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ4MTpzdGF0aWMgYm9vbCBkbWFfdGVzdF92YWxpZGF0ZV9jb25maWcoc3RydWN0IGRtYV90ZXN0ICpkdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00ODIte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00OTAtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDkxOnN0YXRpYyB2b2lkIGRtYV90ZXN0X2NoZWNrX2Vycm9ycyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCBpbnQgcmV0KVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ5Mi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUwOS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MTA6c3RhdGljIGludCB0ZXN0X3N0b3JlKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTExLXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01MTItXHRzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjID0gZGF0YTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MTM6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUyOS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MzA6XHRkZXZfZGJnKFx1MDAyNnN2Yy1cdTAwM2VkZXYsIFwmIzM0O0RNQSB0ZXN0IHN0YXJ0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01MzEtXHRpZiAoZHQtXHUwMDNlbGlua19zcGVlZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTM3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjUzODpcdGlmICghZG1hX3Rlc3RfdmFsaWRhdGVfY29uZmlnKGR0KSkge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjUzOTpcdFx0ZGV2X2VycihcdTAwMjZzdmMtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIHRlc3QgY29uZmlndXJhdGlvblxcblwmIzM0Oyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTQwLVx0XHRkdC1cdTAwM2VlcnJvcl9jb2RlID0gRE1BX1RFU1RfQ09ORklHX0VSUk9SO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NDMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTQ0Olx0cmV0ID0gZG1hX3Rlc3Rfc2V0X2JvbmRpbmcoZHQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU0NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU1MTpcdHJldCA9IGRtYV90ZXN0X3N0YXJ0X3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NTItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU1OS1cdFx0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2ZHQtXHUwMDNlY29tcGxldGUpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU2MDpcdFx0cmV0ID0gZG1hX3Rlc3Rfc3VibWl0X3J4KGR0LCBkdC1cdTAwM2VwYWNrZXRzX3RvX3JlY2VpdmUpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU2MS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NjgtXHRpZiAoZHQtXHUwMDNlcGFja2V0c190b19zZW5kKSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTY5Olx0XHRyZXQgPSBkbWFfdGVzdF9zdWJtaXRfdHgoZHQsIGR0LVx1MDAzZXBhY2tldHNfdG9fc2VuZCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTcwLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU4NS1vdXRfc3RvcDpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1ODY6XHRkbWFfdGVzdF9zdG9wX3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01ODctb3V0X3VubG9jazpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1ODg6XHRkbWFfdGVzdF9jaGVja19lcnJvcnMoZHQsIHJldCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTg5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmR0LVx1MDAzZWxvY2spO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU5MC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1OTE6XHRkZXZfZGJnKFx1MDAyNnN2Yy1cdTAwM2VkZXYsIFwmIzM0O0RNQSB0ZXN0ICVzXFxuXCYjMzQ7LCBkbWFfdGVzdF9yZXN1bHRfbmFtZXNbZHQtXHUwMDNlcmVzdWx0XSk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTkyLVx0cmV0dXJuIHJldDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTMtfVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU5NDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUodGVzdF9mb3BzLCBOVUxMLCB0ZXN0X3N0b3JlLCBcJiMzNDslbGx1XFxuXCYjMzQ7KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTUtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NTk2PXN0YXRpYyBpbnQgc3RhdHVzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpub3RfdXNlZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTk4LVx0c3RydWN0IHRiX3NlcnZpY2UgKnN2YyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1OTk6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwMC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwNS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2MDY6XHRzZXFfcHJpbnRmKHMsIFwmIzM0O3Jlc3VsdDogJXNcXG5cJiMzNDssIGRtYV90ZXN0X3Jlc3VsdF9uYW1lc1tkdC1cdTAwM2VyZXN1bHRdKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MDctXHRpZiAoZHQtXHUwMDNlcmVzdWx0ID09IERNQV9URVNUX05PVF9SVU4pXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYxNC1cdFx0ICAgZHQtXHUwMDNlYnVmZmVyX292ZXJmbG93X2Vycm9ycyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjE1Olx0c2VxX3ByaW50ZihzLCBcJiMzNDtlcnJvcjogJXNcXG5cJiMzNDssIGRtYV90ZXN0X2Vycm9yX25hbWVzW2R0LVx1MDAzZWVycm9yX2NvZGVdKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MTYtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTYyMT1ERUZJTkVfU0hPV19BVFRSSUJVVEUoc3RhdHVzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjIzOnN0YXRpYyB2b2lkIGRtYV90ZXN0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2Mjc6XHRkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihcJiMzNDtkbWFfdGVzdFwmIzM0Oywgc3ZjLVx1MDAzZWRlYnVnZnNfZGlyKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjgtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzNS1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3RhdHVzXCYjMzQ7LCAwNDAwLCBkZWJ1Z2ZzX2Rpciwgc3ZjLCBcdTAwMjZzdGF0dXNfZm9wcyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjM2Olx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0ZXN0XCYjMzQ7LCAwMjAwLCBkZWJ1Z2ZzX2Rpciwgc3ZjLCBcdTAwMjZ0ZXN0X2ZvcHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzNy19XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjM4LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjYzOTpzdGF0aWMgaW50IGRtYV90ZXN0X3Byb2JlKHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCB0Yl9zZXJ2aWNlX2lkICppZClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDAte1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY0MS1cdHN0cnVjdCB0Yl94ZG9tYWluICp4ZCA9IHRiX3NlcnZpY2VfcGFyZW50KHN2Yyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjQyOlx0c3RydWN0IGRtYV90ZXN0ICpkdDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDMtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY1My1cdHRiX3NlcnZpY2Vfc2V0X2RydmRhdGEoc3ZjLCBkdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjU0Olx0ZG1hX3Rlc3RfZGVidWdmc19pbml0KHN2Yyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjU1LVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NTgtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjU5OnN0YXRpYyB2b2lkIGRtYV90ZXN0X3JlbW92ZShzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2MC17XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjYxOlx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRiX3NlcnZpY2VfZ2V0X2RydmRhdGEoc3ZjKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NjItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjYzLVx0bXV0ZXhfbG9jayhcdTAwMjZkdC1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2NjQ6XHRkZWJ1Z2ZzX2xvb2t1cF9hbmRfcmVtb3ZlKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCBzdmMtXHUwMDNlZGVidWdmc19kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2NS1cdG11dGV4X3VubG9jayhcdTAwMjZkdC1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjY3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY2ODpzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGRtYV90ZXN0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2OS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY3MS1cdCAqIE5vIG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbCBoZXJlLiBJZiB1c2Vyc3BhY2UgaXMgd3JpdGluZ1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3MjpcdCAqIHRvIHRoZSB0ZXN0IGF0dHJpYnV0ZSB3aGVuIHN1c3BlbmQgc3RhcnRlZCwgaXQgY29tZXMgb3V0IGZyb21cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzMtXHQgKiB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoKSB3aXRoIC1FUkVTVEFSVFNZUyBhbmQgdGhlXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njc0Olx0ICogRE1BIHRlc3QgZmFpbHMgdGVhcmluZyBkb3duIHRoZSByaW5ncy4gT25jZSB1c2Vyc3BhY2UgaXNcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzUtXHQgKiB0aGF3ZWQgdGhlIGtlcm5lbCByZXN0YXJ0cyB0aGUgd3JpdGUgc3lzY2FsbCBlZmZlY3RpdmVseVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3NjpcdCAqIHJlLXJ1bm5pbmcgdGhlIHRlc3QuXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjc3LVx0ICovXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4MC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODE6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBkbWFfdGVzdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4Mi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4NS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRtYV90ZXN0X3BtX29wcyA9IHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODc6XHRTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhkbWFfdGVzdF9zdXNwZW5kLCBkbWFfdGVzdF9yZXN1bWUpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg4LX07XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg5LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHRiX3NlcnZpY2VfaWQgZG1hX3Rlc3RfaWRzW10gPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjkxOlx0eyBUQl9TRVJWSUNFKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCAxKSB9LFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5Mi1cdHsgfSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTMtfTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2OTQ6TU9EVUxFX0RFVklDRV9UQUJMRSh0YnN2YywgZG1hX3Rlc3RfaWRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTUtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njk2OnN0YXRpYyBzdHJ1Y3QgdGJfc2VydmljZV9kcml2ZXIgZG1hX3Rlc3RfZHJpdmVyID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5Ny1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjk4LVx0XHQub3duZXIgPSBUSElTX01PRFVMRSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2OTk6XHRcdC5uYW1lID0gXCYjMzQ7dGh1bmRlcmJvbHRfZG1hX3Rlc3RcJiMzNDssXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzAwOlx0XHQucG0gPSBcdTAwMjZkbWFfdGVzdF9wbV9vcHMsXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzAxLVx0fSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDI6XHQucHJvYmUgPSBkbWFfdGVzdF9wcm9iZSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDM6XHQucmVtb3ZlID0gZG1hX3Rlc3RfcmVtb3ZlLFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwNDpcdC5pZF90YWJsZSA9IGRtYV90ZXN0X2lkcyxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDUtfTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDYtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzA3OnN0YXRpYyBpbnQgX19pbml0IGRtYV90ZXN0X2luaXQodm9pZClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDgte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MTEtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzEyOlx0ZG1hX3Rlc3RfcGF0dGVybiA9IGttYWxsb2MoRE1BX1RFU1RfRlJBTUVfU0laRSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzEzOlx0aWYgKCFkbWFfdGVzdF9wYXR0ZXJuKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcxNC1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcxNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjXHRETUFfVEVTVF9GUkFNRV9TSVpFIC8gc2l6ZW9mKGRhdGFfdmFsdWUpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTc6XHRcdCgodTMyICopZG1hX3Rlc3RfcGF0dGVybilbaV0gPSBkYXRhX3ZhbHVlJiM0MzsmIzQzOztcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MTgtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzE5Olx0ZG1hX3Rlc3RfZGlyID0gdGJfcHJvcGVydHlfY3JlYXRlX2RpcihcdTAwMjZkbWFfdGVzdF9kaXJfdXVpZCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzIwOlx0aWYgKCFkbWFfdGVzdF9kaXIpIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MjEtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcyNC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjU6XHR0Yl9wcm9wZXJ0eV9hZGRfaW1tZWRpYXRlKGRtYV90ZXN0X2RpciwgXCYjMzQ7cHJ0Y2lkXCYjMzQ7LCAxKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjY6XHR0Yl9wcm9wZXJ0eV9hZGRfaW1tZWRpYXRlKGRtYV90ZXN0X2RpciwgXCYjMzQ7cHJ0Y3ZlcnNcJiMzNDssIDEpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcyNzpcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcJiMzNDtwcnRjcmV2c1wmIzM0OywgMCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI4Olx0dGJfcHJvcGVydHlfYWRkX2ltbWVkaWF0ZShkbWFfdGVzdF9kaXIsIFwmIzM0O3BydGNzdG5zXCYjMzQ7LCAwKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MjktXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzMwOlx0cmV0ID0gdGJfcmVnaXN0ZXJfcHJvcGVydHlfZGlyKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCBkbWFfdGVzdF9kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MzQ6XHRyZXQgPSB0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0MC1lcnJfdW5yZWdpc3Rlcl9kaXI6XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzQxOlx0dGJfdW5yZWdpc3Rlcl9wcm9wZXJ0eV9kaXIoXCYjMzQ7ZG1hX3Rlc3RcJiMzNDssIGRtYV90ZXN0X2Rpcik7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzQyLWVycl9mcmVlX2RpcjpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDM6XHR0Yl9wcm9wZXJ0eV9mcmVlX2RpcihkbWFfdGVzdF9kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0NC1lcnJfZnJlZV9wYXR0ZXJuOlxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc0NTpcdGtmcmVlKGRtYV90ZXN0X3BhdHRlcm4pO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0Ni1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzQ4LX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDk6bW9kdWxlX2luaXQoZG1hX3Rlc3RfaW5pdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1MTpzdGF0aWMgdm9pZCBfX2V4aXQgZG1hX3Rlc3RfZXhpdCh2b2lkKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc1Mi17XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzUzOlx0dGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1NDpcdHRiX3VucmVnaXN0ZXJfcHJvcGVydHlfZGlyKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCBkbWFfdGVzdF9kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1NTpcdHRiX3Byb3BlcnR5X2ZyZWVfZGlyKGRtYV90ZXN0X2Rpcik7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzU2Olx0a2ZyZWUoZG1hX3Rlc3RfcGF0dGVybik7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzU3LX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NTg6bW9kdWxlX2V4aXQoZG1hX3Rlc3RfZXhpdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzU5LVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz03NjE9TU9EVUxFX0FVVEhPUihcJiMzNDtNaWthIFdlc3RlcmJlcmcgXHUwMDNjbWlrYS53ZXN0ZXJiZXJnQGxpbnV4LmludGVsLmNvbVx1MDAzZVwmIzM0Oyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzYyOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtUaHVuZGVyYm9sdC9VU0I0IERNQSB0cmFmZmljIHRlc3QgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NjMtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTEyNDA9X19pY21fdHJfZGV2aWNlX2Nvbm5lY3RlZChzdHJ1Y3QgdGIgKnRiLCBjb25zdCBzdHJ1Y3QgaWNtX3BrZ19oZWFkZXIgKmhkcixcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTQtXHQgKiBDdXJyZW50bHkgd2UgZG9uJiMzOTt0IHVzZSB0aGUgUW9TIGluZm9ybWF0aW9uIGNvbWluZyB3aXRoIHRoZVxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYzoxMjU1Olx0ICogZGV2aWNlIGNvbm5lY3RlZCBtZXNzYWdlIHNvIHNpbXBseSBqdXN0IGlnbm9yZSB0aGF0IGV4dHJhXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTYtXHQgKiBwYWNrZXQgZm9yIG5vdy5cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTI0Nzk9c3RydWN0IHRiICppY21fcHJvYmUoc3RydWN0IHRiX25oaSAqbmhpKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmMtMjUxNC1cdFx0LypcbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmM6MjUxNTpcdFx0ICogTlZNIHVwZ3JhZGUgaGFzIG5vdCBiZWVuIHRlc3RlZCBvbiBBcHBsZSBzeXN0ZW1zIGFuZFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy0yNTE2LVx0XHQgKiB0aGV5IGRvbiYjMzk7dCBwcm92aWRlIGltYWdlcyBwdWJsaWNseSBlaXRoZXIuIFRvIGJlIG9uXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYz03Nj1zdGF0aWMgdm9pZCByaW5nX2ludGVycnVwdF9hY3RpdmUoc3RydWN0IHRiX3JpbmcgKnJpbmcsIGJvb2wgYWN0aXZlKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmMtMTAyLVx0XHQgKiB0byBwcmV2ZW50IGNvbmRpdGlvbnMgdGhhdCBtYXkgb2NjdXIgd2hlcmUgdHdvXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jOjEwMzpcdFx0ICogTVNJWCBpbnRlcnJ1cHRzIGFyZSBzaW11bHRhbmVvdXNseSBhY3RpdmUgYW5kXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jLTEwNC1cdFx0ICogcmVhZGluZyB0aGUgcmVnaXN0ZXIgY2xlYXJzIGJvdGggb2YgdGhlbS5cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jPTExNjM9c3RhdGljIHN0cnVjdCB0YiAqbmhpX3NlbGVjdF9jbShzdHJ1Y3QgdGJfbmhpICpuaGkpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYy0xMTY3LVx0LypcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmM6MTE2ODpcdCAqIFVTQjQgY2FzZSBpcyBzaW1wbGUuIElmIHdlIGdvdCBjb250cm9sIG9mIGFueSBvZiB0aGVcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmMtMTE2OS1cdCAqIGNhcGFiaWxpdGllcywgd2UgdXNlIHNvZnR3YXJlIENNLlxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3dpdGNoLmM9MzY0MT12b2lkIHRiX3N3aXRjaF9zdXNwZW5kKHN0cnVjdCB0Yl9zd2l0Y2ggKnN3LCBib29sIHJ1bnRpbWUpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zd2l0Y2guYy0zNjQ5LVx0LypcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzQ0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVGh1bmRlcmJvbHQgTmV0d29yayBEcml2ZXIgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGVzdGluZyB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYHRodW5kZXJib2x0LW5ldGAgZHJpdmVyLCBhbmQgSSBzZWUgYSBjb3VwbGUgb2YgZXhpc3RpbmcgVVNCNCB0ZXN0IGNvbmZpZ3VyYXRpb25zOiBgVVNCNF9LVU5JVF9URVNUYCBhbmQgYFVTQjRfRE1BX1RFU1RgLiBCdXQsIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIgaXRzZWxmPyBJdCByZWxpZXMgb24gVGh1bmRlcmJvbHQgWERvbWFpbiBzZXJ2aWNlcywgc28gdGhhdCYjMzk7cyB0aGUga2V5LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGNyZWF0ZSBhIG1vY2sgVGh1bmRlcmJvbHQgZGV2aWNlIHdpdGhpbiBRRU1VPyBMZXQgbWUgY2hlY2sgZm9yIGV4aXN0aW5nIGB1c2I0YCBvciBgdGh1bmRlcmJvbHRgIGVtdWxhdGlvbiB3aXRoaW4gUUVNVSBmaXJzdC4gRGFybiwgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBubyBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGVtdWxhdGlvbiBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgc2VyaW91cyByb2FkYmxvY2suCgpIb2xkIG9uIGEgc2Vjb25kLCB3aGF0IGlmIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgZHJpdmVyIHRocm91Z2ggYW4gYWx0ZXJuYXRlIG1ldGhvZCwgc2ltaWxhciB0byBob3cgd2UgaGF2ZSBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aGNpYCBmb3IgVVNCPyBJcyB0aGVyZSBhbnl0aGluZyBsaWtlIGEgYHRodW5kZXJib2x0X2h3c2ltYCBvciBhIHNpbWlsYXIgdmlydHVhbGl6ZWQgaGFyZHdhcmUgbW9kZWwgYXZhaWxhYmxlPyBJdCBpcyB1bmxpa2VseSwgYnV0IGxldCBtZSBjaGVjay4KCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgYSB3YXkgdG8gY3JlYXRlIGEgbW9jayBUaHVuZGVyYm9sdCBkZXZpY2UuIFRpbWUgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIGEgbW9jayBvciB0ZXN0IGhhcm5lc3MuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYHRiX3JlZ2lzdGVyX3Byb3BlcnR5X2RpcmAgb3IgYHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyYC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGxlYWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTUwMT1zdGF0aWMgaW50IF9faW5pdCB0Ym5ldF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE1MjItXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTUyMzpcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFx1MDAyNnRibmV0X2RyaXZlcik7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTUyNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTcwNz1zdGF0aWMgaW50IF9faW5pdCBkbWFfdGVzdF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MzQ6XHRyZXQgPSB0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNjQ4PXN0YXRpYyBpbnQgX19pbml0IHRic3RyZWFtX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NjktXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE2NzA6XHRyZXQgPSB0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZ0YnN0cmVhbV9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjcxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYz05Mzk9dGJfeGRwX3NjaGVkdWxlX3JlcXVlc3Qoc3RydWN0IHRiICp0YiwgY29uc3Qgc3RydWN0IHRiX3hkcF9oZWFkZXIgKmhkcixcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NjEtLyoqXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzo5NjI6ICogdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXIoKSAtIFJlZ2lzdGVyIFhEb21haW4gc2VydmljZSBkcml2ZXJcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTk2My0gKiBAZHJ2OiBEcml2ZXIgdG8gcmVnaXN0ZXJcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NjgtICovXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzo5Njk6aW50IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTcwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NzMtfVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6OTc0OkVYUE9SVF9TWU1CT0xfR1BMKHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTk3NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0Lmg9NDY2PXN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciB7XG4tLVxuaW5jbHVkZS9saW51eC90aHVuZGVyYm9sdC5oLTQ3OS1cbmluY2x1ZGUvbGludXgvdGh1bmRlcmJvbHQuaDo0ODA6aW50IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KTtcbmluY2x1ZGUvbGludXgvdGh1bmRlcmJvbHQuaC00ODEtdm9pZCB0Yl91bnJlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MjYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUaHVuZGVyYm9sdCBEcml2ZXIgU2VjdXJpdHkgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgVGh1bmRlcmJvbHQgZHJpdmVyIHNpdHVhdGlvbiwgYW5kIHRoZSBpbW1lZGlhdGUgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXJlIGlzbiYjMzk7dCBhbiBvYnZpb3VzICYjMzQ7bW9jayBkcml2ZXImIzM0OyBwcmVzZW50LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXJgIHNlZW1zIGV4Y2x1c2l2ZWx5IGNhbGxlZCBieSBgdGJuZXRgLCBgZG1hX3Rlc3RgLCBhbmQgYHN0cmVhbWAuIE15IGluaXRpYWwgY29uY2VybiBpcyBob3cgZWFzaWx5IGl0IGNhbiBiZSByZWFjaGVkLiBCdXQsIHdhaXQuLi4gY291bGQgYHRibmV0YCBiZSBmdXp6YWJsZSB0aHJvdWdoIGEgc2Vjb25kYXJ5IHBhdGh3YXk/CgpOb3csIGNvbnNpZGVyaW5nIHNjZW5hcmlvcyB3aGVyZSBUaHVuZGVyYm9sdCBoYXJkd2FyZSBtaWdodCBiZSBhYnNlbnQuLi4gSWYgdGhlcmUmIzM5O3Mgbm8gVGh1bmRlcmJvbHQgaGFyZHdhcmUgdG8gYmVnaW4gd2l0aCwgdGhlIGB0aHVuZGVyYm9sdGAgZHJpdmVyIHdvbiYjMzk7dCBwcm9iZSBhbnkgY29udHJvbGxlcnMuIFRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIGlmIG5vIGNvbnRyb2xsZXJzIGFyZSBwcm9iZWQsIGl0IGxvZ2ljYWxseSBmb2xsb3dzIHRoYXQgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQuIFRoZSByaXBwbGUgZWZmZWN0IGNvbnRpbnVlczogaWYgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQsIGB0Ym5ldF9wcm9iZWAg4oCTIHdoaWNoIGlzIGtleSB0byB0cmlnZ2VyaW5nIHRoZSBgdGJuZXRgIGRyaXZlciDigJMgaXMgbmV2ZXIgaW52b2tlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBgdGJuZXRgIGRyaXZlciwgYXQgbGVhc3QgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucywgbWlnaHQgYmUgZW50aXJlbHkgdW5yZWFjaGFibGUuIFRoYXQmIzM5O3MgYSBodWdlIHBvdGVudGlhbCBzZWN1cml0eSBob2xlLCBhc3N1bWluZyBpdCBjYW4mIzM5O3QgYmUgcmVhY2hlZC4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhwbG9yZSB3aGV0aGVyIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiBzb21laG93IGNyZWF0ZSBhIGB0Yl9zZXJ2aWNlYCBkZXZpY2UuIE15IGZvY3VzIHdpbGwgYmUgb24gc2VhcmNoaW5nIGZvciBjYWxscyBsaWtlIGB0Yl9zZXJ2aWNlX2NyZWF0ZWAgb3Igc29tZXRoaW5nIHdpdGggYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uIHRvIHNlZSBpZiBzdWNoIGEgdGhpbmcgZXhpc3RzLiBJZiBJIGNhbiBmaW5kIGEgd2F5IHRvIGNyZWF0ZSBvbmUgZnJvbSB1c2Vyc3BhY2UsIHRoYXQgb3BlbnMgdXAgYWxsIHNvcnRzIG9mIGZ1enppbmcgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Yl9zZXJ2aWNlX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDYxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBUaHVuZGVyYm9sdCBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiBob3cgdGhlc2UgVGh1bmRlcmJvbHQgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHhkb21haW4gY29udGV4dC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGhlYWQgZGlyZWN0bHkgaW50byB0aGUgcmVsZXZhbnQgZHJpdmVyIGNvZGUuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jYCBsb29rcyBsaWtlIHRoZSBwcmltZSBzdXNwZWN0IGZvciB0aGlzIGtpbmQgb2YgbG93LWxldmVsIGRldmljZSBpbnRlcmFjdGlvbi4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHVzZSBgZ3JlcGAgdG8gbG9vayBmb3IgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCB0eXBpY2FsbHkgaGFuZGxlIGRldmljZSByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBkZXZpY2VfcmVnaXN0ZXJgIGFuZCBgZGV2aWNlX2FkZGAuIFRoZXNlIGFyZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMgd2hlbiBsb29raW5nIGF0IGhvdyBhIGRldmljZSBpcyBicm91Z2h0IGludG8gdGhlIHN5c3RlbSBhbmQgaXRzIGRldmljZSB0cmVlLiBUaGlzIGFwcHJvYWNoIHdpbGwgYWxsb3cgbWUgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGUgaW1tZWRpYXRlbHkuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHBvaW50cyB3aGVyZSB0aGUgVGh1bmRlcmJvbHQgZGV2aWNlIGlzIGlkZW50aWZpZWQsIGluaXRpYWxpemVkLCBhbmQgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gRnJvbSB0aGVyZSBJIGNhbiB0cmFjayB0aGUgY29udHJvbCBmbG93IGZyb20gdGhpcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2FkZHxkZXZpY2VfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYz0xMjE5PXN0YXRpYyB2b2lkIGVudW1lcmF0ZV9zZXJ2aWNlcyhzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMTI2OC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjEyNjk6XHRcdGlmIChkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2c3ZjLVx1MDAzZWRldikpIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTEyNzAtXHRcdFx0dGJfc2VydmljZV9kZWJ1Z2ZzX3JlbW92ZShzdmMpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jPTE1MzY9c3RhdGljIGludCB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzKHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0xNjIzLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MTYyNDpcdFx0aWYgKGRldmljZV9hZGQoXHUwMDI2eGQtXHUwMDNlZGV2KSkge1xuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMTYyNS1cdFx0XHRkZXZfZXJyKFx1MDAyNnhkLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFkZCBYRG9tYWluIGRldmljZVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTc2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIExpZmVjeWNsZSBvZiBTZXJ2aWNlIEVudW1lcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgaG93IHRoZXNlIHNlcnZpY2VzIGFyZSBiZWluZyBlbnVtZXJhdGVkLiBUaGUgYGVudW1lcmF0ZV9zZXJ2aWNlc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLCBpdCYjMzk7cyB3aGF0IGFjdHVhbGx5IGNyZWF0ZXMgdGhvc2UgYHRiX3NlcnZpY2VgIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluIHRvIHNlZSB3aGF0IHRyaWdnZXJzIGl0LgoKSXQgbG9va3MgbGlrZSBgZW51bWVyYXRlX3NlcnZpY2VzYCBnZXRzIGNhbGxlZCBlaXRoZXIgZGlyZWN0bHkgZnJvbSBgdGJfeGRvbWFpbl9nZXRfcHJvcGVydGllc2Agb3Igd2hlbiBwcm9wZXJ0aWVzIGhhdmUgY2hhbmdlZCwgYHRiX3hkb21haW5fcHJvcGVydGllc19jaGFuZ2VkYC4gTm93LCBgdGJfeGRvbWFpbl9nZXRfcHJvcGVydGllc2AgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzX3dvcmtgIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCBsaWtlbHkgbWVhbnMgaXQmIzM5O3Mgbm90IGEgZGlyZWN0LCBzeW5jaHJvbm91cyBjYWxsIGJ1dCBzb21ldGhpbmcgZGVmZXJyZWQuIGB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzX3dvcmtgIGlzIHNjaGVkdWxlZCwgd2hpY2ggaW1wbGllcyBpdCYjMzk7cyBxdWV1ZWQgb3IgdHJpZ2dlcmVkIGJ5IHNvbWUgc29ydCBvZiBldmVudCwgYW5kIHRoYXQmIzM5O3MgY29taW5nIGZyb20gYHRiX3hkb21haW5fYWRkYC4gU28gZmFyIHNvIGdvb2QuIEZpbmFsbHksIHRoZSBjcml0aWNhbCBwb2ludDogYHRiX3hkb21haW5fYWRkYCBpcyB0aGUgY2FsbGluZyBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZnJvbWB0Yl94ZG9tYWluX2FsbG9jYC4gCgpTbywgSSBuZWVkIHRvIGxvb2sgaW50byB3aG8gY2FsbHMgYHRiX3hkb21haW5fYWxsb2NgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIG5vdyB0byBjb21wbGV0ZWx5IGZvbGxvdyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RiX3hkb21haW5fYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9MTM0PXN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3RhcnRfcmluZ3Moc3RydWN0IGRtYV90ZXN0ICpkdClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTU5LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE2MDpcdFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19vdXRfaG9waWQoeGQsIC0xKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNjEtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTg3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE4ODpcdFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZCh4ZCwgLTEpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4OS1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmM9NzA5PXN0YXRpYyB2b2lkIGFkZF94ZG9tYWluKHN0cnVjdCB0Yl9zd2l0Y2ggKnN3LCB1NjQgcm91dGUsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTYtXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jOjcxNzpcdHhkID0gdGJfeGRvbWFpbl9hbGxvYyhzdy1cdTAwM2V0YiwgXHUwMDI2c3ctXHUwMDNlZGV2LCByb3V0ZSwgbG9jYWxfdXVpZCwgcmVtb3RlX3V1aWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTgtXHRpZiAoIXhkKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTAzNT1zdGF0aWMgaW50IHRic3RyZWFtX2Rldl9hbGxvY19pbl9ob3BpZChzdHJ1Y3QgdGJzdHJlYW1fZGV2ICpzZGV2LCBpbnQgaG9waWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDQ1LVx0fVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxMDQ2Olx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZCh4ZCwgaG9waWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDQ3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTEwNjE9c3RhdGljIGludCB0YnN0cmVhbV9kZXZfYWxsb2Nfb3V0X2hvcGlkKHN0cnVjdCB0YnN0cmVhbV9kZXYgKnNkZXYsIGludCBob3BpZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEwNzEtXHR9XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjEwNzI6XHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCh4ZCwgaG9waWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDczLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmM9NDMxPXN0YXRpYyB2b2lkIHRiX3NjYW5feGRvbWFpbihzdHJ1Y3QgdGJfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmMtNDQ3LVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5jOjQ0ODpcdHhkID0gdGJfeGRvbWFpbl9hbGxvYyh0YiwgXHUwMDI2c3ctXHUwMDNlZGV2LCByb3V0ZSwgdGItXHUwMDNlcm9vdF9zd2l0Y2gtXHUwMDNldXVpZCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuYy00NDktXHRcdFx0ICAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oPTEyNjA9Ym9vbCB0Yl94ZG9tYWluX2hhbmRsZV9yZXF1ZXN0KHN0cnVjdCB0YiAqdGIsIGVudW0gdGJfY2ZnX3BrZ190eXBlIHR5cGUsXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTI2MS1cdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTI2MjpzdHJ1Y3QgdGJfeGRvbWFpbiAqdGJfeGRvbWFpbl9hbGxvYyhzdHJ1Y3QgdGIgKnRiLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTI2My1cdFx0XHRcdCAgICB1NjQgcm91dGUsIGNvbnN0IHV1aWRfdCAqbG9jYWxfdXVpZCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYz0yMDc0PXN0YXRpYyB2b2lkIHRiX3hkb21haW5fbGlua19leGl0KHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMTA3LS8qKlxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjEwODogKiB0Yl94ZG9tYWluX2FsbG9jKCkgLSBBbGxvY2F0ZSBuZXcgWERvbWFpbiBvYmplY3RcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMDktICogQHRiOiBEb21haW4gd2hlcmUgdGhlIFhEb21haW4gYmVsb25nc1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMjAtICovXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzoyMTIxOnN0cnVjdCB0Yl94ZG9tYWluICp0Yl94ZG9tYWluX2FsbG9jKHN0cnVjdCB0YiAqdGIsIHN0cnVjdCBkZXZpY2UgKnBhcmVudCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMjItXHRcdFx0XHQgICAgdTY0IHJvdXRlLCBjb25zdCB1dWlkX3QgKmxvY2FsX3V1aWQsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9MjM0OD1FWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2xhbmVfYm9uZGluZ19kaXNhYmxlKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzUwLS8qKlxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM1MTogKiB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKCkgLSBBbGxvY2F0ZSBpbnB1dCBIb3BJRCBmb3IgdHVubmVsaW5nXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzUyLSAqIEB4ZDogWERvbWFpbiBjb25uZWN0aW9uXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM2My0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzNjQ6aW50IHRiX3hkb21haW5fYWxsb2NfaW5faG9waWQoc3RydWN0IHRiX3hkb21haW4gKnhkLCBpbnQgaG9waWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzY1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzczLX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzNzQ6RVhQT1JUX1NZTUJPTF9HUEwodGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc1LVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM3Ni0vKipcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzNzc6ICogdGJfeGRvbWFpbl9hbGxvY19vdXRfaG9waWQoKSAtIEFsbG9jYXRlIG91dHB1dCBIb3BJRCBmb3IgdHVubmVsaW5nXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc4LSAqIEB4ZDogWERvbWFpbiBjb25uZWN0aW9uXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM4OS0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzOTA6aW50IHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKHN0cnVjdCB0Yl94ZG9tYWluICp4ZCwgaW50IGhvcGlkKVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM5MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM5OS19XG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzoyNDAwOkVYUE9SVF9TWU1CT0xfR1BMKHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTI0MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODkyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRodW5kZXJib2x0IERyaXZlciBFbXVsYXRpb24gSHVudCoqCgpPa2F5LCBzbyBgdGJfeGRvbWFpbl9hbGxvY2AgaXMgdXNlZCBieSBgYWRkX3hkb21haW5gIGluIGBpY20uY2AgYW5kIGB0Yl9zY2FuX3hkb21haW5gIGluIGB0Yi5jYC4gVGhhdCBwbGFjZXMgaXQgZmlybWx5IHdpdGhpbiB0aGUgY29yZSBUaHVuZGVyYm9sdCBkcml2ZXImIzM5O3MgaGFyZHdhcmUgcG9ydCBzY2FubmluZyBmdW5jdGlvbmFsaXR5LCBzbyBpdCBtYWtlcyBzZW5zZSB0aGF0IEkmIzM5O20gc2VlaW5nIGl0LiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZ2V0IHNvbWUga2luZCBvZiBlbXVsYXRpb24gZm9yIHRoaXMgc3R1ZmY/IEkgbmVlZCB0byB0ZXN0IHdpdGhvdXQgcmVhbCBoYXJkd2FyZS4gSG1tLCBJIHZhZ3VlbHkgcmVjYWxsIHNvbWV0aGluZyByZWxhdGVkIHRvIGB1c2I0X2t1bml0X3Rlc3RgLiBUaGF0IHNvdW5kcyBwcm9taXNpbmcuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IFRodW5kZXJib2x0LXNwZWNpZmljIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuIEkmIzM5O2xsIHNlYXJjaCB0aGUgYGRyaXZlcnMvdGh1bmRlcmJvbHQvYCBkaXJlY3RvcnkgZm9yIGFueXRoaW5nIG1lbnRpb25pbmcgYGt1bml0YC4gVGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgYmVzdCBiZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t1bml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjk6I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9pZHIuaFx1MDAzZVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE0LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTU6c3RhdGljIGludCBfX2lkYV9pbml0KHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzLCB2b2lkICpjb250ZXh0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTYte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ6c3RhdGljIHZvaWQgX19pZGFfZGVzdHJveShzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJlcylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjMxOnN0YXRpYyB2b2lkIGt1bml0X2lkYV9pbml0KHN0cnVjdCBrdW5pdCAqdGVzdCwgc3RydWN0IGlkYSAqaWRhKVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzIte1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzM6XHRrdW5pdF9hbGxvY19yZXNvdXJjZSh0ZXN0LCBfX2lkYV9pbml0LCBfX2lkYV9kZXN0cm95LCBHRlBfS0VSTkVMLCBpZGEpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzQtfVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzUtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozNjpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2Nfc3dpdGNoKHN0cnVjdCBrdW5pdCAqdGVzdCwgdTY0IHJvdXRlLFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzctXHRcdFx0XHQgICAgICB1OCB1cHN0cmVhbV9wb3J0LCB1OCBtYXhfcG9ydF9udW1iZXIpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0MzpcdHN3ID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKnN3KSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00NC1cdGlmICghc3cpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTQtXHRzaXplID0gKHN3LVx1MDAzZWNvbmZpZy5tYXhfcG9ydF9udW1iZXIgJiM0MzsgMSkgKiBzaXplb2YoKnN3LVx1MDAzZXBvcnRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjU1Olx0c3ctXHUwMDNlcG9ydHMgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemUsIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTYtXHRpZiAoIXN3LVx1MDAzZXBvcnRzKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTYzLVx0XHRpZiAoaSkge1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NjQ6XHRcdFx0a3VuaXRfaWRhX2luaXQodGVzdCwgXHUwMDI2c3ctXHUwMDNlcG9ydHNbaV0uaW5faG9waWRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjY1Olx0XHRcdGt1bml0X2lkYV9pbml0KHRlc3QsIFx1MDAyNnN3LVx1MDAzZXBvcnRzW2ldLm91dF9ob3BpZHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNjYtXHRcdH1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy03MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjcyOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0KHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTczLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTMtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNTQ6c3RhdGljIHN0cnVjdCB0Yl9zd2l0Y2ggKmFsbG9jX2hvc3RfdXNiNChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE3Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE3MzpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2NfaG9zdF9icihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzQte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE5MDpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2NfZGV2X2RlZmF1bHQoc3RydWN0IGt1bml0ICp0ZXN0LFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTkxLVx0XHRcdFx0XHQgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzM5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzQwOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aF9kcGluKHN0cnVjdCBrdW5pdCAqdGVzdCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTM0MS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzYwLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzYxOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aG91dF9kcChzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zNjItXHRcdFx0XHRcdCAgICAgIHN0cnVjdCB0Yl9zd2l0Y2ggKnBhcmVudCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MDEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0MDI6c3RhdGljIHN0cnVjdCB0Yl9zd2l0Y2ggKmFsbG9jX2Rldl91c2I0KHN0cnVjdCBrdW5pdCAqdGVzdCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQwMy1cdFx0XHRcdFx0c3RydWN0IHRiX3N3aXRjaCAqcGFyZW50LFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQyMi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjQyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfYmFzaWMoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDI0LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MzktXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0NDA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9jb25uZWN0ZWRfd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00NDEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jPTQ3Mz1zdHJ1Y3QgcG9ydF9leHBlY3RhdGlvbiB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDc4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NDc5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9zaW5nbGVfaG9wX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDgwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy01MzItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo1MzM6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX2RhaXN5X2NoYWluX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTM0LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy01OTEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo1OTI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX3NpbXBsZV90cmVlX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTkzLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy02NTQtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo2NTU6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX2NvbXBsZXhfdHJlZV93YWxrKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTY1Ni17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNzM4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NzM5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9tYXhfbGVuZ3RoX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNzQwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy04NDEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo4NDI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9jb25uZWN0ZWQoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtODQzLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYz04NjI9c3RydWN0IGhvcF9leHBlY3RhdGlvbiB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtODY5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6ODcwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUwKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTg3MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTI3LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6OTI4OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUxKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTkyOS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTg5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6OTkwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUxX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTk5MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTA2OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEwNzA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9ib25kZWRfbGFuZTFfY2hhaW5fcmV2ZXJzZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMDcxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMTQ5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTE1MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfbWl4ZWRfY2hhaW4oc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTE1MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTI0MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEyNDI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX21peGVkX2NoYWluX3JldmVyc2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTI0My17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTMzMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEzMzQ6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfcGNpZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzM1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzg4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTM4OTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzkwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDI2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTQyNzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF9jaGFpbihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDI4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDcyLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTQ3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF90cmVlKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE0NzQte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE1MjItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNTIzOnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RwX21heF9sZW5ndGgoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTUyNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTYwMi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE2MDM6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfM2RwKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2MDQte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2NjgtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNjY5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX3VzYjMoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTY3MC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTcyMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE3MjQ6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfcG9ydF9vbl9wYXRoKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE3MjUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE3ODktXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNzkwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RtYShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzkxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xODMyLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTgzMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfcngoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTgzNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg2OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE4NzA6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZG1hX3R4KHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4NzEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5MDYtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxOTA3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RtYV9jaGFpbihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTA4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTcyLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTk3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfbWF0Y2goc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTk3NC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjAyMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIwMjQ6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfbGVnYWN5X25vdF9ib25kZWQoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjAyNS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjA1Ni1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIwNTc6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfbGVnYWN5X2JvbmRlZChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDU4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDg5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjA5MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19wY2llKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIwOTEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIxMjItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMTIzOnN0YXRpYyB2b2lkIHRiX3Rlc3RfY3JlZGl0X2FsbG9jX3dpdGhvdXRfZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjEyNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjE3Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIxNzM6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjE3NC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjIxNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyMTc6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfdXNiMyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjE4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjQ5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjI1MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19kbWEoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjI1MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjI4NS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyODY6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfZG1hX211bHRpcGxlKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIyODcte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzODItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMzgzOnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX1BDSUVfVFVOTkVMKHN0cnVjdCBrdW5pdCAqdGVzdCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzODQtXHRcdFx0c3RydWN0IHRiX3N3aXRjaCAqaG9zdCwgc3RydWN0IHRiX3N3aXRjaCAqZGV2KVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0MTItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNDEzOnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX0RQX1RVTk5FTDEoc3RydWN0IGt1bml0ICp0ZXN0LFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjQxNC1cdFx0XHRzdHJ1Y3QgdGJfc3dpdGNoICpob3N0LCBzdHJ1Y3QgdGJfc3dpdGNoICpkZXYpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjQ0OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI0NTA6c3RhdGljIHN0cnVjdCB0Yl90dW5uZWwgKlRCX1RFU1RfRFBfVFVOTkVMMihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDUxLVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDg2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ4NzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9VU0IzX1RVTk5FTChzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDg4LVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTE2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjUxNzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9ETUFfVFVOTkVMMShzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTE4LVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTQ2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjU0NzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9ETUFfVFVOTkVMMihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTQ4LVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTc2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjU3NzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19hbGwoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjU3OC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM9MjY2Mz1zdGF0aWMgY29uc3QgdXVpZF90IG5ldHdvcmtfZGlyX3V1aWQgPVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI2NjYtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNjY3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjY2OC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjcyNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI3Mjc6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9mb3JtYXQoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjcyOC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjc0MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI3NDI6XHRibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgYmxvY2tfbGVuICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjc0My1cdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBibG9jayk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjc1My1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI3NTQ6c3RhdGljIHZvaWQgY29tcGFyZV9kaXJzKHN0cnVjdCBrdW5pdCAqdGVzdCwgc3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZDEsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNzU1LVx0XHRcdCBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkMilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODIzLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjgyNDpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X2NvcHkoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjgyNS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg0Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4NDM6XHRibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgc2l6ZW9mKHJvb3RfZGlyZWN0b3J5KSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODQ0LVx0S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGJsb2NrKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODY3LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjg2ODpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX3UzMl93cmFwKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4Njkte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4NzUtXHQgKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4NzY6XHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCAweDEwMiAqIHNpemVvZih1MzIpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4NzctXHRzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkaXI7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg5OC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4OTk6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV9yZWN1cnNpb24oc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwMC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwNy1cdCAqL1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjkwODpcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDEwICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwOS1cdHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRpcjtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTM4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjkzOTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX2Rpcl9sZW5fdW5kZXJmbG93KHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5NDAte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5NTItXHQgKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI5NTM6XHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA3ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk1NC1cdHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRpcjtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTc4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjk3OTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX3plcm9fbGVuZ3RoKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5ODAte1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjk4MTpcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDYgKiBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTgyLVx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5OTgtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTk5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Vfcm9vdGRpcl9vdmVyZmxvdyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMDAwLXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjMwMDE6XHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA0ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAwMi1cdHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRpcjtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMDE2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzAxNzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X21lcmdlKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwMTgte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwOTctXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMDk4OnN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0Yl90ZXN0X2Nhc2VzW10gPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMDk5LVx0S1VOSVRfQ0FTRSh0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX3UzMl93cmFwKSxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTQ2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE0NzpzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHRiX3Rlc3Rfc3VpdGUgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTQ4LVx0Lm5hbWUgPSBcJiMzNDt0aHVuZGVyYm9sdFwmIzM0Oyxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTUxLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE1MjprdW5pdF90ZXN0X3N1aXRlKHRiX3Rlc3Rfc3VpdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzY2OQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmsgRnV6emluZyBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHRlc3QuY2AgZmlsZSwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciBpdCYjMzk7cyBqdXN0IGEgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHRodW5kZXJib2x0IGNvcmUuIEl0IGRvZXNuJiMzOTt0IGFjdHVhbGx5IGluc3RhbnRpYXRlIG9yIHJlZ2lzdGVyIGEgbW9jayBUaHVuZGVyYm9sdCBjb250cm9sbGVyLCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbS4gVGhpcyBtZWFucyBgdGh1bmRlcmJvbHQtbmV0YCBjYW4mIzM5O3QgYmUgZnV6emVkIGluIGEgUUVNVSBlbnZpcm9ubWVudCBhcyBpcyBiZWNhdXNlIHRoZXJlJiMzOTtzIHNpbXBseSBubyBjb250cm9sbGVyIGVtdWxhdGlvbi4gCgpIbW0sIEkgd29uZGVyLCBpcyB0aGVyZSBhbm90aGVyIHdheSB0byBsb2FkIGFuZCB0ZXN0IGB0aHVuZGVyYm9sdC1uZXRgIHdpdGhvdXQgYSByZWFsIGNvbnRyb2xsZXIgZW11bGF0aW9uPyBgdGJuZXRgIHJlZ2lzdGVycyBhIG5ldHdvcmsgZGV2aWNlLCBzdXJlLCBidXQgdGhhdCByZWdpc3RyYXRpb24gaGluZ2VzIG9uIGB0Ym5ldF9wcm9iZWAgYmVpbmcgaW52b2tlZC4gQW5kIGB0Ym5ldF9wcm9iZWAgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgdGh1bmRlcmJvbHQgYnVzIG1hdGNoZXMgYSBgdGJfc2VydmljZWAgZGV2aWNlLiBBbmQgYSBgdGJfc2VydmljZWAgZGV2aWNlPyBUaGUgdGh1bmRlcmJvbHQgY29yZSBjcmVhdGVzICp0aG9zZSogd2hlbiBpdCBkaXNjb3ZlcnMgYSB0aHVuZGVyYm9sdCBkZXZpY2Ugd2l0aCBYRG9tYWluIHByb3BlcnRpZXMuIFdoaWNoLCBvZiBjb3Vyc2UsIHJlcXVpcmVzIGEgdGh1bmRlcmJvbHQgY29udHJvbGxlciB0byBiZSBwcmVzZW50IHRvIGZhY2lsaXRhdGUgZGV2aWNlIGRpc2NvdmVyeS4gCgpSaWdodCwgc28gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHNpbmNlIHRoZXJlIGlzIG5vIHRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLCB0aGUgdGh1bmRlcmJvbHQgY29yZSB3b24mIzM5O3QgZmluZCBhbnkgY29udHJvbGxlcnMsIHdvbiYjMzk7dCBkaXNjb3ZlciBhbnkgZGV2aWNlcywgd29uJiMzOTt0IGNyZWF0ZSB0aG9zZSBjcml0aWNhbCBgdGJfc2VydmljZWAgZGV2aWNlcywgYW5kIHVsdGltYXRlbHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gSXQgYXBwZWFycyB0aGF0IHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSAqYW55KiBraW5kIG9mIHNvZnR3YXJlIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgZXF1aXZhbGVudCBvdXQgdGhlcmU/IEEgYG1hYzgwMjExX2h3c2ltYCBmb3IgdGh1bmRlcmJvbHQsIHBlcmhhcHM/IEkgZGlkIGEgcXVpY2sgYGdyZXBgIGZvciBga3VuaXR8dGVzdHxtb2NrfHNpbWAgaW4gYGRyaXZlcnMvdGh1bmRlcmJvbHQvYCwgYW5kIEkgb25seSBzZWUgYHRlc3QuY2AgYW5kIGBkbWFfdGVzdC5jYCwgd2hpY2gsIHdoaWxlIGl0IGRvZXMgYmluZCB0byBhIGB0Yl9zZXJ2aWNlYCwgbG9va3MgdG8gYmUgYW5vdGhlciB0ZXN0IGRyaXZlci4gU28sIG5vLCB0aGVyZSBpc24mIzM5O3QgYW55dGhpbmcgbGlrZSBgaHdzaW1gIG9yIGB2aGNpYCBmb3IgdGh1bmRlcmJvbHQgdGhhdCBJIGNhbiBzZWUuCgpXYWl0LCB3aGF0IGFib3V0IGBjb25maWdmc2A/IENvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgYHRiX3NlcnZpY2VgIGRldmljZSB0aGF0IHdheT8gTGV0IG1lIGludmVzdGlnYXRlIGBjb25maWdmc2AmIzM5O3MgcmVsYXRpb25zaGlwIHRvIHRodW5kZXJib2x0Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZT05PXRodW5kZXJib2x0LSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlOjEwOnRodW5kZXJib2x0LSQoQ09ORklHX1VTQjRfQ09ORklHRlMpICYjNDM7PSBjb25maWdmcy5vXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlLTExLXRodW5kZXJib2x0LSR7Q09ORklHX1VTQjRfS1VOSVRfVEVTVH0gJiM0Mzs9IHRlc3Qub1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy04LVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjk6I2luY2x1ZGUgXHUwMDNjbGludXgvY29uZmlnZnMuaFx1MDAzZVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTEwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jPTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB0Yl9yb290X2dyb3VwX3R5cGUgPSB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTE3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjE4OnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfc3Vic3lzdGVtIHRiX2NvbmZpZ2ZzID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTE5LVx0LnN1X2dyb3VwID0ge1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0yNy0vKipcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzoyODogKiB0Yl9jb25maWdmc19yZWdpc3Rlcl9ncm91cCgpIC0gUmVnaXN0ZXIgVGh1bmRlcmJvbHQgQ29uZmlnRlMgZ3JvdXBcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0yOS0gKiBAZ3JvdXA6IEdyb3VwIHRvIHJlZ2lzdGVyLlxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0zNC0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzozNTppbnQgdGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXApXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzYte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjM3Olx0cmV0dXJuIGNvbmZpZ2ZzX3JlZ2lzdGVyX2dyb3VwKFx1MDAyNnRiX2NvbmZpZ2ZzLnN1X2dyb3VwLCBncm91cCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzgtfVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjM5OkVYUE9SVF9TWU1CT0xfR1BMKHRiX2NvbmZpZ2ZzX3JlZ2lzdGVyX2dyb3VwKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00MC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00MS0vKipcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0MjogKiB0Yl9jb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKCkgLSBVbnJlZ2lzdGVyIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBncm91cFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTQzLSAqIEBncm91cDogR3JvdXAgdG8gdW5yZWdpc3Rlci5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00NC0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0NTp2b2lkIHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXAoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXApXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDYte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQ3Olx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChncm91cCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDgtfVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQ5OkVYUE9SVF9TWU1CT0xfR1BMKHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjUxOmludCB0Yl9jb25maWdmc19pbml0KHZvaWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTIte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjUzOlx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2dGJfY29uZmlnZnMuc3VfZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjU0Olx0bXV0ZXhfaW5pdChcdTAwMjZ0Yl9jb25maWdmcy5zdV9tdXRleCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTU6XHRyZXR1cm4gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNnRiX2NvbmZpZ2ZzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy01Ni19XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTctXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTg6dm9pZCB0Yl9jb25maWdmc19leGl0KHZvaWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTkte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjYwOlx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2dGJfY29uZmlnZnMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTYxLX1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RvbWFpbi5jPTg4Nj1pbnQgdGJfZG9tYWluX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RvbWFpbi5jLTg4OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmM6ODkwOlx0dGJfY29uZmlnZnNfaW5pdCgpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy04OTEtXHR0Yl9kZWJ1Z2ZzX2luaXQoKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RvbWFpbi5jPTkxMj12b2lkIHRiX2RvbWFpbl9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy05MTktXHR0Yl9kZWJ1Z2ZzX2V4aXQoKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmM6OTIwOlx0dGJfY29uZmlnZnNfZXhpdCgpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy05MjEtfVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjEyOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbmZpZ2ZzLmhcdTAwM2VcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvZmlsZS5oXHUwMDNlXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMjA4PUNPTkZJR0ZTX0FUVFIodGJzdHJlYW1fZGV2XywgdGhyb3R0bGluZyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMDktXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjEyMTA6c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKnRic3RyZWFtX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMjExLVx0XHUwMDI2dGJzdHJlYW1fZGV2X2F0dHJfaW5kZXgsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMjE5PXN0YXRpYyB2b2lkIHRic3RyZWFtX2Rldl9pdGVtX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTIyNy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTIyODpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB0YnN0cmVhbV9kZXZfaXRlbV9vcHMgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMjktXHQucmVsZWFzZSA9IHRic3RyZWFtX2Rldl9pdGVtX3JlbGVhc2UsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMzkxPXRic3RyZWFtX2Rldl9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MDQtXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE0MDU6c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2Rldl9ncm91cF9vcHMgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MDYtXHQubWFrZV9ncm91cCA9IHRic3RyZWFtX2Rldl9tYWtlX2dyb3VwLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTQxMD1zdGF0aWMgdm9pZCB0YnN0cmVhbV9pdGVtX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQxOC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQxOTpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB0YnN0cmVhbV9pdGVtX29wcyA9IHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQyMC1cdC5yZWxlYXNlID0gdGJzdHJlYW1faXRlbV9yZWxlYXNlLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTQzMD10YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQ2MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQ2MjpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgdGJzdHJlYW1fZ3JvdXBfb3BzID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNDYzLVx0Lm1ha2VfZ3JvdXAgPSB0YnN0cmVhbV9tYWtlX2dyb3VwLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTY0OD1zdGF0aWMgaW50IF9faW5pdCB0YnN0cmVhbV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY1LVx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2dGJzdHJlYW1fZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjY2Olx0cmV0ID0gdGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoXHUwMDI2dGJzdHJlYW1fZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NzUtZXJyX3VucmVnaXN0ZXJfZ3JvdXA6XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE2NzY6XHR0Yl9jb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKFx1MDAyNnRic3RyZWFtX2dyb3VwKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTY3Ny1lcnJfdW5yZWdpc3Rlcl9kaXI6XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNjg1PXN0YXRpYyB2b2lkIF9fZXhpdCB0YnN0cmVhbV9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjg3LVx0dGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZ0YnN0cmVhbV9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjg4Olx0dGJfY29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChcdTAwMjZ0YnN0cmVhbV9ncm91cCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2ODktXHR0Yl91bnJlZ2lzdGVyX3Byb3BlcnR5X2RpcihcJiMzNDtzdHJlYW1cJiMzNDssIHRic3RyZWFtX2Rpcik7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oPTE1NTk9c3RhdGljIGlubGluZSB2b2lkIHRiX3JldGltZXJfZGVidWdmc19yZW1vdmUoc3RydWN0IHRiX3JldGltZXIgKnJ0KSB7IH1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2Mi0jaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19DT05GSUdGU19GUylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaDoxNTYzOmludCB0Yl9jb25maWdmc19pbml0KHZvaWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oOjE1NjQ6dm9pZCB0Yl9jb25maWdmc19leGl0KHZvaWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oLTE1NjUtI2Vsc2VcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaDoxNTY2OnN0YXRpYyBpbmxpbmUgaW50IHRiX2NvbmZpZ2ZzX2luaXQodm9pZCkgeyByZXR1cm4gMDsgfVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oOjE1Njc6c3RhdGljIGlubGluZSB2b2lkIHRiX2NvbmZpZ2ZzX2V4aXQodm9pZCkgeyB9XG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2OC0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4MDcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWx2aW5nIGludG8gdGhlIGB0YnN0cmVhbWAgQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIGhvdyBgdGJzdHJlYW1gLCB3aGljaCBJIGtub3cgaXMgdXNlZCBmb3Igc3RyZWFtIGNyZWF0aW9uLCBpbnRlcmZhY2VzIHdpdGggQ29uZmlnRlMuIEl0IGxvb2tzIGxpa2UgYHRic3RyZWFtYCBpcyBhY3R1YWxseSBkZWZpbmVkIHdpdGhpbiBgZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uY2AuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYHRic3RyZWFtYCBhbmQgdGhlIHVuZGVybHlpbmcgc2VydmljZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJvY2VzcyBvZiBob3cgZ3JvdXBzIGFuZCBzZXJ2aWNlcyBhcmUgbWFkZSB3aGVuIGEgc3RyZWFtIGlzIGluc3RhbnRpYXRlZC4gSSByZWNhbGwgYHRic3RyZWFtX21ha2VfZ3JvdXBgIHBsYXlzIGEgcm9sZSBpbiBjb25zdHJ1Y3RpbmcgYSBncm91cC4gTGV0IG1lIHF1aWNrbHkgZXhhbWluZSBgdGJzdHJlYW1fbWFrZV9ncm91cGAgdG8gY29uZmlybSBpZiBpdCwgaW4gZmFjdCwgZ2VuZXJhdGVzIGB0Yl9zZXJ2aWNlYCBpbnN0YW5jZXMsIG9yIGlmIHRoZSBpbnN0YW50aWF0aW9uIG9jY3VycyBlbHNld2hlcmUgaW4gdGhlIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGJzdHJlYW1fbWFrZV9ncm91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDI5PXN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQzMDp0YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNDMxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTE0NjI9c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2dyb3VwX29wcyA9IHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQ2MzpcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQ2NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTI0MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiBgdGJzdHJlYW1fbWFrZV9ncm91cGA6CgoqKkRpc3NlY3RpbmcgYHRic3RyZWFtX21ha2VfZ3JvdXBgKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gYHRic3RyZWFtX21ha2VfZ3JvdXBgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlIOKAkyB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvICpkbyo/IElzIHRoaXMgYSBmdW5jdGlvbiBmb3IgY29uc3RydWN0aW5nIGEgbmV3IHN0cmVhbSBncm91cCBvYmplY3Q/IElzIGl0IHJlc3BvbnNpYmxlIGZvciBpbml0aWFsIHNldHVwLCBtZW1vcnkgYWxsb2NhdGlvbiwgb3IgbWF5YmUganVzdCB3cmFwcGluZyBleGlzdGluZyBzdHJlYW1zPyBDb25zaWRlcmluZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24sICYjMzQ7bWFrZV9ncm91cCYjMzQ7IHNlZW1zIHRvIGxlYW4gdG93YXJkcyBhbiBpbnN0YW50aWF0aW9uIG9yIGNvbnN0cnVjdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBwYXJhbWV0ZXJzIGl0IGV4cGVjdHMuIFVuZGVyc3RhbmRpbmcgdGhvc2UgcGFyYW1ldGVycyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBncm91cCYjMzk7cyBjb21wb3NpdGlvbi4gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgZWxlbWVudHMgbGlrZSBzdHJlYW0gaGFuZGxlcyBvciBkZXNjcmlwdG9ycywgYnV0IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBhbmQgcmV0dXJuIHZhbHVlcy4gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzIGZvciBmYWlsdXJlcyBkdXJpbmcgdGhlIGdyb3VwIGNyZWF0aW9uPyBJcyB0aGVyZSBhbnkgZ3JhY2VmdWwgZGVncmFkYXRpb24gaW4gY2FzZSBvZiBmYWlsdXJlPyBVbHRpbWF0ZWx5LCBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBpbiB3aGljaCBjb250ZXh0IHRvIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0MjksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTQyOTpcdHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpcbjE0MzA6XHR0YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuMTQzMTpcdHtcbjE0MzI6XHRcdHN0cnVjdCB0YnN0cmVhbV9ncm91cCAqc2c7XG4xNDMzOlx0XHRzdHJ1Y3QgdGJzdHJlYW0gKnN0cmVhbTtcbjE0MzQ6XHRcdGludCBkb21haW4sIGluZGV4O1xuMTQzNTpcdFx0dTY0IHJvdXRlO1xuMTQzNjpcdFxuMTQzNzpcdFx0LyogTWFrZSBzdXJlIHRoZSBmb3JtYXQgaXMgY29ycmVjdCAqL1xuMTQzODpcdFx0aWYgKHNzY2FuZihuYW1lLCBcJiMzNDsldS0lbGx4LiV1XCYjMzQ7LCBcdTAwMjZkb21haW4sIFx1MDAyNnJvdXRlLCBcdTAwMjZpbmRleCkgIT0gMylcbjE0Mzk6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4xNDQwOlx0XG4xNDQxOlx0XHRzZyA9IGt6YWxsb2Nfb2JqKCpzZywgR0ZQX0tFUk5FTCk7XG4xNDQyOlx0XHRpZiAoIXNnKVxuMTQ0MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbjE0NDQ6XHRcbjE0NDU6XHRcdG11dGV4X2luaXQoXHUwMDI2c2ctXHUwMDNlbG9jayk7XG4xNDQ2Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZzZy1cdTAwM2VkZXZfbGlzdCk7XG4xNDQ3Olx0XG4xNDQ4Olx0XHRndWFyZChtdXRleCkoXHUwMDI2dGJzdHJlYW1fbG9jayk7XG4xNDQ5Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHN0cmVhbSwgXHUwMDI2dGJzdHJlYW1fbGlzdCwgbGlzdCkge1xuMTQ1MDpcdFx0XHR0YnN0cmVhbV9nZXQoc3RyZWFtKTtcbjE0NTE6XHRcdFx0aWYgKHN5c2ZzX3N0cmVxKG5hbWUsIGRldl9uYW1lKFx1MDAyNnN0cmVhbS1cdTAwM2VzdmMtXHUwMDNlZGV2KSkpIHtcbjE0NTI6XHRcdFx0XHRzZy1cdTAwM2VzdHJlYW0gPSBzdHJlYW07XG4xNDUzOlx0XHRcdFx0YnJlYWs7XG4xNDU0Olx0XHRcdH1cbjE0NTU6XHRcdFx0dGJzdHJlYW1fcHV0KHN0cmVhbSk7XG4xNDU2Olx0XHR9XG4xNDU3Olx0XG4xNDU4Olx0XHRjb25maWdfZ3JvdXBfaW5pdF90eXBlX25hbWUoXHUwMDI2c2ctXHUwMDNlZ3JvdXAsIG5hbWUsIFx1MDAyNnRic3RyZWFtX2Rldl9ncm91cF90eXBlKTtcbjE0NTk6XHRcdHJldHVybiBcdTAwMjZzZy1cdTAwM2Vncm91cDtcbjE0NjA6XHR9XG4xNDYxOlx0XG4xNDYyOlx0c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2dyb3VwX29wcyA9IHtcbjE0NjM6XHRcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwNzQKCQkJCQkJCW91dHB1dDogMTE4CgkJCQkJCQl0aG91Z2h0czogNjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRodW5kZXJib2x0IE5ldHdvcmtpbmcgaW4gUUVNVTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIHRhcmdldHMgVGh1bmRlcmJvbHQgbmV0d29ya2luZy4gSSBzZWUgaXQgc3RhcnRzIGJ5IGxvb2tpbmcgdXAgYW4gZXhpc3RpbmcgYHRic3RyZWFtYCBieSBuYW1lLCB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIGB0Yl9zZXJ2aWNlYCBkZXZfbmFtZS4gQ3J1Y2lhbGx5LCBpdCBkb2VzbiYjMzk7dCAqY3JlYXRlKiBhIGB0Yl9zZXJ2aWNlYC4gVGhpcyBtZWFucywgZnJvbSBhIHVzZXJzcGFjZSBwZXJzcGVjdGl2ZSwgd2UgY2FuJiMzOTt0IGluc3RhbnRpYXRlIGEgYHRiX3NlcnZpY2VgIG91cnNlbHZlcy4KCldpdGhvdXQgYSBgdGJfc2VydmljZWAsIHRoZSB2aXRhbCBgdGJuZXRfcHJvYmVgIGZ1bmN0aW9uIGlzIG5ldmVyIGludm9rZWQuIEFuZCB3aXRob3V0IGB0Ym5ldF9wcm9iZWAsIHRoZSBlbnRpcmUgYHRibmV0YCBkcml2ZXIgaXMgY29tcGxldGVseSBpbmFjY2Vzc2libGUuIE5vdywgdGhlIGtpY2tlcjogUUVNVSwgaW4gaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24sIGRvZXNuJiMzOTt0IHByb3ZpZGUgYW55IFRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLiBUaGlzIG1lYW5zIHRoZSBUaHVuZGVyYm9sdCBjb3JlIHdpbGwgbmV2ZXIgZmluZCBhbnkgY29udHJvbGxlcnMsIG5ldmVyIGRpc2NvdmVyIGRldmljZXMsIGFuZCB0aGVyZWZvcmUsIHdpbGwgbmV2ZXIgZ2VuZXJhdGUgYW55IGB0Yl9zZXJ2aWNlYCBkZXZpY2VzLiBDb25zZXF1ZW50bHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4KClRoZXJlZm9yZSwgdGhpcyBjb2RlIGluIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgIGlzIHV0dGVybHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLgoKV2FpdCwgaXMgdGhlcmUgKmFueSogb3RoZXIgcm91dGUgdG8gdGhpcyBjb2RlPyBJJiMzOTttIHdvbmRlcmluZyBpZiBhIFRodW5kZXJib2x0IGRldmljZSBjb3VsZCBiZSBpbmplY3RlZCBzb21laG93PyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IHRvIGB2aGNpYCBvciBgbWFjODAyMTFfaHdzaW1gIGZvciBUaHVuZGVyYm9sdC4gVGhlIGB0ZXN0LmNgIGRyaXZlciBpcyBhIEtVbml0IHRlc3QsIGFuZCBpdCBkb2VzbiYjMzk7dCBleHBvc2UgYSBtb2NrIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgdG8gdGhlIHN5c3RlbS4gVGhpcyBjb25maXJtcyBpdDogYHRodW5kZXJib2x0LW5ldGAgc2ltcGx5IGNhbm5vdCBiZSBmdXp6ZWQgaW4gUUVNVS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgaWYgYFVTQjRfTkVUYCBjYW4gYmUgcmVhY2hlZC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYHRibmV0X2Nvbm5lY3RfZmFpbGVkYCBhbmQgYHRibmV0X2Nvbm5lY3RlZF93b3JrYCwgYm90aCBwYXJ0IG9mIHRoZSBgdGh1bmRlcmJvbHQtbmV0YCBkcml2ZXIuIFNpbmNlIHRoYXQgZHJpdmVyIGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIFRodW5kZXJib2x0IGhhcmR3YXJlLCB3aGljaCBpcyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VLCBpdCYjMzk7cyBhIGRlYWQgZW5kLiBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLCBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IFRodW5kZXJib2x0IG5ldHdvcmtpbmcgYWJzb2x1dGVseSByZXF1aXJlcyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSByb2J1c3QgZW11bGF0aW9uIGxheWVyLCB3aGljaCBRRU1VIGRvZXNuJiMzOTt0IGhhdmUuCgpMZXQgbWUganVzdCByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBleHBsaWNpdGx5IHNheTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIHByZWNpc2VseSBmaXRzIFRodW5kZXJib2x0IG5ldHdvcmtpbmcuIFRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgaW4gUUVNVS4KCkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBVU0I0X05FVGAgZGVwZW5kcyBvbiBgVVNCNGAgKHRoZSBUaHVuZGVyYm9sdCBjb3JlKS4gWWVzLCBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AgY29uZmlybXM6IGBjb25maWcgVVNCNF9ORVQuLi4gZGVwZW5kcyBvbiBVU0I0ICZhbXA7JmFtcDsgSU5FVGAuIEFuZCBzaW5jZSB0aGVyZSBpcyBubyBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGVtdWxhdGlvbiBpbiBRRU1VLCB0aGUgY29kZSByZW1haW5zIHVucmVhY2hhYmxlLgoKU28sIEkmIzM5O20gc3RpY2tpbmcgd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGh1bmRlcmJvbHQgbmV0d29ya2luZyBkcml2ZXIgKHRodW5kZXJib2x0LW5ldCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgVGh1bmRlcmJvbHQgY29udHJvbGxlciBhbmQgWERvbWFpbiBjb25uZWN0aW9ucyB0byBmdW5jdGlvbi4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBUaHVuZGVyYm9sdCBjb250cm9sbGVycyBpbiBzdGFuZGFyZCBRRU1VICh1bmxpa2UgVVNCIHdpdGggdmhjaSBvciBXaS1GaSB3aXRoIG1hYzgwMjExX2h3c2ltKSwgdGhlIGRyaXZlciBjYW5ub3QgYmUgcHJvYmVkIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGRyaXZlciAodGh1bmRlcmJvbHQtbmV0KS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zIHRvIGZ1bmN0aW9uLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFRodW5kZXJib2x0IGNvbnRyb2xsZXJzIGluIHN0YW5kYXJkIFFFTVUgKHVubGlrZSBVU0Igd2l0aCB2aGNpIG9yIFdpLUZpIHdpdGggbWFjODAyMTFfaHdzaW0pLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjQyLjM1NzUyOTk0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTgwNjIxODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRodW5kZXJib2x0IG5ldHdvcmtpbmcgZHJpdmVyICh0aHVuZGVyYm9sdC1uZXQpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgYW5kIFhEb21haW4gY29ubmVjdGlvbnMgdG8gZnVuY3Rpb24uIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMgaW4gc3RhbmRhcmQgUUVNVSAodW5saWtlIFVTQiB3aXRoIHZoY2kgb3IgV2ktRmkgd2l0aCBtYWM4MDIxMV9od3NpbSksIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNDo0Mi4zNTc1MzY0OTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTE1NjgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg5YmIxYjc1NzAxZDVmYWMzODE0ZmM5MDdkZmYyNTY5ZThjMjBhNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTM6MzQ6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXFxuaW5kZXggOTg4OTM3MzJiYzZlNC4uMmExNzI4NjIxODg3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcXG5AQCAtNjI2LDYgKzYyNiwxNCBAQCBzdGF0aWMgaW50IHRibmV0X2FsbG9jX3R4X2J1ZmZlcnMoc3RydWN0IHRibmV0ICpuZXQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0X2ZhaWxlZChzdHJ1Y3QgdGJuZXQgKm5ldClcXG4re1xcbitcXHQvKiBMZWF2ZSBsb2dpbl9yZWNlaXZlZCBzZXQ6IG9ubHkgdGhlIHBlZXIgY2FuIG1ha2UgaXQgdHJ1ZSBhZ2Fpbi4gKi9cXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2bmV0LVxcdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xcbitcXHRuZXQtXFx1MDAzZWxvZ2luX3NlbnQgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuZXQtXFx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgdGJuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKm5ldCksIGNvbm5lY3RlZF93b3JrKTtcXG5AQCAtNjQ3LDYgKzY1NSw5IEBAIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZChuZXQtXFx1MDAzZXhkLCBuZXQtXFx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcXG4gXFx0aWYgKHJldCAhPSBuZXQtXFx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKSB7XFxuIFxcdFxcdG5ldGRldl9lcnIobmV0LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgUnggSG9wSURcXFxcblxcXCIpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2U9IDApXFxuK1xcdFxcdFxcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXFx1MDAzZXhkLCByZXQpO1xcbitcXHRcXHR0Ym5ldF9jb25uZWN0X2ZhaWxlZChuZXQpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTY5MSw2ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0ZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHRiX3Jpbmdfc3RvcChuZXQtXFx1MDAzZXJ4X3JpbmcucmluZyk7XFxuIFxcdHRiX3Jpbmdfc3RvcChuZXQtXFx1MDAzZXR4X3JpbmcucmluZyk7XFxuIFxcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXFx1MDAzZXhkLCBuZXQtXFx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcXG4rXFx0dGJuZXRfY29ubmVjdF9mYWlsZWQobmV0KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjQyLjczOTM2NDY1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc3MTk4NzY3OTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGh1bmRlcmJvbHQgbmV0d29ya2luZyBkcml2ZXIgKHRodW5kZXJib2x0LW5ldCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgVGh1bmRlcmJvbHQgY29udHJvbGxlciBhbmQgWERvbWFpbiBjb25uZWN0aW9ucyB0byBmdW5jdGlvbi4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBUaHVuZGVyYm9sdCBjb250cm9sbGVycyBpbiBzdGFuZGFyZCBRRU1VICh1bmxpa2UgVVNCIHdpdGggdmhjaSBvciBXaS1GaSB3aXRoIG1hYzgwMjExX2h3c2ltKSwgdGhlIGRyaXZlciBjYW5ub3QgYmUgcHJvYmVkIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg5YmIxYjc1NzAxZDVmYWMzODE0ZmM5MDdkZmYyNTY5ZThjMjBhNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAxMzozNDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuaW5kZXggOTg4OTM3MzJiYzZlNC4uMmExNzI4NjIxODg3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5AQCAtNjI2LDYgKzYyNiwxNCBAQCBzdGF0aWMgaW50IHRibmV0X2FsbG9jX3R4X2J1ZmZlcnMoc3RydWN0IHRibmV0ICpuZXQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdF9mYWlsZWQoc3RydWN0IHRibmV0ICpuZXQpXG4re1xuK1x0LyogTGVhdmUgbG9naW5fcmVjZWl2ZWQgc2V0OiBvbmx5IHRoZSBwZWVyIGNhbiBtYWtlIGl0IHRydWUgYWdhaW4uICovXG4rXHRtdXRleF9sb2NrKFx1MDAyNm5ldC1cdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xuK1x0bmV0LVx1MDAzZWxvZ2luX3NlbnQgPSBmYWxzZTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZuZXQtXHUwMDNlY29ubmVjdGlvbl9sb2NrKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB0Ym5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqbmV0KSwgY29ubmVjdGVkX3dvcmspO1xuQEAgLTY0Nyw2ICs2NTUsOSBAQCBzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0ZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKG5ldC1cdTAwM2V4ZCwgbmV0LVx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcbiBcdGlmIChyZXQgIT0gbmV0LVx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKSB7XG4gXHRcdG5ldGRldl9lcnIobmV0LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gYWxsb2NhdGUgUnggSG9wSURcXG5cIik7XG4rXHRcdGlmIChyZXQgXHUwMDNlPSAwKVxuK1x0XHRcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXHUwMDNleGQsIHJldCk7XG4rXHRcdHRibmV0X2Nvbm5lY3RfZmFpbGVkKG5ldCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC02OTEsNiArNzAyLDcgQEAgc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0dGJfcmluZ19zdG9wKG5ldC1cdTAwM2VyeF9yaW5nLnJpbmcpO1xuIFx0dGJfcmluZ19zdG9wKG5ldC1cdTAwM2V0eF9yaW5nLnJpbmcpO1xuIFx0dGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC1cdTAwM2V4ZCwgbmV0LVx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcbitcdHRibmV0X2Nvbm5lY3RfZmFpbGVkKG5ldCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHRibmV0X2xvZ2luX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzQ6NDIuNzM5MzY2MDc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyOTU5NzkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jYC4gSXQgc2VlbXMgdGhleSd2ZSBhZGRlZCBhIGB0Ym5ldF9jb25uZWN0X2ZhaWxlZGAgZnVuY3Rpb24gYW5kIGFyZSBjYWxsaW5nIGl0IHdpdGhpbiBgdGJuZXRfY29ubmVjdGVkX3dvcmtgIHdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcuIFBsdXMsIHRoZXJlJ3MgdGhpcyBgdGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkYCBjYWxsIGFuZCBhIGNoZWNrIGJlZm9yZSBjYWxsaW5nIGB0Ym5ldF9jb25uZWN0X2ZhaWxlZGAuIFRoYXQncyBzdGFuZGFyZCBlcnJvciBoYW5kbGluZywgbm90aGluZyBncm91bmRicmVha2luZyB5ZXQuXG5cbkJ1dCB3YWl0LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLi4uIG5vdyBteSBicmFpbidzIGdvaW5nLiBDYW4gd2UgZnV6eiB0aGlzIGluIFFFTVU/IFRodW5kZXJib2x0IG5ldHdvcmtpbmcsIHRoYXQncyBub3Qgc29tZXRoaW5nIHlvdSBjYW4ganVzdCBkbyB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlLCByaWdodD8gT3IgYXQgbGVhc3QgcHJvcGVyIGVtdWxhdGlvbi4gSSBrbm93IGl0J3MgYSBjcml0aWNhbCBhcmVhLCBidXQgZ2VuZXJhbGx5LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGlzIGhpZ2hseSBoYXJkd2FyZS1kZXBlbmRlbnQuXG5cblNvLCBRRU1VLi4uIGRvZXMgc3RhbmRhcmQgUUVNVSBldmVuICpoYXZlKiBUaHVuZGVyYm9sdCBlbXVsYXRpb24/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnkgb2ZmaGFuZC4gSXQncyBvZnRlbiBhIHByZXR0eSBzcGVjaWFsaXplZCBhcmVhLiBOZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSdzIGFueSBzb2Z0d2FyZS1iYXNlZCBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciBUaHVuZGVyYm9sdC4gTGV0J3MgZG8gYSBxdWljayBgZ3JlcGAgc2VhcmNoIGZvciBcInRodW5kZXJib2x0XCIgaW4gdGhlIFFFTVUgc291cmNlIG9yIGFueSByZWxldmFudCBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiBhbnl0aGluZyBwb3BzIHVwLiBOZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgbGF5ZXIgYmVmb3JlIGV2ZW4gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGZ1enppbmcgc3RyYXRlZ2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjQ3Ljc2ODk2Njk2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ4OTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHVuZGVyYm9sdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90aHVuZGVyYm9sdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnPTI9Y29uZmlnIFVTQjRfTkVUXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnLTExLVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZzoxMjpcXHQgIGNhbGxlZCB0aHVuZGVyYm9sdF9uZXQuXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19VU0I0X05FVCkgOj0gdGh1bmRlcmJvbHRfbmV0Lm9cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZTozOnRodW5kZXJib2x0X25ldC1vYmpzIDo9IG1haW4ubyB0cmFjZS5vXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvTWFrZWZpbGUtNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvc2l6ZXMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjE6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RodW5kZXJib2x0LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTIyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC91dWlkLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDMtI2RlZmluZSBUQk5FVF9NQVhfUEFZTE9BRF9TSVpFXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0NDpcXHQoVEJORVRfRlJBTUVfU0laRSAtIHNpemVvZihzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyKSlcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDUtLyogUnggcGFja2V0cyBuZWVkIHRvIGhvbGQgc3BhY2UgZm9yIHNrYl9zaGFyZWRfaW5mbyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTUzLS8qKlxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo1NDogKiBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIC0gSGVhZGVyIGZvciBlYWNoIFRodW5kZXJib2x0IGZyYW1lXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTU1LSAqIEBmcmFtZV9zaXplOiBzaXplIG9mIHRoZSBkYXRhIHdpdGggdGhlIGZyYW1lXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNjMtICovXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjY0OnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9mcmFtZV9oZWFkZXIge1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy02NS1cXHRfX2xlMzIgZnJhbWVfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03MC1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzE6ZW51bSB0aHVuZGVyYm9sdF9pcF9mcmFtZV9wZGYge1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03Mi1cXHRUQklQX1BERl9GUkFNRV9TVEFSVCA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzUtXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjc2OmVudW0gdGh1bmRlcmJvbHRfaXBfdHlwZSB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTc3LVxcdFRCSVBfTE9HSU4sXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODItXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjgzOnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIge1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy04NC1cXHR1MzIgcm91dGVfaGk7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtOTctXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjk4OnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjk5OlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDAtXFx0dTMyIHByb3RvX3ZlcnNpb247XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTA2LVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMDc6c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ2luX3Jlc3BvbnNlIHtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTA4OlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDktXFx0dTMyIHN0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTQtXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjExNTpzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9nb3V0IHtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTE2OlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTctfTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMTk6c3RydWN0IHRodW5kZXJib2x0X2lwX3N0YXR1cyB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjEyMDpcXHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyIGhkcjtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTIxLVxcdHUzMiBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTgyPXN0cnVjdCB0Ym5ldCB7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTk5LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBkaXNjb25uZWN0X3dvcms7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjIwMDpcXHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIHJ4X2hkcjtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjAxLVxcdHN0cnVjdCB0Ym5ldF9yaW5nIHJ4X3Jpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MjIwPU1PRFVMRV9QQVJNX0RFU0MoZTJlLCBcXFwiVVNCNE5FVCBmdWxsIGVuZC10by1lbmQgZmxvdyBjb250cm9sIChkZWZhdWx0OiB0cnVlKVxcXCIpO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMjEtXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjIyMjpzdGF0aWMgdm9pZCB0Ym5ldF9maWxsX2hlYWRlcihzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyICpoZHIsIHU2NCByb3V0ZSxcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjIzLVxcdHU4IHNlcXVlbmNlLCBjb25zdCB1dWlkX3QgKmluaXRpYXRvcl91dWlkLCBjb25zdCB1dWlkX3QgKnRhcmdldF91dWlkLFxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyMjQ6XFx0ZW51bSB0aHVuZGVyYm9sdF9pcF90eXBlIHR5cGUsIHNpemVfdCBzaXplLCB1MzIgY29tbWFuZF9pZClcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNDI9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXNwb25zZShzdHJ1Y3QgdGJuZXQgKm5ldCwgdTY0IHJvdXRlLCB1OCBzZXF1ZW5jZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNDQte1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyNDU6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ2luX3Jlc3BvbnNlIHJlcGx5O1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNDYtXFx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gbmV0LVxcdTAwM2V4ZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNTk9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXF1ZXN0KHN0cnVjdCB0Ym5ldCAqbmV0LCB1OCBzZXF1ZW5jZSlcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjYwLXtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjYxOlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbl9yZXNwb25zZSByZXBseTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjYyOlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiByZXF1ZXN0O1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNjMtXFx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gbmV0LVxcdTAwM2V4ZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNzk9c3RhdGljIGludCB0Ym5ldF9sb2dvdXRfcmVzcG9uc2Uoc3RydWN0IHRibmV0ICpuZXQsIHU2NCByb3V0ZSwgdTggc2VxdWVuY2UsXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjgxLXtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjgyOlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9zdGF0dXMgcmVwbHk7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTI4My1cXHRzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQgPSBuZXQtXFx1MDAzZXhkO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTI5Mz1zdGF0aWMgaW50IHRibmV0X2xvZ291dF9yZXF1ZXN0KHN0cnVjdCB0Ym5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yOTQte1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyOTU6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ291dCByZXF1ZXN0O1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyOTY6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX3N0YXR1cyByZXBseTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjk3LVxcdHN0cnVjdCB0Yl94ZG9tYWluICp4ZCA9IG5ldC1cXHUwMDNleGQ7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9NDI1PXN0YXRpYyBpbnQgdGJuZXRfaGFuZGxlX3BhY2tldChjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00MjYte1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0Mjc6XFx0Y29uc3Qgc3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ2luICpwa2cgPSBidWY7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQyOC1cXHRzdHJ1Y3QgdGJuZXQgKm5ldCA9IGRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDM0LVxcdC8qIE1ha2Ugc3VyZSB0aGUgcGFja2V0IGlzIGZvciB1cyAqL1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0MzU6XFx0aWYgKHNpemUgXFx1MDAzYyBzaXplb2Yoc3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlcikpXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz03NTA9c3RhdGljIGJvb2wgdGJuZXRfY2hlY2tfZnJhbWUoc3RydWN0IHRibmV0ICpuZXQsIGNvbnN0IHN0cnVjdCB0Ym5ldF9mcmFtZSAqdGYsXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjc1MTpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyICpoZHIpXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTc1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9ODI1PXN0YXRpYyBpbnQgdGJuZXRfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODMyLVxcdHdoaWxlIChyeF9wYWNrZXRzIFxcdTAwM2MgYnVkZ2V0KSB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjgzMzpcXHRcXHRjb25zdCBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyICpoZHI7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTgzNC1cXHRcXHR1bnNpZ25lZCBpbnQgaGRyX3NpemUgPSBzaXplb2YoKmhkcik7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTAxNT1zdGF0aWMgYm9vbCB0Ym5ldF94bWl0X2NzdW1fYW5kX21hcChzdHJ1Y3QgdGJuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDE3LXtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTAxODpcXHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyICpoZHIgPSBwYWdlX2FkZHJlc3MoZnJhbWVzWzBdLVxcdTAwM2VwYWdlKTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTAxOS1cXHRzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gdGJfcmluZ19kbWFfZGV2aWNlKG5ldC1cXHUwMDNldHhfcmluZy5yaW5nKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0xMTMwPXN0YXRpYyBuZXRkZXZfdHhfdCB0Ym5ldF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTEzNS1cXHR1MTYgZnJhbWVfaWQgPSBhdG9taWNfcmVhZChcXHUwMDI2bmV0LVxcdTAwM2VmcmFtZV9pZCk7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjExMzY6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTM3LVxcdHVuc2lnbmVkIGludCBsZW4gPSBza2JfaGVhZGxlbihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTEzNjU9c3RhdGljIGludCB0Ym5ldF9wcm9iZShzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3QgdGJfc2VydmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTM5MC1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTM5MTpcXHRzdHJjcHkoZGV2LVxcdTAwM2VuYW1lLCBcXFwidGh1bmRlcmJvbHQlZFxcXCIpO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMzkyLVxcdGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0Ym5ldF9uZXRkZXZfb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE0MTAtXFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyA9IGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjE0MTE6XFx0ZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4gKz0gc2l6ZW9mKHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9mcmFtZV9oZWFkZXIpO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xNDEyLVxcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTE0ODk9c3RhdGljIHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciB0Ym5ldF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQ5MS1cXHRcXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTQ5MjpcXHRcXHQubmFtZSA9IFxcXCJ0aHVuZGVyYm9sdC1uZXRcXFwiLFxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xNDkzLVxcdFxcdC5wbSA9IHBtX3NsZWVwX3B0cihcXHUwMDI2dGJuZXRfcG1fb3BzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L3RyYWNlLmgtOS0jdW5kZWYgVFJBQ0VfU1lTVEVNXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvdHJhY2UuaDoxMDojZGVmaW5lIFRSQUNFX1NZU1RFTSB0aHVuZGVyYm9sdF9uZXRcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC90cmFjZS5oLTExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNDo0Ny44MTU0NjIyNjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA4MTMyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGh1bmRlcmJvbHQgRnV6emluZyB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHRodW5kZXJib2x0LW5ldGAsIHNwZWNpZmljYWxseSB0aGUgVVNCNF9ORVQgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZnV6eiB0aGlzIHRoaW5nIHVzaW5nIHN5emthbGxlcj8gVGhhdCdzIHRoZSBvYnZpb3VzIGZpcnN0IHF1ZXN0aW9uLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyIGV2ZW4gaGFzIGFueSBkZXNjcmlwdGlvbnMgcmVsYXRlZCB0byB0aHVuZGVyYm9sdC4gQWgsIHJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb25zISBUaGV5J3JlIHJlbWluZGluZyBtZSB0aGF0IEkgY2FuJ3QganVzdCBibGluZGx5IHNlYXJjaCB0aGUgc3l6a2FsbGVyIGNvZGUgYmFzZSAoYHN5cy8qYCkgZm9yIFwidGh1bmRlcmJvbHRcIiBiZWNhdXNlIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggaG93IHN5emthbGxlciBoYW5kbGVzIGl0cyBpbnRlcm5hbCBwc2V1ZG8tc3lzY2FsbHMuIFRoaW5ncyB0aGF0IHN0YXJ0IHdpdGggXCJzeXpfXCIgYXJlIG9mZi1saW1pdHMgZm9yIGEgc3RyYWlnaHQgc2VhcmNoIGhlcmUuIEkgbmVlZCB0byB1c2UgdGhvc2Ugb3RoZXIgdG9vbHMgdGhleSBtZW50aW9uZWQgLSBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgLSBpZiBJJ20gbG9va2luZyBmb3IgKnJlYWwqIGtlcm5lbC1sZXZlbCBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gU28sIGJhY2sgdG8gdGhlIGluaXRpYWwgcXVlc3Rpb246IGFyZSB0aGVyZSAqYW55KiBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciB0aHVuZGVyYm9sdCBhdCBhbGw/IEkgbmVlZCB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNDo1Mi42MjM1OTg0ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyOTY3MzgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHVuZGVyYm9sdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjI0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbToxOldoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMi1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT01PURlc2NyaXB0aW9uOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMjAtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW06MjE6V2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvJG5hbWVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yMi1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT0yNT1EZXNjcmlwdGlvbjpcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTI5LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjMwOldoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlLyRuYW1lL2luZGV4XFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMzEtRGF0ZTpcXHRcXHRTZXAgMjAyNlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09MzQ9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0zOC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbTozOTpXaGF0OlxcdFxcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXFx1MDAzY3hkb21haW5cXHUwMDNlLlxcdTAwM2NzZXJ2aWNlXFx1MDAzZS8kbmFtZS9pbl9ob3BpZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTQwLURhdGU6XFx0XFx0U2VwIDIwMjZcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtPTQzPURlc2NyaXB0aW9uOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNTctXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW06NTg6V2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvJG5hbWUvb3V0X2hvcGlkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNTktRGF0ZTpcXHRcXHRTZXAgMjAyNlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09NjI9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS02OC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbTo2OTpXaGF0OlxcdFxcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXFx1MDAzY3hkb21haW5cXHUwMDNlLlxcdTAwM2NzZXJ2aWNlXFx1MDAzZS8kbmFtZS9yaW5nX3NpemVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS03MC1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT03Mz1EZXNjcmlwdGlvbjpcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTc2LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjc3OldoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlLyRuYW1lL3Rocm90dGxpbmdcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS03OC1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9ib290X2FjbFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTItRGF0ZTpcXHRcXHRKdW4gMjAxOFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9NT1EZXNjcmlwdGlvbjpcXHRIb2xkcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGRldmljZSB1bmlxdWVfaWRzIHRoYXRcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI0OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9kZWF1dGhvcml6YXRpb25cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNS1EYXRlOlxcdFxcdE1heSAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yOD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSB0ZWxscyB3aGV0aGVyIHRoZSBzeXN0ZW0gc3VwcG9ydHNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMyLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMzOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9pb21tdV9kbWFfcHJvdGVjdGlvblxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0LURhdGU6XFx0XFx0TWFyIDIwMTlcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTM3PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIHRlbGxzIHdoZXRoZXIgdGhlIHN5c3RlbSB1c2VzIElPTU1VXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC00MS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo0MjpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2RvbWFpblgvc2VjdXJpdHlcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC00My1EYXRlOlxcdFxcdFNlcCAyMDE3XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD00Nj1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBob2xkcyBjdXJyZW50IFRodW5kZXJib2x0IHNlY3VyaXR5IGxldmVsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC02My1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo2NDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2F1dGhvcml6ZWRcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC02NS1EYXRlOlxcdFxcdFNlcCAyMDE3XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD02OD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGF1dGhvcml6ZSBUaHVuZGVyYm9sdCBkZXZpY2VzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC05Ny1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo5ODpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2Jvb3RcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC05OS1EYXRlOlxcdFxcdEp1biAyMDE4XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xMDI9RGVzY3JpcHRpb246XFx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgMSBpZiBUaHVuZGVyYm9sdCBkZXZpY2Ugd2FzIGFscmVhZHlcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEwNC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMDU6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9nZW5lcmF0aW9uXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTA2LURhdGU6XFx0XFx0SmFuIDIwMjBcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTEwOT1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgVGh1bmRlcmJvbHRcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTExMi1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMTM6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9rZXlcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMTQtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTE3PURlc2NyaXB0aW9uOlxcdFdoZW4gYSBkZXZpY2VzIHN1cHBvcnRzIFRodW5kZXJib2x0IHNlY3VyZSBjb25uZWN0IGl0IHdpbGxcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEyMi1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMjM6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9kZXZpY2VcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjQtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTI3PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGlkIG9mIHRoaXMgZGV2aWNlIGV4dHJhY3RlZCBmcm9tXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjktXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTMwOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZGV2aWNlX25hbWVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMzEtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTM0PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIG5hbWUgb2YgdGhpcyBkZXZpY2UgZXh0cmFjdGVkIGZyb21cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEzNi1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMzc6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9tYXhob3BpZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEzOC1EYXRlOlxcdFxcdEp1bCAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xNDE9RGVzY3JpcHRpb246XFx0T25seSBzZXQgZm9yIFhEb21haW5zLiBUaGUgbWF4aW11bSBIb3BJRCB0aGUgb3RoZXIgaG9zdFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTQzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE0NDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3J4X3NwZWVkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTQ1LURhdGU6XFx0XFx0SmFuIDIwMjBcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE0OD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSByZXBvcnRzIHRoZSBkZXZpY2UgUlggc3BlZWQgcGVyIGxhbmUuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNTAtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTUxOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vcnhfbGFuZXNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNTItRGF0ZTpcXHRcXHRKYW4gMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTU1PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIHJlcG9ydHMgbnVtYmVyIG9mIFJYIGxhbmVzIHRoZSBkZXZpY2UgaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1Ny1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxNTg6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi90eF9zcGVlZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1OS1EYXRlOlxcdFxcdEphbiAyMDIwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xNjI9RGVzY3JpcHRpb246XFx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyB0aGUgVFggc3BlZWQgcGVyIGxhbmUuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNjQtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTY1OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vdHhfbGFuZXNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNjYtRGF0ZTpcXHRcXHRKYW4gMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTY5PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIHJlcG9ydHMgbnVtYmVyIG9mIFRYIGxhbmVzIHRoZSBkZXZpY2UgaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE3MS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxNzI6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi92ZW5kb3JcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNzMtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTc2PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHZlbmRvciBpZCBvZiB0aGlzIGRldmljZSBleHRyYWN0ZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE3OC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxNzk6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi92ZW5kb3JfbmFtZVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE4MC1EYXRlOlxcdFxcdFNlcCAyMDE3XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xODM9RGVzY3JpcHRpb246XFx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdmVuZG9yIG5hbWUgb2YgdGhpcyBkZXZpY2UgZXh0cmFjdGVkXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xODUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTg2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vdW5pcXVlX2lkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTg3LURhdGU6XFx0XFx0U2VwIDIwMTdcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE5MD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB1bmlxdWVfaWQgc3RyaW5nIG9mIHRoaXMgZGV2aWNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTk0LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE5NTpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV92ZXJzaW9uXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTk2LURhdGU6XFx0XFx0U2VwIDIwMTdcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE5OT1EZXNjcmlwdGlvbjpcXHRJZiB0aGUgZGV2aWNlIGhhcyB1cGdyYWRlYWJsZSBmaXJtd2FyZSB0aGUgdmVyc2lvblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjAzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjIwNDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV9hdXRoZW50aWNhdGVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yMDUtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjA4PURlc2NyaXB0aW9uOlxcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjMxLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjIzMjpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV9hdXRoZW50aWNhdGVfb25fZGlzY29ubmVjdFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzMy1EYXRlOlxcdFxcdE9jdCAyMDIwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yMzY9RGVzY3JpcHRpb246XFx0Rm9yIHN1cHBvcnRlZCBkZXZpY2VzLCBhdXRvbWF0aWNhbGx5IGF1dGhlbnRpY2F0ZSB0aGUgbmV3IFRodW5kZXJib2x0XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNDUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjQ2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlL2tleVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI0Ny1EYXRlOlxcdFxcdEphbiAyMDE4XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yNTA9RGVzY3JpcHRpb246XFx0VGhpcyBjb250YWlucyBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBkaXJlY3RvcnkgdGhlIFhEb21haW5cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI2MC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyNjE6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvbW9kYWxpYXNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNjItRGF0ZTpcXHRcXHRKYW4gMjAxOFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjY1PURlc2NyaXB0aW9uOlxcdFN0b3JlcyB0aGUgc2FtZSBNT0RBTElBUyB2YWx1ZSBlbWl0dGVkIGJ5IHVldmVudCBmb3JcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI2Ny1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyNjg6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvcHJ0Y2lkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjY5LURhdGU6XFx0XFx0SmFuIDIwMThcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI3Mj1EZXNjcmlwdGlvbjpcXHRUaGlzIGNvbnRhaW5zIFhEb21haW4gcHJvdG9jb2wgaWRlbnRpZmllciB0aGUgWERvbWFpblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjc0LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI3NTpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXFx1MDAzY3hkb21haW5cXHUwMDNlLlxcdTAwM2NzZXJ2aWNlXFx1MDAzZS9wcnRjdmVyc1xcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI3Ni1EYXRlOlxcdFxcdEphbiAyMDE4XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yNzk9RGVzY3JpcHRpb246XFx0VGhpcyBjb250YWlucyBYRG9tYWluIHByb3RvY29sIHZlcnNpb24gdGhlIFhEb21haW5cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI4MS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyODI6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvcHJ0Y3JldnNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yODMtRGF0ZTpcXHRcXHRKYW4gMjAxOFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Mjg2PURlc2NyaXB0aW9uOlxcdFRoaXMgY29udGFpbnMgWERvbWFpbiBzb2Z0d2FyZSB2ZXJzaW9uIHRoZSBYRG9tYWluXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yODgtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6Mjg5OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlL3BydGNzdG5zXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjkwLURhdGU6XFx0XFx0SmFuIDIwMThcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI5Mz1EZXNjcmlwdGlvbjpcXHRUaGlzIGNvbnRhaW5zIFhEb21haW4gc2VydmljZSBzcGVjaWZpYyBzZXR0aW5ncyBhc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjk1LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI5NjpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9jb25uZWN0b3JcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yOTctRGF0ZTpcXHRcXHRBcHJpbCAyMDIyXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yOTk9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMDUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzA2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy91c2I0X3BvcnRYL2xpbmtcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMDctRGF0ZTpcXHRcXHRTZXAgMjAyMVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzEwPURlc2NyaXB0aW9uOlxcdFJldHVybnMgdGhlIGN1cnJlbnQgbGluayBtb2RlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMTItXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzEzOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy91c2I0X3BvcnRYL29mZmxpbmVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMTQtRGF0ZTpcXHRcXHRTZXAgMjAyMVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzE3PURlc2NyaXB0aW9uOlxcdFdyaXRpbmcgMSB0byB0aGlzIGF0dHJpYnV0ZSBwdXRzIHRoZSBVU0I0IHBvcnQgaW50b1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzI3LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMyODpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9yZXNjYW5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMjktRGF0ZTpcXHRcXHRTZXAgMjAyMVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzMyPURlc2NyaXB0aW9uOlxcdFdoZW4gdGhlIFVTQjQgcG9ydCBpcyBpbiBvZmZsaW5lIG1vZGUgd3JpdGluZyAxIHRvIHRoaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMzOC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozMzk6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2NkZXZpY2VcXHUwMDNlOlxcdTAwM2Nwb3J0XFx1MDAzZS5cXHUwMDNjaW5kZXhcXHUwMDNlL2RldmljZVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0MC1EYXRlOlxcdFxcdE9jdCAyMDIwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0zNDM9RGVzY3JpcHRpb246XFx0UmV0aW1lciBkZXZpY2UgaWRlbnRpZmllciByZWFkIGZyb20gdGhlIGhhcmR3YXJlLlxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0NC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozNDU6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2NkZXZpY2VcXHUwMDNlOlxcdTAwM2Nwb3J0XFx1MDAzZS5cXHUwMDNjaW5kZXhcXHUwMDNlL252bV9hdXRoZW50aWNhdGVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNDYtRGF0ZTpcXHRcXHRPY3QgMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzQ5PURlc2NyaXB0aW9uOlxcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzU5LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjM2MDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXFx1MDAzY2RldmljZVxcdTAwM2U6XFx1MDAzY3BvcnRcXHUwMDNlLlxcdTAwM2NpbmRleFxcdTAwM2UvbnZtX3ZlcnNpb25cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjEtRGF0ZTpcXHRcXHRPY3QgMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzY0PURlc2NyaXB0aW9uOlxcdEhvbGRzIHJldGltZXIgTlZNIHZlcnNpb24gbnVtYmVyLiBGb3JtYXQ6ICV4LiV4LCBtYWpvci5taW5vci5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzY2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cXHUwMDNjZGV2aWNlXFx1MDAzZTpcXHUwMDNjcG9ydFxcdTAwM2UuXFx1MDAzY2luZGV4XFx1MDAzZS92ZW5kb3JcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjctRGF0ZTpcXHRcXHRPY3QgMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9pbmRleC5yc3Q9MTQwPUhvdyB0byBjb25maWd1cmUgeW91ciBoYXJkd2FyZSB3aXRoaW4geW91ciBMaW51eCBzeXN0ZW0uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xNjQtICAgdGhlcm1hbC9pbmRleFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0OjE2NTogICB0aHVuZGVyYm9sdFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTE2Ni0gICB2Z2Etc29mdGN1cnNvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzA9TW9yZSBkZXRhaWxzIGFib3V0IHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIFRodW5kZXJib2x0IGRldmljZXMgY2FuIGJlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzE6Zm91bmQgaW4gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zND1tYW51YWwgd29yayBjYW4gYWRkIGZvbGxvd2luZyBsaW5lIHRvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozNzogIEFDVElPTj09XFxcImFkZFxcXCIsIFNVQlNZU1RFTT09XFxcInRodW5kZXJib2x0XFxcIiwgQVRUUnthdXRob3JpemVkfT09XFxcIjBcXFwiLCBBVFRSe2F1dGhvcml6ZWR9PVxcXCIxXFxcIlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9NTM9VGhlIHNlY3VyaXR5IGxldmVscyBhcmUgYXMgZm9sbG93czpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTYyLSAgICBCYXNlZCBvbiB0aGUgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0aHJvdWdoXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6NjM6ICAgIGBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlc2BgLCB0aGUgdXNlciB0aGVuIGNhbiBtYWtlIHRoZSBkZWNpc2lvbi5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC02NC0gICAgSW4gQklPUyBzZXR0aW5ncyB0aGlzIGlzIHR5cGljYWxseSBjYWxsZWQgKlVuaXF1ZSBJRCouXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD04Nz1UaGUgY3VycmVudCBzZWN1cml0eSBsZXZlbCBjYW4gYmUgcmVhZCBmcm9tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6ODg6YGAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL2RvbWFpblgvc2VjdXJpdHlgYCB3aGVyZSBgYGRvbWFpblhgYCBpc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTg5LXRoZSBUaHVuZGVyYm9sdCBkb21haW4gdGhlIGhvc3QgY29udHJvbGxlciBtYW5hZ2VzLiBUaGVyZSBpcyB0eXBpY2FsbHlcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTk2PUVhY2ggVGh1bmRlcmJvbHQgZGV2aWNlIHBsdWdnZWQgaW4gd2lsbCBhcHBlYXIgaW4gc3lzZnMgdW5kZXJcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo5NzpgYC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXNgYC4gVGhlIGRldmljZSBkaXJlY3RvcnkgY2Fycmllc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTk4LWluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHBhcnRpY3VsYXIgZGV2aWNlLFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTAzPVdoZW4gYSBkZXZpY2UgaXMgcGx1Z2dlZCBpbiBpdCB3aWxsIGFwcGVhciBpbiBzeXNmcyBhcyBmb2xsb3dzOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMDQtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTA1OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvYXV0aG9yaXplZFxcdC0gMFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEwNjogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0xL2RldmljZVxcdC0gMHg4MDA0XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTA3OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvZGV2aWNlX25hbWVcXHQtIFRodW5kZXJib2x0IHRvIEZpcmVXaXJlIEFkYXB0ZXJcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDg6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS92ZW5kb3JcXHQtIDB4MVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEwOTogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0xL3ZlbmRvcl9uYW1lXFx0LSBBcHBsZSwgSW5jLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjExMDogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0xL3VuaXF1ZV9pZFxcdC0gZTAzNzZmMDAtMDMwMC0wMTAwLWZmZmYtZmZmZmZmZmZmZmZmXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTExLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTEzPWNyZWF0ZWQgeWV0LiBUaGUgdXNlciBjYW4gYXV0aG9yaXplIHRoZSBkZXZpY2UgYnkgc2ltcGx5IGVudGVyaW5nOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMTQtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTE1OiAgIyBlY2hvIDEgXFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS9hdXRob3JpemVkXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTE2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTIyPWZ1dHVyZSBjb25uZWN0czo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTIzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyNDogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2F1dGhvcml6ZWRcXHQtIDBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjU6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9kZXZpY2VcXHQtIDB4MzA1XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTI2OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMvZGV2aWNlX25hbWVcXHQtIEFLaVRpTyBUaHVuZGVyMyBQQ0llIEJveFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyNzogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2tleVxcdFxcdC1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjg6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy92ZW5kb3JcXHQtIDB4NDFcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjk6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy92ZW5kb3JfbmFtZVxcdC0gaW5YdHJvblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEzMDogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL3VuaXF1ZV9pZFxcdC0gZGMwMTAwMDAtMDAwMC04NTA4LWEyMmQtMzJjYTY0MjFjYjE2XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTMxLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTM5PXBsdWdnZWQgYSBrZXkgbmVlZHMgdG8gYmUgY3JlYXRlZCBhbmQgc2VudCB0byB0aGUgZGV2aWNlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE0MS0gICMga2V5PSQob3BlbnNzbCByYW5kIC1oZXggMzIpXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTQyOiAgIyBlY2hvICRrZXkgXFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9rZXlcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxNDM6ICAjIGVjaG8gMSBcXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2F1dGhvcml6ZWRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xNDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0xNDk9ZGV2aWNlIHVzaW5nIHRoZSBzYW1lIGtleTo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTUwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjE1MTogICMgZWNobyAka2V5IFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMva2V5XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTUyOiAgIyBlY2hvIDIgXFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9hdXRob3JpemVkXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTUzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTg2PXN5c3RlbXMgY2FuIGJlIGlkZW50aWZpZWQgYnkgcmVhZGluZyBgYDFgYCBmcm9tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTg3OmBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9kb21haW5YL2lvbW11X2RtYV9wcm90ZWN0aW9uYGAgYXR0cmlidXRlLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE4OC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTE5NT1mb2xsb3dpbmcgYGB1ZGV2YGAgcnVsZTo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTk2LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjE5NzogIEFDVElPTj09XFxcImFkZFxcXCIsIFNVQlNZU1RFTT09XFxcInRodW5kZXJib2x0XFxcIiwgQVRUUlN7aW9tbXVfZG1hX3Byb3RlY3Rpb259PT1cXFwiMVxcXCIsIEFUVFJ7YXV0aG9yaXplZH09PVxcXCIwXFxcIiwgQVRUUnthdXRob3JpemVkfT1cXFwiMVxcXCJcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xOTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yNTA9b2YgdGhlIGhvc3Qgb3IgZGV2aWNlLiBFeGFtcGxlIG9uIGhvdyB0byB1cGRhdGUgSW50ZWwgTlVDNmk3S1lLXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNTItXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MjUzOiAgIyBkZCBpZj1LWUtfVEJUX0ZXXzAwMTguYmluIG9mPS9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV9ub25fYWN0aXZlMC9udm1lbVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI1NC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI1Nj11cGdyYWRlIHByb2Nlc3MgYXMgZm9sbG93czo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjU3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI1ODogICMgZWNobyAxIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvbnZtX2F1dGhlbnRpY2F0ZVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI1OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI2ND1jb21tYW5kczo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjY1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI2NjogICMgY2F0IC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV9hdXRoZW50aWNhdGVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjctICAweDBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyNjg6ICAjIGNhdCAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMC9udm1fdmVyc2lvblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI2OS0gIDE4LjBcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI4NT1pcyB0byBmaXJzdCBwdXQgdGhlIFVTQjQgcG9ydCBpbnRvIG9mZmxpbmUgbW9kZTo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjg2LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI4NzogICMgZWNobyAxIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9vZmZsaW5lXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjg4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MjkxPWZvciB0aGUgcmV0aW1lcnM6OlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI5Mi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyOTM6ICAjIGVjaG8gMSBcXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL3VzYjRfcG9ydDEvcmVzY2FuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjk0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mjk4PW1vZGUpIHNvIGFmdGVyIHdyaXRpbmcgYGAxYGAgdG8gYGBudm1fYXV0aGVudGljYXRlYGAgb25lIHNob3VsZCB3YWl0IGZvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzAwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjMwMTogICMgZWNobyAxIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9yZXNjYW5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zMDItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zMDQ9ZnVuY3Rpb25hbCBzdGF0ZSBhZ2Fpbjo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjMwNjogICMgZWNobyAwIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9vZmZsaW5lXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA3LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzIxPVRoZSBkcml2ZXIgc2VuZHMgYGBLT0JKX0NIQU5HRWBgIGV2ZW50cyB0byB1c2Vyc3BhY2Ugd2hlbiB0aGVyZSBpcyBhXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzIyOnR1bm5lbGluZyBjaGFuZ2UgaW4gdGhlIGBgdGh1bmRlcmJvbHRfZG9tYWluYGAuIFRoZSBub3RpZmljYXRpb24gY2Fycmllc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTMyMy1mb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTM2MT1kbyBpcyB0byBjb25uZWN0IGEgVGh1bmRlcmJvbHQgY2FibGUgYmV0d2VlbiB0aGUgdHdvIGhvc3RzOyB0aGVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozNjI6YGB0aHVuZGVyYm9sdC1uZXRgYCBkcml2ZXIgaXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkuIElmIHRoZSBvdGhlciBob3N0IGlzXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzYzOmFsc28gTGludXggeW91IHNob3VsZCBsb2FkIGBgdGh1bmRlcmJvbHQtbmV0YGAgbWFudWFsbHkgb24gb25lIGhvc3QgKGl0XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzY0LWRvZXMgbm90IG1hdHRlciB3aGljaCBvbmUpOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNjUtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzY2OiAgIyBtb2Rwcm9iZSB0aHVuZGVyYm9sdC1uZXRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNjctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zNzE9VGhlIGRyaXZlciB3aWxsIGNyZWF0ZSBvbmUgdmlydHVhbCBldGhlcm5ldCBpbnRlcmZhY2UgcGVyIFRodW5kZXJib2x0XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzcyOnBvcnQgd2hpY2ggYXJlIG5hbWVkIGxpa2UgYGB0aHVuZGVyYm9sdDBgYCBhbmQgc28gb24uIEZyb20gdGhpcyBwb2ludFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM3My15b3UgY2FuIGVpdGhlciB1c2Ugc3RhbmRhcmQgdXNlcnNwYWNlIHRvb2xzIGxpa2UgYGBpcGBgIHRvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zNzk9c3RyZWFtaW5nIGRhdGEgZGlyZWN0bHkgb3ZlciBhIGNhYmxlIGFzIHdlbGwgKGFrYS4gVVNCNFNUUkVBTSkuIFRoaXMgaXNcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozODA6cG9zc2libGUgdGhyb3VnaCBgYHRodW5kZXJib2x0LXN0cmVhbWBgIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zODEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzgyOlNpbWlsYXJseSB0byBgYHRodW5kZXJib2x0LW5ldGBgIHlvdSBsb2FkIHRoZSBkcml2ZXIgZmlyc3Qgb24gb25lIGVuZDo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzgzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4NDogIGhvc3QxICMgbW9kcHJvYmUgdGh1bmRlcmJvbHQtc3RyZWFtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTM4Nj1UaGVuIHlvdSBjb25maWd1cmUgaXQgdmlhIGBgQ29uZmlnRlNgYDo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4ODogIGhvc3QxICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4OS0gIGhvc3QxICMgbWtkaXIgLXAgMC0xLjAvZGF0YVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mzk3PXlvdSBhdXRvbWF0aWNhbGx5OjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zOTgtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6Mzk5OiAgaG9zdDIgIyBjZCAvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDAwLSAgaG9zdDIgIyBta2RpciAtcCAwLTMuMC9kYXRhXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD00MTM9T25jZSB5b3UgYXJlIGRvbmUgd2l0aCB0aGUgc3RyZWFtIHlvdSBjYW4gcmVtb3ZlIHRoZW06OlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQxNC1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MTU6ICBob3N0MiAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MTYtICBob3N0MiAjIHJtZGlyIC1wIDAtMS4wL2RhdGFcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MTc6ICBob3N0MSAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MTgtICBob3N0MSAjIHJtZGlyIC1wIDAtMy4wL2RhdGFcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTQyMz1JdCBpcyBwb3NzaWJsZSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgc3RyZWFtIGFuZCB5b3UgY2FuIGhhdmUgYm90aCBzdHJlYW1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MjQ6YW5kIGBgdGh1bmRlcmJvbHQtbmV0YGAgaW4gdXNlIHNpbXVsdGFuZW91c2x5LiBGb3IgZXhhbXBsZSB3ZSBjYW4gY3JlYXRlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDI1LXR3byBzdHJlYW1zIHdpdGggbmFtZSBgYGNvbnRyb2xgYCBhbmQgYGBkYXRhYGAgbGlrZSB0aGlzOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MjYtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6NDI3OiAgaG9zdDEgIyBjZCAvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDI4LSAgaG9zdDEgIyBta2RpciAwLTEuMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9NDQyPWEgc3lzZnMgYXR0cmlidXRlIGNhbGxlZCBcXFwiZm9yY2VfcG93ZXJcXFwiLCBzZWVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0NDM6RG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1pbnRlbC13bWktdGh1bmRlcmJvbHQgZm9yIGRldGFpbHMuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDQ0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3Q9MTc9dGhlIGtlcm5lbCB0aHJvdWdoIHZhcmlvdXMgbmV0d29ya2luZyBvciBsaW1pdGVkIEhXLXNwZWNpZmljIGV4cG9zZWRcXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L3NucC10ZHgtdGhyZWF0LW1vZGVsLnJzdDoxODppbnRlcmZhY2VzIChVU0IsIHRodW5kZXJib2x0KS4gVGhlIGdvYWwgb2YgdGhpcyBkb2N1bWVudCBpcyB0byBleHBsYWluXFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3QtMTktYWRkaXRpb25hbCBhdHRhY2sgdmVjdG9ycyB0aGF0IGFyaXNlIGluIHRoZSBjb25maWRlbnRpYWwgY29tcHV0aW5nIHNwYWNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3Q9NzU9VG9kb2xpc3Q6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3QtMTIwLSogICBzdmdhXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvaW5kZXgucnN0OjEyMToqICAgdGh1bmRlcmJvbHRcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3QtMTIyLSogICB1ZnNcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdD03Nz1Ub2RvbGlzdDpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjMtKiAgIHN2Z2FcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9pbmRleC5yc3Q6MTI0OiogICB0aHVuZGVyYm9sdFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjUtKiAgIHVmc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi93bWkvZHJpdmVyLWRldmVsb3BtZW50LWd1aWRlLnJzdD0xMTY9dGhlIG51bWJlciBvZiBpbnN0YW5jZXMgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB3bWlkZXZfaW5zdGFuY2VfY291bnQoKS5cXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0LTExNy1cXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0OjExODpUYWtlIGEgbG9vayBhdCBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC93bWkvdGh1bmRlcmJvbHQuYyBmb3IgYW4gZXhhbXBsZSBXTUkgbWV0aG9kIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0LTExOS1cXG4tLVxcbk1BSU5UQUlORVJTPTEzNDg1PVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjEzNDg2OkY6XFx0ZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvd21pL3RodW5kZXJib2x0LmNcXG5NQUlOVEFJTkVSUy0xMzQ4Ny1cXG4tLVxcbk1BSU5UQUlORVJTPTI2OTA2PVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjI2OTA3OkY6XFx0ZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jXFxuTUFJTlRBSU5FUlMtMjY5MDgtXFxuLS1cXG5NQUlOVEFJTkVSUz0yNjkxND1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoyNjkxNTpUOlxcdGdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvd2VzdGVyaS90aHVuZGVyYm9sdC5naXRcXG5NQUlOVEFJTkVSUzoyNjkxNjpGOlxcdERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0XFxuTUFJTlRBSU5FUlM6MjY5MTc6RjpcXHRkcml2ZXJzL3RodW5kZXJib2x0L1xcbk1BSU5UQUlORVJTOjI2OTE4OkY6XFx0aW5jbHVkZS9saW51eC90aHVuZGVyYm9sdC5oXFxuTUFJTlRBSU5FUlMtMjY5MTktXFxuLS1cXG5NQUlOVEFJTkVSUz0yNjkyND1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoyNjkyNTpGOlxcdGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L1xcbk1BSU5UQUlORVJTLTI2OTI2LVxcbi0tXFxuZHJpdmVycy9LY29uZmlnPTIxND1zb3VyY2UgXFxcImRyaXZlcnMvcmFzL0tjb25maWdcXFwiXFxuZHJpdmVycy9LY29uZmlnLTIxNS1cXG5kcml2ZXJzL0tjb25maWc6MjE2OnNvdXJjZSBcXFwiZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvS2NvbmZpZy0yMTctXFxuLS1cXG5kcml2ZXJzL01ha2VmaWxlPTE3NT1vYmotJChDT05GSUdfUkFTKVxcdFxcdCs9IHJhcy9cXG5kcml2ZXJzL01ha2VmaWxlOjE3NjpvYmotJChDT05GSUdfVVNCNClcXHRcXHQrPSB0aHVuZGVyYm9sdC9cXG5kcml2ZXJzL01ha2VmaWxlLTE3Ny1vYmotJChDT05GSUdfQ09SRVNJR0hUKVxcdFxcdCs9IGh3dHJhY2luZy9jb3Jlc2lnaHQvXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jPTg3PW5vdXZlYXVfdmdhX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jLTEwMC1cXHQvKiBkb24ndCByZWdpc3RlciBUaHVuZGVyYm9sdCBlR1BVIHdpdGggdmdhX3N3aXRjaGVyb28gKi9cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jOjEwMTpcXHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTAyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmM9MTExPW5vdXZlYXVfdmdhX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jLTEyMy1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jOjEyNDpcXHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jPTEyNzk9aW50IHJhZGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE0MzAtXFx0XFx0cnVudGltZSA9IHRydWU7XFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM6MTQzMTpcXHRpZiAoIXBjaV9pc190aHVuZGVyYm9sdF9hdHRhY2hlZChyZGV2LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYy0xNDMyLVxcdFxcdHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2NsaWVudChyZGV2LVxcdTAwM2VwZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM9MTUxMz12b2lkIHJhZGVvbl9kZXZpY2VfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE1MjAtXFx0cmFkZW9uX2ZpbmkocmRldik7XFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM6MTUyMTpcXHRpZiAoIXBjaV9pc190aHVuZGVyYm9sdF9hdHRhY2hlZChyZGV2LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYy0xNTIyLVxcdFxcdHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KHJkZXYtXFx1MDAzZXBkZXYpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmM9MTAzPWludCByYWRlb25fZHJpdmVyX2xvYWRfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYy0xMzMtXFx0ICAgICgoZmxhZ3MgXFx1MDAyNiBSQURFT05fSVNfSUdQKSA9PSAwKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ttcy5jOjEzNDpcXHQgICAgIXBjaV9pc190aHVuZGVyYm9sdF9hdHRhY2hlZChwZGV2KSlcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYy0xMzUtXFx0XFx0ZmxhZ3MgfD0gUkFERU9OX0lTX1BYO1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjAxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMi1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU9ODU9b2JqLSQoQ09ORklHX0ZVSklUU1VfRVMpICs9IGZqZXMvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6ODY6b2JqLSQoQ09ORklHX1VTQjRfTkVUKSArPSB0aHVuZGVyYm9sdC9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS04Ny1vYmotJChDT05GSUdfTkVUREVWU0lNKSArPSBuZXRkZXZzaW0vXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjU0Ljc1MzI4NTQ0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDQwNjYwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVGh1bmRlcmJvbHQgTmV0d29ya2luZyBDb2RlIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdgIGFuZCBJIHNlZSB0aGlzIGBjb25maWcgVVNCNF9ORVRgIG9wdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gcmVzaWRlIGluIGBkcml2ZXJzL3RodW5kZXJib2x0L2AsIGFzIEknZCBleHBlY3QuIE5vdywgbXkgbWluZCBkcmlmdHMgdG8gZnV6emluZyDigJMgYXJlIHRoZXJlIGFueSBleGlzdGluZyBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzIGRlZmluZWQgZm9yIHRodW5kZXJib2x0PyBObywgcHJvYmFibHkgbm90LCBJIHNob3VsZG4ndCBldmVuIGJvdGhlciBzZWFyY2hpbmcgZm9yIGBzeXpfYC4gQnV0IGhhbmcgb24sIHRoZSBwYXRjaCBJJ20gaW50ZXJlc3RlZCBpbiBpcyBpbiBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jYC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gYmVjb21lczogQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGNvZGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gVGh1bmRlcmJvbHQgbmV0d29ya2luZyBpcyBrbm93biB0byBpbnZvbHZlIFRodW5kZXJib2x0IGRvbWFpbnMgYW5kIFhEb21haW4gY29ubmVjdGlvbnMuIFRoZSB0cmlja3kgcGFydCBpcywgY2FuIFFFTVUgZW11bGF0ZSB0aGUgVGh1bmRlcmJvbHQgaGFyZHdhcmUgaXRzZWxmPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBhdmFpbGFibGUgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgZm9yIHRoaXMsIHNvbWV0aGluZyBzaW1pbGFyIHRvIGhvdyBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aGNpYCB3b3JrIGZvciBvdGhlciBzdWJzeXN0ZW1zLiBUaW1lIHRvIGdyZXAgZm9yIGB0aHVuZGVyYm9sdGAgd2l0aGluIGBkcml2ZXJzL3RodW5kZXJib2x0L2AuIE1heWJlIHRoZXJlJ3MgYSBkZWRpY2F0ZWQgc29mdHdhcmUgdGVzdGluZyBkcml2ZXIgdGhhdCB3b3VsZCBtYWtlIHRoaXMgcHJvY2VzcyBtdWNoIGVhc2llci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0OTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MDAuMTU3MzUzNzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTIyODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt1bml0fHRlc3R8bW9ja3xzaW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMzYxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWc9NDk9Y29uZmlnIFVTQjRfS1VOSVRfVEVTVFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZzo1MDpcXHRib29sIFxcXCJLVW5pdCB0ZXN0c1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy01MS1cXHRkZXBlbmRzIG9uIFVTQjQgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnPTU0PWNvbmZpZyBVU0I0X0RNQV9URVNUXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnOjU1OlxcdHRyaXN0YXRlIFxcXCJETUEgdHJhZmZpYyB0ZXN0IGRyaXZlclxcXCJcXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWctNTYtXFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnLTU5LVxcdCAgY29ubmVjdGlvbi4gTG9vcGJhY2sgY29ubmVjdGlvbiBjYW4gYmUgZG9uZSBieSBlaXRoZXIgc3BlY2lhbFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZzo2MDpcXHQgIGRvbmdsZSB0aGF0IGhhcyBUWC9SWCBsaW5lcyBjcm9zc2VkLCBvciBieSBzaW1wbHkgY29ubmVjdGluZyBhXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnLTYxLVxcdCAgY2FibGUgYmFjayB0byB0aGUgaG9zdC4gT25seSBlbmFibGUgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnLTY0LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnOjY1OlxcdCAgY2FsbGVkIHRodW5kZXJib2x0X2RtYV90ZXN0LlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02Ni1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGU9MTA9dGh1bmRlcmJvbHQtJChDT05GSUdfVVNCNF9DT05GSUdGUykgKz0gY29uZmlnZnMub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGU6MTE6dGh1bmRlcmJvbHQtJHtDT05GSUdfVVNCNF9LVU5JVF9URVNUfSArPSB0ZXN0Lm9cXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlOjEyOkNGTEFHU190ZXN0Lm8gKz0gJChESVNBQkxFX1NUUlVDVExFQUtfUExVR0lOKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNDp0aHVuZGVyYm9sdF9kbWFfdGVzdC0ke0NPTkZJR19VU0I0X0RNQV9URVNUfSArPSBkbWFfdGVzdC5vXFxuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfVVNCNF9ETUFfVEVTVCkgKz0gdGh1bmRlcmJvbHRfZG1hX3Rlc3Qub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTYtXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jPTEzMz1zdGF0aWMgaW50IHRiX2NmZ19yZXF1ZXN0X2VucXVldWUoc3RydWN0IHRiX2N0bCAqY3RsLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xMzUte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6MTM2OlxcdFdBUk5fT04odGVzdF9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcXHUwMDI2cmVxLVxcdTAwM2VmbGFncykpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTM3LVxcdFdBUk5fT04ocmVxLVxcdTAwM2VjdGwpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYz0xNTE9c3RhdGljIHZvaWQgdGJfY2ZnX3JlcXVlc3RfZGVxdWV1ZShzdHJ1Y3QgdGJfY2ZnX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTU1LVxcdG11dGV4X2xvY2soXFx1MDAyNmN0bC1cXHUwMDNlcmVxdWVzdF9xdWV1ZV9sb2NrKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jOjE1NjpcXHRpZiAoIXRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0FDVElWRSwgXFx1MDAyNnJlcS1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xNTctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdGwtXFx1MDAzZXJlcXVlc3RfcXVldWVfbG9jayk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTE2Mi1cXHRjbGVhcl9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcXHUwMDI2cmVxLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzoxNjM6XFx0aWYgKHRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0NBTkNFTEVELCBcXHUwMDI2cmVxLVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xNjQtXFx0XFx0d2FrZV91cChcXHUwMDI2dGJfY2ZnX3JlcXVlc3RfY2FuY2VsX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM9MTY4PXN0YXRpYyBib29sIHRiX2NmZ19yZXF1ZXN0X2lzX2FjdGl2ZShzdHJ1Y3QgdGJfY2ZnX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTE2OS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzoxNzA6XFx0cmV0dXJuIHRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0FDVElWRSwgXFx1MDAyNnJlcS1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTcxLX1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM9NTI0PXN0YXRpYyB2b2lkIHRiX2NmZ19yZXF1ZXN0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy01MjctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzo1Mjg6XFx0aWYgKCF0ZXN0X2JpdChUQl9DRkdfUkVRVUVTVF9DQU5DRUxFRCwgXFx1MDAyNnJlcS1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtNTI5LVxcdFxcdHJlcS1cXHUwMDNlY2FsbGJhY2socmVxLVxcdTAwM2VjYWxsYmFja19kYXRhKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTQxND1zdGF0aWMgc3NpemVfdCByZXRpbWVyX3NiX3JlZ3Nfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy00ODMtICogQHRpbWU6ICV0cnVlIGlmIHRpbWUgbWFyZ2luaW5nIGlzIHVzZWQgaW5zdGVhZCBvZiB2b2x0YWdlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6NDg0OiAqIEByaWdodF9oaWdoOiAlZmFsc2UgaWYgbGVmdC9sb3cgbWFyZ2luIHRlc3QgaXMgcGVyZm9ybWVkLCAldHJ1ZSBpZlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTQ4NS0gKlxcdFxcdHJpZ2h0L2hpZ2hcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTY4MT1zdGF0aWMgaW50IG1hcmdpbmluZ19jYXBzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpub3RfdXNlZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTcwNS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYzo3MDY6XFx0c2VxX3ByaW50ZihzLCBcXFwiIyBhbGwgbGFuZXMgc2ltdWx0YW5lb3VzbHk6ICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTcwNy1cXHRcXHQgIHN0cl95ZXNfbm8oYWxsX2xhbmVzKG1hcmdpbmluZykpKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTExNTM9c3RhdGljIGludCBtYXJnaW5pbmdfcnVuX3N3KHN0cnVjdCB0Yl9tYXJnaW5pbmcgKm1hcmdpbmluZyxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTExODMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTE4NDpcXHRcXHQvKiBBbnkgZXJyb3JzIHN0b3AgdGhlIHRlc3QgKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xMTg1LVxcdFxcdGlmIChlcnJvcnMpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYz0xNDczPURFQlVHRlNfQVRUUl9SVyhtYXJnaW5pbmdfcmVzdWx0cyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTQ3NC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYzoxNDc1OnN0YXRpYyBzc2l6ZV90IG1hcmdpbmluZ190ZXN0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE0NzYtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE1MDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTUxMDpzdGF0aWMgaW50IG1hcmdpbmluZ190ZXN0X3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpub3RfdXNlZClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTExLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE1MjktfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE1MzA6REVCVUdGU19BVFRSX1JXKG1hcmdpbmluZ190ZXN0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTMxLVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM9MTY1MD1zdGF0aWMgc3RydWN0IHRiX21hcmdpbmluZyAqbWFyZ2luaW5nX2FsbG9jKHN0cnVjdCB0Yl9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTczOC1cXHRcXHRcXHQgICAgXFx1MDAyNm1hcmdpbmluZ19yZXN1bHRzX2ZvcHMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE3Mzk6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwidGVzdFxcXCIsIDA2MDAsIGRpciwgbWFyZ2luaW5nLCBcXHUwMDI2bWFyZ2luaW5nX3Rlc3RfZm9wcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTc0MC1cXHRpZiAoaW5kZXBlbmRlbnRfdm9sdGFnZV9tYXJnaW5zKG1hcmdpbmluZykgPT0gVVNCNF9NQVJHSU5fQ0FQX1ZPTFRBR0VfSU5EUF9HRU5fMl8zX0hMIHx8XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMi0vKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozOiAqIERNQSB0cmFmZmljIHRlc3QgZHJpdmVyXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjI6ZW51bSBkbWFfdGVzdF9mcmFtZV9wZGYge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMy1cXHRETUFfVEVTVF9QREZfRlJBTUVfU1RBUlQgPSAxLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyNzpzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyODpcXHRzdHJ1Y3QgZG1hX3Rlc3QgKmRtYV90ZXN0O1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yOS1cXHR2b2lkICpkYXRhO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMyLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMzplbnVtIGRtYV90ZXN0X3Rlc3RfZXJyb3Ige1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNC1cXHRETUFfVEVTVF9OT19FUlJPUixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDU6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbWFfdGVzdF9lcnJvcl9uYW1lc1tdID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00Ni1cXHRbRE1BX1RFU1RfTk9fRVJST1JdID0gXFxcIm5vIGVycm9yc1xcXCIsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU3OmVudW0gZG1hX3Rlc3RfcmVzdWx0IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTgtXFx0RE1BX1RFU1RfTk9UX1JVTixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02Mi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjM6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbWFfdGVzdF9yZXN1bHRfbmFtZXNbXSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjQtXFx0W0RNQV9URVNUX05PVF9SVU5dID0gXFxcIm5vdCBydW5cXFwiLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5LS8qKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDogKiBzdHJ1Y3QgZG1hX3Rlc3QgLSBETUEgdGVzdCBkZXZpY2UgZHJpdmVyIHByaXZhdGUgZGF0YVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MS0gKiBAc3ZjOiBYRG9tYWluIHNlcnZpY2UgdGhlIGRyaXZlciBpcyBib3VuZCB0b1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTgyLSAqIEBsaW5rX3dpZHRoOiBFeHBlY3RlZCBsaW5rIHdpZHRoIChHYi9zKSwgJTAgdG8gdXNlIHdoYXRldmVyIGlzIG5lZ290aWF0ZWRcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6ODM6ICogQGNyY19lcnJvcnM6IE51bWJlciBvZiBDUkMgZXJyb3JzIGR1cmluZyB0aGUgdGVzdCBydW5cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6ODQ6ICogQGJ1ZmZlcl9vdmVyZmxvd19lcnJvcnM6IE51bWJlciBvZiBidWZmZXIgb3ZlcmZsb3cgZXJyb3JzIGR1cmluZyB0aGUgdGVzdFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy04NS0gKlxcdFxcdFxcdCAgICBydW5cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy05MC0gKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6OTE6c3RydWN0IGRtYV90ZXN0IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtOTItXFx0Y29uc3Qgc3RydWN0IHRiX3NlcnZpY2UgKnN2YztcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMDUtXFx0dW5zaWduZWQgaW50IGJ1ZmZlcl9vdmVyZmxvd19lcnJvcnM7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEwNjpcXHRlbnVtIGRtYV90ZXN0X3Jlc3VsdCByZXN1bHQ7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEwNzpcXHRlbnVtIGRtYV90ZXN0X3Rlc3RfZXJyb3IgZXJyb3JfY29kZTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTA4LVxcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExMS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTEyOi8qIERNQSB0ZXN0IHByb3BlcnR5IGRpcmVjdG9yeSBVVUlEOiAzMTg4Y2QxMC02NTIzLTRhNWEtYTY4Mi1mZGNhMDdhMjQ4ZDggKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTEzOnN0YXRpYyBjb25zdCB1dWlkX3QgZG1hX3Rlc3RfZGlyX3V1aWQgPVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMTQtXFx0VVVJRF9JTklUKDB4MzE4OGNkMTAsIDB4NjUyMywgMHg0YTVhLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTE3OnN0YXRpYyBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkbWFfdGVzdF9kaXI7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjExODpzdGF0aWMgdm9pZCAqZG1hX3Rlc3RfcGF0dGVybjtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTE5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMjA6c3RhdGljIHZvaWQgZG1hX3Rlc3RfZnJlZV9yaW5ncyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMjEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTEzMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTM0OnN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3RhcnRfcmluZ3Moc3RydWN0IGRtYV90ZXN0ICpkdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTM1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNjEtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTYyOlxcdFxcdFxcdGRtYV90ZXN0X2ZyZWVfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNjMtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNzktXFx0XFx0aWYgKCFyaW5nKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE4MDpcXHRcXHRcXHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTgxLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4OS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxOTA6XFx0XFx0XFx0ZG1hX3Rlc3RfZnJlZV9yaW5ncyhkdCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE5MS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIwMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIwMjpcXHRcXHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjAzLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjEzLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyMTQ6c3RhdGljIHZvaWQgZG1hX3Rlc3Rfc3RvcF9yaW5ncyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMTUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIyOS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjMwOlxcdGRtYV90ZXN0X2ZyZWVfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzEtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIzMzpzdGF0aWMgdm9pZCBkbWFfdGVzdF9yeF9jYWxsYmFjayhzdHJ1Y3QgdGJfcmluZyAqcmluZywgc3RydWN0IHJpbmdfZnJhbWUgKmZyYW1lLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzQtXFx0XFx0XFx0XFx0IGJvb2wgY2FuY2VsZWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIzNS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIzNjpcXHRzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUgKnRmID0gY29udGFpbmVyX29mKGZyYW1lLCB0eXBlb2YoKnRmKSwgZnJhbWUpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyMzc6XFx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRmLVxcdTAwM2VkbWFfdGVzdDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjM4LVxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSB0Yl9yaW5nX2RtYV9kZXZpY2UoZHQtXFx1MDAzZXJ4X3JpbmcpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI2My1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjY0OnN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3VibWl0X3J4KHN0cnVjdCBkbWFfdGVzdCAqZHQsIHNpemVfdCBucGFja2V0cylcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5wYWNrZXRzOyBpKyspIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjcwOlxcdFxcdHN0cnVjdCBkbWFfdGVzdF9mcmFtZSAqdGY7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI3MS1cXHRcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI5MS1cXHRcXHR0Zi1cXHUwMDNlZnJhbWUuYnVmZmVyX3BoeSA9IGRtYV9hZGRyO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyOTI6XFx0XFx0dGYtXFx1MDAzZWZyYW1lLmNhbGxiYWNrID0gZG1hX3Rlc3RfcnhfY2FsbGJhY2s7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjI5MzpcXHRcXHR0Zi1cXHUwMDNlZG1hX3Rlc3QgPSBkdDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjk0LVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ0Zi1cXHUwMDNlZnJhbWUubGlzdCk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzAxLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMDI6c3RhdGljIHZvaWQgZG1hX3Rlc3RfdHhfY2FsbGJhY2soc3RydWN0IHRiX3JpbmcgKnJpbmcsIHN0cnVjdCByaW5nX2ZyYW1lICpmcmFtZSxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzAzLVxcdFxcdFxcdFxcdCBib29sIGNhbmNlbGVkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMDQte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMDU6XFx0c3RydWN0IGRtYV90ZXN0X2ZyYW1lICp0ZiA9IGNvbnRhaW5lcl9vZihmcmFtZSwgdHlwZW9mKCp0ZiksIGZyYW1lKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzA2OlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Zi1cXHUwMDNlZG1hX3Rlc3Q7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMwNy1cXHRzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gdGJfcmluZ19kbWFfZGV2aWNlKGR0LVxcdTAwM2V0eF9yaW5nKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMTQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMxNTpzdGF0aWMgaW50IGRtYV90ZXN0X3N1Ym1pdF90eChzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCBzaXplX3QgbnBhY2tldHMpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMxNi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucGFja2V0czsgaSsrKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMyMTpcXHRcXHRzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUgKnRmO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMjItXFx0XFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMjgtXFx0XFx0dGYtXFx1MDAzZWZyYW1lLnNpemUgPSAwOyAvKiBtZWFucyA0MDk2ICovXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMyOTpcXHRcXHR0Zi1cXHUwMDNlZG1hX3Rlc3QgPSBkdDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzMwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMzE6XFx0XFx0dGYtXFx1MDAzZWRhdGEgPSBrbWVtZHVwKGRtYV90ZXN0X3BhdHRlcm4sIERNQV9URVNUX0ZSQU1FX1NJWkUsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMzItXFx0XFx0aWYgKCF0Zi1cXHUwMDNlZGF0YSkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM0NS1cXHRcXHR0Zi1cXHUwMDNlZnJhbWUuYnVmZmVyX3BoeSA9IGRtYV9hZGRyO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozNDY6XFx0XFx0dGYtXFx1MDAzZWZyYW1lLmNhbGxiYWNrID0gZG1hX3Rlc3RfdHhfY2FsbGJhY2s7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM0Ny1cXHRcXHR0Zi1cXHUwMDNlZnJhbWUuc29mID0gRE1BX1RFU1RfUERGX0ZSQU1FX1NUQVJUO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTM2Mj1zdGF0aWMgaW50IF9fZm9wcyAjIyBfc2hvdyh2b2lkICpkYXRhLCB1NjQgKnZhbClcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzY0LVxcdHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMgPSBkYXRhO1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzY1OlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XFx0XFxcXFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNjYtXFx0aW50IHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9Mzc1PXN0YXRpYyBpbnQgX19mb3BzICMjIF9zdG9yZSh2b2lkICpkYXRhLCB1NjQgdmFsKVxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNzctXFx0c3RydWN0IHRiX3NlcnZpY2UgKnN2YyA9IGRhdGE7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozNzg6XFx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRiX3NlcnZpY2VfZ2V0X2RydmRhdGEoc3ZjKTtcXHRcXFxcXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM3OS1cXHRpbnQgcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz0zOTE9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKF9fZm9wcyAjIyBfZm9wcywgX19mb3BzICMjIF9zaG93LFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zOTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjM5NDpzdGF0aWMgdm9pZCBsYW5lc19nZXQoY29uc3Qgc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0ICp2YWwpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM5NS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9Mzk5PXN0YXRpYyBpbnQgbGFuZXNfdmFsaWRhdGUodTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MDMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQwNDpzdGF0aWMgdm9pZCBsYW5lc19zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDA1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00MDg9RE1BX1RFU1RfREVCVUdGU19BVFRSKGxhbmVzLCBsYW5lc19nZXQsIGxhbmVzX3ZhbGlkYXRlLCBsYW5lc19zZXQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQxMDpzdGF0aWMgdm9pZCBzcGVlZF9nZXQoY29uc3Qgc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0ICp2YWwpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NDE1PXN0YXRpYyBpbnQgc3BlZWRfdmFsaWRhdGUodTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MjctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQyODpzdGF0aWMgdm9pZCBzcGVlZF9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDI5LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00MzI9RE1BX1RFU1RfREVCVUdGU19BVFRSKHNwZWVkLCBzcGVlZF9nZXQsIHNwZWVkX3ZhbGlkYXRlLCBzcGVlZF9zZXQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MzMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQzNDpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3JlY2VpdmVfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MzUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQzOT1zdGF0aWMgaW50IHBhY2tldHNfdG9fcmVjZWl2ZV92YWxpZGF0ZSh1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ0My1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDQ0OnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fcmVjZWl2ZV9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDQ1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NDg9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fcmVjZWl2ZSwgcGFja2V0c190b19yZWNlaXZlX2dldCxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NTAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ1MTpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3NlbmRfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NTIte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQ1Nj1zdGF0aWMgaW50IHBhY2tldHNfdG9fc2VuZF92YWxpZGF0ZSh1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ2MC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDYxOnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fc2VuZF9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDYyLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NjU9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fc2VuZCwgcGFja2V0c190b19zZW5kX2dldCxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NjctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ2ODpzdGF0aWMgaW50IGRtYV90ZXN0X3NldF9ib25kaW5nKHN0cnVjdCBkbWFfdGVzdCAqZHQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ2OS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDgwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0ODE6c3RhdGljIGJvb2wgZG1hX3Rlc3RfdmFsaWRhdGVfY29uZmlnKHN0cnVjdCBkbWFfdGVzdCAqZHQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ4Mi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDkwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0OTE6c3RhdGljIHZvaWQgZG1hX3Rlc3RfY2hlY2tfZXJyb3JzKHN0cnVjdCBkbWFfdGVzdCAqZHQsIGludCByZXQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ5Mi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTA5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MTA6c3RhdGljIGludCB0ZXN0X3N0b3JlKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxMS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxMi1cXHRzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjID0gZGF0YTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTEzOlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxNC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUyOS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTMwOlxcdGRldl9kYmcoXFx1MDAyNnN2Yy1cXHUwMDNlZGV2LCBcXFwiRE1BIHRlc3Qgc3RhcnRpbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01MzEtXFx0aWYgKGR0LVxcdTAwM2VsaW5rX3NwZWVkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUzNy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTM4OlxcdGlmICghZG1hX3Rlc3RfdmFsaWRhdGVfY29uZmlnKGR0KSkge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1Mzk6XFx0XFx0ZGV2X2VycihcXHUwMDI2c3ZjLVxcdTAwM2VkZXYsIFxcXCJpbnZhbGlkIHRlc3QgY29uZmlndXJhdGlvblxcXFxuXFxcIik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU0MC1cXHRcXHRkdC1cXHUwMDNlZXJyb3JfY29kZSA9IERNQV9URVNUX0NPTkZJR19FUlJPUjtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NDMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU0NDpcXHRyZXQgPSBkbWFfdGVzdF9zZXRfYm9uZGluZyhkdCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU0NS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTUwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1NTE6XFx0cmV0ID0gZG1hX3Rlc3Rfc3RhcnRfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NTItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU1OS1cXHRcXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2ZHQtXFx1MDAzZWNvbXBsZXRlKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTYwOlxcdFxcdHJldCA9IGRtYV90ZXN0X3N1Ym1pdF9yeChkdCwgZHQtXFx1MDAzZXBhY2tldHNfdG9fcmVjZWl2ZSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU2MS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTY4LVxcdGlmIChkdC1cXHUwMDNlcGFja2V0c190b19zZW5kKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU2OTpcXHRcXHRyZXQgPSBkbWFfdGVzdF9zdWJtaXRfdHgoZHQsIGR0LVxcdTAwM2VwYWNrZXRzX3RvX3NlbmQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NzAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU4NS1vdXRfc3RvcDpcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTg2OlxcdGRtYV90ZXN0X3N0b3BfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01ODctb3V0X3VubG9jazpcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTg4OlxcdGRtYV90ZXN0X2NoZWNrX2Vycm9ycyhkdCwgcmV0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTg5LVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZHQtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU5MTpcXHRkZXZfZGJnKFxcdTAwMjZzdmMtXFx1MDAzZWRldiwgXFxcIkRNQSB0ZXN0ICVzXFxcXG5cXFwiLCBkbWFfdGVzdF9yZXN1bHRfbmFtZXNbZHQtXFx1MDAzZXJlc3VsdF0pO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTItXFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTkzLX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTk0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURSh0ZXN0X2ZvcHMsIE5VTEwsIHRlc3Rfc3RvcmUsIFxcXCIlbGx1XFxcXG5cXFwiKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTk1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz01OTY9c3RhdGljIGludCBzdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKm5vdF91c2VkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU5OC1cXHRzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTk5OlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwMC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwNS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjA2OlxcdHNlcV9wcmludGYocywgXFxcInJlc3VsdDogJXNcXFxcblxcXCIsIGRtYV90ZXN0X3Jlc3VsdF9uYW1lc1tkdC1cXHUwMDNlcmVzdWx0XSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwNy1cXHRpZiAoZHQtXFx1MDAzZXJlc3VsdCA9PSBETUFfVEVTVF9OT1RfUlVOKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYxNC1cXHRcXHQgICBkdC1cXHUwMDNlYnVmZmVyX292ZXJmbG93X2Vycm9ycyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjYxNTpcXHRzZXFfcHJpbnRmKHMsIFxcXCJlcnJvcjogJXNcXFxcblxcXCIsIGRtYV90ZXN0X2Vycm9yX25hbWVzW2R0LVxcdTAwM2VlcnJvcl9jb2RlXSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYxNi1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz02MjE9REVGSU5FX1NIT1dfQVRUUklCVVRFKHN0YXR1cyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyMi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjIzOnN0YXRpYyB2b2lkIGRtYV90ZXN0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjI3OlxcdGRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKFxcXCJkbWFfdGVzdFxcXCIsIHN2Yy1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjgtXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjM1LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInN0YXR1c1xcXCIsIDA0MDAsIGRlYnVnZnNfZGlyLCBzdmMsIFxcdTAwMjZzdGF0dXNfZm9wcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjYzNjpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0ZXN0XFxcIiwgMDIwMCwgZGVidWdmc19kaXIsIHN2YywgXFx1MDAyNnRlc3RfZm9wcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzNy19XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjM5OnN0YXRpYyBpbnQgZG1hX3Rlc3RfcHJvYmUoc3RydWN0IHRiX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHRiX3NlcnZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDAte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDEtXFx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gdGJfc2VydmljZV9wYXJlbnQoc3ZjKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjQyOlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQ7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY0My1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NTMtXFx0dGJfc2VydmljZV9zZXRfZHJ2ZGF0YShzdmMsIGR0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjU0OlxcdGRtYV90ZXN0X2RlYnVnZnNfaW5pdChzdmMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NTUtXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjU4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2NTk6c3RhdGljIHZvaWQgZG1hX3Rlc3RfcmVtb3ZlKHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2MC17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY2MTpcXHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NjItXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2My1cXHRtdXRleF9sb2NrKFxcdTAwMjZkdC1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY2NDpcXHRkZWJ1Z2ZzX2xvb2t1cF9hbmRfcmVtb3ZlKFxcXCJkbWFfdGVzdFxcXCIsIHN2Yy1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NjUtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkdC1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjY3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2Njg6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBkbWFfdGVzdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjY5LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzEtXFx0ICogTm8gbmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsIGhlcmUuIElmIHVzZXJzcGFjZSBpcyB3cml0aW5nXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3MjpcXHQgKiB0byB0aGUgdGVzdCBhdHRyaWJ1dGUgd2hlbiBzdXNwZW5kIHN0YXJ0ZWQsIGl0IGNvbWVzIG91dCBmcm9tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY3My1cXHQgKiB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoKSB3aXRoIC1FUkVTVEFSVFNZUyBhbmQgdGhlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3NDpcXHQgKiBETUEgdGVzdCBmYWlscyB0ZWFyaW5nIGRvd24gdGhlIHJpbmdzLiBPbmNlIHVzZXJzcGFjZSBpc1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzUtXFx0ICogdGhhd2VkIHRoZSBrZXJuZWwgcmVzdGFydHMgdGhlIHdyaXRlIHN5c2NhbGwgZWZmZWN0aXZlbHlcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njc2OlxcdCAqIHJlLXJ1bm5pbmcgdGhlIHRlc3QuXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY3Ny1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02ODAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY4MTpzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGRtYV90ZXN0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4Mi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRtYV90ZXN0X3BtX29wcyA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njg3OlxcdFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGRtYV90ZXN0X3N1c3BlbmQsIGRtYV90ZXN0X3Jlc3VtZSlcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg4LX07XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdGJfc2VydmljZV9pZCBkbWFfdGVzdF9pZHNbXSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjkxOlxcdHsgVEJfU0VSVklDRShcXFwiZG1hX3Rlc3RcXFwiLCAxKSB9LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTItXFx0eyB9LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTMtfTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njk0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodGJzdmMsIGRtYV90ZXN0X2lkcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5NS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njk2OnN0YXRpYyBzdHJ1Y3QgdGJfc2VydmljZV9kcml2ZXIgZG1hX3Rlc3RfZHJpdmVyID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTctXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjk4LVxcdFxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2OTk6XFx0XFx0Lm5hbWUgPSBcXFwidGh1bmRlcmJvbHRfZG1hX3Rlc3RcXFwiLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDA6XFx0XFx0LnBtID0gXFx1MDAyNmRtYV90ZXN0X3BtX29wcyxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzAxLVxcdH0sXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwMjpcXHQucHJvYmUgPSBkbWFfdGVzdF9wcm9iZSxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzAzOlxcdC5yZW1vdmUgPSBkbWFfdGVzdF9yZW1vdmUsXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwNDpcXHQuaWRfdGFibGUgPSBkbWFfdGVzdF9pZHMsXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcwNS19O1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwNzpzdGF0aWMgaW50IF9faW5pdCBkbWFfdGVzdF9pbml0KHZvaWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcwOC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzExLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTI6XFx0ZG1hX3Rlc3RfcGF0dGVybiA9IGttYWxsb2MoRE1BX1RFU1RfRlJBTUVfU0laRSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcxMzpcXHRpZiAoIWRtYV90ZXN0X3BhdHRlcm4pXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcxNC1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MTYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjXFx0RE1BX1RFU1RfRlJBTUVfU0laRSAvIHNpemVvZihkYXRhX3ZhbHVlKTsgaSsrKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTc6XFx0XFx0KCh1MzIgKilkbWFfdGVzdF9wYXR0ZXJuKVtpXSA9IGRhdGFfdmFsdWUrKztcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzE4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTk6XFx0ZG1hX3Rlc3RfZGlyID0gdGJfcHJvcGVydHlfY3JlYXRlX2RpcihcXHUwMDI2ZG1hX3Rlc3RfZGlyX3V1aWQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjA6XFx0aWYgKCFkbWFfdGVzdF9kaXIpIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzIxLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzI0LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjU6XFx0dGJfcHJvcGVydHlfYWRkX2ltbWVkaWF0ZShkbWFfdGVzdF9kaXIsIFxcXCJwcnRjaWRcXFwiLCAxKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI2OlxcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcXFwicHJ0Y3ZlcnNcXFwiLCAxKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI3OlxcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcXFwicHJ0Y3JldnNcXFwiLCAwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI4OlxcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcXFwicHJ0Y3N0bnNcXFwiLCAwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzI5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MzA6XFx0cmV0ID0gdGJfcmVnaXN0ZXJfcHJvcGVydHlfZGlyKFxcXCJkbWFfdGVzdFxcXCIsIGRtYV90ZXN0X2Rpcik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzM0OlxcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NDAtZXJyX3VucmVnaXN0ZXJfZGlyOlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDE6XFx0dGJfdW5yZWdpc3Rlcl9wcm9wZXJ0eV9kaXIoXFxcImRtYV90ZXN0XFxcIiwgZG1hX3Rlc3RfZGlyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzQyLWVycl9mcmVlX2RpcjpcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzQzOlxcdHRiX3Byb3BlcnR5X2ZyZWVfZGlyKGRtYV90ZXN0X2Rpcik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0NC1lcnJfZnJlZV9wYXR0ZXJuOlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDU6XFx0a2ZyZWUoZG1hX3Rlc3RfcGF0dGVybik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0Ni1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NDgtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDk6bW9kdWxlX2luaXQoZG1hX3Rlc3RfaW5pdCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc1MC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzUxOnN0YXRpYyB2b2lkIF9fZXhpdCBkbWFfdGVzdF9leGl0KHZvaWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc1Mi17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1MzpcXHR0Yl91bnJlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NTQ6XFx0dGJfdW5yZWdpc3Rlcl9wcm9wZXJ0eV9kaXIoXFxcImRtYV90ZXN0XFxcIiwgZG1hX3Rlc3RfZGlyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzU1OlxcdHRiX3Byb3BlcnR5X2ZyZWVfZGlyKGRtYV90ZXN0X2Rpcik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1NjpcXHRrZnJlZShkbWFfdGVzdF9wYXR0ZXJuKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzU3LX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzU4Om1vZHVsZV9leGl0KGRtYV90ZXN0X2V4aXQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NTktXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NzYxPU1PRFVMRV9BVVRIT1IoXFxcIk1pa2EgV2VzdGVyYmVyZyBcXHUwMDNjbWlrYS53ZXN0ZXJiZXJnQGxpbnV4LmludGVsLmNvbVxcdTAwM2VcXFwiKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzYyOk1PRFVMRV9ERVNDUklQVElPTihcXFwiVGh1bmRlcmJvbHQvVVNCNCBETUEgdHJhZmZpYyB0ZXN0IGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NjMtTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYz0xMjQwPV9faWNtX3RyX2RldmljZV9jb25uZWN0ZWQoc3RydWN0IHRiICp0YiwgY29uc3Qgc3RydWN0IGljbV9wa2dfaGVhZGVyICpoZHIsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTQtXFx0ICogQ3VycmVudGx5IHdlIGRvbid0IHVzZSB0aGUgUW9TIGluZm9ybWF0aW9uIGNvbWluZyB3aXRoIHRoZVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmM6MTI1NTpcXHQgKiBkZXZpY2UgY29ubmVjdGVkIG1lc3NhZ2Ugc28gc2ltcGx5IGp1c3QgaWdub3JlIHRoYXQgZXh0cmFcXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTYtXFx0ICogcGFja2V0IGZvciBub3cuXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTI0Nzk9c3RydWN0IHRiICppY21fcHJvYmUoc3RydWN0IHRiX25oaSAqbmhpKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy0yNTE0LVxcdFxcdC8qXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYzoyNTE1OlxcdFxcdCAqIE5WTSB1cGdyYWRlIGhhcyBub3QgYmVlbiB0ZXN0ZWQgb24gQXBwbGUgc3lzdGVtcyBhbmRcXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTI1MTYtXFx0XFx0ICogdGhleSBkb24ndCBwcm92aWRlIGltYWdlcyBwdWJsaWNseSBlaXRoZXIuIFRvIGJlIG9uXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jPTc2PXN0YXRpYyB2b2lkIHJpbmdfaW50ZXJydXB0X2FjdGl2ZShzdHJ1Y3QgdGJfcmluZyAqcmluZywgYm9vbCBhY3RpdmUpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jLTEwMi1cXHRcXHQgKiB0byBwcmV2ZW50IGNvbmRpdGlvbnMgdGhhdCBtYXkgb2NjdXIgd2hlcmUgdHdvXFxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYzoxMDM6XFx0XFx0ICogTVNJWCBpbnRlcnJ1cHRzIGFyZSBzaW11bHRhbmVvdXNseSBhY3RpdmUgYW5kXFxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYy0xMDQtXFx0XFx0ICogcmVhZGluZyB0aGUgcmVnaXN0ZXIgY2xlYXJzIGJvdGggb2YgdGhlbS5cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmM9MTE2Mz1zdGF0aWMgc3RydWN0IHRiICpuaGlfc2VsZWN0X2NtKHN0cnVjdCB0Yl9uaGkgKm5oaSlcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmMtMTE2Ny1cXHQvKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmM6MTE2ODpcXHQgKiBVU0I0IGNhc2UgaXMgc2ltcGxlLiBJZiB3ZSBnb3QgY29udHJvbCBvZiBhbnkgb2YgdGhlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYy0xMTY5LVxcdCAqIGNhcGFiaWxpdGllcywgd2UgdXNlIHNvZnR3YXJlIENNLlxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zd2l0Y2guYz0zNjQxPXZvaWQgdGJfc3dpdGNoX3N1c3BlbmQoc3RydWN0IHRiX3N3aXRjaCAqc3csIGJvb2wgcnVudGltZSlcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3dpdGNoLmMtMzY0OS1cXHQvKlxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNTowMC4yMDYyODMxMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTI1OTQ4NDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGh1bmRlcmJvbHQgTmV0d29yayBEcml2ZXIgVGVzdGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRlc3RpbmcgdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGB0aHVuZGVyYm9sdC1uZXRgIGRyaXZlciwgYW5kIEkgc2VlIGEgY291cGxlIG9mIGV4aXN0aW5nIFVTQjQgdGVzdCBjb25maWd1cmF0aW9uczogYFVTQjRfS1VOSVRfVEVTVGAgYW5kIGBVU0I0X0RNQV9URVNUYC4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyIGl0c2VsZj8gSXQgcmVsaWVzIG9uIFRodW5kZXJib2x0IFhEb21haW4gc2VydmljZXMsIHNvIHRoYXQncyB0aGUga2V5LlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgY3JlYXRlIGEgbW9jayBUaHVuZGVyYm9sdCBkZXZpY2Ugd2l0aGluIFFFTVU/IExldCBtZSBjaGVjayBmb3IgZXhpc3RpbmcgYHVzYjRgIG9yIGB0aHVuZGVyYm9sdGAgZW11bGF0aW9uIHdpdGhpbiBRRU1VIGZpcnN0LiBEYXJuLCBsb29rcyBsaWtlIHRoZXJlJ3Mgbm8gVGh1bmRlcmJvbHQgY29udHJvbGxlciBlbXVsYXRpb24gaW4gUUVNVS4gVGhhdCdzIGEgc2VyaW91cyByb2FkYmxvY2suXG5cbkhvbGQgb24gYSBzZWNvbmQsIHdoYXQgaWYgd2UgY2FuIGluc3RhbnRpYXRlIHRoZSBkcml2ZXIgdGhyb3VnaCBhbiBhbHRlcm5hdGUgbWV0aG9kLCBzaW1pbGFyIHRvIGhvdyB3ZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgIGZvciBVU0I/IElzIHRoZXJlIGFueXRoaW5nIGxpa2UgYSBgdGh1bmRlcmJvbHRfaHdzaW1gIG9yIGEgc2ltaWxhciB2aXJ0dWFsaXplZCBoYXJkd2FyZSBtb2RlbCBhdmFpbGFibGU/IEl0IGlzIHVubGlrZWx5LCBidXQgbGV0IG1lIGNoZWNrLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgdGhlcmUgaXMgYSB3YXkgdG8gY3JlYXRlIGEgbW9jayBUaHVuZGVyYm9sdCBkZXZpY2UuIFRpbWUgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIGEgbW9jayBvciB0ZXN0IGhhcm5lc3MuIEknbGwgc2VhcmNoIGZvciBgdGJfcmVnaXN0ZXJfcHJvcGVydHlfZGlyYCBvciBgdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXJgLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgbGVhZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzQ0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjA2LjEzMjIzMzY0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNDc1NjExMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTE1MDE9c3RhdGljIGludCBfX2luaXQgdGJuZXRfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE1MjItXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjE1MjM6XFx0cmV0ID0gdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXIoXFx1MDAyNnRibmV0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE1MjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz03MDc9c3RhdGljIGludCBfX2luaXQgZG1hX3Rlc3RfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzM0OlxcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTY0OD1zdGF0aWMgaW50IF9faW5pdCB0YnN0cmVhbV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NjktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjcwOlxcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZ0YnN0cmVhbV9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTY3MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9OTM5PXRiX3hkcF9zY2hlZHVsZV9yZXF1ZXN0KHN0cnVjdCB0YiAqdGIsIGNvbnN0IHN0cnVjdCB0Yl94ZHBfaGVhZGVyICpoZHIsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NjEtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6OTYyOiAqIHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKCkgLSBSZWdpc3RlciBYRG9tYWluIHNlcnZpY2UgZHJpdmVyXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTYzLSAqIEBkcnY6IERyaXZlciB0byByZWdpc3Rlclxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTY4LSAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjk2OTppbnQgdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXIoc3RydWN0IHRiX3NlcnZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTcwLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTk3My19XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6OTc0OkVYUE9SVF9TWU1CT0xfR1BMKHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NzUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0Lmg9NDY2PXN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0LmgtNDc5LVxcbmluY2x1ZGUvbGludXgvdGh1bmRlcmJvbHQuaDo0ODA6aW50IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KTtcXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0LmgtNDgxLXZvaWQgdGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihzdHJ1Y3QgdGJfc2VydmljZV9kcml2ZXIgKmRydik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjA4LjE1Njk5OTY1OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjc1MjYzMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGh1bmRlcmJvbHQgRHJpdmVyIFNlY3VyaXR5IExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBUaHVuZGVyYm9sdCBkcml2ZXIgc2l0dWF0aW9uLCBhbmQgdGhlIGltbWVkaWF0ZSBpbXByZXNzaW9uIGlzIHRoYXQgdGhlcmUgaXNuJ3QgYW4gb2J2aW91cyBcIm1vY2sgZHJpdmVyXCIgcHJlc2VudC4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyYCBzZWVtcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgYHRibmV0YCwgYGRtYV90ZXN0YCwgYW5kIGBzdHJlYW1gLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgaG93IGVhc2lseSBpdCBjYW4gYmUgcmVhY2hlZC4gQnV0LCB3YWl0Li4uIGNvdWxkIGB0Ym5ldGAgYmUgZnV6emFibGUgdGhyb3VnaCBhIHNlY29uZGFyeSBwYXRod2F5P1xuXG5Ob3csIGNvbnNpZGVyaW5nIHNjZW5hcmlvcyB3aGVyZSBUaHVuZGVyYm9sdCBoYXJkd2FyZSBtaWdodCBiZSBhYnNlbnQuLi4gSWYgdGhlcmUncyBubyBUaHVuZGVyYm9sdCBoYXJkd2FyZSB0byBiZWdpbiB3aXRoLCB0aGUgYHRodW5kZXJib2x0YCBkcml2ZXIgd29uJ3QgcHJvYmUgYW55IGNvbnRyb2xsZXJzLiBUaGF0J3MgYSBnaXZlbi4gQW5kIGlmIG5vIGNvbnRyb2xsZXJzIGFyZSBwcm9iZWQsIGl0IGxvZ2ljYWxseSBmb2xsb3dzIHRoYXQgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQuIFRoZSByaXBwbGUgZWZmZWN0IGNvbnRpbnVlczogaWYgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQsIGB0Ym5ldF9wcm9iZWAg4oCTIHdoaWNoIGlzIGtleSB0byB0cmlnZ2VyaW5nIHRoZSBgdGJuZXRgIGRyaXZlciDigJMgaXMgbmV2ZXIgaW52b2tlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBgdGJuZXRgIGRyaXZlciwgYXQgbGVhc3QgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucywgbWlnaHQgYmUgZW50aXJlbHkgdW5yZWFjaGFibGUuIFRoYXQncyBhIGh1Z2UgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGUsIGFzc3VtaW5nIGl0IGNhbid0IGJlIHJlYWNoZWQuXG5cblNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhwbG9yZSB3aGV0aGVyIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiBzb21laG93IGNyZWF0ZSBhIGB0Yl9zZXJ2aWNlYCBkZXZpY2UuIE15IGZvY3VzIHdpbGwgYmUgb24gc2VhcmNoaW5nIGZvciBjYWxscyBsaWtlIGB0Yl9zZXJ2aWNlX2NyZWF0ZWAgb3Igc29tZXRoaW5nIHdpdGggYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uIHRvIHNlZSBpZiBzdWNoIGEgdGhpbmcgZXhpc3RzLiBJZiBJIGNhbiBmaW5kIGEgd2F5IHRvIGNyZWF0ZSBvbmUgZnJvbSB1c2Vyc3BhY2UsIHRoYXQgb3BlbnMgdXAgYWxsIHNvcnRzIG9mIGZ1enppbmcgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MjYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MTMuNDMyMjY3MzY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAwODUyOTgyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Yl9zZXJ2aWNlX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjE1LjMzMzEzMDE5OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU3OTc3MDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFRodW5kZXJib2x0IERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgaG93IHRoZXNlIFRodW5kZXJib2x0IGRldmljZXMgYXJlIGJlaW5nIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSB4ZG9tYWluIGNvbnRleHQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBoZWFkIGRpcmVjdGx5IGludG8gdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlLiBTcGVjaWZpY2FsbHksIGBkcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uY2AgbG9va3MgbGlrZSB0aGUgcHJpbWUgc3VzcGVjdCBmb3IgdGhpcyBraW5kIG9mIGxvdy1sZXZlbCBkZXZpY2UgaW50ZXJhY3Rpb24uIEknbSBnb2luZyB0byBxdWlja2x5IHVzZSBgZ3JlcGAgdG8gbG9vayBmb3IgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCB0eXBpY2FsbHkgaGFuZGxlIGRldmljZSByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLiBJJ2xsIHNlYXJjaCBmb3IgYGRldmljZV9yZWdpc3RlcmAgYW5kIGBkZXZpY2VfYWRkYC4gVGhlc2UgYXJlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyB3aGVuIGxvb2tpbmcgYXQgaG93IGEgZGV2aWNlIGlzIGJyb3VnaHQgaW50byB0aGUgc3lzdGVtIGFuZCBpdHMgZGV2aWNlIHRyZWUuIFRoaXMgYXBwcm9hY2ggd2lsbCBhbGxvdyBtZSB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzZWN0aW9ucyBvZiB0aGUgY29kZSBpbW1lZGlhdGVseS4gSSdtIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBwb2ludHMgd2hlcmUgdGhlIFRodW5kZXJib2x0IGRldmljZSBpcyBpZGVudGlmaWVkLCBpbml0aWFsaXplZCwgYW5kIGludGVncmF0ZWQgd2l0aGluIHRoZSBrZXJuZWwncyBkZXZpY2UgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gRnJvbSB0aGVyZSBJIGNhbiB0cmFjayB0aGUgY29udHJvbCBmbG93IGZyb20gdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0NjEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNToxOS4zOTExMTE1OThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTE1NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmljZV9hZGR8ZGV2aWNlX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jPTEyMTk9c3RhdGljIHZvaWQgZW51bWVyYXRlX3NlcnZpY2VzKHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTEyNjgtXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MTI2OTpcXHRcXHRpZiAoZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZzdmMtXFx1MDAzZWRldikpIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0xMjcwLVxcdFxcdFxcdHRiX3NlcnZpY2VfZGVidWdmc19yZW1vdmUoc3ZjKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jPTE1MzY9c3RhdGljIGludCB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzKHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTE2MjMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MTYyNDpcXHRcXHRpZiAoZGV2aWNlX2FkZChcXHUwMDI2eGQtXFx1MDAzZWRldikpIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0xNjI1LVxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnhkLVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWRkIFhEb21haW4gZGV2aWNlXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MTkuNDU2MDM3OTIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODUwNjUxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgTGlmZWN5Y2xlIG9mIFNlcnZpY2UgRW51bWVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgaG93IHRoZXNlIHNlcnZpY2VzIGFyZSBiZWluZyBlbnVtZXJhdGVkLiBUaGUgYGVudW1lcmF0ZV9zZXJ2aWNlc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLCBpdCdzIHdoYXQgYWN0dWFsbHkgY3JlYXRlcyB0aG9zZSBgdGJfc2VydmljZWAgZGV2aWNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gc2VlIHdoYXQgdHJpZ2dlcnMgaXQuXG5cbkl0IGxvb2tzIGxpa2UgYGVudW1lcmF0ZV9zZXJ2aWNlc2AgZ2V0cyBjYWxsZWQgZWl0aGVyIGRpcmVjdGx5IGZyb20gYHRiX3hkb21haW5fZ2V0X3Byb3BlcnRpZXNgIG9yIHdoZW4gcHJvcGVydGllcyBoYXZlIGNoYW5nZWQsIGB0Yl94ZG9tYWluX3Byb3BlcnRpZXNfY2hhbmdlZGAuIE5vdywgYHRiX3hkb21haW5fZ2V0X3Byb3BlcnRpZXNgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgdGJfeGRvbWFpbl9nZXRfcHJvcGVydGllc193b3JrYCB3aGljaCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoYXQgbGlrZWx5IG1lYW5zIGl0J3Mgbm90IGEgZGlyZWN0LCBzeW5jaHJvbm91cyBjYWxsIGJ1dCBzb21ldGhpbmcgZGVmZXJyZWQuIGB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzX3dvcmtgIGlzIHNjaGVkdWxlZCwgd2hpY2ggaW1wbGllcyBpdCdzIHF1ZXVlZCBvciB0cmlnZ2VyZWQgYnkgc29tZSBzb3J0IG9mIGV2ZW50LCBhbmQgdGhhdCdzIGNvbWluZyBmcm9tIGB0Yl94ZG9tYWluX2FkZGAuIFNvIGZhciBzbyBnb29kLiBGaW5hbGx5LCB0aGUgY3JpdGljYWwgcG9pbnQ6IGB0Yl94ZG9tYWluX2FkZGAgaXMgdGhlIGNhbGxpbmcgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb21gdGJfeGRvbWFpbl9hbGxvY2AuIFxuXG5TbywgSSBuZWVkIHRvIGxvb2sgaW50byB3aG8gY2FsbHMgYHRiX3hkb21haW5fYWxsb2NgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgbm93IHRvIGNvbXBsZXRlbHkgZm9sbG93IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NzYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MjQuMTQxMTA3MjM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc3MjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Yl94ZG9tYWluX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz0xMzQ9c3RhdGljIGludCBkbWFfdGVzdF9zdGFydF9yaW5ncyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE1OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTYwOlxcdFxcdHJldCA9IHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKHhkLCAtMSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE2MS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4Ny1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTg4OlxcdFxcdHJldCA9IHRiX3hkb21haW5fYWxsb2NfaW5faG9waWQoeGQsIC0xKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTg5LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTcwOT1zdGF0aWMgdm9pZCBhZGRfeGRvbWFpbihzdHJ1Y3QgdGJfc3dpdGNoICpzdywgdTY0IHJvdXRlLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYzo3MTc6XFx0eGQgPSB0Yl94ZG9tYWluX2FsbG9jKHN3LVxcdTAwM2V0YiwgXFx1MDAyNnN3LVxcdTAwM2VkZXYsIHJvdXRlLCBsb2NhbF91dWlkLCByZW1vdGVfdXVpZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTgtXFx0aWYgKCF4ZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTAzNT1zdGF0aWMgaW50IHRic3RyZWFtX2Rldl9hbGxvY19pbl9ob3BpZChzdHJ1Y3QgdGJzdHJlYW1fZGV2ICpzZGV2LCBpbnQgaG9waWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEwNDUtXFx0fVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTA0NjpcXHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKHhkLCBob3BpZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDQ3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMDYxPXN0YXRpYyBpbnQgdGJzdHJlYW1fZGV2X2FsbG9jX291dF9ob3BpZChzdHJ1Y3QgdGJzdHJlYW1fZGV2ICpzZGV2LCBpbnQgaG9waWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEwNzEtXFx0fVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTA3MjpcXHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCh4ZCwgaG9waWQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTA3My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuYz00MzE9c3RhdGljIHZvaWQgdGJfc2Nhbl94ZG9tYWluKHN0cnVjdCB0Yl9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5jLTQ0Ny1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmM6NDQ4OlxcdHhkID0gdGJfeGRvbWFpbl9hbGxvYyh0YiwgXFx1MDAyNnN3LVxcdTAwM2VkZXYsIHJvdXRlLCB0Yi1cXHUwMDNlcm9vdF9zd2l0Y2gtXFx1MDAzZXV1aWQsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5jLTQ0OS1cXHRcXHRcXHQgICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaD0xMjYwPWJvb2wgdGJfeGRvbWFpbl9oYW5kbGVfcmVxdWVzdChzdHJ1Y3QgdGIgKnRiLCBlbnVtIHRiX2NmZ19wa2dfdHlwZSB0eXBlLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaC0xMjYxLVxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTI2MjpzdHJ1Y3QgdGJfeGRvbWFpbiAqdGJfeGRvbWFpbl9hbGxvYyhzdHJ1Y3QgdGIgKnRiLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oLTEyNjMtXFx0XFx0XFx0XFx0ICAgIHU2NCByb3V0ZSwgY29uc3QgdXVpZF90ICpsb2NhbF91dWlkLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9MjA3ND1zdGF0aWMgdm9pZCB0Yl94ZG9tYWluX2xpbmtfZXhpdChzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMTA3LS8qKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIxMDg6ICogdGJfeGRvbWFpbl9hbGxvYygpIC0gQWxsb2NhdGUgbmV3IFhEb21haW4gb2JqZWN0XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjEwOS0gKiBAdGI6IERvbWFpbiB3aGVyZSB0aGUgWERvbWFpbiBiZWxvbmdzXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMTIwLSAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIxMjE6c3RydWN0IHRiX3hkb21haW4gKnRiX3hkb21haW5fYWxsb2Moc3RydWN0IHRiICp0Yiwgc3RydWN0IGRldmljZSAqcGFyZW50LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMjItXFx0XFx0XFx0XFx0ICAgIHU2NCByb3V0ZSwgY29uc3QgdXVpZF90ICpsb2NhbF91dWlkLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9MjM0OD1FWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2xhbmVfYm9uZGluZ19kaXNhYmxlKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzNTAtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM1MTogKiB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKCkgLSBBbGxvY2F0ZSBpbnB1dCBIb3BJRCBmb3IgdHVubmVsaW5nXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM1Mi0gKiBAeGQ6IFhEb21haW4gY29ubmVjdGlvblxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM2My0gKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzoyMzY0OmludCB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKHN0cnVjdCB0Yl94ZG9tYWluICp4ZCwgaW50IGhvcGlkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzNjUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM3My19XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM3NDpFWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzNzYtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM3NzogKiB0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCgpIC0gQWxsb2NhdGUgb3V0cHV0IEhvcElEIGZvciB0dW5uZWxpbmdcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc4LSAqIEB4ZDogWERvbWFpbiBjb25uZWN0aW9uXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzg5LSAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzOTA6aW50IHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKHN0cnVjdCB0Yl94ZG9tYWluICp4ZCwgaW50IGhvcGlkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzOTEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM5OS19XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjQwMDpFWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjQwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MjQuMTkwODg1Mzc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODIxMDU0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVGh1bmRlcmJvbHQgRHJpdmVyIEVtdWxhdGlvbiBIdW50KipcblxuT2theSwgc28gYHRiX3hkb21haW5fYWxsb2NgIGlzIHVzZWQgYnkgYGFkZF94ZG9tYWluYCBpbiBgaWNtLmNgIGFuZCBgdGJfc2Nhbl94ZG9tYWluYCBpbiBgdGIuY2AuIFRoYXQgcGxhY2VzIGl0IGZpcm1seSB3aXRoaW4gdGhlIGNvcmUgVGh1bmRlcmJvbHQgZHJpdmVyJ3MgaGFyZHdhcmUgcG9ydCBzY2FubmluZyBmdW5jdGlvbmFsaXR5LCBzbyBpdCBtYWtlcyBzZW5zZSB0aGF0IEknbSBzZWVpbmcgaXQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBnZXQgc29tZSBraW5kIG9mIGVtdWxhdGlvbiBmb3IgdGhpcyBzdHVmZj8gSSBuZWVkIHRvIHRlc3Qgd2l0aG91dCByZWFsIGhhcmR3YXJlLiBIbW0sIEkgdmFndWVseSByZWNhbGwgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHVzYjRfa3VuaXRfdGVzdGAuIFRoYXQgc291bmRzIHByb21pc2luZy4gTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYW55IFRodW5kZXJib2x0LXNwZWNpZmljIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuIEknbGwgc2VhcmNoIHRoZSBgZHJpdmVycy90aHVuZGVyYm9sdC9gIGRpcmVjdG9yeSBmb3IgYW55dGhpbmcgbWVudGlvbmluZyBga3VuaXRgLiBUaGF0J3MgcHJvYmFibHkgdGhlIGJlc3QgYmV0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg5MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNToyOC43NzI5OTM4NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNzgxOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3VuaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo5OiNpbmNsdWRlIFxcdTAwM2NrdW5pdC90ZXN0LmhcXHUwMDNlXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTU6c3RhdGljIGludCBfX2lkYV9pbml0KHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzLCB2b2lkICpjb250ZXh0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI0OnN0YXRpYyB2b2lkIF9faWRhX2Rlc3Ryb3koc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXMpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE6c3RhdGljIHZvaWQga3VuaXRfaWRhX2luaXQoc3RydWN0IGt1bml0ICp0ZXN0LCBzdHJ1Y3QgaWRhICppZGEpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzIte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjMzOlxcdGt1bml0X2FsbG9jX3Jlc291cmNlKHRlc3QsIF9faWRhX2luaXQsIF9faWRhX2Rlc3Ryb3ksIEdGUF9LRVJORUwsIGlkYSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzQtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTM1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjM2OnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19zd2l0Y2goc3RydWN0IGt1bml0ICp0ZXN0LCB1NjQgcm91dGUsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzctXFx0XFx0XFx0XFx0ICAgICAgdTggdXBzdHJlYW1fcG9ydCwgdTggbWF4X3BvcnRfbnVtYmVyKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NDM6XFx0c3cgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqc3cpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00NC1cXHRpZiAoIXN3KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTQtXFx0c2l6ZSA9IChzdy1cXHUwMDNlY29uZmlnLm1heF9wb3J0X251bWJlciArIDEpICogc2l6ZW9mKCpzdy1cXHUwMDNlcG9ydHMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjU1OlxcdHN3LVxcdTAwM2Vwb3J0cyA9IGt1bml0X2t6YWxsb2ModGVzdCwgc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTYtXFx0aWYgKCFzdy1cXHUwMDNlcG9ydHMpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy02My1cXHRcXHRpZiAoaSkge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjY0OlxcdFxcdFxcdGt1bml0X2lkYV9pbml0KHRlc3QsIFxcdTAwMjZzdy1cXHUwMDNlcG9ydHNbaV0uaW5faG9waWRzKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo2NTpcXHRcXHRcXHRrdW5pdF9pZGFfaW5pdCh0ZXN0LCBcXHUwMDI2c3ctXFx1MDAzZXBvcnRzW2ldLm91dF9ob3BpZHMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTY2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTcxLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjcyOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy03My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTU0OnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0X3VzYjQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTczOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0X2JyKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE5MDpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2NfZGV2X2RlZmF1bHQoc3RydWN0IGt1bml0ICp0ZXN0LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5MS1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMzktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzQwOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aF9kcGluKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zNDEtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zNjAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzYxOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aG91dF9kcChzdHJ1Y3Qga3VuaXQgKnRlc3QsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzYyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB0Yl9zd2l0Y2ggKnBhcmVudCxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQwMS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0MDI6c3RhdGljIHN0cnVjdCB0Yl9zd2l0Y2ggKmFsbG9jX2Rldl91c2I0KHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MDMtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHRiX3N3aXRjaCAqcGFyZW50LFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDIyLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjQyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfYmFzaWMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQyNC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MzktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NDQwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfY29ubmVjdGVkX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQ0MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYz00NzM9c3RydWN0IHBvcnRfZXhwZWN0YXRpb24ge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDc4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjQ3OTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfc2luZ2xlX2hvcF93YWxrKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00ODAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTMyLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjUzMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfZGFpc3lfY2hhaW5fd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTM0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTU5MS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo1OTI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX3NpbXBsZV90cmVlX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTU5My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy02NTQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NjU1OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9jb21wbGV4X3RyZWVfd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNjU2LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTczOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo3Mzk6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX21heF9sZW5ndGhfd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNzQwLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTg0MS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo4NDI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9jb25uZWN0ZWQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTg0My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYz04NjI9c3RydWN0IGhvcF9leHBlY3RhdGlvbiB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy04NjktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6ODcwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUwKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy04NzEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTI3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjkyODpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfbm90X2JvbmRlZF9sYW5lMShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTI5LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTk4OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo5OTA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9ib25kZWRfbGFuZTFfY2hhaW4oc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTk5MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMDY5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEwNzA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9ib25kZWRfbGFuZTFfY2hhaW5fcmV2ZXJzZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTA3MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMTQ5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjExNTA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX21peGVkX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMTUxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTEyNDEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTI0MjpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfbWl4ZWRfY2hhaW5fcmV2ZXJzZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTI0My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzMzLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEzMzQ6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfcGNpZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTMzNS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzg4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEzODk6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTEzOTAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTQyNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNDI3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RwX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDI4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE0NzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTQ3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF90cmVlKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDc0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE1MjItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTUyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF9tYXhfbGVuZ3RoKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTI0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2MDItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTYwMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF8zZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2MDQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTY2OC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNjY5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX3VzYjMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2NzAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTcyMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNzI0OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX3BvcnRfb25fcGF0aChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTcyNS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzg5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE3OTA6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZG1hKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzkxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4MzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTgzMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfcngoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4MzQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg2OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxODcwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RtYV90eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg3MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTA2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE5MDc6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZG1hX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTA4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5NzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTk3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfbWF0Y2goc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5NzQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjAyMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMDI0OnN0YXRpYyB2b2lkIHRiX3Rlc3RfY3JlZGl0X2FsbG9jX2xlZ2FjeV9ub3RfYm9uZGVkKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDI1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIwNTYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjA1NzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19sZWdhY3lfYm9uZGVkKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDU4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIwODktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjA5MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19wY2llKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDkxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIxMjItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjEyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY193aXRob3V0X2RwKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMTI0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIxNzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjE3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19kcChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjE3NC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjE2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyMTc6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfdXNiMyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjIxOC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjQ5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyNTA6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfZG1hKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjUxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIyODUtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjI4NjpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19kbWFfbXVsdGlwbGUoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIyODcte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjM4Mi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMzgzOnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX1BDSUVfVFVOTkVMKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMzg0LVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0MTItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQxMzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9EUF9UVU5ORUwxKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDE0LVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0NDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ1MDpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9EUF9UVU5ORUwyKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDUxLVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0ODYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ4NzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9VU0IzX1RVTk5FTChzdHJ1Y3Qga3VuaXQgKnRlc3QsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjQ4OC1cXHRcXHRcXHRzdHJ1Y3QgdGJfc3dpdGNoICpob3N0LCBzdHJ1Y3QgdGJfc3dpdGNoICpkZXYpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTE2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI1MTc6c3RhdGljIHN0cnVjdCB0Yl90dW5uZWwgKlRCX1RFU1RfRE1BX1RVTk5FTDEoc3RydWN0IGt1bml0ICp0ZXN0LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1MTgtXFx0XFx0XFx0c3RydWN0IHRiX3N3aXRjaCAqaG9zdCwgc3RydWN0IHRiX3N3aXRjaCAqZGV2KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjU0Ni1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNTQ3OnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX0RNQV9UVU5ORUwyKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTQ4LVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1NzYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjU3NzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19hbGwoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1Nzgte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM9MjY2Mz1zdGF0aWMgY29uc3QgdXVpZF90IG5ldHdvcmtfZGlyX3V1aWQgPVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjY2Ni1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNjY3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI2Njgte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjcyNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNzI3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfZm9ybWF0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNzI4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI3NDEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjc0MjpcXHRibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgYmxvY2tfbGVuICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI3NDMtXFx0S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGJsb2NrKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI3NTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjc1NDpzdGF0aWMgdm9pZCBjb21wYXJlX2RpcnMoc3RydWN0IGt1bml0ICp0ZXN0LCBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkMSxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNzU1LVxcdFxcdFxcdCBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkMilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4MjMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjgyNDpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X2NvcHkoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4MjUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg0Mi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyODQzOlxcdGJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2Yocm9vdF9kaXJlY3RvcnkpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODQ0LVxcdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBibG9jayk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODY3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4Njg6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV91MzJfd3JhcChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg2OS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODc1LVxcdCAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4NzY6XFx0dTMyICpibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgMHgxMDIgKiBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg3Ny1cXHRzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkaXI7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODk4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4OTk6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV9yZWN1cnNpb24oc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5MDAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwNy1cXHQgKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTA4OlxcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDEwICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5MDktXFx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkzOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTM5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2VfZGlyX2xlbl91bmRlcmZsb3coc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5NDAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk1Mi1cXHQgKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTUzOlxcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDcgKiBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk1NC1cXHRzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkaXI7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTc4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI5Nzk6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV96ZXJvX2xlbmd0aChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk4MC17XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjk4MTpcXHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA2ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5ODItXFx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk5OC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTk5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Vfcm9vdGRpcl9vdmVyZmxvdyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAwMC17XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzAwMTpcXHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA0ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwMDItXFx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAxNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMDE3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfbWVyZ2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwMTgte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzA5Ny1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMDk4OnN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0Yl90ZXN0X2Nhc2VzW10gPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzA5OS1cXHRLVU5JVF9DQVNFKHRiX3Rlc3RfcHJvcGVydHlfcGFyc2VfdTMyX3dyYXApLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzE0Ni1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMTQ3OnN0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgdGJfdGVzdF9zdWl0ZSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTQ4LVxcdC5uYW1lID0gXFxcInRodW5kZXJib2x0XFxcIixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMxNTEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE1MjprdW5pdF90ZXN0X3N1aXRlKHRiX3Rlc3Rfc3VpdGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNToyOC44MjIwNzk5OTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU5MDY3NDcxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmsgRnV6emluZyBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB0ZXN0LmNgIGZpbGUsIGFuZCBpdCdzIHByZXR0eSBjbGVhciBpdCdzIGp1c3QgYSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgdGh1bmRlcmJvbHQgY29yZS4gSXQgZG9lc24ndCBhY3R1YWxseSBpbnN0YW50aWF0ZSBvciByZWdpc3RlciBhIG1vY2sgVGh1bmRlcmJvbHQgY29udHJvbGxlciwgd2hpY2ggaXMgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uIFRoaXMgbWVhbnMgYHRodW5kZXJib2x0LW5ldGAgY2FuJ3QgYmUgZnV6emVkIGluIGEgUUVNVSBlbnZpcm9ubWVudCBhcyBpcyBiZWNhdXNlIHRoZXJlJ3Mgc2ltcGx5IG5vIGNvbnRyb2xsZXIgZW11bGF0aW9uLiBcblxuSG1tLCBJIHdvbmRlciwgaXMgdGhlcmUgYW5vdGhlciB3YXkgdG8gbG9hZCBhbmQgdGVzdCBgdGh1bmRlcmJvbHQtbmV0YCB3aXRob3V0IGEgcmVhbCBjb250cm9sbGVyIGVtdWxhdGlvbj8gYHRibmV0YCByZWdpc3RlcnMgYSBuZXR3b3JrIGRldmljZSwgc3VyZSwgYnV0IHRoYXQgcmVnaXN0cmF0aW9uIGhpbmdlcyBvbiBgdGJuZXRfcHJvYmVgIGJlaW5nIGludm9rZWQuIEFuZCBgdGJuZXRfcHJvYmVgIGdldHMgY2FsbGVkIHdoZW4gdGhlIHRodW5kZXJib2x0IGJ1cyBtYXRjaGVzIGEgYHRiX3NlcnZpY2VgIGRldmljZS4gQW5kIGEgYHRiX3NlcnZpY2VgIGRldmljZT8gVGhlIHRodW5kZXJib2x0IGNvcmUgY3JlYXRlcyAqdGhvc2UqIHdoZW4gaXQgZGlzY292ZXJzIGEgdGh1bmRlcmJvbHQgZGV2aWNlIHdpdGggWERvbWFpbiBwcm9wZXJ0aWVzLiBXaGljaCwgb2YgY291cnNlLCByZXF1aXJlcyBhIHRodW5kZXJib2x0IGNvbnRyb2xsZXIgdG8gYmUgcHJlc2VudCB0byBmYWNpbGl0YXRlIGRldmljZSBkaXNjb3ZlcnkuIFxuXG5SaWdodCwgc28gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHNpbmNlIHRoZXJlIGlzIG5vIHRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLCB0aGUgdGh1bmRlcmJvbHQgY29yZSB3b24ndCBmaW5kIGFueSBjb250cm9sbGVycywgd29uJ3QgZGlzY292ZXIgYW55IGRldmljZXMsIHdvbid0IGNyZWF0ZSB0aG9zZSBjcml0aWNhbCBgdGJfc2VydmljZWAgZGV2aWNlcywgYW5kIHVsdGltYXRlbHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gSXQgYXBwZWFycyB0aGF0IHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2guIElzIHRoZXJlICphbnkqIGtpbmQgb2Ygc29mdHdhcmUgVGh1bmRlcmJvbHQgY29udHJvbGxlciBlcXVpdmFsZW50IG91dCB0aGVyZT8gQSBgbWFjODAyMTFfaHdzaW1gIGZvciB0aHVuZGVyYm9sdCwgcGVyaGFwcz8gSSBkaWQgYSBxdWljayBgZ3JlcGAgZm9yIGBrdW5pdHx0ZXN0fG1vY2t8c2ltYCBpbiBgZHJpdmVycy90aHVuZGVyYm9sdC9gLCBhbmQgSSBvbmx5IHNlZSBgdGVzdC5jYCBhbmQgYGRtYV90ZXN0LmNgLCB3aGljaCwgd2hpbGUgaXQgZG9lcyBiaW5kIHRvIGEgYHRiX3NlcnZpY2VgLCBsb29rcyB0byBiZSBhbm90aGVyIHRlc3QgZHJpdmVyLiBTbywgbm8sIHRoZXJlIGlzbid0IGFueXRoaW5nIGxpa2UgYGh3c2ltYCBvciBgdmhjaWAgZm9yIHRodW5kZXJib2x0IHRoYXQgSSBjYW4gc2VlLlxuXG5XYWl0LCB3aGF0IGFib3V0IGBjb25maWdmc2A/IENvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgYHRiX3NlcnZpY2VgIGRldmljZSB0aGF0IHdheT8gTGV0IG1lIGludmVzdGlnYXRlIGBjb25maWdmc2AncyByZWxhdGlvbnNoaXAgdG8gdGh1bmRlcmJvbHQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2NjksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MzguNDEyNzU5MTA4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQ1OTI4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWdmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3RodW5kZXJib2x0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlPTk9dGh1bmRlcmJvbHQtJChDT05GSUdfREVCVUdfRlMpICs9IGRlYnVnZnMub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGU6MTA6dGh1bmRlcmJvbHQtJChDT05GSUdfVVNCNF9DT05GSUdGUykgKz0gY29uZmlnZnMub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTEtdGh1bmRlcmJvbHQtJHtDT05GSUdfVVNCNF9LVU5JVF9URVNUfSArPSB0ZXN0Lm9cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy04LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo5OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb25maWdmcy5oXFx1MDAzZVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM9MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRiX3Jvb3RfZ3JvdXBfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0xNy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6MTg6c3RhdGljIHN0cnVjdCBjb25maWdmc19zdWJzeXN0ZW0gdGJfY29uZmlnZnMgPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTE5LVxcdC5zdV9ncm91cCA9IHtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0yNy0vKipcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6Mjg6ICogdGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoKSAtIFJlZ2lzdGVyIFRodW5kZXJib2x0IENvbmZpZ0ZTIGdyb3VwXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTI5LSAqIEBncm91cDogR3JvdXAgdG8gcmVnaXN0ZXIuXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzQtICovXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjM1OmludCB0Yl9jb25maWdmc19yZWdpc3Rlcl9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzYte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzozNzpcXHRyZXR1cm4gY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoXFx1MDAyNnRiX2NvbmZpZ2ZzLnN1X2dyb3VwLCBncm91cCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTM4LX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6Mzk6RVhQT1JUX1NZTUJPTF9HUEwodGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXApO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00MC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDEtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQyOiAqIHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXAoKSAtIFVucmVnaXN0ZXIgcHJldmlvdXNseSByZWdpc3RlcmVkIGdyb3VwXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTQzLSAqIEBncm91cDogR3JvdXAgdG8gdW5yZWdpc3Rlci5cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDQtICovXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQ1OnZvaWQgdGJfY29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDYte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0NzpcXHRjb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKGdyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDgtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0OTpFWFBPUlRfU1lNQk9MX0dQTCh0Yl9jb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjUxOmludCB0Yl9jb25maWdmc19pbml0KHZvaWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTUyLXtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTM6XFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNnRiX2NvbmZpZ2ZzLnN1X2dyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTQ6XFx0bXV0ZXhfaW5pdChcXHUwMDI2dGJfY29uZmlnZnMuc3VfbXV0ZXgpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo1NTpcXHRyZXR1cm4gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZ0Yl9jb25maWdmcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTU2LX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjU4OnZvaWQgdGJfY29uZmlnZnNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy01OS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjYwOlxcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZ0Yl9jb25maWdmcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTYxLX1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmM9ODg2PWludCB0Yl9kb21haW5faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy04ODktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYzo4OTA6XFx0dGJfY29uZmlnZnNfaW5pdCgpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmMtODkxLVxcdHRiX2RlYnVnZnNfaW5pdCgpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYz05MTI9dm9pZCB0Yl9kb21haW5fZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy05MTktXFx0dGJfZGVidWdmc19leGl0KCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYzo5MjA6XFx0dGJfY29uZmlnZnNfZXhpdCgpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmMtOTIxLX1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxMjojaW5jbHVkZSBcXHUwMDNjbGludXgvY29uZmlnZnMuaFxcdTAwM2VcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9maWxlLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTEyMDg9Q09ORklHRlNfQVRUUih0YnN0cmVhbV9kZXZfLCB0aHJvdHRsaW5nKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxMjEwOnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICp0YnN0cmVhbV9kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMTEtXFx0XFx1MDAyNnRic3RyZWFtX2Rldl9hdHRyX2luZGV4LFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMjE5PXN0YXRpYyB2b2lkIHRic3RyZWFtX2Rldl9pdGVtX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMjI3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTIyODpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB0YnN0cmVhbV9kZXZfaXRlbV9vcHMgPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMjI5LVxcdC5yZWxlYXNlID0gdGJzdHJlYW1fZGV2X2l0ZW1fcmVsZWFzZSxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTM5MT10YnN0cmVhbV9kZXZfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MDQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNDA1OnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfZ3JvdXBfb3BlcmF0aW9ucyB0YnN0cmVhbV9kZXZfZ3JvdXBfb3BzID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQwNi1cXHQubWFrZV9ncm91cCA9IHRic3RyZWFtX2Rldl9tYWtlX2dyb3VwLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDEwPXN0YXRpYyB2b2lkIHRic3RyZWFtX2l0ZW1fcmVsZWFzZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MTgtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNDE5OnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfaXRlbV9vcGVyYXRpb25zIHRic3RyZWFtX2l0ZW1fb3BzID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQyMC1cXHQucmVsZWFzZSA9IHRic3RyZWFtX2l0ZW1fcmVsZWFzZSxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTQzMD10YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNDYxLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQ2MjpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgdGJzdHJlYW1fZ3JvdXBfb3BzID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQ2My1cXHQubWFrZV9ncm91cCA9IHRic3RyZWFtX21ha2VfZ3JvdXAsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTE2NDg9c3RhdGljIGludCBfX2luaXQgdGJzdHJlYW1faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY1LVxcdGNvbmZpZ19ncm91cF9pbml0KFxcdTAwMjZ0YnN0cmVhbV9ncm91cCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjY2OlxcdHJldCA9IHRiX2NvbmZpZ2ZzX3JlZ2lzdGVyX2dyb3VwKFxcdTAwMjZ0YnN0cmVhbV9ncm91cCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NzUtZXJyX3VucmVnaXN0ZXJfZ3JvdXA6XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjc2OlxcdHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXAoXFx1MDAyNnRic3RyZWFtX2dyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NzctZXJyX3VucmVnaXN0ZXJfZGlyOlxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNjg1PXN0YXRpYyB2b2lkIF9fZXhpdCB0YnN0cmVhbV9leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2ODctXFx0dGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcXHUwMDI2dGJzdHJlYW1fZHJpdmVyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE2ODg6XFx0dGJfY29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChcXHUwMDI2dGJzdHJlYW1fZ3JvdXApO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTY4OS1cXHR0Yl91bnJlZ2lzdGVyX3Byb3BlcnR5X2RpcihcXFwic3RyZWFtXFxcIiwgdGJzdHJlYW1fZGlyKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaD0xNTU5PXN0YXRpYyBpbmxpbmUgdm9pZCB0Yl9yZXRpbWVyX2RlYnVnZnNfcmVtb3ZlKHN0cnVjdCB0Yl9yZXRpbWVyICpydCkgeyB9XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2Mi0jaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19DT05GSUdGU19GUylcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2MzppbnQgdGJfY29uZmlnZnNfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2NDp2b2lkIHRiX2NvbmZpZ2ZzX2V4aXQodm9pZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oLTE1NjUtI2Vsc2VcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2NjpzdGF0aWMgaW5saW5lIGludCB0Yl9jb25maWdmc19pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2NzpzdGF0aWMgaW5saW5lIHZvaWQgdGJfY29uZmlnZnNfZXhpdCh2b2lkKSB7IH1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2OC0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MzguNDYyMjI1Mzc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjkzMDM4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVsdmluZyBpbnRvIHRoZSBgdGJzdHJlYW1gIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IGB0YnN0cmVhbWAsIHdoaWNoIEkga25vdyBpcyB1c2VkIGZvciBzdHJlYW0gY3JlYXRpb24sIGludGVyZmFjZXMgd2l0aCBDb25maWdGUy4gSXQgbG9va3MgbGlrZSBgdGJzdHJlYW1gIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBgdGJzdHJlYW1gIGFuZCB0aGUgdW5kZXJseWluZyBzZXJ2aWNlcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHByb2Nlc3Mgb2YgaG93IGdyb3VwcyBhbmQgc2VydmljZXMgYXJlIG1hZGUgd2hlbiBhIHN0cmVhbSBpcyBpbnN0YW50aWF0ZWQuIEkgcmVjYWxsIGB0YnN0cmVhbV9tYWtlX2dyb3VwYCBwbGF5cyBhIHJvbGUgaW4gY29uc3RydWN0aW5nIGEgZ3JvdXAuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYHRic3RyZWFtX21ha2VfZ3JvdXBgIHRvIGNvbmZpcm0gaWYgaXQsIGluIGZhY3QsIGdlbmVyYXRlcyBgdGJfc2VydmljZWAgaW5zdGFuY2VzLCBvciBpZiB0aGUgaW5zdGFudGlhdGlvbiBvY2N1cnMgZWxzZXdoZXJlIGluIHRoZSBwcm9jZXNzLiBUaW1lIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6NDMuMDkxNTMyNTIxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDEyMTMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YnN0cmVhbV9tYWtlX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDI5PXN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE0MzA6dGJzdHJlYW1fbWFrZV9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cCwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MzEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDYyPXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfZ3JvdXBfb3BlcmF0aW9ucyB0YnN0cmVhbV9ncm91cF9vcHMgPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNDYzOlxcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0NjQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6NDMuMTQxNjY1NTk2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzA3MDc3NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgdGJzdHJlYW1fbWFrZV9ncm91cGA6XG5cbioqRGlzc2VjdGluZyBgdGJzdHJlYW1fbWFrZV9ncm91cGAqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gZGlnIGludG8gYHRic3RyZWFtX21ha2VfZ3JvdXBgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHBpY3R1cmUg4oCTIHdoYXQgaXMgaXQgc3VwcG9zZWQgdG8gKmRvKj8gSXMgdGhpcyBhIGZ1bmN0aW9uIGZvciBjb25zdHJ1Y3RpbmcgYSBuZXcgc3RyZWFtIGdyb3VwIG9iamVjdD8gSXMgaXQgcmVzcG9uc2libGUgZm9yIGluaXRpYWwgc2V0dXAsIG1lbW9yeSBhbGxvY2F0aW9uLCBvciBtYXliZSBqdXN0IHdyYXBwaW5nIGV4aXN0aW5nIHN0cmVhbXM/IENvbnNpZGVyaW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiwgXCJtYWtlX2dyb3VwXCIgc2VlbXMgdG8gbGVhbiB0b3dhcmRzIGFuIGluc3RhbnRpYXRpb24gb3IgY29uc3RydWN0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcGFyYW1ldGVycyBpdCBleHBlY3RzLiBVbmRlcnN0YW5kaW5nIHRob3NlIHBhcmFtZXRlcnMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZ3JvdXAncyBjb21wb3NpdGlvbi4gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gSSdtIGFudGljaXBhdGluZyBlbGVtZW50cyBsaWtlIHN0cmVhbSBoYW5kbGVzIG9yIGRlc2NyaXB0b3JzLCBidXQgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSSdsbCBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBhbmQgcmV0dXJuIHZhbHVlcy4gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzIGZvciBmYWlsdXJlcyBkdXJpbmcgdGhlIGdyb3VwIGNyZWF0aW9uPyBJcyB0aGVyZSBhbnkgZ3JhY2VmdWwgZGVncmFkYXRpb24gaW4gY2FzZSBvZiBmYWlsdXJlPyBVbHRpbWF0ZWx5LCBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kIGluIHdoaWNoIGNvbnRleHQgdG8gaGF2ZSBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyNDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNTo0Ny4yNzIzNzczNDlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQyOSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQyOTpcXHRzdGF0aWMgc3RydWN0IGNvbmZpZ19ncm91cCAqXFxuMTQzMDpcXHR0YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbjE0MzE6XFx0e1xcbjE0MzI6XFx0XFx0c3RydWN0IHRic3RyZWFtX2dyb3VwICpzZztcXG4xNDMzOlxcdFxcdHN0cnVjdCB0YnN0cmVhbSAqc3RyZWFtO1xcbjE0MzQ6XFx0XFx0aW50IGRvbWFpbiwgaW5kZXg7XFxuMTQzNTpcXHRcXHR1NjQgcm91dGU7XFxuMTQzNjpcXHRcXG4xNDM3OlxcdFxcdC8qIE1ha2Ugc3VyZSB0aGUgZm9ybWF0IGlzIGNvcnJlY3QgKi9cXG4xNDM4OlxcdFxcdGlmIChzc2NhbmYobmFtZSwgXFxcIiV1LSVsbHguJXVcXFwiLCBcXHUwMDI2ZG9tYWluLCBcXHUwMDI2cm91dGUsIFxcdTAwMjZpbmRleCkgIT0gMylcXG4xNDM5OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbjE0NDA6XFx0XFxuMTQ0MTpcXHRcXHRzZyA9IGt6YWxsb2Nfb2JqKCpzZywgR0ZQX0tFUk5FTCk7XFxuMTQ0MjpcXHRcXHRpZiAoIXNnKVxcbjE0NDM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuMTQ0NDpcXHRcXG4xNDQ1OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnNnLVxcdTAwM2Vsb2NrKTtcXG4xNDQ2OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZzZy1cXHUwMDNlZGV2X2xpc3QpO1xcbjE0NDc6XFx0XFxuMTQ0ODpcXHRcXHRndWFyZChtdXRleCkoXFx1MDAyNnRic3RyZWFtX2xvY2spO1xcbjE0NDk6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzdHJlYW0sIFxcdTAwMjZ0YnN0cmVhbV9saXN0LCBsaXN0KSB7XFxuMTQ1MDpcXHRcXHRcXHR0YnN0cmVhbV9nZXQoc3RyZWFtKTtcXG4xNDUxOlxcdFxcdFxcdGlmIChzeXNmc19zdHJlcShuYW1lLCBkZXZfbmFtZShcXHUwMDI2c3RyZWFtLVxcdTAwM2VzdmMtXFx1MDAzZWRldikpKSB7XFxuMTQ1MjpcXHRcXHRcXHRcXHRzZy1cXHUwMDNlc3RyZWFtID0gc3RyZWFtO1xcbjE0NTM6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTQ1NDpcXHRcXHRcXHR9XFxuMTQ1NTpcXHRcXHRcXHR0YnN0cmVhbV9wdXQoc3RyZWFtKTtcXG4xNDU2OlxcdFxcdH1cXG4xNDU3OlxcdFxcbjE0NTg6XFx0XFx0Y29uZmlnX2dyb3VwX2luaXRfdHlwZV9uYW1lKFxcdTAwMjZzZy1cXHUwMDNlZ3JvdXAsIG5hbWUsIFxcdTAwMjZ0YnN0cmVhbV9kZXZfZ3JvdXBfdHlwZSk7XFxuMTQ1OTpcXHRcXHRyZXR1cm4gXFx1MDAyNnNnLVxcdTAwM2Vncm91cDtcXG4xNDYwOlxcdH1cXG4xNDYxOlxcdFxcbjE0NjI6XFx0c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2dyb3VwX29wcyA9IHtcXG4xNDYzOlxcdFxcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6NDcuMjcyNTMyMjY5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjY1NTU3NzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRodW5kZXJib2x0IE5ldHdvcmtpbmcgaW4gUUVNVTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCB0YXJnZXRzIFRodW5kZXJib2x0IG5ldHdvcmtpbmcuIEkgc2VlIGl0IHN0YXJ0cyBieSBsb29raW5nIHVwIGFuIGV4aXN0aW5nIGB0YnN0cmVhbWAgYnkgbmFtZSwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZSBgdGJfc2VydmljZWAgZGV2X25hbWUuIENydWNpYWxseSwgaXQgZG9lc24ndCAqY3JlYXRlKiBhIGB0Yl9zZXJ2aWNlYC4gVGhpcyBtZWFucywgZnJvbSBhIHVzZXJzcGFjZSBwZXJzcGVjdGl2ZSwgd2UgY2FuJ3QgaW5zdGFudGlhdGUgYSBgdGJfc2VydmljZWAgb3Vyc2VsdmVzLlxuXG5XaXRob3V0IGEgYHRiX3NlcnZpY2VgLCB0aGUgdml0YWwgYHRibmV0X3Byb2JlYCBmdW5jdGlvbiBpcyBuZXZlciBpbnZva2VkLiBBbmQgd2l0aG91dCBgdGJuZXRfcHJvYmVgLCB0aGUgZW50aXJlIGB0Ym5ldGAgZHJpdmVyIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlLiBOb3csIHRoZSBraWNrZXI6IFFFTVUsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCBkb2Vzbid0IHByb3ZpZGUgYW55IFRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLiBUaGlzIG1lYW5zIHRoZSBUaHVuZGVyYm9sdCBjb3JlIHdpbGwgbmV2ZXIgZmluZCBhbnkgY29udHJvbGxlcnMsIG5ldmVyIGRpc2NvdmVyIGRldmljZXMsIGFuZCB0aGVyZWZvcmUsIHdpbGwgbmV2ZXIgZ2VuZXJhdGUgYW55IGB0Yl9zZXJ2aWNlYCBkZXZpY2VzLiBDb25zZXF1ZW50bHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC5cblxuVGhlcmVmb3JlLCB0aGlzIGNvZGUgaW4gYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY2AgaXMgdXR0ZXJseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUuXG5cbldhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIHJvdXRlIHRvIHRoaXMgY29kZT8gSSdtIHdvbmRlcmluZyBpZiBhIFRodW5kZXJib2x0IGRldmljZSBjb3VsZCBiZSBpbmplY3RlZCBzb21laG93PyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIGVxdWl2YWxlbnQgdG8gYHZoY2lgIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIFRodW5kZXJib2x0LiBUaGUgYHRlc3QuY2AgZHJpdmVyIGlzIGEgS1VuaXQgdGVzdCwgYW5kIGl0IGRvZXNuJ3QgZXhwb3NlIGEgbW9jayBUaHVuZGVyYm9sdCBjb250cm9sbGVyIHRvIHRoZSBzeXN0ZW0uIFRoaXMgY29uZmlybXMgaXQ6IGB0aHVuZGVyYm9sdC1uZXRgIHNpbXBseSBjYW5ub3QgYmUgZnV6emVkIGluIFFFTVUuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBpZiBgVVNCNF9ORVRgIGNhbiBiZSByZWFjaGVkLiBUaGUgcGF0Y2ggZm9jdXNlcyBvbiBgdGJuZXRfY29ubmVjdF9mYWlsZWRgIGFuZCBgdGJuZXRfY29ubmVjdGVkX3dvcmtgLCBib3RoIHBhcnQgb2YgdGhlIGB0aHVuZGVyYm9sdC1uZXRgIGRyaXZlci4gU2luY2UgdGhhdCBkcml2ZXIgZnVuZGFtZW50YWxseSByZWxpZXMgb24gVGh1bmRlcmJvbHQgaGFyZHdhcmUsIHdoaWNoIGlzICpub3QqIGVtdWxhdGVkIGluIFFFTVUsIGl0J3MgYSBkZWFkIGVuZC4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLCBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IFRodW5kZXJib2x0IG5ldHdvcmtpbmcgYWJzb2x1dGVseSByZXF1aXJlcyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSByb2J1c3QgZW11bGF0aW9uIGxheWVyLCB3aGljaCBRRU1VIGRvZXNuJ3QgaGF2ZS5cblxuTGV0IG1lIGp1c3QgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMuIFRoZXkgZXhwbGljaXRseSBzYXk6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBwcmVjaXNlbHkgZml0cyBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLiBUaGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgaW4gUUVNVS5cblxuRmluYWxseSwganVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4sIGxldCdzIHZlcmlmeSBpZiBgVVNCNF9ORVRgIGRlcGVuZHMgb24gYFVTQjRgICh0aGUgVGh1bmRlcmJvbHQgY29yZSkuIFllcywgYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdgIGNvbmZpcm1zOiBgY29uZmlnIFVTQjRfTkVULi4uIGRlcGVuZHMgb24gVVNCNCBcdTAwMjZcdTAwMjYgSU5FVGAuIEFuZCBzaW5jZSB0aGVyZSBpcyBubyBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGVtdWxhdGlvbiBpbiBRRU1VLCB0aGUgY29kZSByZW1haW5zIHVucmVhY2hhYmxlLlxuXG5TbywgSSdtIHN0aWNraW5nIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDc0LCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjU5LjkzODA5MzkyNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGRyaXZlciAodGh1bmRlcmJvbHQtbmV0KS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zIHRvIGZ1bmN0aW9uLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFRodW5kZXJib2x0IGNvbnRyb2xsZXJzIGluIHN0YW5kYXJkIFFFTVUgKHVubGlrZSBVU0Igd2l0aCB2aGNpIG9yIFdpLUZpIHdpdGggbWFjODAyMTFfaHdzaW0pLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRodW5kZXJib2x0IG5ldHdvcmtpbmcgZHJpdmVyICh0aHVuZGVyYm9sdC1uZXQpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgYW5kIFhEb21haW4gY29ubmVjdGlvbnMgdG8gZnVuY3Rpb24uIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMgaW4gc3RhbmRhcmQgUUVNVSAodW5saWtlIFVTQiB3aXRoIHZoY2kgb3IgV2ktRmkgd2l0aCBtYWM4MDIxMV9od3NpbSksIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNTo1OS45MzgxMzUxOTRaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowksdk2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 13:33:25 +0000 UTC FinishedAt: 2026-08-11 13:36:01 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRodW5kZXJib2x0IG5ldHdvcmtpbmcgZHJpdmVyICh0aHVuZGVyYm9sdC1uZXQpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgYW5kIFhEb21haW4gY29ubmVjdGlvbnMgdG8gZnVuY3Rpb24uIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMgaW4gc3RhbmRhcmQgUUVNVSAodW5saWtlIFVTQiB3aXRoIHZoY2kgb3IgV2ktRmkgd2l0aCBtYWM4MDIxMV9od3NpbSksIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODliYjFiNzU3MDFkNWZhYzM4MTRmYzkwN2RmZjI1NjllOGMyMGE1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDEzOjM0OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuaW5kZXggOTg4OTM3MzJiYzZlNC4uMmExNzI4NjIxODg3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5AQCAtNjI2LDYgJiM0Mzs2MjYsMTQgQEAgc3RhdGljIGludCB0Ym5ldF9hbGxvY190eF9idWZmZXJzKHN0cnVjdCB0Ym5ldCAqbmV0KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0X2ZhaWxlZChzdHJ1Y3QgdGJuZXQgKm5ldClcbiYjNDM7e1xuJiM0MztcdC8qIExlYXZlIGxvZ2luX3JlY2VpdmVkIHNldDogb25seSB0aGUgcGVlciBjYW4gbWFrZSBpdCB0cnVlIGFnYWluLiAqL1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bmV0LVx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XG4mIzQzO1x0bmV0LVx1MDAzZWxvZ2luX3NlbnQgPSBmYWxzZTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bmV0LVx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB0Ym5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqbmV0KSwgY29ubmVjdGVkX3dvcmspO1xuQEAgLTY0Nyw2ICYjNDM7NjU1LDkgQEAgc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZChuZXQtXHUwMDNleGQsIG5ldC1cdTAwM2VyZW1vdGVfdHJhbnNtaXRfcGF0aCk7XG4gXHRpZiAocmV0ICE9IG5ldC1cdTAwM2VyZW1vdGVfdHJhbnNtaXRfcGF0aCkge1xuIFx0XHRuZXRkZXZfZXJyKG5ldC1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBSeCBIb3BJRFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzZT0gMClcbiYjNDM7XHRcdFx0dGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC1cdTAwM2V4ZCwgcmV0KTtcbiYjNDM7XHRcdHRibmV0X2Nvbm5lY3RfZmFpbGVkKG5ldCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC02OTEsNiAmIzQzOzcwMiw3IEBAIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHRiX3Jpbmdfc3RvcChuZXQtXHUwMDNlcnhfcmluZy5yaW5nKTtcbiBcdHRiX3Jpbmdfc3RvcChuZXQtXHUwMDNldHhfcmluZy5yaW5nKTtcbiBcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXHUwMDNleGQsIG5ldC1cdTAwM2VyZW1vdGVfdHJhbnNtaXRfcGF0aCk7XG4mIzQzO1x0dGJuZXRfY29ubmVjdF9mYWlsZWQobmV0KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGRyaXZlciAodGh1bmRlcmJvbHQtbmV0KS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zIHRvIGZ1bmN0aW9uLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFRodW5kZXJib2x0IGNvbnRyb2xsZXJzIGluIHN0YW5kYXJkIFFFTVUgKHVubGlrZSBVU0Igd2l0aCB2aGNpIG9yIFdpLUZpIHdpdGggbWFjODAyMTFfaHdzaW0pLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg5YmIxYjc1NzAxZDVmYWMzODE0ZmM5MDdkZmYyNTY5ZThjMjBhNTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxMzozNDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYwppbmRleCA5ODg5MzczMmJjNmU0Li4yYTE3Mjg2MjE4ODdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jCkBAIC02MjYsNiAmIzQzOzYyNiwxNCBAQCBzdGF0aWMgaW50IHRibmV0X2FsbG9jX3R4X2J1ZmZlcnMoc3RydWN0IHRibmV0ICpuZXQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0X2ZhaWxlZChzdHJ1Y3QgdGJuZXQgKm5ldCkKJiM0Mzt7CiYjNDM7CS8qIExlYXZlIGxvZ2luX3JlY2VpdmVkIHNldDogb25seSB0aGUgcGVlciBjYW4gbWFrZSBpdCB0cnVlIGFnYWluLiAqLwomIzQzOwltdXRleF9sb2NrKCZhbXA7bmV0LSZndDtjb25uZWN0aW9uX2xvY2spOwomIzQzOwluZXQtJmd0O2xvZ2luX3NlbnQgPSBmYWxzZTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bmV0LSZndDtjb25uZWN0aW9uX2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdGJuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKm5ldCksIGNvbm5lY3RlZF93b3JrKTsKQEAgLTY0Nyw2ICYjNDM7NjU1LDkgQEAgc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXJldCA9IHRiX3hkb21haW5fYWxsb2NfaW5faG9waWQobmV0LSZndDt4ZCwgbmV0LSZndDtyZW1vdGVfdHJhbnNtaXRfcGF0aCk7CiAJaWYgKHJldCAhPSBuZXQtJmd0O3JlbW90ZV90cmFuc21pdF9wYXRoKSB7CiAJCW5ldGRldl9lcnIobmV0LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIFJ4IEhvcElEXG4mIzM0Oyk7CiYjNDM7CQlpZiAocmV0ICZndDs9IDApCiYjNDM7CQkJdGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC0mZ3Q7eGQsIHJldCk7CiYjNDM7CQl0Ym5ldF9jb25uZWN0X2ZhaWxlZChuZXQpOwogCQlyZXR1cm47CiAJfQogCkBAIC02OTEsNiAmIzQzOzcwMiw3IEBAIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAl0Yl9yaW5nX3N0b3AobmV0LSZndDtyeF9yaW5nLnJpbmcpOwogCXRiX3Jpbmdfc3RvcChuZXQtJmd0O3R4X3JpbmcucmluZyk7CiAJdGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC0mZ3Q7eGQsIG5ldC0mZ3Q7cmVtb3RlX3RyYW5zbWl0X3BhdGgpOwomIzQzOwl0Ym5ldF9jb25uZWN0X2ZhaWxlZChuZXQpOwogfQogCiBzdGF0aWMgdm9pZCB0Ym5ldF9sb2dpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGB0Ym5ldF9jb25uZWN0X2ZhaWxlZGAgZnVuY3Rpb24gYW5kIGFyZSBjYWxsaW5nIGl0IHdpdGhpbiBgdGJuZXRfY29ubmVjdGVkX3dvcmtgIHdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcuIFBsdXMsIHRoZXJlJiMzOTtzIHRoaXMgYHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZGAgY2FsbCBhbmQgYSBjaGVjayBiZWZvcmUgY2FsbGluZyBgdGJuZXRfY29ubmVjdF9mYWlsZWRgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIGVycm9yIGhhbmRsaW5nLCBub3RoaW5nIGdyb3VuZGJyZWFraW5nIHlldC4KCkJ1dCB3YWl0LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLi4uIG5vdyBteSBicmFpbiYjMzk7cyBnb2luZy4gQ2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLCB0aGF0JiMzOTtzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IGRvIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUsIHJpZ2h0PyBPciBhdCBsZWFzdCBwcm9wZXIgZW11bGF0aW9uLiBJIGtub3cgaXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhLCBidXQgZ2VuZXJhbGx5LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGlzIGhpZ2hseSBoYXJkd2FyZS1kZXBlbmRlbnQuCgpTbywgUUVNVS4uLiBkb2VzIHN0YW5kYXJkIFFFTVUgZXZlbiAqaGF2ZSogVGh1bmRlcmJvbHQgZW11bGF0aW9uPyBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueSBvZmZoYW5kLiBJdCYjMzk7cyBvZnRlbiBhIHByZXR0eSBzcGVjaWFsaXplZCBhcmVhLiBOZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUtYmFzZWQgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgVGh1bmRlcmJvbHQuIExldCYjMzk7cyBkbyBhIHF1aWNrIGBncmVwYCBzZWFyY2ggZm9yICYjMzQ7dGh1bmRlcmJvbHQmIzM0OyBpbiB0aGUgUUVNVSBzb3VyY2Ugb3IgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIGFueXRoaW5nIHBvcHMgdXAuIE5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBsYXllciBiZWZvcmUgZXZlbiB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgZnV6emluZyBzdHJhdGVnaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RodW5kZXJib2x0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZz0yPWNvbmZpZyBVU0I0X05FVFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWctMTEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZzoxMjpcdCAgY2FsbGVkIHRodW5kZXJib2x0X25ldC5cbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1VTQjRfTkVUKSA6PSB0aHVuZGVyYm9sdF9uZXQub1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvTWFrZWZpbGU6Mzp0aHVuZGVyYm9sdF9uZXQtb2JqcyA6PSBtYWluLm8gdHJhY2Uub1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvTWFrZWZpbGUtNC1cbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgvc2l6ZXMuaFx1MDAzZVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjIxOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3RodW5kZXJib2x0LmhcdTAwM2VcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMi0jaW5jbHVkZSBcdTAwM2NsaW51eC91dWlkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDMtI2RlZmluZSBUQk5FVF9NQVhfUEFZTE9BRF9TSVpFXHRcXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjQ0Olx0KFRCTkVUX0ZSQU1FX1NJWkUgLSBzaXplb2Yoc3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlcikpXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDUtLyogUnggcGFja2V0cyBuZWVkIHRvIGhvbGQgc3BhY2UgZm9yIHNrYl9zaGFyZWRfaW5mbyAqL1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy01My0vKipcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo1NDogKiBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIC0gSGVhZGVyIGZvciBlYWNoIFRodW5kZXJib2x0IGZyYW1lXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNTUtICogQGZyYW1lX3NpemU6IHNpemUgb2YgdGhlIGRhdGEgd2l0aCB0aGUgZnJhbWVcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNjMtICovXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NjQ6c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNjUtXHRfX2xlMzIgZnJhbWVfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzAtXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzE6ZW51bSB0aHVuZGVyYm9sdF9pcF9mcmFtZV9wZGYge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTcyLVx0VEJJUF9QREZfRlJBTUVfU1RBUlQgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03NS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo3NjplbnVtIHRodW5kZXJib2x0X2lwX3R5cGUge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTc3LVx0VEJJUF9MT0dJTixcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODItXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6ODM6c3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlciB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODQtXHR1MzIgcm91dGVfaGk7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTk3LVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjk4OnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6OTk6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyIGhkcjtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDAtXHR1MzIgcHJvdG9fdmVyc2lvbjtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTA2LVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjEwNzpzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9naW5fcmVzcG9uc2Uge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjEwODpcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTEwOS1cdHUzMiBzdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTExNC1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMTU6c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ291dCB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTE2Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlciBoZHI7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTE3LX07XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTE4LVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjExOTpzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMjA6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyIGhkcjtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMjEtXHR1MzIgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0xODI9c3RydWN0IHRibmV0IHtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTk5LVx0c3RydWN0IHdvcmtfc3RydWN0IGRpc2Nvbm5lY3Rfd29yaztcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyMDA6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIHJ4X2hkcjtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMDEtXHRzdHJ1Y3QgdGJuZXRfcmluZyByeF9yaW5nO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yMjA9TU9EVUxFX1BBUk1fREVTQyhlMmUsIFwmIzM0O1VTQjRORVQgZnVsbCBlbmQtdG8tZW5kIGZsb3cgY29udHJvbCAoZGVmYXVsdDogdHJ1ZSlcJiMzNDspO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTIyMS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyMjI6c3RhdGljIHZvaWQgdGJuZXRfZmlsbF9oZWFkZXIoc3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlciAqaGRyLCB1NjQgcm91dGUsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjIzLVx0dTggc2VxdWVuY2UsIGNvbnN0IHV1aWRfdCAqaW5pdGlhdG9yX3V1aWQsIGNvbnN0IHV1aWRfdCAqdGFyZ2V0X3V1aWQsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjI0Olx0ZW51bSB0aHVuZGVyYm9sdF9pcF90eXBlIHR5cGUsIHNpemVfdCBzaXplLCB1MzIgY29tbWFuZF9pZClcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMjUte1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNDI9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXNwb25zZShzdHJ1Y3QgdGJuZXQgKm5ldCwgdTY0IHJvdXRlLCB1OCBzZXF1ZW5jZSxcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjQ0LXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyNDU6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9naW5fcmVzcG9uc2UgcmVwbHk7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjQ2LVx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gbmV0LVx1MDAzZXhkO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNTk9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXF1ZXN0KHN0cnVjdCB0Ym5ldCAqbmV0LCB1OCBzZXF1ZW5jZSlcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNjAte1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjI2MTpcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbl9yZXNwb25zZSByZXBseTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyNjI6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9naW4gcmVxdWVzdDtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNjMtXHRzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQgPSBuZXQtXHUwMDNleGQ7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTI3OT1zdGF0aWMgaW50IHRibmV0X2xvZ291dF9yZXNwb25zZShzdHJ1Y3QgdGJuZXQgKm5ldCwgdTY0IHJvdXRlLCB1OCBzZXF1ZW5jZSxcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjgxLXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyODI6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfc3RhdHVzIHJlcGx5O1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTI4My1cdHN0cnVjdCB0Yl94ZG9tYWluICp4ZCA9IG5ldC1cdTAwM2V4ZDtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MjkzPXN0YXRpYyBpbnQgdGJuZXRfbG9nb3V0X3JlcXVlc3Qoc3RydWN0IHRibmV0ICpuZXQpXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyOTU6XHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9nb3V0IHJlcXVlc3Q7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6Mjk2Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX3N0YXR1cyByZXBseTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yOTctXHRzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQgPSBuZXQtXHUwMDNleGQ7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTQyNT1zdGF0aWMgaW50IHRibmV0X2hhbmRsZV9wYWNrZXQoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00MjYte1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjQyNzpcdGNvbnN0IHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiAqcGtnID0gYnVmO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQyOC1cdHN0cnVjdCB0Ym5ldCAqbmV0ID0gZGF0YTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDM0LVx0LyogTWFrZSBzdXJlIHRoZSBwYWNrZXQgaXMgZm9yIHVzICovXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NDM1Olx0aWYgKHNpemUgXHUwMDNjIHNpemVvZihzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyKSlcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00MzYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz03NTA9c3RhdGljIGJvb2wgdGJuZXRfY2hlY2tfZnJhbWUoc3RydWN0IHRibmV0ICpuZXQsIGNvbnN0IHN0cnVjdCB0Ym5ldF9mcmFtZSAqdGYsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzUxOlx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9mcmFtZV9oZWFkZXIgKmhkcilcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03NTIte1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz04MjU9c3RhdGljIGludCB0Ym5ldF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODMyLVx0d2hpbGUgKHJ4X3BhY2tldHMgXHUwMDNjIGJ1ZGdldCkge1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjgzMzpcdFx0Y29uc3Qgc3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTgzNC1cdFx0dW5zaWduZWQgaW50IGhkcl9zaXplID0gc2l6ZW9mKCpoZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0xMDE1PXN0YXRpYyBib29sIHRibmV0X3htaXRfY3N1bV9hbmRfbWFwKHN0cnVjdCB0Ym5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDE3LXtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMDE4Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyID0gcGFnZV9hZGRyZXNzKGZyYW1lc1swXS1cdTAwM2VwYWdlKTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDE5LVx0c3RydWN0IGRldmljZSAqZG1hX2RldiA9IHRiX3JpbmdfZG1hX2RldmljZShuZXQtXHUwMDNldHhfcmluZy5yaW5nKTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTEzMD1zdGF0aWMgbmV0ZGV2X3R4X3QgdGJuZXRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTM1LVx0dTE2IGZyYW1lX2lkID0gYXRvbWljX3JlYWQoXHUwMDI2bmV0LVx1MDAzZWZyYW1lX2lkKTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMTM2Olx0c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTExMzctXHR1bnNpZ25lZCBpbnQgbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTM2NT1zdGF0aWMgaW50IHRibmV0X3Byb2JlKHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCB0Yl9zZXJ2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTM5MC1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMzkxOlx0c3RyY3B5KGRldi1cdTAwM2VuYW1lLCBcJiMzNDt0aHVuZGVyYm9sdCVkXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMzkyLVx0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0Ym5ldF9uZXRkZXZfb3BzO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xNDEwLVx0ZGV2LVx1MDAzZWZlYXR1cmVzID0gZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHwgTkVUSUZfRl9ISUdIRE1BO1xuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjE0MTE6XHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlcik7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQxMi1cbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTQ4OT1zdGF0aWMgc3RydWN0IHRiX3NlcnZpY2VfZHJpdmVyIHRibmV0X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQ5MS1cdFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTQ5MjpcdFx0Lm5hbWUgPSBcJiMzNDt0aHVuZGVyYm9sdC1uZXRcJiMzNDssXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQ5My1cdFx0LnBtID0gcG1fc2xlZXBfcHRyKFx1MDAyNnRibmV0X3BtX29wcyksXG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvdHJhY2UuaC05LSN1bmRlZiBUUkFDRV9TWVNURU1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L3RyYWNlLmg6MTA6I2RlZmluZSBUUkFDRV9TWVNURU0gdGh1bmRlcmJvbHRfbmV0XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC90cmFjZS5oLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MTkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBUaHVuZGVyYm9sdCBGdXp6aW5nIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHRodW5kZXJib2x0LW5ldGAsIHNwZWNpZmljYWxseSB0aGUgVVNCNF9ORVQgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZnV6eiB0aGlzIHRoaW5nIHVzaW5nIHN5emthbGxlcj8gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBmaXJzdCBxdWVzdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgZXZlbiBoYXMgYW55IGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvIHRodW5kZXJib2x0LiBBaCwgcmlnaHQsIHRoZSBpbnN0cnVjdGlvbnMhIFRoZXkmIzM5O3JlIHJlbWluZGluZyBtZSB0aGF0IEkgY2FuJiMzOTt0IGp1c3QgYmxpbmRseSBzZWFyY2ggdGhlIHN5emthbGxlciBjb2RlIGJhc2UgKGBzeXMvKmApIGZvciAmIzM0O3RodW5kZXJib2x0JiMzNDsgYmVjYXVzZSBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBpdHMgaW50ZXJuYWwgcHNldWRvLXN5c2NhbGxzLiBUaGluZ3MgdGhhdCBzdGFydCB3aXRoICYjMzQ7c3l6XyYjMzQ7IGFyZSBvZmYtbGltaXRzIGZvciBhIHN0cmFpZ2h0IHNlYXJjaCBoZXJlLiBJIG5lZWQgdG8gdXNlIHRob3NlIG90aGVyIHRvb2xzIHRoZXkgbWVudGlvbmVkIC0gYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgIC0gaWYgSSYjMzk7bSBsb29raW5nIGZvciAqcmVhbCoga2VybmVsLWxldmVsIHN5emxhbmcgZGVzY3JpcHRpb25zLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlLiBTbywgYmFjayB0byB0aGUgaW5pdGlhbCBxdWVzdGlvbjogYXJlIHRoZXJlICphbnkqIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRodW5kZXJib2x0IGF0IGFsbD8gSSBuZWVkIHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RodW5kZXJib2x0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbToxOldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yLURhdGU6XHRcdFNlcCAyMDI2XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09NT1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yMC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjIxOldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yMi1EYXRlOlx0XHRTZXAgMjAyNlxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtPTI1PURlc2NyaXB0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTI5LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW06MzA6V2hhdDpcdFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cdTAwM2N4ZG9tYWluXHUwMDNlLlx1MDAzY3NlcnZpY2VcdTAwM2UvJG5hbWUvaW5kZXhcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTMxLURhdGU6XHRcdFNlcCAyMDI2XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09MzQ9RGVzY3JpcHRpb246XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMzgtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbTozOTpXaGF0Olx0XHQvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtL1x1MDAzY3hkb21haW5cdTAwM2UuXHUwMDNjc2VydmljZVx1MDAzZS8kbmFtZS9pbl9ob3BpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNDAtRGF0ZTpcdFx0U2VwIDIwMjZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT00Mz1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS01Ny1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjU4OldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lL291dF9ob3BpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNTktRGF0ZTpcdFx0U2VwIDIwMjZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT02Mj1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS02OC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjY5OldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lL3Jpbmdfc2l6ZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNzAtRGF0ZTpcdFx0U2VwIDIwMjZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT03Mz1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS03Ni1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjc3OldoYXQ6XHRcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlLyRuYW1lL3Rocm90dGxpbmdcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTc4LURhdGU6XHRcdFNlcCAyMDI2XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9kb21haW5YL2Jvb3RfYWNsXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yLURhdGU6XHRcdEp1biAyMDE4XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9NT1EZXNjcmlwdGlvbjpcdEhvbGRzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZGV2aWNlIHVuaXF1ZV9pZHMgdGhhdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjQ6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9kZWF1dGhvcml6YXRpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI1LURhdGU6XHRcdE1heSAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Mjg9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSB0ZWxscyB3aGV0aGVyIHRoZSBzeXN0ZW0gc3VwcG9ydHNcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMzOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2RvbWFpblgvaW9tbXVfZG1hX3Byb3RlY3Rpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0LURhdGU6XHRcdE1hciAyMDE5XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Mzc9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSB0ZWxscyB3aGV0aGVyIHRoZSBzeXN0ZW0gdXNlcyBJT01NVVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTQxLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6NDI6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9zZWN1cml0eVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtNDMtRGF0ZTpcdFx0U2VwIDIwMTdcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD00Nj1EZXNjcmlwdGlvbjpcdFRoaXMgYXR0cmlidXRlIGhvbGRzIGN1cnJlbnQgVGh1bmRlcmJvbHQgc2VjdXJpdHkgbGV2ZWxcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC02My1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjY0OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2F1dGhvcml6ZWRcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTY1LURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Njg9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGF1dGhvcml6ZSBUaHVuZGVyYm9sdCBkZXZpY2VzXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtOTctXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo5ODpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9ib290XG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC05OS1EYXRlOlx0XHRKdW4gMjAxOFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTEwMj1EZXNjcmlwdGlvbjpcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIDEgaWYgVGh1bmRlcmJvbHQgZGV2aWNlIHdhcyBhbHJlYWR5XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTA0LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTA1OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2dlbmVyYXRpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEwNi1EYXRlOlx0XHRKYW4gMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTEwOT1EZXNjcmlwdGlvbjpcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBUaHVuZGVyYm9sdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTExMi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjExMzpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9rZXlcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTExNC1EYXRlOlx0XHRTZXAgMjAxN1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTExNz1EZXNjcmlwdGlvbjpcdFdoZW4gYSBkZXZpY2VzIHN1cHBvcnRzIFRodW5kZXJib2x0IHNlY3VyZSBjb25uZWN0IGl0IHdpbGxcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjItXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMjM6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZGV2aWNlXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjQtRGF0ZTpcdFx0U2VwIDIwMTdcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xMjc9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBpZCBvZiB0aGlzIGRldmljZSBleHRyYWN0ZWQgZnJvbVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEyOS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjEzMDpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9kZXZpY2VfbmFtZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTMxLURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTM0PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgbmFtZSBvZiB0aGlzIGRldmljZSBleHRyYWN0ZWQgZnJvbVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEzNi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjEzNzpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9tYXhob3BpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTM4LURhdGU6XHRcdEp1bCAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTQxPURlc2NyaXB0aW9uOlx0T25seSBzZXQgZm9yIFhEb21haW5zLiBUaGUgbWF4aW11bSBIb3BJRCB0aGUgb3RoZXIgaG9zdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE0My1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE0NDpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9yeF9zcGVlZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTQ1LURhdGU6XHRcdEphbiAyMDIwXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTQ4PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyB0aGUgZGV2aWNlIFJYIHNwZWVkIHBlciBsYW5lLlxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1MC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE1MTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9yeF9sYW5lc1xuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTUyLURhdGU6XHRcdEphbiAyMDIwXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTU1PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyBudW1iZXIgb2YgUlggbGFuZXMgdGhlIGRldmljZSBpc1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1Ny1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE1ODpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi90eF9zcGVlZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTU5LURhdGU6XHRcdEphbiAyMDIwXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTYyPURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyB0aGUgVFggc3BlZWQgcGVyIGxhbmUuXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTY0LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTY1OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3R4X2xhbmVzXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNjYtRGF0ZTpcdFx0SmFuIDIwMjBcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xNjk9RGVzY3JpcHRpb246XHRUaGlzIGF0dHJpYnV0ZSByZXBvcnRzIG51bWJlciBvZiBUWCBsYW5lcyB0aGUgZGV2aWNlIGlzXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTcxLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTcyOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3ZlbmRvclxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTczLURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTc2PURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdmVuZG9yIGlkIG9mIHRoaXMgZGV2aWNlIGV4dHJhY3RlZFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE3OC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE3OTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi92ZW5kb3JfbmFtZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTgwLURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTgzPURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdmVuZG9yIG5hbWUgb2YgdGhpcyBkZXZpY2UgZXh0cmFjdGVkXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTg1LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTg2OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3VuaXF1ZV9pZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTg3LURhdGU6XHRcdFNlcCAyMDE3XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTkwPURlc2NyaXB0aW9uOlx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdW5pcXVlX2lkIHN0cmluZyBvZiB0aGlzIGRldmljZS5cbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xOTQtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxOTU6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vbnZtX3ZlcnNpb25cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE5Ni1EYXRlOlx0XHRTZXAgMjAxN1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE5OT1EZXNjcmlwdGlvbjpcdElmIHRoZSBkZXZpY2UgaGFzIHVwZ3JhZGVhYmxlIGZpcm13YXJlIHRoZSB2ZXJzaW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjAzLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjA0OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV9hdXRoZW50aWNhdGVcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIwNS1EYXRlOlx0XHRTZXAgMjAxN1xuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTIwOD1EZXNjcmlwdGlvbjpcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzMS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjIzMjpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9udm1fYXV0aGVudGljYXRlX29uX2Rpc2Nvbm5lY3RcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzMy1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTIzNj1EZXNjcmlwdGlvbjpcdEZvciBzdXBwb3J0ZWQgZGV2aWNlcywgYXV0b21hdGljYWxseSBhdXRoZW50aWNhdGUgdGhlIG5ldyBUaHVuZGVyYm9sdFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI0NS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI0NjpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY3hkb21haW5cdTAwM2UuXHUwMDNjc2VydmljZVx1MDAzZS9rZXlcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI0Ny1EYXRlOlx0XHRKYW4gMjAxOFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI1MD1EZXNjcmlwdGlvbjpcdFRoaXMgY29udGFpbnMgbmFtZSBvZiB0aGUgcHJvcGVydHkgZGlyZWN0b3J5IHRoZSBYRG9tYWluXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjYwLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjYxOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlL21vZGFsaWFzXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNjItRGF0ZTpcdFx0SmFuIDIwMThcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yNjU9RGVzY3JpcHRpb246XHRTdG9yZXMgdGhlIHNhbWUgTU9EQUxJQVMgdmFsdWUgZW1pdHRlZCBieSB1ZXZlbnQgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjY3LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjY4OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlL3BydGNpZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjY5LURhdGU6XHRcdEphbiAyMDE4XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjcyPURlc2NyaXB0aW9uOlx0VGhpcyBjb250YWlucyBYRG9tYWluIHByb3RvY29sIGlkZW50aWZpZXIgdGhlIFhEb21haW5cbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNzQtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyNzU6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cdTAwM2N4ZG9tYWluXHUwMDNlLlx1MDAzY3NlcnZpY2VcdTAwM2UvcHJ0Y3ZlcnNcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI3Ni1EYXRlOlx0XHRKYW4gMjAxOFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI3OT1EZXNjcmlwdGlvbjpcdFRoaXMgY29udGFpbnMgWERvbWFpbiBwcm90b2NvbCB2ZXJzaW9uIHRoZSBYRG9tYWluXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjgxLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjgyOldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXHUwMDNjeGRvbWFpblx1MDAzZS5cdTAwM2NzZXJ2aWNlXHUwMDNlL3BydGNyZXZzXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yODMtRGF0ZTpcdFx0SmFuIDIwMThcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yODY9RGVzY3JpcHRpb246XHRUaGlzIGNvbnRhaW5zIFhEb21haW4gc29mdHdhcmUgdmVyc2lvbiB0aGUgWERvbWFpblxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI4OC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI4OTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY3hkb21haW5cdTAwM2UuXHUwMDNjc2VydmljZVx1MDAzZS9wcnRjc3Ruc1xuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjkwLURhdGU6XHRcdEphbiAyMDE4XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjkzPURlc2NyaXB0aW9uOlx0VGhpcyBjb250YWlucyBYRG9tYWluIHNlcnZpY2Ugc3BlY2lmaWMgc2V0dGluZ3MgYXNcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yOTUtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyOTY6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy91c2I0X3BvcnRYL2Nvbm5lY3RvclxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjk3LURhdGU6XHRcdEFwcmlsIDIwMjJcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yOTk9RGVzY3JpcHRpb246XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzA1LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzA2OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9saW5rXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMDctRGF0ZTpcdFx0U2VwIDIwMjFcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0zMTA9RGVzY3JpcHRpb246XHRSZXR1cm5zIHRoZSBjdXJyZW50IGxpbmsgbW9kZS4gUG9zc2libGUgdmFsdWVzIGFyZVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMxMi1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMxMzpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL3VzYjRfcG9ydFgvb2ZmbGluZVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzE0LURhdGU6XHRcdFNlcCAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzE3PURlc2NyaXB0aW9uOlx0V3JpdGluZyAxIHRvIHRoaXMgYXR0cmlidXRlIHB1dHMgdGhlIFVTQjQgcG9ydCBpbnRvXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzI3LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzI4OldoYXQ6XHRcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9yZXNjYW5cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMyOS1EYXRlOlx0XHRTZXAgMjAyMVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTMzMj1EZXNjcmlwdGlvbjpcdFdoZW4gdGhlIFVTQjQgcG9ydCBpcyBpbiBvZmZsaW5lIG1vZGUgd3JpdGluZyAxIHRvIHRoaXNcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMzgtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozMzk6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cdTAwM2NkZXZpY2VcdTAwM2U6XHUwMDNjcG9ydFx1MDAzZS5cdTAwM2NpbmRleFx1MDAzZS9kZXZpY2VcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0MC1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTM0Mz1EZXNjcmlwdGlvbjpcdFJldGltZXIgZGV2aWNlIGlkZW50aWZpZXIgcmVhZCBmcm9tIHRoZSBoYXJkd2FyZS5cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0NC1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjM0NTpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY2RldmljZVx1MDAzZTpcdTAwM2Nwb3J0XHUwMDNlLlx1MDAzY2luZGV4XHUwMDNlL252bV9hdXRoZW50aWNhdGVcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0Ni1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTM0OT1EZXNjcmlwdGlvbjpcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxuLS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM1OS1cbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjM2MDpXaGF0Olx0XHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1x1MDAzY2RldmljZVx1MDAzZTpcdTAwM2Nwb3J0XHUwMDNlLlx1MDAzY2luZGV4XHUwMDNlL252bV92ZXJzaW9uXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjEtRGF0ZTpcdFx0T2N0IDIwMjBcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0zNjQ9RGVzY3JpcHRpb246XHRIb2xkcyByZXRpbWVyIE5WTSB2ZXJzaW9uIG51bWJlci4gRm9ybWF0OiAleC4leCwgbWFqb3IubWlub3IuXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjUtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozNjY6V2hhdDpcdFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cdTAwM2NkZXZpY2VcdTAwM2U6XHUwMDNjcG9ydFx1MDAzZS5cdTAwM2NpbmRleFx1MDAzZS92ZW5kb3JcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM2Ny1EYXRlOlx0XHRPY3QgMjAyMFxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0PTE0MD1Ib3cgdG8gY29uZmlndXJlIHlvdXIgaGFyZHdhcmUgd2l0aGluIHlvdXIgTGludXggc3lzdGVtLlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTE2NC0gICB0aGVybWFsL2luZGV4XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2luZGV4LnJzdDoxNjU6ICAgdGh1bmRlcmJvbHRcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTE2Ni0gICB2Z2Etc29mdGN1cnNvclxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTMwPU1vcmUgZGV0YWlscyBhYm91dCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBUaHVuZGVyYm9sdCBkZXZpY2VzIGNhbiBiZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzE6Zm91bmQgaW4gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zMi1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zND1tYW51YWwgd29yayBjYW4gYWRkIGZvbGxvd2luZyBsaW5lIHRvXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozNzogIEFDVElPTj09XCYjMzQ7YWRkXCYjMzQ7LCBTVUJTWVNURU09PVwmIzM0O3RodW5kZXJib2x0XCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PT1cJiMzNDswXCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PVwmIzM0OzFcJiMzNDtcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTUzPVRoZSBzZWN1cml0eSBsZXZlbHMgYXJlIGFzIGZvbGxvd3M6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNjItICAgIEJhc2VkIG9uIHRoZSBkZXZpY2UgaWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRocm91Z2hcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjYzOiAgICBgYC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXNgYCwgdGhlIHVzZXIgdGhlbiBjYW4gbWFrZSB0aGUgZGVjaXNpb24uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC02NC0gICAgSW4gQklPUyBzZXR0aW5ncyB0aGlzIGlzIHR5cGljYWxseSBjYWxsZWQgKlVuaXF1ZSBJRCouXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9ODc9VGhlIGN1cnJlbnQgc2VjdXJpdHkgbGV2ZWwgY2FuIGJlIHJlYWQgZnJvbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6ODg6YGAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL2RvbWFpblgvc2VjdXJpdHlgYCB3aGVyZSBgYGRvbWFpblhgYCBpc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtODktdGhlIFRodW5kZXJib2x0IGRvbWFpbiB0aGUgaG9zdCBjb250cm9sbGVyIG1hbmFnZXMuIFRoZXJlIGlzIHR5cGljYWxseVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTk2PUVhY2ggVGh1bmRlcmJvbHQgZGV2aWNlIHBsdWdnZWQgaW4gd2lsbCBhcHBlYXIgaW4gc3lzZnMgdW5kZXJcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0Ojk3OmBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlc2BgLiBUaGUgZGV2aWNlIGRpcmVjdG9yeSBjYXJyaWVzXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC05OC1pbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBwYXJ0aWN1bGFyIGRldmljZSxcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0xMDM9V2hlbiBhIGRldmljZSBpcyBwbHVnZ2VkIGluIGl0IHdpbGwgYXBwZWFyIGluIHN5c2ZzIGFzIGZvbGxvd3M6OlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTA0LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTA1OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvYXV0aG9yaXplZFx0LSAwXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDY6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS9kZXZpY2VcdC0gMHg4MDA0XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDc6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS9kZXZpY2VfbmFtZVx0LSBUaHVuZGVyYm9sdCB0byBGaXJlV2lyZSBBZGFwdGVyXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDg6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS92ZW5kb3JcdC0gMHgxXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDk6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS92ZW5kb3JfbmFtZVx0LSBBcHBsZSwgSW5jLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTEwOiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvdW5pcXVlX2lkXHQtIGUwMzc2ZjAwLTAzMDAtMDEwMC1mZmZmLWZmZmZmZmZmZmZmZlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTExLVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTExMz1jcmVhdGVkIHlldC4gVGhlIHVzZXIgY2FuIGF1dGhvcml6ZSB0aGUgZGV2aWNlIGJ5IHNpbXBseSBlbnRlcmluZzo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMTQtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMTU6ICAjIGVjaG8gMSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvYXV0aG9yaXplZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTE2LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTEyMj1mdXR1cmUgY29ubmVjdHM6OlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTIzLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTI0OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMvYXV0aG9yaXplZFx0LSAwXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjU6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9kZXZpY2VcdC0gMHgzMDVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyNjogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2RldmljZV9uYW1lXHQtIEFLaVRpTyBUaHVuZGVyMyBQQ0llIEJveFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTI3OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMva2V5XHRcdC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyODogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL3ZlbmRvclx0LSAweDQxXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjk6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy92ZW5kb3JfbmFtZVx0LSBpblh0cm9uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMzA6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy91bmlxdWVfaWRcdC0gZGMwMTAwMDAtMDAwMC04NTA4LWEyMmQtMzJjYTY0MjFjYjE2XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMzEtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTM5PXBsdWdnZWQgYSBrZXkgbmVlZHMgdG8gYmUgY3JlYXRlZCBhbmQgc2VudCB0byB0aGUgZGV2aWNlOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xNDEtICAjIGtleT0kKG9wZW5zc2wgcmFuZCAtaGV4IDMyKVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTQyOiAgIyBlY2hvICRrZXkgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2tleVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTQzOiAgIyBlY2hvIDEgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2F1dGhvcml6ZWRcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE0NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0xNDk9ZGV2aWNlIHVzaW5nIHRoZSBzYW1lIGtleTo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xNTAtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxNTE6ICAjIGVjaG8gJGtleSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMva2V5XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxNTI6ICAjIGVjaG8gMiBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMvYXV0aG9yaXplZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTUzLVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTE4Nj1zeXN0ZW1zIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHJlYWRpbmcgYGAxYGAgZnJvbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTg3OmBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9kb21haW5YL2lvbW11X2RtYV9wcm90ZWN0aW9uYGAgYXR0cmlidXRlLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTg4LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTE5NT1mb2xsb3dpbmcgYGB1ZGV2YGAgcnVsZTo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xOTYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxOTc6ICBBQ1RJT049PVwmIzM0O2FkZFwmIzM0OywgU1VCU1lTVEVNPT1cJiMzNDt0aHVuZGVyYm9sdFwmIzM0OywgQVRUUlN7aW9tbXVfZG1hX3Byb3RlY3Rpb259PT1cJiMzNDsxXCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PT1cJiMzNDswXCYjMzQ7LCBBVFRSe2F1dGhvcml6ZWR9PVwmIzM0OzFcJiMzNDtcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE5OC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yNTA9b2YgdGhlIGhvc3Qgb3IgZGV2aWNlLiBFeGFtcGxlIG9uIGhvdyB0byB1cGRhdGUgSW50ZWwgTlVDNmk3S1lLXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjUyLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MjUzOiAgIyBkZCBpZj1LWUtfVEJUX0ZXXzAwMTguYmluIG9mPS9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV9ub25fYWN0aXZlMC9udm1lbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjU0LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI1Nj11cGdyYWRlIHByb2Nlc3MgYXMgZm9sbG93czo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNTctXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyNTg6ICAjIGVjaG8gMSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvbnZtX2F1dGhlbnRpY2F0ZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjU5LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI2ND1jb21tYW5kczo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjUtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyNjY6ICAjIGNhdCAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMC9udm1fYXV0aGVudGljYXRlXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjctICAweDBcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI2ODogICMgY2F0IC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV92ZXJzaW9uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjktICAxOC4wXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mjg1PWlzIHRvIGZpcnN0IHB1dCB0aGUgVVNCNCBwb3J0IGludG8gb2ZmbGluZSBtb2RlOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI4Ni1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI4NzogICMgZWNobyAxIFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMC91c2I0X3BvcnQxL29mZmxpbmVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI4OC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yOTE9Zm9yIHRoZSByZXRpbWVyczo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yOTItXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyOTM6ICAjIGVjaG8gMSBcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9yZXNjYW5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI5NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yOTg9bW9kZSkgc28gYWZ0ZXIgd3JpdGluZyBgYDFgYCB0byBgYG52bV9hdXRoZW50aWNhdGVgYCBvbmUgc2hvdWxkIHdhaXQgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzAwLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzAxOiAgIyBlY2hvIDEgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL3VzYjRfcG9ydDEvcmVzY2FuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zMDItXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzA0PWZ1bmN0aW9uYWwgc3RhdGUgYWdhaW46OlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA1LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzA2OiAgIyBlY2hvIDAgXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL3VzYjRfcG9ydDEvb2ZmbGluZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA3LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTMyMT1UaGUgZHJpdmVyIHNlbmRzIGBgS09CSl9DSEFOR0VgYCBldmVudHMgdG8gdXNlcnNwYWNlIHdoZW4gdGhlcmUgaXMgYVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzIyOnR1bm5lbGluZyBjaGFuZ2UgaW4gdGhlIGBgdGh1bmRlcmJvbHRfZG9tYWluYGAuIFRoZSBub3RpZmljYXRpb24gY2Fycmllc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzIzLWZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXM6OlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTM2MT1kbyBpcyB0byBjb25uZWN0IGEgVGh1bmRlcmJvbHQgY2FibGUgYmV0d2VlbiB0aGUgdHdvIGhvc3RzOyB0aGVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM2MjpgYHRodW5kZXJib2x0LW5ldGBgIGRyaXZlciBpcyBsb2FkZWQgYXV0b21hdGljYWxseS4gSWYgdGhlIG90aGVyIGhvc3QgaXNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM2MzphbHNvIExpbnV4IHlvdSBzaG91bGQgbG9hZCBgYHRodW5kZXJib2x0LW5ldGBgIG1hbnVhbGx5IG9uIG9uZSBob3N0IChpdFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzY0LWRvZXMgbm90IG1hdHRlciB3aGljaCBvbmUpOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM2NS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM2NjogICMgbW9kcHJvYmUgdGh1bmRlcmJvbHQtbmV0XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNjctXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzcxPVRoZSBkcml2ZXIgd2lsbCBjcmVhdGUgb25lIHZpcnR1YWwgZXRoZXJuZXQgaW50ZXJmYWNlIHBlciBUaHVuZGVyYm9sdFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzcyOnBvcnQgd2hpY2ggYXJlIG5hbWVkIGxpa2UgYGB0aHVuZGVyYm9sdDBgYCBhbmQgc28gb24uIEZyb20gdGhpcyBwb2ludFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzczLXlvdSBjYW4gZWl0aGVyIHVzZSBzdGFuZGFyZCB1c2Vyc3BhY2UgdG9vbHMgbGlrZSBgYGlwYGAgdG9cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zNzk9c3RyZWFtaW5nIGRhdGEgZGlyZWN0bHkgb3ZlciBhIGNhYmxlIGFzIHdlbGwgKGFrYS4gVVNCNFNUUkVBTSkuIFRoaXMgaXNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4MDpwb3NzaWJsZSB0aHJvdWdoIGBgdGh1bmRlcmJvbHQtc3RyZWFtYGAgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzgxLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzgyOlNpbWlsYXJseSB0byBgYHRodW5kZXJib2x0LW5ldGBgIHlvdSBsb2FkIHRoZSBkcml2ZXIgZmlyc3Qgb24gb25lIGVuZDo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zODMtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozODQ6ICBob3N0MSAjIG1vZHByb2JlIHRodW5kZXJib2x0LXN0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg1LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mzg2PVRoZW4geW91IGNvbmZpZ3VyZSBpdCB2aWEgYGBDb25maWdGU2BgOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4Ny1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4ODogIGhvc3QxICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg5LSAgaG9zdDEgIyBta2RpciAtcCAwLTEuMC9kYXRhXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mzk3PXlvdSBhdXRvbWF0aWNhbGx5OjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM5OC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM5OTogIGhvc3QyICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDAwLSAgaG9zdDIgIyBta2RpciAtcCAwLTMuMC9kYXRhXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9NDEzPU9uY2UgeW91IGFyZSBkb25lIHdpdGggdGhlIHN0cmVhbSB5b3UgY2FuIHJlbW92ZSB0aGVtOjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQxNC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjQxNTogIGhvc3QyICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDE2LSAgaG9zdDIgIyBybWRpciAtcCAwLTEuMC9kYXRhXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MTc6ICBob3N0MSAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQxOC0gIGhvc3QxICMgcm1kaXIgLXAgMC0zLjAvZGF0YVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTQyMz1JdCBpcyBwb3NzaWJsZSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgc3RyZWFtIGFuZCB5b3UgY2FuIGhhdmUgYm90aCBzdHJlYW1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjQyNDphbmQgYGB0aHVuZGVyYm9sdC1uZXRgYCBpbiB1c2Ugc2ltdWx0YW5lb3VzbHkuIEZvciBleGFtcGxlIHdlIGNhbiBjcmVhdGVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQyNS10d28gc3RyZWFtcyB3aXRoIG5hbWUgYGBjb250cm9sYGAgYW5kIGBgZGF0YWBgIGxpa2UgdGhpczo6XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MjYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0Mjc6ICBob3N0MSAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQyOC0gIGhvc3QxICMgbWtkaXIgMC0xLjBcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD00NDI9YSBzeXNmcyBhdHRyaWJ1dGUgY2FsbGVkIFwmIzM0O2ZvcmNlX3Bvd2VyXCYjMzQ7LCBzZWVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjQ0MzpEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWludGVsLXdtaS10aHVuZGVyYm9sdCBmb3IgZGV0YWlscy5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQ0NC1cbi0tXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L3NucC10ZHgtdGhyZWF0LW1vZGVsLnJzdD0xNz10aGUga2VybmVsIHRocm91Z2ggdmFyaW91cyBuZXR3b3JraW5nIG9yIGxpbWl0ZWQgSFctc3BlY2lmaWMgZXhwb3NlZFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3Q6MTg6aW50ZXJmYWNlcyAoVVNCLCB0aHVuZGVyYm9sdCkuIFRoZSBnb2FsIG9mIHRoaXMgZG9jdW1lbnQgaXMgdG8gZXhwbGFpblxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3QtMTktYWRkaXRpb25hbCBhdHRhY2sgdmVjdG9ycyB0aGF0IGFyaXNlIGluIHRoZSBjb25maWRlbnRpYWwgY29tcHV0aW5nIHNwYWNlXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvaW5kZXgucnN0PTc1PVRvZG9saXN0OlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjAtKiAgIHN2Z2FcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL2luZGV4LnJzdDoxMjE6KiAgIHRodW5kZXJib2x0XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3QtMTIyLSogICB1ZnNcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9pbmRleC5yc3Q9Nzc9VG9kb2xpc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfVFcvYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTEyMy0qICAgc3ZnYVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfVFcvYWRtaW4tZ3VpZGUvaW5kZXgucnN0OjEyNDoqICAgdGh1bmRlcmJvbHRcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjUtKiAgIHVmc1xuLS1cbkRvY3VtZW50YXRpb24vd21pL2RyaXZlci1kZXZlbG9wbWVudC1ndWlkZS5yc3Q9MTE2PXRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgd21pZGV2X2luc3RhbmNlX2NvdW50KCkuXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0LTExNy1cbkRvY3VtZW50YXRpb24vd21pL2RyaXZlci1kZXZlbG9wbWVudC1ndWlkZS5yc3Q6MTE4OlRha2UgYSBsb29rIGF0IGRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3dtaS90aHVuZGVyYm9sdC5jIGZvciBhbiBleGFtcGxlIFdNSSBtZXRob2QgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi93bWkvZHJpdmVyLWRldmVsb3BtZW50LWd1aWRlLnJzdC0xMTktXG4tLVxuTUFJTlRBSU5FUlM9MTM0ODU9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjEzNDg2OkY6XHRkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC93bWkvdGh1bmRlcmJvbHQuY1xuTUFJTlRBSU5FUlMtMTM0ODctXG4tLVxuTUFJTlRBSU5FUlM9MjY5MDY9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjI2OTA3OkY6XHRkcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmNcbk1BSU5UQUlORVJTLTI2OTA4LVxuLS1cbk1BSU5UQUlORVJTPTI2OTE0PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyNjkxNTpUOlx0Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC93ZXN0ZXJpL3RodW5kZXJib2x0LmdpdFxuTUFJTlRBSU5FUlM6MjY5MTY6RjpcdERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0XG5NQUlOVEFJTkVSUzoyNjkxNzpGOlx0ZHJpdmVycy90aHVuZGVyYm9sdC9cbk1BSU5UQUlORVJTOjI2OTE4OkY6XHRpbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0Lmhcbk1BSU5UQUlORVJTLTI2OTE5LVxuLS1cbk1BSU5UQUlORVJTPTI2OTI0PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyNjkyNTpGOlx0ZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvXG5NQUlOVEFJTkVSUy0yNjkyNi1cbi0tXG5kcml2ZXJzL0tjb25maWc9MjE0PXNvdXJjZSBcJiMzNDtkcml2ZXJzL3Jhcy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL0tjb25maWctMjE1LVxuZHJpdmVycy9LY29uZmlnOjIxNjpzb3VyY2UgXCYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL0tjb25maWctMjE3LVxuLS1cbmRyaXZlcnMvTWFrZWZpbGU9MTc1PW9iai0kKENPTkZJR19SQVMpXHRcdCYjNDM7PSByYXMvXG5kcml2ZXJzL01ha2VmaWxlOjE3NjpvYmotJChDT05GSUdfVVNCNClcdFx0JiM0Mzs9IHRodW5kZXJib2x0L1xuZHJpdmVycy9NYWtlZmlsZS0xNzctb2JqLSQoQ09ORklHX0NPUkVTSUdIVClcdFx0JiM0Mzs9IGh3dHJhY2luZy9jb3Jlc2lnaHQvXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYz04Nz1ub3V2ZWF1X3ZnYV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTAwLVx0LyogZG9uJiMzOTt0IHJlZ2lzdGVyIFRodW5kZXJib2x0IGVHUFUgd2l0aCB2Z2Ffc3dpdGNoZXJvbyAqL1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYzoxMDE6XHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYy0xMDItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jPTExMT1ub3V2ZWF1X3ZnYV9maW5pKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTIzLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYzoxMjQ6XHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV92Z2EuYy0xMjUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYz0xMjc5PWludCByYWRlb25fZGV2aWNlX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMtMTQzMC1cdFx0cnVudGltZSA9IHRydWU7XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYzoxNDMxOlx0aWYgKCFwY2lfaXNfdGh1bmRlcmJvbHRfYXR0YWNoZWQocmRldi1cdTAwM2VwZGV2KSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE0MzItXHRcdHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2NsaWVudChyZGV2LVx1MDAzZXBkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM9MTUxMz12b2lkIHJhZGVvbl9kZXZpY2VfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYy0xNTIwLVx0cmFkZW9uX2ZpbmkocmRldik7XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYzoxNTIxOlx0aWYgKCFwY2lfaXNfdGh1bmRlcmJvbHRfYXR0YWNoZWQocmRldi1cdTAwM2VwZGV2KSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE1MjItXHRcdHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KHJkZXYtXHUwMDNlcGRldik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmM9MTAzPWludCByYWRlb25fZHJpdmVyX2xvYWRfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmMtMTMzLVx0ICAgICgoZmxhZ3MgXHUwMDI2IFJBREVPTl9JU19JR1ApID09IDApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmM6MTM0Olx0ICAgICFwY2lfaXNfdGh1bmRlcmJvbHRfYXR0YWNoZWQocGRldikpXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYy0xMzUtXHRcdGZsYWdzIHw9IFJBREVPTl9JU19QWDtcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNjAwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDE6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNjAyLXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L01ha2VmaWxlPTg1PW9iai0kKENPTkZJR19GVUpJVFNVX0VTKSAmIzQzOz0gZmplcy9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjg2Om9iai0kKENPTkZJR19VU0I0X05FVCkgJiM0Mzs9IHRodW5kZXJib2x0L1xuZHJpdmVycy9uZXQvTWFrZWZpbGUtODctb2JqLSQoQ09ORklHX05FVERFVlNJTSkgJiM0Mzs9IG5ldGRldnNpbS9cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRodW5kZXJib2x0IE5ldHdvcmtpbmcgQ29kZSBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdgIGFuZCBJIHNlZSB0aGlzIGBjb25maWcgVVNCNF9ORVRgIG9wdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gcmVzaWRlIGluIGBkcml2ZXJzL3RodW5kZXJib2x0L2AsIGFzIEkmIzM5O2QgZXhwZWN0LiBOb3csIG15IG1pbmQgZHJpZnRzIHRvIGZ1enppbmcg4oCTIGFyZSB0aGVyZSBhbnkgZXhpc3Rpbmcgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxscyBkZWZpbmVkIGZvciB0aHVuZGVyYm9sdD8gTm8sIHByb2JhYmx5IG5vdCwgSSBzaG91bGRuJiMzOTt0IGV2ZW4gYm90aGVyIHNlYXJjaGluZyBmb3IgYHN5el9gLiBCdXQgaGFuZyBvbiwgdGhlIHBhdGNoIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBpcyBpbiBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jYC4KClRoZSByZWFsIHF1ZXN0aW9uIGJlY29tZXM6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFRodW5kZXJib2x0IG5ldHdvcmtpbmcgaXMga25vd24gdG8gaW52b2x2ZSBUaHVuZGVyYm9sdCBkb21haW5zIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zLiBUaGUgdHJpY2t5IHBhcnQgaXMsIGNhbiBRRU1VIGVtdWxhdGUgdGhlIFRodW5kZXJib2x0IGhhcmR3YXJlIGl0c2VsZj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGF2YWlsYWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCBmb3IgdGhpcywgc29tZXRoaW5nIHNpbWlsYXIgdG8gaG93IGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgIHdvcmsgZm9yIG90aGVyIHN1YnN5c3RlbXMuIFRpbWUgdG8gZ3JlcCBmb3IgYHRodW5kZXJib2x0YCB3aXRoaW4gYGRyaXZlcnMvdGh1bmRlcmJvbHQvYC4gTWF5YmUgdGhlcmUmIzM5O3MgYSBkZWRpY2F0ZWQgc29mdHdhcmUgdGVzdGluZyBkcml2ZXIgdGhhdCB3b3VsZCBtYWtlIHRoaXMgcHJvY2VzcyBtdWNoIGVhc2llci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdW5pdHx0ZXN0fG1vY2t8c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIzNjEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZz00OT1jb25maWcgVVNCNF9LVU5JVF9URVNUXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWc6NTA6XHRib29sIFwmIzM0O0tVbml0IHRlc3RzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy01MS1cdGRlcGVuZHMgb24gVVNCNCBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZz01ND1jb25maWcgVVNCNF9ETUFfVEVTVFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnOjU1Olx0dHJpc3RhdGUgXCYjMzQ7RE1BIHRyYWZmaWMgdGVzdCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy01Ni1cdGRlcGVuZHMgb24gREVCVUdfRlNcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWctNTktXHQgIGNvbm5lY3Rpb24uIExvb3BiYWNrIGNvbm5lY3Rpb24gY2FuIGJlIGRvbmUgYnkgZWl0aGVyIHNwZWNpYWxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZzo2MDpcdCAgZG9uZ2xlIHRoYXQgaGFzIFRYL1JYIGxpbmVzIGNyb3NzZWQsIG9yIGJ5IHNpbXBseSBjb25uZWN0aW5nIGFcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02MS1cdCAgY2FibGUgYmFjayB0byB0aGUgaG9zdC4gT25seSBlbmFibGUgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02NC1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWc6NjU6XHQgIGNhbGxlZCB0aHVuZGVyYm9sdF9kbWFfdGVzdC5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02Ni1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlPTEwPXRodW5kZXJib2x0LSQoQ09ORklHX1VTQjRfQ09ORklHRlMpICYjNDM7PSBjb25maWdmcy5vXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlOjExOnRodW5kZXJib2x0LSR7Q09ORklHX1VTQjRfS1VOSVRfVEVTVH0gJiM0Mzs9IHRlc3Qub1xuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxMjpDRkxBR1NfdGVzdC5vICYjNDM7PSAkKERJU0FCTEVfU1RSVUNUTEVBS19QTFVHSU4pXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlLTEzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNDp0aHVuZGVyYm9sdF9kbWFfdGVzdC0ke0NPTkZJR19VU0I0X0RNQV9URVNUfSAmIzQzOz0gZG1hX3Rlc3Qub1xuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfVVNCNF9ETUFfVEVTVCkgJiM0Mzs9IHRodW5kZXJib2x0X2RtYV90ZXN0Lm9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTYtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYz0xMzM9c3RhdGljIGludCB0Yl9jZmdfcmVxdWVzdF9lbnF1ZXVlKHN0cnVjdCB0Yl9jdGwgKmN0bCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTEzNS17XG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jOjEzNjpcdFdBUk5fT04odGVzdF9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcdTAwMjZyZXEtXHUwMDNlZmxhZ3MpKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTM3LVx0V0FSTl9PTihyZXEtXHUwMDNlY3RsKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jPTE1MT1zdGF0aWMgdm9pZCB0Yl9jZmdfcmVxdWVzdF9kZXF1ZXVlKHN0cnVjdCB0Yl9jZmdfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTU1LVx0bXV0ZXhfbG9jayhcdTAwMjZjdGwtXHUwMDNlcmVxdWVzdF9xdWV1ZV9sb2NrKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6MTU2Olx0aWYgKCF0ZXN0X2JpdChUQl9DRkdfUkVRVUVTVF9BQ1RJVkUsIFx1MDAyNnJlcS1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTU3LVx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3RsLVx1MDAzZXJlcXVlc3RfcXVldWVfbG9jayk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xNjItXHRjbGVhcl9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcdTAwMjZyZXEtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzoxNjM6XHRpZiAodGVzdF9iaXQoVEJfQ0ZHX1JFUVVFU1RfQ0FOQ0VMRUQsIFx1MDAyNnJlcS1cdTAwM2VmbGFncykpXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTE2NC1cdFx0d2FrZV91cChcdTAwMjZ0Yl9jZmdfcmVxdWVzdF9jYW5jZWxfcXVldWUpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM9MTY4PXN0YXRpYyBib29sIHRiX2NmZ19yZXF1ZXN0X2lzX2FjdGl2ZShzdHJ1Y3QgdGJfY2ZnX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTY5LXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6MTcwOlx0cmV0dXJuIHRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0FDVElWRSwgXHUwMDI2cmVxLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTcxLX1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jPTUyND1zdGF0aWMgdm9pZCB0Yl9jZmdfcmVxdWVzdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTUyNy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6NTI4Olx0aWYgKCF0ZXN0X2JpdChUQl9DRkdfUkVRVUVTVF9DQU5DRUxFRCwgXHUwMDI2cmVxLVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtNTI5LVx0XHRyZXEtXHUwMDNlY2FsbGJhY2socmVxLVx1MDAzZWNhbGxiYWNrX2RhdGEpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTQxND1zdGF0aWMgc3NpemVfdCByZXRpbWVyX3NiX3JlZ3Nfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtNDgzLSAqIEB0aW1lOiAldHJ1ZSBpZiB0aW1lIG1hcmdpbmluZyBpcyB1c2VkIGluc3RlYWQgb2Ygdm9sdGFnZVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6NDg0OiAqIEByaWdodF9oaWdoOiAlZmFsc2UgaWYgbGVmdC9sb3cgbWFyZ2luIHRlc3QgaXMgcGVyZm9ybWVkLCAldHJ1ZSBpZlxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtNDg1LSAqXHRcdHJpZ2h0L2hpZ2hcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYz02ODE9c3RhdGljIGludCBtYXJnaW5pbmdfY2Fwc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqbm90X3VzZWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtNzA1LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6NzA2Olx0c2VxX3ByaW50ZihzLCBcJiMzNDsjIGFsbCBsYW5lcyBzaW11bHRhbmVvdXNseTogJXNcXG5cJiMzNDssXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy03MDctXHRcdCAgc3RyX3llc19ubyhhbGxfbGFuZXMobWFyZ2luaW5nKSkpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTExNTM9c3RhdGljIGludCBtYXJnaW5pbmdfcnVuX3N3KHN0cnVjdCB0Yl9tYXJnaW5pbmcgKm1hcmdpbmluZyxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xMTgzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTE4NDpcdFx0LyogQW55IGVycm9ycyBzdG9wIHRoZSB0ZXN0ICovXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xMTg1LVx0XHRpZiAoZXJyb3JzKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTE0NzM9REVCVUdGU19BVFRSX1JXKG1hcmdpbmluZ19yZXN1bHRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE0NzQtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYzoxNDc1OnN0YXRpYyBzc2l6ZV90IG1hcmdpbmluZ190ZXN0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTQ3Ni1cdFx0XHRcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTUwOS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE1MTA6c3RhdGljIGludCBtYXJnaW5pbmdfdGVzdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqbm90X3VzZWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTExLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTI5LX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE1MzA6REVCVUdGU19BVFRSX1JXKG1hcmdpbmluZ190ZXN0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE1MzEtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM9MTY1MD1zdGF0aWMgc3RydWN0IHRiX21hcmdpbmluZyAqbWFyZ2luaW5nX2FsbG9jKHN0cnVjdCB0Yl9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE3MzgtXHRcdFx0ICAgIFx1MDAyNm1hcmdpbmluZ19yZXN1bHRzX2ZvcHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTczOTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7dGVzdFwmIzM0OywgMDYwMCwgZGlyLCBtYXJnaW5pbmcsIFx1MDAyNm1hcmdpbmluZ190ZXN0X2ZvcHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTc0MC1cdGlmIChpbmRlcGVuZGVudF92b2x0YWdlX21hcmdpbnMobWFyZ2luaW5nKSA9PSBVU0I0X01BUkdJTl9DQVBfVk9MVEFHRV9JTkRQX0dFTl8yXzNfSEwgfHxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMi0vKlxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjM6ICogRE1BIHRyYWZmaWMgdGVzdCBkcml2ZXJcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00LSAqXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIxLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIyOmVudW0gZG1hX3Rlc3RfZnJhbWVfcGRmIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMy1cdERNQV9URVNUX1BERl9GUkFNRV9TVEFSVCA9IDEsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI2LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjI3OnN0cnVjdCBkbWFfdGVzdF9mcmFtZSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Mjg6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmRtYV90ZXN0O1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI5LVx0dm9pZCAqZGF0YTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzM6ZW51bSBkbWFfdGVzdF90ZXN0X2Vycm9yIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNC1cdERNQV9URVNUX05PX0VSUk9SLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0NTpzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRtYV90ZXN0X2Vycm9yX25hbWVzW10gPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDYtXHRbRE1BX1RFU1RfTk9fRVJST1JdID0gXCYjMzQ7bm8gZXJyb3JzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01Ni1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1NzplbnVtIGRtYV90ZXN0X3Jlc3VsdCB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTgtXHRETUFfVEVTVF9OT1RfUlVOLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2MzpzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRtYV90ZXN0X3Jlc3VsdF9uYW1lc1tdID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY0LVx0W0RNQV9URVNUX05PVF9SVU5dID0gXCYjMzQ7bm90IHJ1blwmIzM0Oyxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjktLyoqXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzA6ICogc3RydWN0IGRtYV90ZXN0IC0gRE1BIHRlc3QgZGV2aWNlIGRyaXZlciBwcml2YXRlIGRhdGFcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MS0gKiBAc3ZjOiBYRG9tYWluIHNlcnZpY2UgdGhlIGRyaXZlciBpcyBib3VuZCB0b1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy04Mi0gKiBAbGlua193aWR0aDogRXhwZWN0ZWQgbGluayB3aWR0aCAoR2IvcyksICUwIHRvIHVzZSB3aGF0ZXZlciBpcyBuZWdvdGlhdGVkXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6ODM6ICogQGNyY19lcnJvcnM6IE51bWJlciBvZiBDUkMgZXJyb3JzIGR1cmluZyB0aGUgdGVzdCBydW5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo4NDogKiBAYnVmZmVyX292ZXJmbG93X2Vycm9yczogTnVtYmVyIG9mIGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMgZHVyaW5nIHRoZSB0ZXN0XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtODUtICpcdFx0XHQgICAgcnVuXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTkwLSAqL1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjkxOnN0cnVjdCBkbWFfdGVzdCB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtOTItXHRjb25zdCBzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMDUtXHR1bnNpZ25lZCBpbnQgYnVmZmVyX292ZXJmbG93X2Vycm9ycztcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMDY6XHRlbnVtIGRtYV90ZXN0X3Jlc3VsdCByZXN1bHQ7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTA3Olx0ZW51bSBkbWFfdGVzdF90ZXN0X2Vycm9yIGVycm9yX2NvZGU7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTA4LVx0c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGU7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExMS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMTI6LyogRE1BIHRlc3QgcHJvcGVydHkgZGlyZWN0b3J5IFVVSUQ6IDMxODhjZDEwLTY1MjMtNGE1YS1hNjgyLWZkY2EwN2EyNDhkOCAqL1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjExMzpzdGF0aWMgY29uc3QgdXVpZF90IGRtYV90ZXN0X2Rpcl91dWlkID1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMTQtXHRVVUlEX0lOSVQoMHgzMTg4Y2QxMCwgMHg2NTIzLCAweDRhNWEsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMTc6c3RhdGljIHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRtYV90ZXN0X2RpcjtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMTg6c3RhdGljIHZvaWQgKmRtYV90ZXN0X3BhdHRlcm47XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTE5LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEyMDpzdGF0aWMgdm9pZCBkbWFfdGVzdF9mcmVlX3JpbmdzKHN0cnVjdCBkbWFfdGVzdCAqZHQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTIxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTMzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEzNDpzdGF0aWMgaW50IGRtYV90ZXN0X3N0YXJ0X3JpbmdzKHN0cnVjdCBkbWFfdGVzdCAqZHQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTM1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTYxLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTYyOlx0XHRcdGRtYV90ZXN0X2ZyZWVfcmluZ3MoZHQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE2My1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNzktXHRcdGlmICghcmluZykge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE4MDpcdFx0XHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xODEtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4OS1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE5MDpcdFx0XHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xOTEtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjAxLVx0aWYgKHJldCkge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIwMjpcdFx0ZG1hX3Rlc3RfZnJlZV9yaW5ncyhkdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjAzLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMTMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjE0OnN0YXRpYyB2b2lkIGRtYV90ZXN0X3N0b3BfcmluZ3Moc3RydWN0IGRtYV90ZXN0ICpkdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMTUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMjktXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjMwOlx0ZG1hX3Rlc3RfZnJlZV9yaW5ncyhkdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjMxLX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjMzOnN0YXRpYyB2b2lkIGRtYV90ZXN0X3J4X2NhbGxiYWNrKHN0cnVjdCB0Yl9yaW5nICpyaW5nLCBzdHJ1Y3QgcmluZ19mcmFtZSAqZnJhbWUsXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjM0LVx0XHRcdFx0IGJvb2wgY2FuY2VsZWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjM1LXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyMzY6XHRzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUgKnRmID0gY29udGFpbmVyX29mKGZyYW1lLCB0eXBlb2YoKnRmKSwgZnJhbWUpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIzNzpcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Zi1cdTAwM2VkbWFfdGVzdDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzgtXHRzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gdGJfcmluZ19kbWFfZGV2aWNlKGR0LVx1MDAzZXJ4X3JpbmcpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjY0OnN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3VibWl0X3J4KHN0cnVjdCBkbWFfdGVzdCAqZHQsIHNpemVfdCBucGFja2V0cylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucGFja2V0czsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyNzA6XHRcdHN0cnVjdCBkbWFfdGVzdF9mcmFtZSAqdGY7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjcxLVx0XHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yOTEtXHRcdHRmLVx1MDAzZWZyYW1lLmJ1ZmZlcl9waHkgPSBkbWFfYWRkcjtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyOTI6XHRcdHRmLVx1MDAzZWZyYW1lLmNhbGxiYWNrID0gZG1hX3Rlc3RfcnhfY2FsbGJhY2s7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjkzOlx0XHR0Zi1cdTAwM2VkbWFfdGVzdCA9IGR0O1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI5NC1cdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dGYtXHUwMDNlZnJhbWUubGlzdCk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMwMS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMDI6c3RhdGljIHZvaWQgZG1hX3Rlc3RfdHhfY2FsbGJhY2soc3RydWN0IHRiX3JpbmcgKnJpbmcsIHN0cnVjdCByaW5nX2ZyYW1lICpmcmFtZSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMDMtXHRcdFx0XHQgYm9vbCBjYW5jZWxlZClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMDQte1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMwNTpcdHN0cnVjdCBkbWFfdGVzdF9mcmFtZSAqdGYgPSBjb250YWluZXJfb2YoZnJhbWUsIHR5cGVvZigqdGYpLCBmcmFtZSk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzA2Olx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRmLVx1MDAzZWRtYV90ZXN0O1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMwNy1cdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSB0Yl9yaW5nX2RtYV9kZXZpY2UoZHQtXHUwMDNldHhfcmluZyk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMxNC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMTU6c3RhdGljIGludCBkbWFfdGVzdF9zdWJtaXRfdHgoc3RydWN0IGRtYV90ZXN0ICpkdCwgc2l6ZV90IG5wYWNrZXRzKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMxNi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMyMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5wYWNrZXRzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMyMTpcdFx0c3RydWN0IGRtYV90ZXN0X2ZyYW1lICp0ZjtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMjItXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMyOC1cdFx0dGYtXHUwMDNlZnJhbWUuc2l6ZSA9IDA7IC8qIG1lYW5zIDQwOTYgKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMjk6XHRcdHRmLVx1MDAzZWRtYV90ZXN0ID0gZHQ7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzMwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMzMTpcdFx0dGYtXHUwMDNlZGF0YSA9IGttZW1kdXAoZG1hX3Rlc3RfcGF0dGVybiwgRE1BX1RFU1RfRlJBTUVfU0laRSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzMyLVx0XHRpZiAoIXRmLVx1MDAzZWRhdGEpIHtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzQ1LVx0XHR0Zi1cdTAwM2VmcmFtZS5idWZmZXJfcGh5ID0gZG1hX2FkZHI7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzQ2Olx0XHR0Zi1cdTAwM2VmcmFtZS5jYWxsYmFjayA9IGRtYV90ZXN0X3R4X2NhbGxiYWNrO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM0Ny1cdFx0dGYtXHUwMDNlZnJhbWUuc29mID0gRE1BX1RFU1RfUERGX0ZSQU1FX1NUQVJUO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz0zNjI9c3RhdGljIGludCBfX2ZvcHMgIyMgX3Nob3codm9pZCAqZGF0YSwgdTY0ICp2YWwpXHRcdFxcXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM2NC1cdHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMgPSBkYXRhO1x0XHRcdFx0XFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozNjU6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1x0XFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNjYtXHRpbnQgcmV0O1x0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTM3NT1zdGF0aWMgaW50IF9fZm9wcyAjIyBfc3RvcmUodm9pZCAqZGF0YSwgdTY0IHZhbClcdFx0XFxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzc3LVx0c3RydWN0IHRiX3NlcnZpY2UgKnN2YyA9IGRhdGE7XHRcdFx0XHRcXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjM3ODpcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XHRcXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM3OS1cdGludCByZXQ7XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9MzkxPURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShfX2ZvcHMgIyMgX2ZvcHMsIF9fZm9wcyAjIyBfc2hvdyxcdFxcXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM5My1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozOTQ6c3RhdGljIHZvaWQgbGFuZXNfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM5NS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTM5OT1zdGF0aWMgaW50IGxhbmVzX3ZhbGlkYXRlKHU2NCB2YWwpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQwMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0MDQ6c3RhdGljIHZvaWQgbGFuZXNfc2V0KHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCB2YWwpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDA1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NDA4PURNQV9URVNUX0RFQlVHRlNfQVRUUihsYW5lcywgbGFuZXNfZ2V0LCBsYW5lc192YWxpZGF0ZSwgbGFuZXNfc2V0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MDktXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDEwOnN0YXRpYyB2b2lkIHNwZWVkX2dldChjb25zdCBzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCB1NjQgKnZhbClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MTEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00MTU9c3RhdGljIGludCBzcGVlZF92YWxpZGF0ZSh1NjQgdmFsKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MjctXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDI4OnN0YXRpYyB2b2lkIHNwZWVkX3NldChzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCB1NjQgdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQyOS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQzMj1ETUFfVEVTVF9ERUJVR0ZTX0FUVFIoc3BlZWQsIHNwZWVkX2dldCwgc3BlZWRfdmFsaWRhdGUsIHNwZWVkX3NldCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDMzLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQzNDpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3JlY2VpdmVfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQzNS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQzOT1zdGF0aWMgaW50IHBhY2tldHNfdG9fcmVjZWl2ZV92YWxpZGF0ZSh1NjQgdmFsKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NDMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDQ0OnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fcmVjZWl2ZV9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NDUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NDg9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fcmVjZWl2ZSwgcGFja2V0c190b19yZWNlaXZlX2dldCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ1MTpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3NlbmRfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ1Mi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQ1Nj1zdGF0aWMgaW50IHBhY2tldHNfdG9fc2VuZF92YWxpZGF0ZSh1NjQgdmFsKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NjAtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDYxOnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fc2VuZF9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NjIte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NjU9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fc2VuZCwgcGFja2V0c190b19zZW5kX2dldCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDY3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ2ODpzdGF0aWMgaW50IGRtYV90ZXN0X3NldF9ib25kaW5nKHN0cnVjdCBkbWFfdGVzdCAqZHQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDY5LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDgwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ4MTpzdGF0aWMgYm9vbCBkbWFfdGVzdF92YWxpZGF0ZV9jb25maWcoc3RydWN0IGRtYV90ZXN0ICpkdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00ODIte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00OTAtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDkxOnN0YXRpYyB2b2lkIGRtYV90ZXN0X2NoZWNrX2Vycm9ycyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCBpbnQgcmV0KVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ5Mi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUwOS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MTA6c3RhdGljIGludCB0ZXN0X3N0b3JlKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTExLXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01MTItXHRzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjID0gZGF0YTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MTM6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUyOS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MzA6XHRkZXZfZGJnKFx1MDAyNnN2Yy1cdTAwM2VkZXYsIFwmIzM0O0RNQSB0ZXN0IHN0YXJ0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01MzEtXHRpZiAoZHQtXHUwMDNlbGlua19zcGVlZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTM3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjUzODpcdGlmICghZG1hX3Rlc3RfdmFsaWRhdGVfY29uZmlnKGR0KSkge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjUzOTpcdFx0ZGV2X2VycihcdTAwMjZzdmMtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIHRlc3QgY29uZmlndXJhdGlvblxcblwmIzM0Oyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTQwLVx0XHRkdC1cdTAwM2VlcnJvcl9jb2RlID0gRE1BX1RFU1RfQ09ORklHX0VSUk9SO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NDMtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTQ0Olx0cmV0ID0gZG1hX3Rlc3Rfc2V0X2JvbmRpbmcoZHQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU0NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU1MTpcdHJldCA9IGRtYV90ZXN0X3N0YXJ0X3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NTItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU1OS1cdFx0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2ZHQtXHUwMDNlY29tcGxldGUpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU2MDpcdFx0cmV0ID0gZG1hX3Rlc3Rfc3VibWl0X3J4KGR0LCBkdC1cdTAwM2VwYWNrZXRzX3RvX3JlY2VpdmUpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU2MS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NjgtXHRpZiAoZHQtXHUwMDNlcGFja2V0c190b19zZW5kKSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTY5Olx0XHRyZXQgPSBkbWFfdGVzdF9zdWJtaXRfdHgoZHQsIGR0LVx1MDAzZXBhY2tldHNfdG9fc2VuZCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTcwLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU4NS1vdXRfc3RvcDpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1ODY6XHRkbWFfdGVzdF9zdG9wX3JpbmdzKGR0KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01ODctb3V0X3VubG9jazpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1ODg6XHRkbWFfdGVzdF9jaGVja19lcnJvcnMoZHQsIHJldCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTg5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmR0LVx1MDAzZWxvY2spO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU5MC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1OTE6XHRkZXZfZGJnKFx1MDAyNnN2Yy1cdTAwM2VkZXYsIFwmIzM0O0RNQSB0ZXN0ICVzXFxuXCYjMzQ7LCBkbWFfdGVzdF9yZXN1bHRfbmFtZXNbZHQtXHUwMDNlcmVzdWx0XSk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTkyLVx0cmV0dXJuIHJldDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTMtfVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU5NDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUodGVzdF9mb3BzLCBOVUxMLCB0ZXN0X3N0b3JlLCBcJiMzNDslbGx1XFxuXCYjMzQ7KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTUtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NTk2PXN0YXRpYyBpbnQgc3RhdHVzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpub3RfdXNlZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTk4LVx0c3RydWN0IHRiX3NlcnZpY2UgKnN2YyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1OTk6XHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwMC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwNS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2MDY6XHRzZXFfcHJpbnRmKHMsIFwmIzM0O3Jlc3VsdDogJXNcXG5cJiMzNDssIGRtYV90ZXN0X3Jlc3VsdF9uYW1lc1tkdC1cdTAwM2VyZXN1bHRdKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MDctXHRpZiAoZHQtXHUwMDNlcmVzdWx0ID09IERNQV9URVNUX05PVF9SVU4pXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYxNC1cdFx0ICAgZHQtXHUwMDNlYnVmZmVyX292ZXJmbG93X2Vycm9ycyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjE1Olx0c2VxX3ByaW50ZihzLCBcJiMzNDtlcnJvcjogJXNcXG5cJiMzNDssIGRtYV90ZXN0X2Vycm9yX25hbWVzW2R0LVx1MDAzZWVycm9yX2NvZGVdKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MTYtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTYyMT1ERUZJTkVfU0hPV19BVFRSSUJVVEUoc3RhdHVzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjIzOnN0YXRpYyB2b2lkIGRtYV90ZXN0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2Mjc6XHRkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihcJiMzNDtkbWFfdGVzdFwmIzM0Oywgc3ZjLVx1MDAzZWRlYnVnZnNfZGlyKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjgtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzNS1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3RhdHVzXCYjMzQ7LCAwNDAwLCBkZWJ1Z2ZzX2Rpciwgc3ZjLCBcdTAwMjZzdGF0dXNfZm9wcyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjM2Olx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0ZXN0XCYjMzQ7LCAwMjAwLCBkZWJ1Z2ZzX2Rpciwgc3ZjLCBcdTAwMjZ0ZXN0X2ZvcHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzNy19XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjM4LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjYzOTpzdGF0aWMgaW50IGRtYV90ZXN0X3Byb2JlKHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCB0Yl9zZXJ2aWNlX2lkICppZClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDAte1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY0MS1cdHN0cnVjdCB0Yl94ZG9tYWluICp4ZCA9IHRiX3NlcnZpY2VfcGFyZW50KHN2Yyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjQyOlx0c3RydWN0IGRtYV90ZXN0ICpkdDtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDMtXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY1My1cdHRiX3NlcnZpY2Vfc2V0X2RydmRhdGEoc3ZjLCBkdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjU0Olx0ZG1hX3Rlc3RfZGVidWdmc19pbml0KHN2Yyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjU1LVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NTgtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjU5OnN0YXRpYyB2b2lkIGRtYV90ZXN0X3JlbW92ZShzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2MC17XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjYxOlx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRiX3NlcnZpY2VfZ2V0X2RydmRhdGEoc3ZjKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NjItXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjYzLVx0bXV0ZXhfbG9jayhcdTAwMjZkdC1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2NjQ6XHRkZWJ1Z2ZzX2xvb2t1cF9hbmRfcmVtb3ZlKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCBzdmMtXHUwMDNlZGVidWdmc19kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2NS1cdG11dGV4X3VubG9jayhcdTAwMjZkdC1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjY3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY2ODpzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGRtYV90ZXN0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2OS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY3MS1cdCAqIE5vIG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbCBoZXJlLiBJZiB1c2Vyc3BhY2UgaXMgd3JpdGluZ1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3MjpcdCAqIHRvIHRoZSB0ZXN0IGF0dHJpYnV0ZSB3aGVuIHN1c3BlbmQgc3RhcnRlZCwgaXQgY29tZXMgb3V0IGZyb21cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzMtXHQgKiB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoKSB3aXRoIC1FUkVTVEFSVFNZUyBhbmQgdGhlXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njc0Olx0ICogRE1BIHRlc3QgZmFpbHMgdGVhcmluZyBkb3duIHRoZSByaW5ncy4gT25jZSB1c2Vyc3BhY2UgaXNcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzUtXHQgKiB0aGF3ZWQgdGhlIGtlcm5lbCByZXN0YXJ0cyB0aGUgd3JpdGUgc3lzY2FsbCBlZmZlY3RpdmVseVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3NjpcdCAqIHJlLXJ1bm5pbmcgdGhlIHRlc3QuXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjc3LVx0ICovXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4MC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODE6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBkbWFfdGVzdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4Mi17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4NS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRtYV90ZXN0X3BtX29wcyA9IHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODc6XHRTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhkbWFfdGVzdF9zdXNwZW5kLCBkbWFfdGVzdF9yZXN1bWUpXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg4LX07XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg5LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHRiX3NlcnZpY2VfaWQgZG1hX3Rlc3RfaWRzW10gPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjkxOlx0eyBUQl9TRVJWSUNFKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCAxKSB9LFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5Mi1cdHsgfSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTMtfTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2OTQ6TU9EVUxFX0RFVklDRV9UQUJMRSh0YnN2YywgZG1hX3Rlc3RfaWRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTUtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njk2OnN0YXRpYyBzdHJ1Y3QgdGJfc2VydmljZV9kcml2ZXIgZG1hX3Rlc3RfZHJpdmVyID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5Ny1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjk4LVx0XHQub3duZXIgPSBUSElTX01PRFVMRSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2OTk6XHRcdC5uYW1lID0gXCYjMzQ7dGh1bmRlcmJvbHRfZG1hX3Rlc3RcJiMzNDssXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzAwOlx0XHQucG0gPSBcdTAwMjZkbWFfdGVzdF9wbV9vcHMsXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzAxLVx0fSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDI6XHQucHJvYmUgPSBkbWFfdGVzdF9wcm9iZSxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDM6XHQucmVtb3ZlID0gZG1hX3Rlc3RfcmVtb3ZlLFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwNDpcdC5pZF90YWJsZSA9IGRtYV90ZXN0X2lkcyxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDUtfTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDYtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzA3OnN0YXRpYyBpbnQgX19pbml0IGRtYV90ZXN0X2luaXQodm9pZClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDgte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MTEtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzEyOlx0ZG1hX3Rlc3RfcGF0dGVybiA9IGttYWxsb2MoRE1BX1RFU1RfRlJBTUVfU0laRSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzEzOlx0aWYgKCFkbWFfdGVzdF9wYXR0ZXJuKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcxNC1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcxNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjXHRETUFfVEVTVF9GUkFNRV9TSVpFIC8gc2l6ZW9mKGRhdGFfdmFsdWUpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTc6XHRcdCgodTMyICopZG1hX3Rlc3RfcGF0dGVybilbaV0gPSBkYXRhX3ZhbHVlJiM0MzsmIzQzOztcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MTgtXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzE5Olx0ZG1hX3Rlc3RfZGlyID0gdGJfcHJvcGVydHlfY3JlYXRlX2RpcihcdTAwMjZkbWFfdGVzdF9kaXJfdXVpZCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzIwOlx0aWYgKCFkbWFfdGVzdF9kaXIpIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MjEtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcyNC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjU6XHR0Yl9wcm9wZXJ0eV9hZGRfaW1tZWRpYXRlKGRtYV90ZXN0X2RpciwgXCYjMzQ7cHJ0Y2lkXCYjMzQ7LCAxKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjY6XHR0Yl9wcm9wZXJ0eV9hZGRfaW1tZWRpYXRlKGRtYV90ZXN0X2RpciwgXCYjMzQ7cHJ0Y3ZlcnNcJiMzNDssIDEpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcyNzpcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcJiMzNDtwcnRjcmV2c1wmIzM0OywgMCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI4Olx0dGJfcHJvcGVydHlfYWRkX2ltbWVkaWF0ZShkbWFfdGVzdF9kaXIsIFwmIzM0O3BydGNzdG5zXCYjMzQ7LCAwKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MjktXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzMwOlx0cmV0ID0gdGJfcmVnaXN0ZXJfcHJvcGVydHlfZGlyKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCBkbWFfdGVzdF9kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MzQ6XHRyZXQgPSB0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0MC1lcnJfdW5yZWdpc3Rlcl9kaXI6XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzQxOlx0dGJfdW5yZWdpc3Rlcl9wcm9wZXJ0eV9kaXIoXCYjMzQ7ZG1hX3Rlc3RcJiMzNDssIGRtYV90ZXN0X2Rpcik7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzQyLWVycl9mcmVlX2RpcjpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDM6XHR0Yl9wcm9wZXJ0eV9mcmVlX2RpcihkbWFfdGVzdF9kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0NC1lcnJfZnJlZV9wYXR0ZXJuOlxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc0NTpcdGtmcmVlKGRtYV90ZXN0X3BhdHRlcm4pO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0Ni1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzQ4LX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDk6bW9kdWxlX2luaXQoZG1hX3Rlc3RfaW5pdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1MTpzdGF0aWMgdm9pZCBfX2V4aXQgZG1hX3Rlc3RfZXhpdCh2b2lkKVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc1Mi17XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzUzOlx0dGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1NDpcdHRiX3VucmVnaXN0ZXJfcHJvcGVydHlfZGlyKFwmIzM0O2RtYV90ZXN0XCYjMzQ7LCBkbWFfdGVzdF9kaXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1NTpcdHRiX3Byb3BlcnR5X2ZyZWVfZGlyKGRtYV90ZXN0X2Rpcik7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzU2Olx0a2ZyZWUoZG1hX3Rlc3RfcGF0dGVybik7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzU3LX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NTg6bW9kdWxlX2V4aXQoZG1hX3Rlc3RfZXhpdCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzU5LVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz03NjE9TU9EVUxFX0FVVEhPUihcJiMzNDtNaWthIFdlc3RlcmJlcmcgXHUwMDNjbWlrYS53ZXN0ZXJiZXJnQGxpbnV4LmludGVsLmNvbVx1MDAzZVwmIzM0Oyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzYyOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtUaHVuZGVyYm9sdC9VU0I0IERNQSB0cmFmZmljIHRlc3QgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NjMtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTEyNDA9X19pY21fdHJfZGV2aWNlX2Nvbm5lY3RlZChzdHJ1Y3QgdGIgKnRiLCBjb25zdCBzdHJ1Y3QgaWNtX3BrZ19oZWFkZXIgKmhkcixcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTQtXHQgKiBDdXJyZW50bHkgd2UgZG9uJiMzOTt0IHVzZSB0aGUgUW9TIGluZm9ybWF0aW9uIGNvbWluZyB3aXRoIHRoZVxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYzoxMjU1Olx0ICogZGV2aWNlIGNvbm5lY3RlZCBtZXNzYWdlIHNvIHNpbXBseSBqdXN0IGlnbm9yZSB0aGF0IGV4dHJhXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTYtXHQgKiBwYWNrZXQgZm9yIG5vdy5cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTI0Nzk9c3RydWN0IHRiICppY21fcHJvYmUoc3RydWN0IHRiX25oaSAqbmhpKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmMtMjUxNC1cdFx0LypcbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmM6MjUxNTpcdFx0ICogTlZNIHVwZ3JhZGUgaGFzIG5vdCBiZWVuIHRlc3RlZCBvbiBBcHBsZSBzeXN0ZW1zIGFuZFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy0yNTE2LVx0XHQgKiB0aGV5IGRvbiYjMzk7dCBwcm92aWRlIGltYWdlcyBwdWJsaWNseSBlaXRoZXIuIFRvIGJlIG9uXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYz03Nj1zdGF0aWMgdm9pZCByaW5nX2ludGVycnVwdF9hY3RpdmUoc3RydWN0IHRiX3JpbmcgKnJpbmcsIGJvb2wgYWN0aXZlKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmMtMTAyLVx0XHQgKiB0byBwcmV2ZW50IGNvbmRpdGlvbnMgdGhhdCBtYXkgb2NjdXIgd2hlcmUgdHdvXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jOjEwMzpcdFx0ICogTVNJWCBpbnRlcnJ1cHRzIGFyZSBzaW11bHRhbmVvdXNseSBhY3RpdmUgYW5kXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jLTEwNC1cdFx0ICogcmVhZGluZyB0aGUgcmVnaXN0ZXIgY2xlYXJzIGJvdGggb2YgdGhlbS5cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jPTExNjM9c3RhdGljIHN0cnVjdCB0YiAqbmhpX3NlbGVjdF9jbShzdHJ1Y3QgdGJfbmhpICpuaGkpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYy0xMTY3LVx0LypcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmM6MTE2ODpcdCAqIFVTQjQgY2FzZSBpcyBzaW1wbGUuIElmIHdlIGdvdCBjb250cm9sIG9mIGFueSBvZiB0aGVcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmMtMTE2OS1cdCAqIGNhcGFiaWxpdGllcywgd2UgdXNlIHNvZnR3YXJlIENNLlxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3dpdGNoLmM9MzY0MT12b2lkIHRiX3N3aXRjaF9zdXNwZW5kKHN0cnVjdCB0Yl9zd2l0Y2ggKnN3LCBib29sIHJ1bnRpbWUpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zd2l0Y2guYy0zNjQ5LVx0LypcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzQ0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVGh1bmRlcmJvbHQgTmV0d29yayBEcml2ZXIgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGVzdGluZyB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYHRodW5kZXJib2x0LW5ldGAgZHJpdmVyLCBhbmQgSSBzZWUgYSBjb3VwbGUgb2YgZXhpc3RpbmcgVVNCNCB0ZXN0IGNvbmZpZ3VyYXRpb25zOiBgVVNCNF9LVU5JVF9URVNUYCBhbmQgYFVTQjRfRE1BX1RFU1RgLiBCdXQsIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIgaXRzZWxmPyBJdCByZWxpZXMgb24gVGh1bmRlcmJvbHQgWERvbWFpbiBzZXJ2aWNlcywgc28gdGhhdCYjMzk7cyB0aGUga2V5LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGNyZWF0ZSBhIG1vY2sgVGh1bmRlcmJvbHQgZGV2aWNlIHdpdGhpbiBRRU1VPyBMZXQgbWUgY2hlY2sgZm9yIGV4aXN0aW5nIGB1c2I0YCBvciBgdGh1bmRlcmJvbHRgIGVtdWxhdGlvbiB3aXRoaW4gUUVNVSBmaXJzdC4gRGFybiwgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBubyBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGVtdWxhdGlvbiBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgc2VyaW91cyByb2FkYmxvY2suCgpIb2xkIG9uIGEgc2Vjb25kLCB3aGF0IGlmIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgZHJpdmVyIHRocm91Z2ggYW4gYWx0ZXJuYXRlIG1ldGhvZCwgc2ltaWxhciB0byBob3cgd2UgaGF2ZSBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aGNpYCBmb3IgVVNCPyBJcyB0aGVyZSBhbnl0aGluZyBsaWtlIGEgYHRodW5kZXJib2x0X2h3c2ltYCBvciBhIHNpbWlsYXIgdmlydHVhbGl6ZWQgaGFyZHdhcmUgbW9kZWwgYXZhaWxhYmxlPyBJdCBpcyB1bmxpa2VseSwgYnV0IGxldCBtZSBjaGVjay4KCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgYSB3YXkgdG8gY3JlYXRlIGEgbW9jayBUaHVuZGVyYm9sdCBkZXZpY2UuIFRpbWUgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIGEgbW9jayBvciB0ZXN0IGhhcm5lc3MuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYHRiX3JlZ2lzdGVyX3Byb3BlcnR5X2RpcmAgb3IgYHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyYC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGxlYWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTUwMT1zdGF0aWMgaW50IF9faW5pdCB0Ym5ldF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE1MjItXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTUyMzpcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFx1MDAyNnRibmV0X2RyaXZlcik7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTUyNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTcwNz1zdGF0aWMgaW50IF9faW5pdCBkbWFfdGVzdF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MzQ6XHRyZXQgPSB0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNjQ4PXN0YXRpYyBpbnQgX19pbml0IHRic3RyZWFtX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NjktXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE2NzA6XHRyZXQgPSB0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZ0YnN0cmVhbV9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjcxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYz05Mzk9dGJfeGRwX3NjaGVkdWxlX3JlcXVlc3Qoc3RydWN0IHRiICp0YiwgY29uc3Qgc3RydWN0IHRiX3hkcF9oZWFkZXIgKmhkcixcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NjEtLyoqXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzo5NjI6ICogdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXIoKSAtIFJlZ2lzdGVyIFhEb21haW4gc2VydmljZSBkcml2ZXJcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTk2My0gKiBAZHJ2OiBEcml2ZXIgdG8gcmVnaXN0ZXJcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NjgtICovXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzo5Njk6aW50IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTcwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NzMtfVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6OTc0OkVYUE9SVF9TWU1CT0xfR1BMKHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTk3NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0Lmg9NDY2PXN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciB7XG4tLVxuaW5jbHVkZS9saW51eC90aHVuZGVyYm9sdC5oLTQ3OS1cbmluY2x1ZGUvbGludXgvdGh1bmRlcmJvbHQuaDo0ODA6aW50IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KTtcbmluY2x1ZGUvbGludXgvdGh1bmRlcmJvbHQuaC00ODEtdm9pZCB0Yl91bnJlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MjYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUaHVuZGVyYm9sdCBEcml2ZXIgU2VjdXJpdHkgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgVGh1bmRlcmJvbHQgZHJpdmVyIHNpdHVhdGlvbiwgYW5kIHRoZSBpbW1lZGlhdGUgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXJlIGlzbiYjMzk7dCBhbiBvYnZpb3VzICYjMzQ7bW9jayBkcml2ZXImIzM0OyBwcmVzZW50LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXJgIHNlZW1zIGV4Y2x1c2l2ZWx5IGNhbGxlZCBieSBgdGJuZXRgLCBgZG1hX3Rlc3RgLCBhbmQgYHN0cmVhbWAuIE15IGluaXRpYWwgY29uY2VybiBpcyBob3cgZWFzaWx5IGl0IGNhbiBiZSByZWFjaGVkLiBCdXQsIHdhaXQuLi4gY291bGQgYHRibmV0YCBiZSBmdXp6YWJsZSB0aHJvdWdoIGEgc2Vjb25kYXJ5IHBhdGh3YXk/CgpOb3csIGNvbnNpZGVyaW5nIHNjZW5hcmlvcyB3aGVyZSBUaHVuZGVyYm9sdCBoYXJkd2FyZSBtaWdodCBiZSBhYnNlbnQuLi4gSWYgdGhlcmUmIzM5O3Mgbm8gVGh1bmRlcmJvbHQgaGFyZHdhcmUgdG8gYmVnaW4gd2l0aCwgdGhlIGB0aHVuZGVyYm9sdGAgZHJpdmVyIHdvbiYjMzk7dCBwcm9iZSBhbnkgY29udHJvbGxlcnMuIFRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIGlmIG5vIGNvbnRyb2xsZXJzIGFyZSBwcm9iZWQsIGl0IGxvZ2ljYWxseSBmb2xsb3dzIHRoYXQgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQuIFRoZSByaXBwbGUgZWZmZWN0IGNvbnRpbnVlczogaWYgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQsIGB0Ym5ldF9wcm9iZWAg4oCTIHdoaWNoIGlzIGtleSB0byB0cmlnZ2VyaW5nIHRoZSBgdGJuZXRgIGRyaXZlciDigJMgaXMgbmV2ZXIgaW52b2tlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBgdGJuZXRgIGRyaXZlciwgYXQgbGVhc3QgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucywgbWlnaHQgYmUgZW50aXJlbHkgdW5yZWFjaGFibGUuIFRoYXQmIzM5O3MgYSBodWdlIHBvdGVudGlhbCBzZWN1cml0eSBob2xlLCBhc3N1bWluZyBpdCBjYW4mIzM5O3QgYmUgcmVhY2hlZC4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhwbG9yZSB3aGV0aGVyIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiBzb21laG93IGNyZWF0ZSBhIGB0Yl9zZXJ2aWNlYCBkZXZpY2UuIE15IGZvY3VzIHdpbGwgYmUgb24gc2VhcmNoaW5nIGZvciBjYWxscyBsaWtlIGB0Yl9zZXJ2aWNlX2NyZWF0ZWAgb3Igc29tZXRoaW5nIHdpdGggYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uIHRvIHNlZSBpZiBzdWNoIGEgdGhpbmcgZXhpc3RzLiBJZiBJIGNhbiBmaW5kIGEgd2F5IHRvIGNyZWF0ZSBvbmUgZnJvbSB1c2Vyc3BhY2UsIHRoYXQgb3BlbnMgdXAgYWxsIHNvcnRzIG9mIGZ1enppbmcgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Yl9zZXJ2aWNlX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDYxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBUaHVuZGVyYm9sdCBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiBob3cgdGhlc2UgVGh1bmRlcmJvbHQgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHhkb21haW4gY29udGV4dC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGhlYWQgZGlyZWN0bHkgaW50byB0aGUgcmVsZXZhbnQgZHJpdmVyIGNvZGUuIFNwZWNpZmljYWxseSwgYGRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jYCBsb29rcyBsaWtlIHRoZSBwcmltZSBzdXNwZWN0IGZvciB0aGlzIGtpbmQgb2YgbG93LWxldmVsIGRldmljZSBpbnRlcmFjdGlvbi4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHVzZSBgZ3JlcGAgdG8gbG9vayBmb3IgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCB0eXBpY2FsbHkgaGFuZGxlIGRldmljZSByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBkZXZpY2VfcmVnaXN0ZXJgIGFuZCBgZGV2aWNlX2FkZGAuIFRoZXNlIGFyZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMgd2hlbiBsb29raW5nIGF0IGhvdyBhIGRldmljZSBpcyBicm91Z2h0IGludG8gdGhlIHN5c3RlbSBhbmQgaXRzIGRldmljZSB0cmVlLiBUaGlzIGFwcHJvYWNoIHdpbGwgYWxsb3cgbWUgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGUgaW1tZWRpYXRlbHkuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHBvaW50cyB3aGVyZSB0aGUgVGh1bmRlcmJvbHQgZGV2aWNlIGlzIGlkZW50aWZpZWQsIGluaXRpYWxpemVkLCBhbmQgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gRnJvbSB0aGVyZSBJIGNhbiB0cmFjayB0aGUgY29udHJvbCBmbG93IGZyb20gdGhpcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2FkZHxkZXZpY2VfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYz0xMjE5PXN0YXRpYyB2b2lkIGVudW1lcmF0ZV9zZXJ2aWNlcyhzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMTI2OC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjEyNjk6XHRcdGlmIChkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2c3ZjLVx1MDAzZWRldikpIHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTEyNzAtXHRcdFx0dGJfc2VydmljZV9kZWJ1Z2ZzX3JlbW92ZShzdmMpO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jPTE1MzY9c3RhdGljIGludCB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzKHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0xNjIzLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MTYyNDpcdFx0aWYgKGRldmljZV9hZGQoXHUwMDI2eGQtXHUwMDNlZGV2KSkge1xuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMTYyNS1cdFx0XHRkZXZfZXJyKFx1MDAyNnhkLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFkZCBYRG9tYWluIGRldmljZVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTc2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIExpZmVjeWNsZSBvZiBTZXJ2aWNlIEVudW1lcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgaG93IHRoZXNlIHNlcnZpY2VzIGFyZSBiZWluZyBlbnVtZXJhdGVkLiBUaGUgYGVudW1lcmF0ZV9zZXJ2aWNlc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLCBpdCYjMzk7cyB3aGF0IGFjdHVhbGx5IGNyZWF0ZXMgdGhvc2UgYHRiX3NlcnZpY2VgIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluIHRvIHNlZSB3aGF0IHRyaWdnZXJzIGl0LgoKSXQgbG9va3MgbGlrZSBgZW51bWVyYXRlX3NlcnZpY2VzYCBnZXRzIGNhbGxlZCBlaXRoZXIgZGlyZWN0bHkgZnJvbSBgdGJfeGRvbWFpbl9nZXRfcHJvcGVydGllc2Agb3Igd2hlbiBwcm9wZXJ0aWVzIGhhdmUgY2hhbmdlZCwgYHRiX3hkb21haW5fcHJvcGVydGllc19jaGFuZ2VkYC4gTm93LCBgdGJfeGRvbWFpbl9nZXRfcHJvcGVydGllc2AgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzX3dvcmtgIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCBsaWtlbHkgbWVhbnMgaXQmIzM5O3Mgbm90IGEgZGlyZWN0LCBzeW5jaHJvbm91cyBjYWxsIGJ1dCBzb21ldGhpbmcgZGVmZXJyZWQuIGB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzX3dvcmtgIGlzIHNjaGVkdWxlZCwgd2hpY2ggaW1wbGllcyBpdCYjMzk7cyBxdWV1ZWQgb3IgdHJpZ2dlcmVkIGJ5IHNvbWUgc29ydCBvZiBldmVudCwgYW5kIHRoYXQmIzM5O3MgY29taW5nIGZyb20gYHRiX3hkb21haW5fYWRkYC4gU28gZmFyIHNvIGdvb2QuIEZpbmFsbHksIHRoZSBjcml0aWNhbCBwb2ludDogYHRiX3hkb21haW5fYWRkYCBpcyB0aGUgY2FsbGluZyBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZnJvbWB0Yl94ZG9tYWluX2FsbG9jYC4gCgpTbywgSSBuZWVkIHRvIGxvb2sgaW50byB3aG8gY2FsbHMgYHRiX3hkb21haW5fYWxsb2NgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIG5vdyB0byBjb21wbGV0ZWx5IGZvbGxvdyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RiX3hkb21haW5fYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9MTM0PXN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3RhcnRfcmluZ3Moc3RydWN0IGRtYV90ZXN0ICpkdClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTU5LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE2MDpcdFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19vdXRfaG9waWQoeGQsIC0xKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNjEtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTg3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE4ODpcdFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZCh4ZCwgLTEpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4OS1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmM9NzA5PXN0YXRpYyB2b2lkIGFkZF94ZG9tYWluKHN0cnVjdCB0Yl9zd2l0Y2ggKnN3LCB1NjQgcm91dGUsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTYtXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jOjcxNzpcdHhkID0gdGJfeGRvbWFpbl9hbGxvYyhzdy1cdTAwM2V0YiwgXHUwMDI2c3ctXHUwMDNlZGV2LCByb3V0ZSwgbG9jYWxfdXVpZCwgcmVtb3RlX3V1aWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTgtXHRpZiAoIXhkKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTAzNT1zdGF0aWMgaW50IHRic3RyZWFtX2Rldl9hbGxvY19pbl9ob3BpZChzdHJ1Y3QgdGJzdHJlYW1fZGV2ICpzZGV2LCBpbnQgaG9waWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDQ1LVx0fVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxMDQ2Olx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZCh4ZCwgaG9waWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDQ3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTEwNjE9c3RhdGljIGludCB0YnN0cmVhbV9kZXZfYWxsb2Nfb3V0X2hvcGlkKHN0cnVjdCB0YnN0cmVhbV9kZXYgKnNkZXYsIGludCBob3BpZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEwNzEtXHR9XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjEwNzI6XHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCh4ZCwgaG9waWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDczLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmM9NDMxPXN0YXRpYyB2b2lkIHRiX3NjYW5feGRvbWFpbihzdHJ1Y3QgdGJfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmMtNDQ3LVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5jOjQ0ODpcdHhkID0gdGJfeGRvbWFpbl9hbGxvYyh0YiwgXHUwMDI2c3ctXHUwMDNlZGV2LCByb3V0ZSwgdGItXHUwMDNlcm9vdF9zd2l0Y2gtXHUwMDNldXVpZCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuYy00NDktXHRcdFx0ICAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oPTEyNjA9Ym9vbCB0Yl94ZG9tYWluX2hhbmRsZV9yZXF1ZXN0KHN0cnVjdCB0YiAqdGIsIGVudW0gdGJfY2ZnX3BrZ190eXBlIHR5cGUsXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTI2MS1cdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTI2MjpzdHJ1Y3QgdGJfeGRvbWFpbiAqdGJfeGRvbWFpbl9hbGxvYyhzdHJ1Y3QgdGIgKnRiLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTI2My1cdFx0XHRcdCAgICB1NjQgcm91dGUsIGNvbnN0IHV1aWRfdCAqbG9jYWxfdXVpZCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYz0yMDc0PXN0YXRpYyB2b2lkIHRiX3hkb21haW5fbGlua19leGl0KHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMTA3LS8qKlxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjEwODogKiB0Yl94ZG9tYWluX2FsbG9jKCkgLSBBbGxvY2F0ZSBuZXcgWERvbWFpbiBvYmplY3RcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMDktICogQHRiOiBEb21haW4gd2hlcmUgdGhlIFhEb21haW4gYmVsb25nc1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMjAtICovXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzoyMTIxOnN0cnVjdCB0Yl94ZG9tYWluICp0Yl94ZG9tYWluX2FsbG9jKHN0cnVjdCB0YiAqdGIsIHN0cnVjdCBkZXZpY2UgKnBhcmVudCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMjItXHRcdFx0XHQgICAgdTY0IHJvdXRlLCBjb25zdCB1dWlkX3QgKmxvY2FsX3V1aWQsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9MjM0OD1FWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2xhbmVfYm9uZGluZ19kaXNhYmxlKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzUwLS8qKlxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM1MTogKiB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKCkgLSBBbGxvY2F0ZSBpbnB1dCBIb3BJRCBmb3IgdHVubmVsaW5nXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzUyLSAqIEB4ZDogWERvbWFpbiBjb25uZWN0aW9uXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM2My0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzNjQ6aW50IHRiX3hkb21haW5fYWxsb2NfaW5faG9waWQoc3RydWN0IHRiX3hkb21haW4gKnhkLCBpbnQgaG9waWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzY1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzczLX1cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzNzQ6RVhQT1JUX1NZTUJPTF9HUEwodGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc1LVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM3Ni0vKipcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzNzc6ICogdGJfeGRvbWFpbl9hbGxvY19vdXRfaG9waWQoKSAtIEFsbG9jYXRlIG91dHB1dCBIb3BJRCBmb3IgdHVubmVsaW5nXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc4LSAqIEB4ZDogWERvbWFpbiBjb25uZWN0aW9uXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM4OS0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzOTA6aW50IHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKHN0cnVjdCB0Yl94ZG9tYWluICp4ZCwgaW50IGhvcGlkKVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM5MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM5OS19XG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzoyNDAwOkVYUE9SVF9TWU1CT0xfR1BMKHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTI0MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODkyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRodW5kZXJib2x0IERyaXZlciBFbXVsYXRpb24gSHVudCoqCgpPa2F5LCBzbyBgdGJfeGRvbWFpbl9hbGxvY2AgaXMgdXNlZCBieSBgYWRkX3hkb21haW5gIGluIGBpY20uY2AgYW5kIGB0Yl9zY2FuX3hkb21haW5gIGluIGB0Yi5jYC4gVGhhdCBwbGFjZXMgaXQgZmlybWx5IHdpdGhpbiB0aGUgY29yZSBUaHVuZGVyYm9sdCBkcml2ZXImIzM5O3MgaGFyZHdhcmUgcG9ydCBzY2FubmluZyBmdW5jdGlvbmFsaXR5LCBzbyBpdCBtYWtlcyBzZW5zZSB0aGF0IEkmIzM5O20gc2VlaW5nIGl0LiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZ2V0IHNvbWUga2luZCBvZiBlbXVsYXRpb24gZm9yIHRoaXMgc3R1ZmY/IEkgbmVlZCB0byB0ZXN0IHdpdGhvdXQgcmVhbCBoYXJkd2FyZS4gSG1tLCBJIHZhZ3VlbHkgcmVjYWxsIHNvbWV0aGluZyByZWxhdGVkIHRvIGB1c2I0X2t1bml0X3Rlc3RgLiBUaGF0IHNvdW5kcyBwcm9taXNpbmcuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IFRodW5kZXJib2x0LXNwZWNpZmljIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuIEkmIzM5O2xsIHNlYXJjaCB0aGUgYGRyaXZlcnMvdGh1bmRlcmJvbHQvYCBkaXJlY3RvcnkgZm9yIGFueXRoaW5nIG1lbnRpb25pbmcgYGt1bml0YC4gVGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgYmVzdCBiZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t1bml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjk6I2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9pZHIuaFx1MDAzZVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE0LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTU6c3RhdGljIGludCBfX2lkYV9pbml0KHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzLCB2b2lkICpjb250ZXh0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTYte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ6c3RhdGljIHZvaWQgX19pZGFfZGVzdHJveShzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJlcylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjMxOnN0YXRpYyB2b2lkIGt1bml0X2lkYV9pbml0KHN0cnVjdCBrdW5pdCAqdGVzdCwgc3RydWN0IGlkYSAqaWRhKVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzIte1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzM6XHRrdW5pdF9hbGxvY19yZXNvdXJjZSh0ZXN0LCBfX2lkYV9pbml0LCBfX2lkYV9kZXN0cm95LCBHRlBfS0VSTkVMLCBpZGEpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzQtfVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzUtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozNjpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2Nfc3dpdGNoKHN0cnVjdCBrdW5pdCAqdGVzdCwgdTY0IHJvdXRlLFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzctXHRcdFx0XHQgICAgICB1OCB1cHN0cmVhbV9wb3J0LCB1OCBtYXhfcG9ydF9udW1iZXIpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0MzpcdHN3ID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKnN3KSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00NC1cdGlmICghc3cpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTQtXHRzaXplID0gKHN3LVx1MDAzZWNvbmZpZy5tYXhfcG9ydF9udW1iZXIgJiM0MzsgMSkgKiBzaXplb2YoKnN3LVx1MDAzZXBvcnRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjU1Olx0c3ctXHUwMDNlcG9ydHMgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemUsIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTYtXHRpZiAoIXN3LVx1MDAzZXBvcnRzKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTYzLVx0XHRpZiAoaSkge1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NjQ6XHRcdFx0a3VuaXRfaWRhX2luaXQodGVzdCwgXHUwMDI2c3ctXHUwMDNlcG9ydHNbaV0uaW5faG9waWRzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjY1Olx0XHRcdGt1bml0X2lkYV9pbml0KHRlc3QsIFx1MDAyNnN3LVx1MDAzZXBvcnRzW2ldLm91dF9ob3BpZHMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNjYtXHRcdH1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy03MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjcyOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0KHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTczLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTMtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNTQ6c3RhdGljIHN0cnVjdCB0Yl9zd2l0Y2ggKmFsbG9jX2hvc3RfdXNiNChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE3Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE3MzpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2NfaG9zdF9icihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzQte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE5MDpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2NfZGV2X2RlZmF1bHQoc3RydWN0IGt1bml0ICp0ZXN0LFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTkxLVx0XHRcdFx0XHQgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzM5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzQwOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aF9kcGluKHN0cnVjdCBrdW5pdCAqdGVzdCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTM0MS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzYwLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzYxOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aG91dF9kcChzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zNjItXHRcdFx0XHRcdCAgICAgIHN0cnVjdCB0Yl9zd2l0Y2ggKnBhcmVudCxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MDEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0MDI6c3RhdGljIHN0cnVjdCB0Yl9zd2l0Y2ggKmFsbG9jX2Rldl91c2I0KHN0cnVjdCBrdW5pdCAqdGVzdCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQwMy1cdFx0XHRcdFx0c3RydWN0IHRiX3N3aXRjaCAqcGFyZW50LFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQyMi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjQyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfYmFzaWMoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDI0LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MzktXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0NDA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9jb25uZWN0ZWRfd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00NDEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jPTQ3Mz1zdHJ1Y3QgcG9ydF9leHBlY3RhdGlvbiB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDc4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NDc5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9zaW5nbGVfaG9wX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDgwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy01MzItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo1MzM6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX2RhaXN5X2NoYWluX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTM0LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy01OTEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo1OTI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX3NpbXBsZV90cmVlX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTkzLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy02NTQtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo2NTU6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX2NvbXBsZXhfdHJlZV93YWxrKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTY1Ni17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNzM4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NzM5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9tYXhfbGVuZ3RoX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNzQwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy04NDEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo4NDI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9jb25uZWN0ZWQoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtODQzLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYz04NjI9c3RydWN0IGhvcF9leHBlY3RhdGlvbiB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtODY5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6ODcwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUwKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTg3MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTI3LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6OTI4OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUxKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTkyOS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTg5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6OTkwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUxX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTk5MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTA2OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEwNzA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9ib25kZWRfbGFuZTFfY2hhaW5fcmV2ZXJzZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMDcxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMTQ5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTE1MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfbWl4ZWRfY2hhaW4oc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTE1MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTI0MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEyNDI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX21peGVkX2NoYWluX3JldmVyc2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTI0My17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTMzMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEzMzQ6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfcGNpZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzM1LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzg4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTM4OTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzkwLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDI2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTQyNzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF9jaGFpbihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDI4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDcyLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTQ3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF90cmVlKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE0NzQte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE1MjItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNTIzOnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RwX21heF9sZW5ndGgoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTUyNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTYwMi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE2MDM6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfM2RwKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2MDQte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2NjgtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNjY5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX3VzYjMoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTY3MC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTcyMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE3MjQ6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfcG9ydF9vbl9wYXRoKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE3MjUte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE3ODktXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNzkwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RtYShzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzkxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xODMyLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTgzMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfcngoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTgzNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg2OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE4NzA6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZG1hX3R4KHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4NzEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5MDYtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxOTA3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RtYV9jaGFpbihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTA4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTcyLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTk3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfbWF0Y2goc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTk3NC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjAyMy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIwMjQ6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfbGVnYWN5X25vdF9ib25kZWQoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjAyNS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjA1Ni1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIwNTc6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfbGVnYWN5X2JvbmRlZChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDU4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDg5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjA5MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19wY2llKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIwOTEte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIxMjItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMTIzOnN0YXRpYyB2b2lkIHRiX3Rlc3RfY3JlZGl0X2FsbG9jX3dpdGhvdXRfZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjEyNC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjE3Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIxNzM6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjE3NC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjIxNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyMTc6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfdXNiMyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjE4LXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjQ5LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjI1MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19kbWEoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjI1MS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjI4NS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyODY6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfZG1hX211bHRpcGxlKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIyODcte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzODItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMzgzOnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX1BDSUVfVFVOTkVMKHN0cnVjdCBrdW5pdCAqdGVzdCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzODQtXHRcdFx0c3RydWN0IHRiX3N3aXRjaCAqaG9zdCwgc3RydWN0IHRiX3N3aXRjaCAqZGV2KVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0MTItXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNDEzOnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX0RQX1RVTk5FTDEoc3RydWN0IGt1bml0ICp0ZXN0LFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjQxNC1cdFx0XHRzdHJ1Y3QgdGJfc3dpdGNoICpob3N0LCBzdHJ1Y3QgdGJfc3dpdGNoICpkZXYpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjQ0OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI0NTA6c3RhdGljIHN0cnVjdCB0Yl90dW5uZWwgKlRCX1RFU1RfRFBfVFVOTkVMMihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDUxLVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDg2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ4NzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9VU0IzX1RVTk5FTChzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDg4LVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTE2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjUxNzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9ETUFfVFVOTkVMMShzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTE4LVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTQ2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjU0NzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9ETUFfVFVOTkVMMihzdHJ1Y3Qga3VuaXQgKnRlc3QsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTQ4LVx0XHRcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTc2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjU3NzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19hbGwoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjU3OC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM9MjY2Mz1zdGF0aWMgY29uc3QgdXVpZF90IG5ldHdvcmtfZGlyX3V1aWQgPVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI2NjYtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNjY3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjY2OC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjcyNi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI3Mjc6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9mb3JtYXQoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjcyOC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjc0MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI3NDI6XHRibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgYmxvY2tfbGVuICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjc0My1cdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBibG9jayk7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjc1My1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI3NTQ6c3RhdGljIHZvaWQgY29tcGFyZV9kaXJzKHN0cnVjdCBrdW5pdCAqdGVzdCwgc3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZDEsXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNzU1LVx0XHRcdCBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkMilcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODIzLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjgyNDpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X2NvcHkoc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjgyNS17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg0Mi1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4NDM6XHRibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgc2l6ZW9mKHJvb3RfZGlyZWN0b3J5KSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODQ0LVx0S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGJsb2NrKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODY3LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjg2ODpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX3UzMl93cmFwKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4Njkte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4NzUtXHQgKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4NzY6XHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCAweDEwMiAqIHNpemVvZih1MzIpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4NzctXHRzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkaXI7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg5OC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4OTk6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV9yZWN1cnNpb24oc3RydWN0IGt1bml0ICp0ZXN0KVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwMC17XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwNy1cdCAqL1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjkwODpcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDEwICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwOS1cdHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRpcjtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTM4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjkzOTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX2Rpcl9sZW5fdW5kZXJmbG93KHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5NDAte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5NTItXHQgKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI5NTM6XHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA3ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk1NC1cdHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRpcjtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTc4LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjk3OTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX3plcm9fbGVuZ3RoKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5ODAte1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjk4MTpcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDYgKiBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTgyLVx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5OTgtXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTk5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Vfcm9vdGRpcl9vdmVyZmxvdyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMDAwLXtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjMwMDE6XHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA0ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAwMi1cdHN0cnVjdCB0Yl9wcm9wZXJ0eV9kaXIgKmRpcjtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMDE2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzAxNzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X21lcmdlKHN0cnVjdCBrdW5pdCAqdGVzdClcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwMTgte1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwOTctXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMDk4OnN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0Yl90ZXN0X2Nhc2VzW10gPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMDk5LVx0S1VOSVRfQ0FTRSh0Yl90ZXN0X3Byb3BlcnR5X3BhcnNlX3UzMl93cmFwKSxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTQ2LVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE0NzpzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHRiX3Rlc3Rfc3VpdGUgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTQ4LVx0Lm5hbWUgPSBcJiMzNDt0aHVuZGVyYm9sdFwmIzM0Oyxcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTUxLVxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE1MjprdW5pdF90ZXN0X3N1aXRlKHRiX3Rlc3Rfc3VpdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzY2OQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmsgRnV6emluZyBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHRlc3QuY2AgZmlsZSwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciBpdCYjMzk7cyBqdXN0IGEgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHRodW5kZXJib2x0IGNvcmUuIEl0IGRvZXNuJiMzOTt0IGFjdHVhbGx5IGluc3RhbnRpYXRlIG9yIHJlZ2lzdGVyIGEgbW9jayBUaHVuZGVyYm9sdCBjb250cm9sbGVyLCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbS4gVGhpcyBtZWFucyBgdGh1bmRlcmJvbHQtbmV0YCBjYW4mIzM5O3QgYmUgZnV6emVkIGluIGEgUUVNVSBlbnZpcm9ubWVudCBhcyBpcyBiZWNhdXNlIHRoZXJlJiMzOTtzIHNpbXBseSBubyBjb250cm9sbGVyIGVtdWxhdGlvbi4gCgpIbW0sIEkgd29uZGVyLCBpcyB0aGVyZSBhbm90aGVyIHdheSB0byBsb2FkIGFuZCB0ZXN0IGB0aHVuZGVyYm9sdC1uZXRgIHdpdGhvdXQgYSByZWFsIGNvbnRyb2xsZXIgZW11bGF0aW9uPyBgdGJuZXRgIHJlZ2lzdGVycyBhIG5ldHdvcmsgZGV2aWNlLCBzdXJlLCBidXQgdGhhdCByZWdpc3RyYXRpb24gaGluZ2VzIG9uIGB0Ym5ldF9wcm9iZWAgYmVpbmcgaW52b2tlZC4gQW5kIGB0Ym5ldF9wcm9iZWAgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgdGh1bmRlcmJvbHQgYnVzIG1hdGNoZXMgYSBgdGJfc2VydmljZWAgZGV2aWNlLiBBbmQgYSBgdGJfc2VydmljZWAgZGV2aWNlPyBUaGUgdGh1bmRlcmJvbHQgY29yZSBjcmVhdGVzICp0aG9zZSogd2hlbiBpdCBkaXNjb3ZlcnMgYSB0aHVuZGVyYm9sdCBkZXZpY2Ugd2l0aCBYRG9tYWluIHByb3BlcnRpZXMuIFdoaWNoLCBvZiBjb3Vyc2UsIHJlcXVpcmVzIGEgdGh1bmRlcmJvbHQgY29udHJvbGxlciB0byBiZSBwcmVzZW50IHRvIGZhY2lsaXRhdGUgZGV2aWNlIGRpc2NvdmVyeS4gCgpSaWdodCwgc28gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHNpbmNlIHRoZXJlIGlzIG5vIHRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLCB0aGUgdGh1bmRlcmJvbHQgY29yZSB3b24mIzM5O3QgZmluZCBhbnkgY29udHJvbGxlcnMsIHdvbiYjMzk7dCBkaXNjb3ZlciBhbnkgZGV2aWNlcywgd29uJiMzOTt0IGNyZWF0ZSB0aG9zZSBjcml0aWNhbCBgdGJfc2VydmljZWAgZGV2aWNlcywgYW5kIHVsdGltYXRlbHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gSXQgYXBwZWFycyB0aGF0IHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSAqYW55KiBraW5kIG9mIHNvZnR3YXJlIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgZXF1aXZhbGVudCBvdXQgdGhlcmU/IEEgYG1hYzgwMjExX2h3c2ltYCBmb3IgdGh1bmRlcmJvbHQsIHBlcmhhcHM/IEkgZGlkIGEgcXVpY2sgYGdyZXBgIGZvciBga3VuaXR8dGVzdHxtb2NrfHNpbWAgaW4gYGRyaXZlcnMvdGh1bmRlcmJvbHQvYCwgYW5kIEkgb25seSBzZWUgYHRlc3QuY2AgYW5kIGBkbWFfdGVzdC5jYCwgd2hpY2gsIHdoaWxlIGl0IGRvZXMgYmluZCB0byBhIGB0Yl9zZXJ2aWNlYCwgbG9va3MgdG8gYmUgYW5vdGhlciB0ZXN0IGRyaXZlci4gU28sIG5vLCB0aGVyZSBpc24mIzM5O3QgYW55dGhpbmcgbGlrZSBgaHdzaW1gIG9yIGB2aGNpYCBmb3IgdGh1bmRlcmJvbHQgdGhhdCBJIGNhbiBzZWUuCgpXYWl0LCB3aGF0IGFib3V0IGBjb25maWdmc2A/IENvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgYHRiX3NlcnZpY2VgIGRldmljZSB0aGF0IHdheT8gTGV0IG1lIGludmVzdGlnYXRlIGBjb25maWdmc2AmIzM5O3MgcmVsYXRpb25zaGlwIHRvIHRodW5kZXJib2x0Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZT05PXRodW5kZXJib2x0LSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlOjEwOnRodW5kZXJib2x0LSQoQ09ORklHX1VTQjRfQ09ORklHRlMpICYjNDM7PSBjb25maWdmcy5vXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlLTExLXRodW5kZXJib2x0LSR7Q09ORklHX1VTQjRfS1VOSVRfVEVTVH0gJiM0Mzs9IHRlc3Qub1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy04LVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjk6I2luY2x1ZGUgXHUwMDNjbGludXgvY29uZmlnZnMuaFx1MDAzZVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTEwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jPTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB0Yl9yb290X2dyb3VwX3R5cGUgPSB7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTE3LVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjE4OnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfc3Vic3lzdGVtIHRiX2NvbmZpZ2ZzID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTE5LVx0LnN1X2dyb3VwID0ge1xuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0yNy0vKipcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzoyODogKiB0Yl9jb25maWdmc19yZWdpc3Rlcl9ncm91cCgpIC0gUmVnaXN0ZXIgVGh1bmRlcmJvbHQgQ29uZmlnRlMgZ3JvdXBcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0yOS0gKiBAZ3JvdXA6IEdyb3VwIHRvIHJlZ2lzdGVyLlxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0zNC0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzozNTppbnQgdGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXApXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzYte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjM3Olx0cmV0dXJuIGNvbmZpZ2ZzX3JlZ2lzdGVyX2dyb3VwKFx1MDAyNnRiX2NvbmZpZ2ZzLnN1X2dyb3VwLCBncm91cCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzgtfVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjM5OkVYUE9SVF9TWU1CT0xfR1BMKHRiX2NvbmZpZ2ZzX3JlZ2lzdGVyX2dyb3VwKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00MC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00MS0vKipcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0MjogKiB0Yl9jb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKCkgLSBVbnJlZ2lzdGVyIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBncm91cFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTQzLSAqIEBncm91cDogR3JvdXAgdG8gdW5yZWdpc3Rlci5cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00NC0gKi9cbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0NTp2b2lkIHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXAoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXApXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDYte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQ3Olx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChncm91cCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDgtfVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQ5OkVYUE9SVF9TWU1CT0xfR1BMKHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTUwLVxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjUxOmludCB0Yl9jb25maWdmc19pbml0KHZvaWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTIte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjUzOlx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2dGJfY29uZmlnZnMuc3VfZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjU0Olx0bXV0ZXhfaW5pdChcdTAwMjZ0Yl9jb25maWdmcy5zdV9tdXRleCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTU6XHRyZXR1cm4gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNnRiX2NvbmZpZ2ZzKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy01Ni19XG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTctXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTg6dm9pZCB0Yl9jb25maWdmc19leGl0KHZvaWQpXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTkte1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjYwOlx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2dGJfY29uZmlnZnMpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTYxLX1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RvbWFpbi5jPTg4Nj1pbnQgdGJfZG9tYWluX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RvbWFpbi5jLTg4OS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmM6ODkwOlx0dGJfY29uZmlnZnNfaW5pdCgpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy04OTEtXHR0Yl9kZWJ1Z2ZzX2luaXQoKTtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L2RvbWFpbi5jPTkxMj12b2lkIHRiX2RvbWFpbl9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy05MTktXHR0Yl9kZWJ1Z2ZzX2V4aXQoKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmM6OTIwOlx0dGJfY29uZmlnZnNfZXhpdCgpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy05MjEtfVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTEtXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjEyOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbmZpZ2ZzLmhcdTAwM2VcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvZmlsZS5oXHUwMDNlXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMjA4PUNPTkZJR0ZTX0FUVFIodGJzdHJlYW1fZGV2XywgdGhyb3R0bGluZyk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMDktXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjEyMTA6c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKnRic3RyZWFtX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMjExLVx0XHUwMDI2dGJzdHJlYW1fZGV2X2F0dHJfaW5kZXgsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMjE5PXN0YXRpYyB2b2lkIHRic3RyZWFtX2Rldl9pdGVtX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTIyNy1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTIyODpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB0YnN0cmVhbV9kZXZfaXRlbV9vcHMgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMjktXHQucmVsZWFzZSA9IHRic3RyZWFtX2Rldl9pdGVtX3JlbGVhc2UsXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMzkxPXRic3RyZWFtX2Rldl9kcm9wX2l0ZW0oc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MDQtXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE0MDU6c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2Rldl9ncm91cF9vcHMgPSB7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MDYtXHQubWFrZV9ncm91cCA9IHRic3RyZWFtX2Rldl9tYWtlX2dyb3VwLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTQxMD1zdGF0aWMgdm9pZCB0YnN0cmVhbV9pdGVtX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQxOC1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQxOTpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB0YnN0cmVhbV9pdGVtX29wcyA9IHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQyMC1cdC5yZWxlYXNlID0gdGJzdHJlYW1faXRlbV9yZWxlYXNlLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTQzMD10YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQ2MS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQ2MjpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgdGJzdHJlYW1fZ3JvdXBfb3BzID0ge1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNDYzLVx0Lm1ha2VfZ3JvdXAgPSB0YnN0cmVhbV9tYWtlX2dyb3VwLFxuLS1cbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTY0OD1zdGF0aWMgaW50IF9faW5pdCB0YnN0cmVhbV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY1LVx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2dGJzdHJlYW1fZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjY2Olx0cmV0ID0gdGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoXHUwMDI2dGJzdHJlYW1fZ3JvdXApO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NzUtZXJyX3VucmVnaXN0ZXJfZ3JvdXA6XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE2NzY6XHR0Yl9jb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKFx1MDAyNnRic3RyZWFtX2dyb3VwKTtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTY3Ny1lcnJfdW5yZWdpc3Rlcl9kaXI6XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNjg1PXN0YXRpYyB2b2lkIF9fZXhpdCB0YnN0cmVhbV9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjg3LVx0dGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcdTAwMjZ0YnN0cmVhbV9kcml2ZXIpO1xuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjg4Olx0dGJfY29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChcdTAwMjZ0YnN0cmVhbV9ncm91cCk7XG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2ODktXHR0Yl91bnJlZ2lzdGVyX3Byb3BlcnR5X2RpcihcJiMzNDtzdHJlYW1cJiMzNDssIHRic3RyZWFtX2Rpcik7XG4tLVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oPTE1NTk9c3RhdGljIGlubGluZSB2b2lkIHRiX3JldGltZXJfZGVidWdmc19yZW1vdmUoc3RydWN0IHRiX3JldGltZXIgKnJ0KSB7IH1cbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2Mi0jaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19DT05GSUdGU19GUylcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaDoxNTYzOmludCB0Yl9jb25maWdmc19pbml0KHZvaWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oOjE1NjQ6dm9pZCB0Yl9jb25maWdmc19leGl0KHZvaWQpO1xuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oLTE1NjUtI2Vsc2VcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaDoxNTY2OnN0YXRpYyBpbmxpbmUgaW50IHRiX2NvbmZpZ2ZzX2luaXQodm9pZCkgeyByZXR1cm4gMDsgfVxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oOjE1Njc6c3RhdGljIGlubGluZSB2b2lkIHRiX2NvbmZpZ2ZzX2V4aXQodm9pZCkgeyB9XG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2OC0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4MDcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWx2aW5nIGludG8gdGhlIGB0YnN0cmVhbWAgQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIGhvdyBgdGJzdHJlYW1gLCB3aGljaCBJIGtub3cgaXMgdXNlZCBmb3Igc3RyZWFtIGNyZWF0aW9uLCBpbnRlcmZhY2VzIHdpdGggQ29uZmlnRlMuIEl0IGxvb2tzIGxpa2UgYHRic3RyZWFtYCBpcyBhY3R1YWxseSBkZWZpbmVkIHdpdGhpbiBgZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uY2AuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYHRic3RyZWFtYCBhbmQgdGhlIHVuZGVybHlpbmcgc2VydmljZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJvY2VzcyBvZiBob3cgZ3JvdXBzIGFuZCBzZXJ2aWNlcyBhcmUgbWFkZSB3aGVuIGEgc3RyZWFtIGlzIGluc3RhbnRpYXRlZC4gSSByZWNhbGwgYHRic3RyZWFtX21ha2VfZ3JvdXBgIHBsYXlzIGEgcm9sZSBpbiBjb25zdHJ1Y3RpbmcgYSBncm91cC4gTGV0IG1lIHF1aWNrbHkgZXhhbWluZSBgdGJzdHJlYW1fbWFrZV9ncm91cGAgdG8gY29uZmlybSBpZiBpdCwgaW4gZmFjdCwgZ2VuZXJhdGVzIGB0Yl9zZXJ2aWNlYCBpbnN0YW5jZXMsIG9yIGlmIHRoZSBpbnN0YW50aWF0aW9uIG9jY3VycyBlbHNld2hlcmUgaW4gdGhlIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGJzdHJlYW1fbWFrZV9ncm91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDI5PXN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQzMDp0YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNDMxLXtcbi0tXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTE0NjI9c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2dyb3VwX29wcyA9IHtcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQ2MzpcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQ2NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTI0MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiBgdGJzdHJlYW1fbWFrZV9ncm91cGA6CgoqKkRpc3NlY3RpbmcgYHRic3RyZWFtX21ha2VfZ3JvdXBgKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gYHRic3RyZWFtX21ha2VfZ3JvdXBgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlIOKAkyB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvICpkbyo/IElzIHRoaXMgYSBmdW5jdGlvbiBmb3IgY29uc3RydWN0aW5nIGEgbmV3IHN0cmVhbSBncm91cCBvYmplY3Q/IElzIGl0IHJlc3BvbnNpYmxlIGZvciBpbml0aWFsIHNldHVwLCBtZW1vcnkgYWxsb2NhdGlvbiwgb3IgbWF5YmUganVzdCB3cmFwcGluZyBleGlzdGluZyBzdHJlYW1zPyBDb25zaWRlcmluZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24sICYjMzQ7bWFrZV9ncm91cCYjMzQ7IHNlZW1zIHRvIGxlYW4gdG93YXJkcyBhbiBpbnN0YW50aWF0aW9uIG9yIGNvbnN0cnVjdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBwYXJhbWV0ZXJzIGl0IGV4cGVjdHMuIFVuZGVyc3RhbmRpbmcgdGhvc2UgcGFyYW1ldGVycyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBncm91cCYjMzk7cyBjb21wb3NpdGlvbi4gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgZWxlbWVudHMgbGlrZSBzdHJlYW0gaGFuZGxlcyBvciBkZXNjcmlwdG9ycywgYnV0IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBhbmQgcmV0dXJuIHZhbHVlcy4gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzIGZvciBmYWlsdXJlcyBkdXJpbmcgdGhlIGdyb3VwIGNyZWF0aW9uPyBJcyB0aGVyZSBhbnkgZ3JhY2VmdWwgZGVncmFkYXRpb24gaW4gY2FzZSBvZiBmYWlsdXJlPyBVbHRpbWF0ZWx5LCBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBpbiB3aGljaCBjb250ZXh0IHRvIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDEzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0MjksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTQyOTpcdHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpcbjE0MzA6XHR0YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuMTQzMTpcdHtcbjE0MzI6XHRcdHN0cnVjdCB0YnN0cmVhbV9ncm91cCAqc2c7XG4xNDMzOlx0XHRzdHJ1Y3QgdGJzdHJlYW0gKnN0cmVhbTtcbjE0MzQ6XHRcdGludCBkb21haW4sIGluZGV4O1xuMTQzNTpcdFx0dTY0IHJvdXRlO1xuMTQzNjpcdFxuMTQzNzpcdFx0LyogTWFrZSBzdXJlIHRoZSBmb3JtYXQgaXMgY29ycmVjdCAqL1xuMTQzODpcdFx0aWYgKHNzY2FuZihuYW1lLCBcJiMzNDsldS0lbGx4LiV1XCYjMzQ7LCBcdTAwMjZkb21haW4sIFx1MDAyNnJvdXRlLCBcdTAwMjZpbmRleCkgIT0gMylcbjE0Mzk6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4xNDQwOlx0XG4xNDQxOlx0XHRzZyA9IGt6YWxsb2Nfb2JqKCpzZywgR0ZQX0tFUk5FTCk7XG4xNDQyOlx0XHRpZiAoIXNnKVxuMTQ0MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbjE0NDQ6XHRcbjE0NDU6XHRcdG11dGV4X2luaXQoXHUwMDI2c2ctXHUwMDNlbG9jayk7XG4xNDQ2Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZzZy1cdTAwM2VkZXZfbGlzdCk7XG4xNDQ3Olx0XG4xNDQ4Olx0XHRndWFyZChtdXRleCkoXHUwMDI2dGJzdHJlYW1fbG9jayk7XG4xNDQ5Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHN0cmVhbSwgXHUwMDI2dGJzdHJlYW1fbGlzdCwgbGlzdCkge1xuMTQ1MDpcdFx0XHR0YnN0cmVhbV9nZXQoc3RyZWFtKTtcbjE0NTE6XHRcdFx0aWYgKHN5c2ZzX3N0cmVxKG5hbWUsIGRldl9uYW1lKFx1MDAyNnN0cmVhbS1cdTAwM2VzdmMtXHUwMDNlZGV2KSkpIHtcbjE0NTI6XHRcdFx0XHRzZy1cdTAwM2VzdHJlYW0gPSBzdHJlYW07XG4xNDUzOlx0XHRcdFx0YnJlYWs7XG4xNDU0Olx0XHRcdH1cbjE0NTU6XHRcdFx0dGJzdHJlYW1fcHV0KHN0cmVhbSk7XG4xNDU2Olx0XHR9XG4xNDU3Olx0XG4xNDU4Olx0XHRjb25maWdfZ3JvdXBfaW5pdF90eXBlX25hbWUoXHUwMDI2c2ctXHUwMDNlZ3JvdXAsIG5hbWUsIFx1MDAyNnRic3RyZWFtX2Rldl9ncm91cF90eXBlKTtcbjE0NTk6XHRcdHJldHVybiBcdTAwMjZzZy1cdTAwM2Vncm91cDtcbjE0NjA6XHR9XG4xNDYxOlx0XG4xNDYyOlx0c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2dyb3VwX29wcyA9IHtcbjE0NjM6XHRcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwNzQKCQkJCQkJCW91dHB1dDogMTE4CgkJCQkJCQl0aG91Z2h0czogNjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRodW5kZXJib2x0IE5ldHdvcmtpbmcgaW4gUUVNVTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIHRhcmdldHMgVGh1bmRlcmJvbHQgbmV0d29ya2luZy4gSSBzZWUgaXQgc3RhcnRzIGJ5IGxvb2tpbmcgdXAgYW4gZXhpc3RpbmcgYHRic3RyZWFtYCBieSBuYW1lLCB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIGB0Yl9zZXJ2aWNlYCBkZXZfbmFtZS4gQ3J1Y2lhbGx5LCBpdCBkb2VzbiYjMzk7dCAqY3JlYXRlKiBhIGB0Yl9zZXJ2aWNlYC4gVGhpcyBtZWFucywgZnJvbSBhIHVzZXJzcGFjZSBwZXJzcGVjdGl2ZSwgd2UgY2FuJiMzOTt0IGluc3RhbnRpYXRlIGEgYHRiX3NlcnZpY2VgIG91cnNlbHZlcy4KCldpdGhvdXQgYSBgdGJfc2VydmljZWAsIHRoZSB2aXRhbCBgdGJuZXRfcHJvYmVgIGZ1bmN0aW9uIGlzIG5ldmVyIGludm9rZWQuIEFuZCB3aXRob3V0IGB0Ym5ldF9wcm9iZWAsIHRoZSBlbnRpcmUgYHRibmV0YCBkcml2ZXIgaXMgY29tcGxldGVseSBpbmFjY2Vzc2libGUuIE5vdywgdGhlIGtpY2tlcjogUUVNVSwgaW4gaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24sIGRvZXNuJiMzOTt0IHByb3ZpZGUgYW55IFRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLiBUaGlzIG1lYW5zIHRoZSBUaHVuZGVyYm9sdCBjb3JlIHdpbGwgbmV2ZXIgZmluZCBhbnkgY29udHJvbGxlcnMsIG5ldmVyIGRpc2NvdmVyIGRldmljZXMsIGFuZCB0aGVyZWZvcmUsIHdpbGwgbmV2ZXIgZ2VuZXJhdGUgYW55IGB0Yl9zZXJ2aWNlYCBkZXZpY2VzLiBDb25zZXF1ZW50bHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4KClRoZXJlZm9yZSwgdGhpcyBjb2RlIGluIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgIGlzIHV0dGVybHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLgoKV2FpdCwgaXMgdGhlcmUgKmFueSogb3RoZXIgcm91dGUgdG8gdGhpcyBjb2RlPyBJJiMzOTttIHdvbmRlcmluZyBpZiBhIFRodW5kZXJib2x0IGRldmljZSBjb3VsZCBiZSBpbmplY3RlZCBzb21laG93PyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IHRvIGB2aGNpYCBvciBgbWFjODAyMTFfaHdzaW1gIGZvciBUaHVuZGVyYm9sdC4gVGhlIGB0ZXN0LmNgIGRyaXZlciBpcyBhIEtVbml0IHRlc3QsIGFuZCBpdCBkb2VzbiYjMzk7dCBleHBvc2UgYSBtb2NrIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgdG8gdGhlIHN5c3RlbS4gVGhpcyBjb25maXJtcyBpdDogYHRodW5kZXJib2x0LW5ldGAgc2ltcGx5IGNhbm5vdCBiZSBmdXp6ZWQgaW4gUUVNVS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgaWYgYFVTQjRfTkVUYCBjYW4gYmUgcmVhY2hlZC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYHRibmV0X2Nvbm5lY3RfZmFpbGVkYCBhbmQgYHRibmV0X2Nvbm5lY3RlZF93b3JrYCwgYm90aCBwYXJ0IG9mIHRoZSBgdGh1bmRlcmJvbHQtbmV0YCBkcml2ZXIuIFNpbmNlIHRoYXQgZHJpdmVyIGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIFRodW5kZXJib2x0IGhhcmR3YXJlLCB3aGljaCBpcyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VLCBpdCYjMzk7cyBhIGRlYWQgZW5kLiBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLCBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IFRodW5kZXJib2x0IG5ldHdvcmtpbmcgYWJzb2x1dGVseSByZXF1aXJlcyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSByb2J1c3QgZW11bGF0aW9uIGxheWVyLCB3aGljaCBRRU1VIGRvZXNuJiMzOTt0IGhhdmUuCgpMZXQgbWUganVzdCByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBleHBsaWNpdGx5IHNheTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIHByZWNpc2VseSBmaXRzIFRodW5kZXJib2x0IG5ldHdvcmtpbmcuIFRoZXJlJiMzOTtzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgaW4gUUVNVS4KCkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBVU0I0X05FVGAgZGVwZW5kcyBvbiBgVVNCNGAgKHRoZSBUaHVuZGVyYm9sdCBjb3JlKS4gWWVzLCBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AgY29uZmlybXM6IGBjb25maWcgVVNCNF9ORVQuLi4gZGVwZW5kcyBvbiBVU0I0ICZhbXA7JmFtcDsgSU5FVGAuIEFuZCBzaW5jZSB0aGVyZSBpcyBubyBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGVtdWxhdGlvbiBpbiBRRU1VLCB0aGUgY29kZSByZW1haW5zIHVucmVhY2hhYmxlLgoKU28sIEkmIzM5O20gc3RpY2tpbmcgd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGh1bmRlcmJvbHQgbmV0d29ya2luZyBkcml2ZXIgKHRodW5kZXJib2x0LW5ldCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgVGh1bmRlcmJvbHQgY29udHJvbGxlciBhbmQgWERvbWFpbiBjb25uZWN0aW9ucyB0byBmdW5jdGlvbi4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBUaHVuZGVyYm9sdCBjb250cm9sbGVycyBpbiBzdGFuZGFyZCBRRU1VICh1bmxpa2UgVVNCIHdpdGggdmhjaSBvciBXaS1GaSB3aXRoIG1hYzgwMjExX2h3c2ltKSwgdGhlIGRyaXZlciBjYW5ub3QgYmUgcHJvYmVkIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGRyaXZlciAodGh1bmRlcmJvbHQtbmV0KS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zIHRvIGZ1bmN0aW9uLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFRodW5kZXJib2x0IGNvbnRyb2xsZXJzIGluIHN0YW5kYXJkIFFFTVUgKHVubGlrZSBVU0Igd2l0aCB2aGNpIG9yIFdpLUZpIHdpdGggbWFjODAyMTFfaHdzaW0pLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTM6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjQyLjM1NzUyOTk0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTgwNjIxODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRodW5kZXJib2x0IG5ldHdvcmtpbmcgZHJpdmVyICh0aHVuZGVyYm9sdC1uZXQpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgYW5kIFhEb21haW4gY29ubmVjdGlvbnMgdG8gZnVuY3Rpb24uIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMgaW4gc3RhbmRhcmQgUUVNVSAodW5saWtlIFVTQiB3aXRoIHZoY2kgb3IgV2ktRmkgd2l0aCBtYWM4MDIxMV9od3NpbSksIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNDo0Mi4zNTc1MzY0OTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTE1NjgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg5YmIxYjc1NzAxZDVmYWMzODE0ZmM5MDdkZmYyNTY5ZThjMjBhNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTM6MzQ6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXFxuaW5kZXggOTg4OTM3MzJiYzZlNC4uMmExNzI4NjIxODg3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcXG5AQCAtNjI2LDYgKzYyNiwxNCBAQCBzdGF0aWMgaW50IHRibmV0X2FsbG9jX3R4X2J1ZmZlcnMoc3RydWN0IHRibmV0ICpuZXQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0X2ZhaWxlZChzdHJ1Y3QgdGJuZXQgKm5ldClcXG4re1xcbitcXHQvKiBMZWF2ZSBsb2dpbl9yZWNlaXZlZCBzZXQ6IG9ubHkgdGhlIHBlZXIgY2FuIG1ha2UgaXQgdHJ1ZSBhZ2Fpbi4gKi9cXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2bmV0LVxcdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xcbitcXHRuZXQtXFx1MDAzZWxvZ2luX3NlbnQgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuZXQtXFx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgdGJuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKm5ldCksIGNvbm5lY3RlZF93b3JrKTtcXG5AQCAtNjQ3LDYgKzY1NSw5IEBAIHN0YXRpYyB2b2lkIHRibmV0X2Nvbm5lY3RlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0cmV0ID0gdGJfeGRvbWFpbl9hbGxvY19pbl9ob3BpZChuZXQtXFx1MDAzZXhkLCBuZXQtXFx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcXG4gXFx0aWYgKHJldCAhPSBuZXQtXFx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKSB7XFxuIFxcdFxcdG5ldGRldl9lcnIobmV0LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgUnggSG9wSURcXFxcblxcXCIpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2U9IDApXFxuK1xcdFxcdFxcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXFx1MDAzZXhkLCByZXQpO1xcbitcXHRcXHR0Ym5ldF9jb25uZWN0X2ZhaWxlZChuZXQpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTY5MSw2ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0ZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHRiX3Jpbmdfc3RvcChuZXQtXFx1MDAzZXJ4X3JpbmcucmluZyk7XFxuIFxcdHRiX3Jpbmdfc3RvcChuZXQtXFx1MDAzZXR4X3JpbmcucmluZyk7XFxuIFxcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXFx1MDAzZXhkLCBuZXQtXFx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcXG4rXFx0dGJuZXRfY29ubmVjdF9mYWlsZWQobmV0KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjQyLjczOTM2NDY1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc3MTk4NzY3OTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGh1bmRlcmJvbHQgbmV0d29ya2luZyBkcml2ZXIgKHRodW5kZXJib2x0LW5ldCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgVGh1bmRlcmJvbHQgY29udHJvbGxlciBhbmQgWERvbWFpbiBjb25uZWN0aW9ucyB0byBmdW5jdGlvbi4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBUaHVuZGVyYm9sdCBjb250cm9sbGVycyBpbiBzdGFuZGFyZCBRRU1VICh1bmxpa2UgVVNCIHdpdGggdmhjaSBvciBXaS1GaSB3aXRoIG1hYzgwMjExX2h3c2ltKSwgdGhlIGRyaXZlciBjYW5ub3QgYmUgcHJvYmVkIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg5YmIxYjc1NzAxZDVmYWMzODE0ZmM5MDdkZmYyNTY5ZThjMjBhNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAxMzozNDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuaW5kZXggOTg4OTM3MzJiYzZlNC4uMmExNzI4NjIxODg3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5AQCAtNjI2LDYgKzYyNiwxNCBAQCBzdGF0aWMgaW50IHRibmV0X2FsbG9jX3R4X2J1ZmZlcnMoc3RydWN0IHRibmV0ICpuZXQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdF9mYWlsZWQoc3RydWN0IHRibmV0ICpuZXQpXG4re1xuK1x0LyogTGVhdmUgbG9naW5fcmVjZWl2ZWQgc2V0OiBvbmx5IHRoZSBwZWVyIGNhbiBtYWtlIGl0IHRydWUgYWdhaW4uICovXG4rXHRtdXRleF9sb2NrKFx1MDAyNm5ldC1cdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xuK1x0bmV0LVx1MDAzZWxvZ2luX3NlbnQgPSBmYWxzZTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZuZXQtXHUwMDNlY29ubmVjdGlvbl9sb2NrKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB0Ym5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqbmV0KSwgY29ubmVjdGVkX3dvcmspO1xuQEAgLTY0Nyw2ICs2NTUsOSBAQCBzdGF0aWMgdm9pZCB0Ym5ldF9jb25uZWN0ZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKG5ldC1cdTAwM2V4ZCwgbmV0LVx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcbiBcdGlmIChyZXQgIT0gbmV0LVx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKSB7XG4gXHRcdG5ldGRldl9lcnIobmV0LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gYWxsb2NhdGUgUnggSG9wSURcXG5cIik7XG4rXHRcdGlmIChyZXQgXHUwMDNlPSAwKVxuK1x0XHRcdHRiX3hkb21haW5fcmVsZWFzZV9pbl9ob3BpZChuZXQtXHUwMDNleGQsIHJldCk7XG4rXHRcdHRibmV0X2Nvbm5lY3RfZmFpbGVkKG5ldCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC02OTEsNiArNzAyLDcgQEAgc3RhdGljIHZvaWQgdGJuZXRfY29ubmVjdGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0dGJfcmluZ19zdG9wKG5ldC1cdTAwM2VyeF9yaW5nLnJpbmcpO1xuIFx0dGJfcmluZ19zdG9wKG5ldC1cdTAwM2V0eF9yaW5nLnJpbmcpO1xuIFx0dGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkKG5ldC1cdTAwM2V4ZCwgbmV0LVx1MDAzZXJlbW90ZV90cmFuc21pdF9wYXRoKTtcbitcdHRibmV0X2Nvbm5lY3RfZmFpbGVkKG5ldCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHRibmV0X2xvZ2luX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzQ6NDIuNzM5MzY2MDc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyOTU5NzkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jYC4gSXQgc2VlbXMgdGhleSd2ZSBhZGRlZCBhIGB0Ym5ldF9jb25uZWN0X2ZhaWxlZGAgZnVuY3Rpb24gYW5kIGFyZSBjYWxsaW5nIGl0IHdpdGhpbiBgdGJuZXRfY29ubmVjdGVkX3dvcmtgIHdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcuIFBsdXMsIHRoZXJlJ3MgdGhpcyBgdGJfeGRvbWFpbl9yZWxlYXNlX2luX2hvcGlkYCBjYWxsIGFuZCBhIGNoZWNrIGJlZm9yZSBjYWxsaW5nIGB0Ym5ldF9jb25uZWN0X2ZhaWxlZGAuIFRoYXQncyBzdGFuZGFyZCBlcnJvciBoYW5kbGluZywgbm90aGluZyBncm91bmRicmVha2luZyB5ZXQuXG5cbkJ1dCB3YWl0LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLi4uIG5vdyBteSBicmFpbidzIGdvaW5nLiBDYW4gd2UgZnV6eiB0aGlzIGluIFFFTVU/IFRodW5kZXJib2x0IG5ldHdvcmtpbmcsIHRoYXQncyBub3Qgc29tZXRoaW5nIHlvdSBjYW4ganVzdCBkbyB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlLCByaWdodD8gT3IgYXQgbGVhc3QgcHJvcGVyIGVtdWxhdGlvbi4gSSBrbm93IGl0J3MgYSBjcml0aWNhbCBhcmVhLCBidXQgZ2VuZXJhbGx5LCBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGlzIGhpZ2hseSBoYXJkd2FyZS1kZXBlbmRlbnQuXG5cblNvLCBRRU1VLi4uIGRvZXMgc3RhbmRhcmQgUUVNVSBldmVuICpoYXZlKiBUaHVuZGVyYm9sdCBlbXVsYXRpb24/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnkgb2ZmaGFuZC4gSXQncyBvZnRlbiBhIHByZXR0eSBzcGVjaWFsaXplZCBhcmVhLiBOZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVyZSdzIGFueSBzb2Z0d2FyZS1iYXNlZCBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciBUaHVuZGVyYm9sdC4gTGV0J3MgZG8gYSBxdWljayBgZ3JlcGAgc2VhcmNoIGZvciBcInRodW5kZXJib2x0XCIgaW4gdGhlIFFFTVUgc291cmNlIG9yIGFueSByZWxldmFudCBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiBhbnl0aGluZyBwb3BzIHVwLiBOZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgbGF5ZXIgYmVmb3JlIGV2ZW4gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGZ1enppbmcgc3RyYXRlZ2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjQ3Ljc2ODk2Njk2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ4OTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHVuZGVyYm9sdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90aHVuZGVyYm9sdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnPTI9Y29uZmlnIFVTQjRfTkVUXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnLTExLVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZzoxMjpcXHQgIGNhbGxlZCB0aHVuZGVyYm9sdF9uZXQuXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19VU0I0X05FVCkgOj0gdGh1bmRlcmJvbHRfbmV0Lm9cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9NYWtlZmlsZTozOnRodW5kZXJib2x0X25ldC1vYmpzIDo9IG1haW4ubyB0cmFjZS5vXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvTWFrZWZpbGUtNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvc2l6ZXMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjE6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RodW5kZXJib2x0LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTIyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC91dWlkLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDMtI2RlZmluZSBUQk5FVF9NQVhfUEFZTE9BRF9TSVpFXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0NDpcXHQoVEJORVRfRlJBTUVfU0laRSAtIHNpemVvZihzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyKSlcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDUtLyogUnggcGFja2V0cyBuZWVkIHRvIGhvbGQgc3BhY2UgZm9yIHNrYl9zaGFyZWRfaW5mbyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTUzLS8qKlxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo1NDogKiBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIC0gSGVhZGVyIGZvciBlYWNoIFRodW5kZXJib2x0IGZyYW1lXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTU1LSAqIEBmcmFtZV9zaXplOiBzaXplIG9mIHRoZSBkYXRhIHdpdGggdGhlIGZyYW1lXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNjMtICovXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjY0OnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9mcmFtZV9oZWFkZXIge1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy02NS1cXHRfX2xlMzIgZnJhbWVfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03MC1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzE6ZW51bSB0aHVuZGVyYm9sdF9pcF9mcmFtZV9wZGYge1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy03Mi1cXHRUQklQX1BERl9GUkFNRV9TVEFSVCA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzUtXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjc2OmVudW0gdGh1bmRlcmJvbHRfaXBfdHlwZSB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTc3LVxcdFRCSVBfTE9HSU4sXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODItXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjgzOnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIge1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy04NC1cXHR1MzIgcm91dGVfaGk7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtOTctXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjk4OnN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjk5OlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDAtXFx0dTMyIHByb3RvX3ZlcnNpb247XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTA2LVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMDc6c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ2luX3Jlc3BvbnNlIHtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTA4OlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDktXFx0dTMyIHN0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTQtXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjExNTpzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfbG9nb3V0IHtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTE2OlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9oZWFkZXIgaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTctfTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoxMTk6c3RydWN0IHRodW5kZXJib2x0X2lwX3N0YXR1cyB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjEyMDpcXHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyIGhkcjtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTIxLVxcdHUzMiBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTgyPXN0cnVjdCB0Ym5ldCB7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTk5LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBkaXNjb25uZWN0X3dvcms7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjIwMDpcXHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyIHJ4X2hkcjtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjAxLVxcdHN0cnVjdCB0Ym5ldF9yaW5nIHJ4X3Jpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MjIwPU1PRFVMRV9QQVJNX0RFU0MoZTJlLCBcXFwiVVNCNE5FVCBmdWxsIGVuZC10by1lbmQgZmxvdyBjb250cm9sIChkZWZhdWx0OiB0cnVlKVxcXCIpO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yMjEtXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjIyMjpzdGF0aWMgdm9pZCB0Ym5ldF9maWxsX2hlYWRlcihzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfaGVhZGVyICpoZHIsIHU2NCByb3V0ZSxcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjIzLVxcdHU4IHNlcXVlbmNlLCBjb25zdCB1dWlkX3QgKmluaXRpYXRvcl91dWlkLCBjb25zdCB1dWlkX3QgKnRhcmdldF91dWlkLFxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyMjQ6XFx0ZW51bSB0aHVuZGVyYm9sdF9pcF90eXBlIHR5cGUsIHNpemVfdCBzaXplLCB1MzIgY29tbWFuZF9pZClcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNDI9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXNwb25zZShzdHJ1Y3QgdGJuZXQgKm5ldCwgdTY0IHJvdXRlLCB1OCBzZXF1ZW5jZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNDQte1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyNDU6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ2luX3Jlc3BvbnNlIHJlcGx5O1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNDYtXFx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gbmV0LVxcdTAwM2V4ZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNTk9c3RhdGljIGludCB0Ym5ldF9sb2dpbl9yZXF1ZXN0KHN0cnVjdCB0Ym5ldCAqbmV0LCB1OCBzZXF1ZW5jZSlcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjYwLXtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjYxOlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbl9yZXNwb25zZSByZXBseTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjYyOlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9sb2dpbiByZXF1ZXN0O1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yNjMtXFx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gbmV0LVxcdTAwM2V4ZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0yNzk9c3RhdGljIGludCB0Ym5ldF9sb2dvdXRfcmVzcG9uc2Uoc3RydWN0IHRibmV0ICpuZXQsIHU2NCByb3V0ZSwgdTggc2VxdWVuY2UsXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjgxLXtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MjgyOlxcdHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9zdGF0dXMgcmVwbHk7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTI4My1cXHRzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQgPSBuZXQtXFx1MDAzZXhkO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTI5Mz1zdGF0aWMgaW50IHRibmV0X2xvZ291dF9yZXF1ZXN0KHN0cnVjdCB0Ym5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0yOTQte1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyOTU6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ291dCByZXF1ZXN0O1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzoyOTY6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX3N0YXR1cyByZXBseTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMjk3LVxcdHN0cnVjdCB0Yl94ZG9tYWluICp4ZCA9IG5ldC1cXHUwMDNleGQ7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9NDI1PXN0YXRpYyBpbnQgdGJuZXRfaGFuZGxlX3BhY2tldChjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00MjYte1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0Mjc6XFx0Y29uc3Qgc3RydWN0IHRodW5kZXJib2x0X2lwX2xvZ2luICpwa2cgPSBidWY7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQyOC1cXHRzdHJ1Y3QgdGJuZXQgKm5ldCA9IGRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNDM0LVxcdC8qIE1ha2Ugc3VyZSB0aGUgcGFja2V0IGlzIGZvciB1cyAqL1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0MzU6XFx0aWYgKHNpemUgXFx1MDAzYyBzaXplb2Yoc3RydWN0IHRodW5kZXJib2x0X2lwX2hlYWRlcikpXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz03NTA9c3RhdGljIGJvb2wgdGJuZXRfY2hlY2tfZnJhbWUoc3RydWN0IHRibmV0ICpuZXQsIGNvbnN0IHN0cnVjdCB0Ym5ldF9mcmFtZSAqdGYsXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjc1MTpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyICpoZHIpXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTc1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9ODI1PXN0YXRpYyBpbnQgdGJuZXRfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtODMyLVxcdHdoaWxlIChyeF9wYWNrZXRzIFxcdTAwM2MgYnVkZ2V0KSB7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjgzMzpcXHRcXHRjb25zdCBzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyICpoZHI7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTgzNC1cXHRcXHR1bnNpZ25lZCBpbnQgaGRyX3NpemUgPSBzaXplb2YoKmhkcik7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MTAxNT1zdGF0aWMgYm9vbCB0Ym5ldF94bWl0X2NzdW1fYW5kX21hcChzdHJ1Y3QgdGJuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMDE3LXtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTAxODpcXHRzdHJ1Y3QgdGh1bmRlcmJvbHRfaXBfZnJhbWVfaGVhZGVyICpoZHIgPSBwYWdlX2FkZHJlc3MoZnJhbWVzWzBdLVxcdTAwM2VwYWdlKTtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTAxOS1cXHRzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gdGJfcmluZ19kbWFfZGV2aWNlKG5ldC1cXHUwMDNldHhfcmluZy5yaW5nKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0xMTMwPXN0YXRpYyBuZXRkZXZfdHhfdCB0Ym5ldF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTEzNS1cXHR1MTYgZnJhbWVfaWQgPSBhdG9taWNfcmVhZChcXHUwMDI2bmV0LVxcdTAwM2VmcmFtZV9pZCk7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjExMzY6XFx0c3RydWN0IHRodW5kZXJib2x0X2lwX2ZyYW1lX2hlYWRlciAqaGRyO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMTM3LVxcdHVuc2lnbmVkIGludCBsZW4gPSBza2JfaGVhZGxlbihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTEzNjU9c3RhdGljIGludCB0Ym5ldF9wcm9iZShzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3QgdGJfc2VydmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTM5MC1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTM5MTpcXHRzdHJjcHkoZGV2LVxcdTAwM2VuYW1lLCBcXFwidGh1bmRlcmJvbHQlZFxcXCIpO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xMzkyLVxcdGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0Ym5ldF9uZXRkZXZfb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE0MTAtXFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyA9IGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjE0MTE6XFx0ZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4gKz0gc2l6ZW9mKHN0cnVjdCB0aHVuZGVyYm9sdF9pcF9mcmFtZV9oZWFkZXIpO1xcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xNDEyLVxcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTE0ODk9c3RhdGljIHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciB0Ym5ldF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMTQ5MS1cXHRcXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MTQ5MjpcXHRcXHQubmFtZSA9IFxcXCJ0aHVuZGVyYm9sdC1uZXRcXFwiLFxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0xNDkzLVxcdFxcdC5wbSA9IHBtX3NsZWVwX3B0cihcXHUwMDI2dGJuZXRfcG1fb3BzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L3RyYWNlLmgtOS0jdW5kZWYgVFJBQ0VfU1lTVEVNXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvdHJhY2UuaDoxMDojZGVmaW5lIFRSQUNFX1NZU1RFTSB0aHVuZGVyYm9sdF9uZXRcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC90cmFjZS5oLTExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNDo0Ny44MTU0NjIyNjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA4MTMyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGh1bmRlcmJvbHQgRnV6emluZyB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHRodW5kZXJib2x0LW5ldGAsIHNwZWNpZmljYWxseSB0aGUgVVNCNF9ORVQgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZnV6eiB0aGlzIHRoaW5nIHVzaW5nIHN5emthbGxlcj8gVGhhdCdzIHRoZSBvYnZpb3VzIGZpcnN0IHF1ZXN0aW9uLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyIGV2ZW4gaGFzIGFueSBkZXNjcmlwdGlvbnMgcmVsYXRlZCB0byB0aHVuZGVyYm9sdC4gQWgsIHJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb25zISBUaGV5J3JlIHJlbWluZGluZyBtZSB0aGF0IEkgY2FuJ3QganVzdCBibGluZGx5IHNlYXJjaCB0aGUgc3l6a2FsbGVyIGNvZGUgYmFzZSAoYHN5cy8qYCkgZm9yIFwidGh1bmRlcmJvbHRcIiBiZWNhdXNlIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggaG93IHN5emthbGxlciBoYW5kbGVzIGl0cyBpbnRlcm5hbCBwc2V1ZG8tc3lzY2FsbHMuIFRoaW5ncyB0aGF0IHN0YXJ0IHdpdGggXCJzeXpfXCIgYXJlIG9mZi1saW1pdHMgZm9yIGEgc3RyYWlnaHQgc2VhcmNoIGhlcmUuIEkgbmVlZCB0byB1c2UgdGhvc2Ugb3RoZXIgdG9vbHMgdGhleSBtZW50aW9uZWQgLSBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgLSBpZiBJJ20gbG9va2luZyBmb3IgKnJlYWwqIGtlcm5lbC1sZXZlbCBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gU28sIGJhY2sgdG8gdGhlIGluaXRpYWwgcXVlc3Rpb246IGFyZSB0aGVyZSAqYW55KiBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciB0aHVuZGVyYm9sdCBhdCBhbGw/IEkgbmVlZCB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNDo1Mi42MjM1OTg0ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyOTY3MzgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHVuZGVyYm9sdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjI0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbToxOldoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMi1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT01PURlc2NyaXB0aW9uOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMjAtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW06MjE6V2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvJG5hbWVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0yMi1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT0yNT1EZXNjcmlwdGlvbjpcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTI5LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjMwOldoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlLyRuYW1lL2luZGV4XFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tMzEtRGF0ZTpcXHRcXHRTZXAgMjAyNlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09MzQ9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS0zOC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbTozOTpXaGF0OlxcdFxcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXFx1MDAzY3hkb21haW5cXHUwMDNlLlxcdTAwM2NzZXJ2aWNlXFx1MDAzZS8kbmFtZS9pbl9ob3BpZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTQwLURhdGU6XFx0XFx0U2VwIDIwMjZcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtPTQzPURlc2NyaXB0aW9uOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNTctXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW06NTg6V2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvJG5hbWUvb3V0X2hvcGlkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW0tNTktRGF0ZTpcXHRcXHRTZXAgMjAyNlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy10aHVuZGVyYm9sdF9zdHJlYW09NjI9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS02OC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbTo2OTpXaGF0OlxcdFxcdC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW0vXFx1MDAzY3hkb21haW5cXHUwMDNlLlxcdTAwM2NzZXJ2aWNlXFx1MDAzZS8kbmFtZS9yaW5nX3NpemVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS03MC1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbT03Mz1EZXNjcmlwdGlvbjpcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtLTc2LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdGh1bmRlcmJvbHRfc3RyZWFtOjc3OldoYXQ6XFx0XFx0L3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbS9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlLyRuYW1lL3Rocm90dGxpbmdcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXRodW5kZXJib2x0X3N0cmVhbS03OC1EYXRlOlxcdFxcdFNlcCAyMDI2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9ib290X2FjbFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTItRGF0ZTpcXHRcXHRKdW4gMjAxOFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9NT1EZXNjcmlwdGlvbjpcXHRIb2xkcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGRldmljZSB1bmlxdWVfaWRzIHRoYXRcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI0OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9kZWF1dGhvcml6YXRpb25cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNS1EYXRlOlxcdFxcdE1heSAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yOD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSB0ZWxscyB3aGV0aGVyIHRoZSBzeXN0ZW0gc3VwcG9ydHNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMyLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMzOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZG9tYWluWC9pb21tdV9kbWFfcHJvdGVjdGlvblxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0LURhdGU6XFx0XFx0TWFyIDIwMTlcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTM3PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIHRlbGxzIHdoZXRoZXIgdGhlIHN5c3RlbSB1c2VzIElPTU1VXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC00MS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo0MjpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2RvbWFpblgvc2VjdXJpdHlcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC00My1EYXRlOlxcdFxcdFNlcCAyMDE3XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD00Nj1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBob2xkcyBjdXJyZW50IFRodW5kZXJib2x0IHNlY3VyaXR5IGxldmVsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC02My1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo2NDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2F1dGhvcml6ZWRcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC02NS1EYXRlOlxcdFxcdFNlcCAyMDE3XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD02OD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGF1dGhvcml6ZSBUaHVuZGVyYm9sdCBkZXZpY2VzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC05Ny1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDo5ODpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL2Jvb3RcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC05OS1EYXRlOlxcdFxcdEp1biAyMDE4XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xMDI9RGVzY3JpcHRpb246XFx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgMSBpZiBUaHVuZGVyYm9sdCBkZXZpY2Ugd2FzIGFscmVhZHlcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEwNC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMDU6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9nZW5lcmF0aW9uXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTA2LURhdGU6XFx0XFx0SmFuIDIwMjBcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTEwOT1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgVGh1bmRlcmJvbHRcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTExMi1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMTM6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9rZXlcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMTQtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTE3PURlc2NyaXB0aW9uOlxcdFdoZW4gYSBkZXZpY2VzIHN1cHBvcnRzIFRodW5kZXJib2x0IHNlY3VyZSBjb25uZWN0IGl0IHdpbGxcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEyMi1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMjM6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9kZXZpY2VcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjQtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTI3PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGlkIG9mIHRoaXMgZGV2aWNlIGV4dHJhY3RlZCBmcm9tXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMjktXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTMwOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vZGV2aWNlX25hbWVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xMzEtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTM0PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIG5hbWUgb2YgdGhpcyBkZXZpY2UgZXh0cmFjdGVkIGZyb21cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEzNi1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxMzc6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi9tYXhob3BpZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTEzOC1EYXRlOlxcdFxcdEp1bCAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xNDE9RGVzY3JpcHRpb246XFx0T25seSBzZXQgZm9yIFhEb21haW5zLiBUaGUgbWF4aW11bSBIb3BJRCB0aGUgb3RoZXIgaG9zdFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTQzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE0NDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL3J4X3NwZWVkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTQ1LURhdGU6XFx0XFx0SmFuIDIwMjBcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE0OD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSByZXBvcnRzIHRoZSBkZXZpY2UgUlggc3BlZWQgcGVyIGxhbmUuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNTAtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTUxOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vcnhfbGFuZXNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNTItRGF0ZTpcXHRcXHRKYW4gMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTU1PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIHJlcG9ydHMgbnVtYmVyIG9mIFJYIGxhbmVzIHRoZSBkZXZpY2UgaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1Ny1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxNTg6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi90eF9zcGVlZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE1OS1EYXRlOlxcdFxcdEphbiAyMDIwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xNjI9RGVzY3JpcHRpb246XFx0VGhpcyBhdHRyaWJ1dGUgcmVwb3J0cyB0aGUgVFggc3BlZWQgcGVyIGxhbmUuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNjQtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTY1OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vdHhfbGFuZXNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNjYtRGF0ZTpcXHRcXHRKYW4gMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTY5PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIHJlcG9ydHMgbnVtYmVyIG9mIFRYIGxhbmVzIHRoZSBkZXZpY2UgaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE3MS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxNzI6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi92ZW5kb3JcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xNzMtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MTc2PURlc2NyaXB0aW9uOlxcdFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHZlbmRvciBpZCBvZiB0aGlzIGRldmljZSBleHRyYWN0ZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE3OC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoxNzk6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLy4uLi92ZW5kb3JfbmFtZVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTE4MC1EYXRlOlxcdFxcdFNlcCAyMDE3XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0xODM9RGVzY3JpcHRpb246XFx0VGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdmVuZG9yIG5hbWUgb2YgdGhpcyBkZXZpY2UgZXh0cmFjdGVkXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0xODUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MTg2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8uLi4vdW5pcXVlX2lkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTg3LURhdGU6XFx0XFx0U2VwIDIwMTdcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE5MD1EZXNjcmlwdGlvbjpcXHRUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB1bmlxdWVfaWQgc3RyaW5nIG9mIHRoaXMgZGV2aWNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTk0LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjE5NTpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV92ZXJzaW9uXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMTk2LURhdGU6XFx0XFx0U2VwIDIwMTdcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTE5OT1EZXNjcmlwdGlvbjpcXHRJZiB0aGUgZGV2aWNlIGhhcyB1cGdyYWRlYWJsZSBmaXJtd2FyZSB0aGUgdmVyc2lvblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjAzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjIwNDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV9hdXRoZW50aWNhdGVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yMDUtRGF0ZTpcXHRcXHRTZXAgMjAxN1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjA4PURlc2NyaXB0aW9uOlxcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjMxLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjIzMjpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvLi4uL252bV9hdXRoZW50aWNhdGVfb25fZGlzY29ubmVjdFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTIzMy1EYXRlOlxcdFxcdE9jdCAyMDIwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yMzY9RGVzY3JpcHRpb246XFx0Rm9yIHN1cHBvcnRlZCBkZXZpY2VzLCBhdXRvbWF0aWNhbGx5IGF1dGhlbnRpY2F0ZSB0aGUgbmV3IFRodW5kZXJib2x0XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNDUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MjQ2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlL2tleVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI0Ny1EYXRlOlxcdFxcdEphbiAyMDE4XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yNTA9RGVzY3JpcHRpb246XFx0VGhpcyBjb250YWlucyBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBkaXJlY3RvcnkgdGhlIFhEb21haW5cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI2MC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyNjE6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvbW9kYWxpYXNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yNjItRGF0ZTpcXHRcXHRKYW4gMjAxOFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MjY1PURlc2NyaXB0aW9uOlxcdFN0b3JlcyB0aGUgc2FtZSBNT0RBTElBUyB2YWx1ZSBlbWl0dGVkIGJ5IHVldmVudCBmb3JcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI2Ny1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyNjg6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvcHJ0Y2lkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjY5LURhdGU6XFx0XFx0SmFuIDIwMThcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI3Mj1EZXNjcmlwdGlvbjpcXHRUaGlzIGNvbnRhaW5zIFhEb21haW4gcHJvdG9jb2wgaWRlbnRpZmllciB0aGUgWERvbWFpblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjc0LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI3NTpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXFx1MDAzY3hkb21haW5cXHUwMDNlLlxcdTAwM2NzZXJ2aWNlXFx1MDAzZS9wcnRjdmVyc1xcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI3Ni1EYXRlOlxcdFxcdEphbiAyMDE4XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yNzk9RGVzY3JpcHRpb246XFx0VGhpcyBjb250YWlucyBYRG9tYWluIHByb3RvY29sIHZlcnNpb24gdGhlIFhEb21haW5cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTI4MS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDoyODI6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2N4ZG9tYWluXFx1MDAzZS5cXHUwMDNjc2VydmljZVxcdTAwM2UvcHJ0Y3JldnNcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yODMtRGF0ZTpcXHRcXHRKYW4gMjAxOFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9Mjg2PURlc2NyaXB0aW9uOlxcdFRoaXMgY29udGFpbnMgWERvbWFpbiBzb2Z0d2FyZSB2ZXJzaW9uIHRoZSBYRG9tYWluXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yODgtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6Mjg5OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cXHUwMDNjeGRvbWFpblxcdTAwM2UuXFx1MDAzY3NlcnZpY2VcXHUwMDNlL3BydGNzdG5zXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjkwLURhdGU6XFx0XFx0SmFuIDIwMThcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0PTI5Mz1EZXNjcmlwdGlvbjpcXHRUaGlzIGNvbnRhaW5zIFhEb21haW4gc2VydmljZSBzcGVjaWZpYyBzZXR0aW5ncyBhc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMjk1LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjI5NjpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9jb25uZWN0b3JcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0yOTctRGF0ZTpcXHRcXHRBcHJpbCAyMDIyXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0yOTk9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMDUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzA2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy91c2I0X3BvcnRYL2xpbmtcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMDctRGF0ZTpcXHRcXHRTZXAgMjAyMVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzEwPURlc2NyaXB0aW9uOlxcdFJldHVybnMgdGhlIGN1cnJlbnQgbGluayBtb2RlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMTItXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzEzOldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy91c2I0X3BvcnRYL29mZmxpbmVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMTQtRGF0ZTpcXHRcXHRTZXAgMjAyMVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzE3PURlc2NyaXB0aW9uOlxcdFdyaXRpbmcgMSB0byB0aGlzIGF0dHJpYnV0ZSBwdXRzIHRoZSBVU0I0IHBvcnQgaW50b1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzI3LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjMyODpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvdXNiNF9wb3J0WC9yZXNjYW5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zMjktRGF0ZTpcXHRcXHRTZXAgMjAyMVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzMyPURlc2NyaXB0aW9uOlxcdFdoZW4gdGhlIFVTQjQgcG9ydCBpcyBpbiBvZmZsaW5lIG1vZGUgd3JpdGluZyAxIHRvIHRoaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTMzOC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozMzk6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2NkZXZpY2VcXHUwMDNlOlxcdTAwM2Nwb3J0XFx1MDAzZS5cXHUwMDNjaW5kZXhcXHUwMDNlL2RldmljZVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0MC1EYXRlOlxcdFxcdE9jdCAyMDIwXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdD0zNDM9RGVzY3JpcHRpb246XFx0UmV0aW1lciBkZXZpY2UgaWRlbnRpZmllciByZWFkIGZyb20gdGhlIGhhcmR3YXJlLlxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0LTM0NC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdDozNDU6V2hhdDpcXHRcXHQvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL1xcdTAwM2NkZXZpY2VcXHUwMDNlOlxcdTAwM2Nwb3J0XFx1MDAzZS5cXHUwMDNjaW5kZXhcXHUwMDNlL252bV9hdXRoZW50aWNhdGVcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNDYtRGF0ZTpcXHRcXHRPY3QgMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzQ5PURlc2NyaXB0aW9uOlxcdFdoZW4gbmV3IE5WTSBpbWFnZSBpcyB3cml0dGVuIHRvIHRoZSBub24tYWN0aXZlIE5WTVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQtMzU5LVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXRodW5kZXJib2x0OjM2MDpXaGF0OlxcdFxcdC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvXFx1MDAzY2RldmljZVxcdTAwM2U6XFx1MDAzY3BvcnRcXHUwMDNlLlxcdTAwM2NpbmRleFxcdTAwM2UvbnZtX3ZlcnNpb25cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjEtRGF0ZTpcXHRcXHRPY3QgMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ9MzY0PURlc2NyaXB0aW9uOlxcdEhvbGRzIHJldGltZXIgTlZNIHZlcnNpb24gbnVtYmVyLiBGb3JtYXQ6ICV4LiV4LCBtYWpvci5taW5vci5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjUtXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQ6MzY2OldoYXQ6XFx0XFx0L3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9cXHUwMDNjZGV2aWNlXFx1MDAzZTpcXHUwMDNjcG9ydFxcdTAwM2UuXFx1MDAzY2luZGV4XFx1MDAzZS92ZW5kb3JcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy10aHVuZGVyYm9sdC0zNjctRGF0ZTpcXHRcXHRPY3QgMjAyMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9pbmRleC5yc3Q9MTQwPUhvdyB0byBjb25maWd1cmUgeW91ciBoYXJkd2FyZSB3aXRoaW4geW91ciBMaW51eCBzeXN0ZW0uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xNjQtICAgdGhlcm1hbC9pbmRleFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0OjE2NTogICB0aHVuZGVyYm9sdFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaW5kZXgucnN0LTE2Ni0gICB2Z2Etc29mdGN1cnNvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzA9TW9yZSBkZXRhaWxzIGFib3V0IHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIFRodW5kZXJib2x0IGRldmljZXMgY2FuIGJlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzE6Zm91bmQgaW4gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdGh1bmRlcmJvbHQuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zND1tYW51YWwgd29yayBjYW4gYWRkIGZvbGxvd2luZyBsaW5lIHRvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozNzogIEFDVElPTj09XFxcImFkZFxcXCIsIFNVQlNZU1RFTT09XFxcInRodW5kZXJib2x0XFxcIiwgQVRUUnthdXRob3JpemVkfT09XFxcIjBcXFwiLCBBVFRSe2F1dGhvcml6ZWR9PVxcXCIxXFxcIlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9NTM9VGhlIHNlY3VyaXR5IGxldmVscyBhcmUgYXMgZm9sbG93czpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTYyLSAgICBCYXNlZCBvbiB0aGUgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0aHJvdWdoXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6NjM6ICAgIGBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlc2BgLCB0aGUgdXNlciB0aGVuIGNhbiBtYWtlIHRoZSBkZWNpc2lvbi5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC02NC0gICAgSW4gQklPUyBzZXR0aW5ncyB0aGlzIGlzIHR5cGljYWxseSBjYWxsZWQgKlVuaXF1ZSBJRCouXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD04Nz1UaGUgY3VycmVudCBzZWN1cml0eSBsZXZlbCBjYW4gYmUgcmVhZCBmcm9tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6ODg6YGAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzL2RvbWFpblgvc2VjdXJpdHlgYCB3aGVyZSBgYGRvbWFpblhgYCBpc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTg5LXRoZSBUaHVuZGVyYm9sdCBkb21haW4gdGhlIGhvc3QgY29udHJvbGxlciBtYW5hZ2VzLiBUaGVyZSBpcyB0eXBpY2FsbHlcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTk2PUVhY2ggVGh1bmRlcmJvbHQgZGV2aWNlIHBsdWdnZWQgaW4gd2lsbCBhcHBlYXIgaW4gc3lzZnMgdW5kZXJcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo5NzpgYC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXNgYC4gVGhlIGRldmljZSBkaXJlY3RvcnkgY2Fycmllc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTk4LWluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHBhcnRpY3VsYXIgZGV2aWNlLFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTAzPVdoZW4gYSBkZXZpY2UgaXMgcGx1Z2dlZCBpbiBpdCB3aWxsIGFwcGVhciBpbiBzeXNmcyBhcyBmb2xsb3dzOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMDQtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTA1OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvYXV0aG9yaXplZFxcdC0gMFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEwNjogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0xL2RldmljZVxcdC0gMHg4MDA0XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTA3OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTEvZGV2aWNlX25hbWVcXHQtIFRodW5kZXJib2x0IHRvIEZpcmVXaXJlIEFkYXB0ZXJcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMDg6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS92ZW5kb3JcXHQtIDB4MVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEwOTogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0xL3ZlbmRvcl9uYW1lXFx0LSBBcHBsZSwgSW5jLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjExMDogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0xL3VuaXF1ZV9pZFxcdC0gZTAzNzZmMDAtMDMwMC0wMTAwLWZmZmYtZmZmZmZmZmZmZmZmXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTExLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTEzPWNyZWF0ZWQgeWV0LiBUaGUgdXNlciBjYW4gYXV0aG9yaXplIHRoZSBkZXZpY2UgYnkgc2ltcGx5IGVudGVyaW5nOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xMTQtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTE1OiAgIyBlY2hvIDEgXFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMS9hdXRob3JpemVkXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTE2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTIyPWZ1dHVyZSBjb25uZWN0czo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTIzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyNDogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2F1dGhvcml6ZWRcXHQtIDBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjU6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9kZXZpY2VcXHQtIDB4MzA1XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTI2OiAgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMvZGV2aWNlX25hbWVcXHQtIEFLaVRpTyBUaHVuZGVyMyBQQ0llIEJveFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEyNzogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2tleVxcdFxcdC1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjg6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy92ZW5kb3JcXHQtIDB4NDFcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxMjk6ICAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy92ZW5kb3JfbmFtZVxcdC0gaW5YdHJvblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjEzMDogIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL3VuaXF1ZV9pZFxcdC0gZGMwMTAwMDAtMDAwMC04NTA4LWEyMmQtMzJjYTY0MjFjYjE2XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTMxLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTM5PXBsdWdnZWQgYSBrZXkgbmVlZHMgdG8gYmUgY3JlYXRlZCBhbmQgc2VudCB0byB0aGUgZGV2aWNlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE0MS0gICMga2V5PSQob3BlbnNzbCByYW5kIC1oZXggMzIpXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTQyOiAgIyBlY2hvICRrZXkgXFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9rZXlcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoxNDM6ICAjIGVjaG8gMSBcXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0zL2F1dGhvcml6ZWRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xNDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0xNDk9ZGV2aWNlIHVzaW5nIHRoZSBzYW1lIGtleTo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTUwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjE1MTogICMgZWNobyAka2V5IFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTMva2V5XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTUyOiAgIyBlY2hvIDIgXFx1MDAzZSAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMy9hdXRob3JpemVkXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTUzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MTg2PXN5c3RlbXMgY2FuIGJlIGlkZW50aWZpZWQgYnkgcmVhZGluZyBgYDFgYCBmcm9tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MTg3OmBgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy9kb21haW5YL2lvbW11X2RtYV9wcm90ZWN0aW9uYGAgYXR0cmlidXRlLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTE4OC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTE5NT1mb2xsb3dpbmcgYGB1ZGV2YGAgcnVsZTo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMTk2LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjE5NzogIEFDVElPTj09XFxcImFkZFxcXCIsIFNVQlNZU1RFTT09XFxcInRodW5kZXJib2x0XFxcIiwgQVRUUlN7aW9tbXVfZG1hX3Byb3RlY3Rpb259PT1cXFwiMVxcXCIsIEFUVFJ7YXV0aG9yaXplZH09PVxcXCIwXFxcIiwgQVRUUnthdXRob3JpemVkfT1cXFwiMVxcXCJcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0xOTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0yNTA9b2YgdGhlIGhvc3Qgb3IgZGV2aWNlLiBFeGFtcGxlIG9uIGhvdyB0byB1cGRhdGUgSW50ZWwgTlVDNmk3S1lLXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNTItXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MjUzOiAgIyBkZCBpZj1LWUtfVEJUX0ZXXzAwMTguYmluIG9mPS9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV9ub25fYWN0aXZlMC9udm1lbVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI1NC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI1Nj11cGdyYWRlIHByb2Nlc3MgYXMgZm9sbG93czo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjU3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI1ODogICMgZWNobyAxIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvbnZtX2F1dGhlbnRpY2F0ZVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI1OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI2ND1jb21tYW5kczo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjY1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI2NjogICMgY2F0IC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL252bV9hdXRoZW50aWNhdGVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0yNjctICAweDBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyNjg6ICAjIGNhdCAvc3lzL2J1cy90aHVuZGVyYm9sdC9kZXZpY2VzLzAtMC9udm1fdmVyc2lvblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI2OS0gIDE4LjBcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTI4NT1pcyB0byBmaXJzdCBwdXQgdGhlIFVTQjQgcG9ydCBpbnRvIG9mZmxpbmUgbW9kZTo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjg2LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjI4NzogICMgZWNobyAxIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9vZmZsaW5lXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjg4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MjkxPWZvciB0aGUgcmV0aW1lcnM6OlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTI5Mi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDoyOTM6ICAjIGVjaG8gMSBcXHUwMDNlIC9zeXMvYnVzL3RodW5kZXJib2x0L2RldmljZXMvMC0wL3VzYjRfcG9ydDEvcmVzY2FuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMjk0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mjk4PW1vZGUpIHNvIGFmdGVyIHdyaXRpbmcgYGAxYGAgdG8gYGBudm1fYXV0aGVudGljYXRlYGAgb25lIHNob3VsZCB3YWl0IGZvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzAwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjMwMTogICMgZWNobyAxIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9yZXNjYW5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zMDItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zMDQ9ZnVuY3Rpb25hbCBzdGF0ZSBhZ2Fpbjo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjMwNjogICMgZWNobyAwIFxcdTAwM2UgL3N5cy9idXMvdGh1bmRlcmJvbHQvZGV2aWNlcy8wLTAvdXNiNF9wb3J0MS9vZmZsaW5lXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzA3LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9MzIxPVRoZSBkcml2ZXIgc2VuZHMgYGBLT0JKX0NIQU5HRWBgIGV2ZW50cyB0byB1c2Vyc3BhY2Ugd2hlbiB0aGVyZSBpcyBhXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzIyOnR1bm5lbGluZyBjaGFuZ2UgaW4gdGhlIGBgdGh1bmRlcmJvbHRfZG9tYWluYGAuIFRoZSBub3RpZmljYXRpb24gY2Fycmllc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTMyMy1mb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTM2MT1kbyBpcyB0byBjb25uZWN0IGEgVGh1bmRlcmJvbHQgY2FibGUgYmV0d2VlbiB0aGUgdHdvIGhvc3RzOyB0aGVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozNjI6YGB0aHVuZGVyYm9sdC1uZXRgYCBkcml2ZXIgaXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkuIElmIHRoZSBvdGhlciBob3N0IGlzXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzYzOmFsc28gTGludXggeW91IHNob3VsZCBsb2FkIGBgdGh1bmRlcmJvbHQtbmV0YGAgbWFudWFsbHkgb24gb25lIGhvc3QgKGl0XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzY0LWRvZXMgbm90IG1hdHRlciB3aGljaCBvbmUpOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNjUtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzY2OiAgIyBtb2Rwcm9iZSB0aHVuZGVyYm9sdC1uZXRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zNjctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zNzE9VGhlIGRyaXZlciB3aWxsIGNyZWF0ZSBvbmUgdmlydHVhbCBldGhlcm5ldCBpbnRlcmZhY2UgcGVyIFRodW5kZXJib2x0XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzcyOnBvcnQgd2hpY2ggYXJlIG5hbWVkIGxpa2UgYGB0aHVuZGVyYm9sdDBgYCBhbmQgc28gb24uIEZyb20gdGhpcyBwb2ludFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM3My15b3UgY2FuIGVpdGhlciB1c2Ugc3RhbmRhcmQgdXNlcnNwYWNlIHRvb2xzIGxpa2UgYGBpcGBgIHRvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD0zNzk9c3RyZWFtaW5nIGRhdGEgZGlyZWN0bHkgb3ZlciBhIGNhYmxlIGFzIHdlbGwgKGFrYS4gVVNCNFNUUkVBTSkuIFRoaXMgaXNcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDozODA6cG9zc2libGUgdGhyb3VnaCBgYHRodW5kZXJib2x0LXN0cmVhbWBgIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zODEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6MzgyOlNpbWlsYXJseSB0byBgYHRodW5kZXJib2x0LW5ldGBgIHlvdSBsb2FkIHRoZSBkcml2ZXIgZmlyc3Qgb24gb25lIGVuZDo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzgzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4NDogIGhvc3QxICMgbW9kcHJvYmUgdGh1bmRlcmJvbHQtc3RyZWFtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTM4Nj1UaGVuIHlvdSBjb25maWd1cmUgaXQgdmlhIGBgQ29uZmlnRlNgYDo6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtMzg3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0OjM4ODogIGhvc3QxICMgY2QgL3N5cy9rZXJuZWwvY29uZmlnL3RodW5kZXJib2x0L3N0cmVhbVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTM4OS0gIGhvc3QxICMgbWtkaXIgLXAgMC0xLjAvZGF0YVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9Mzk3PXlvdSBhdXRvbWF0aWNhbGx5OjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC0zOTgtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6Mzk5OiAgaG9zdDIgIyBjZCAvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDAwLSAgaG9zdDIgIyBta2RpciAtcCAwLTMuMC9kYXRhXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdD00MTM9T25jZSB5b3UgYXJlIGRvbmUgd2l0aCB0aGUgc3RyZWFtIHlvdSBjYW4gcmVtb3ZlIHRoZW06OlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0LTQxNC1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MTU6ICBob3N0MiAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MTYtICBob3N0MiAjIHJtZGlyIC1wIDAtMS4wL2RhdGFcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MTc6ICBob3N0MSAjIGNkIC9zeXMva2VybmVsL2NvbmZpZy90aHVuZGVyYm9sdC9zdHJlYW1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MTgtICBob3N0MSAjIHJtZGlyIC1wIDAtMy4wL2RhdGFcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0PTQyMz1JdCBpcyBwb3NzaWJsZSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgc3RyZWFtIGFuZCB5b3UgY2FuIGhhdmUgYm90aCBzdHJlYW1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0MjQ6YW5kIGBgdGh1bmRlcmJvbHQtbmV0YGAgaW4gdXNlIHNpbXVsdGFuZW91c2x5LiBGb3IgZXhhbXBsZSB3ZSBjYW4gY3JlYXRlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDI1LXR3byBzdHJlYW1zIHdpdGggbmFtZSBgYGNvbnRyb2xgYCBhbmQgYGBkYXRhYGAgbGlrZSB0aGlzOjpcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdC00MjYtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q6NDI3OiAgaG9zdDEgIyBjZCAvc3lzL2tlcm5lbC9jb25maWcvdGh1bmRlcmJvbHQvc3RyZWFtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDI4LSAgaG9zdDEgIyBta2RpciAwLTEuMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3Q9NDQyPWEgc3lzZnMgYXR0cmlidXRlIGNhbGxlZCBcXFwiZm9yY2VfcG93ZXJcXFwiLCBzZWVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3RodW5kZXJib2x0LnJzdDo0NDM6RG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1pbnRlbC13bWktdGh1bmRlcmJvbHQgZm9yIGRldGFpbHMuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS90aHVuZGVyYm9sdC5yc3QtNDQ0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3Q9MTc9dGhlIGtlcm5lbCB0aHJvdWdoIHZhcmlvdXMgbmV0d29ya2luZyBvciBsaW1pdGVkIEhXLXNwZWNpZmljIGV4cG9zZWRcXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L3NucC10ZHgtdGhyZWF0LW1vZGVsLnJzdDoxODppbnRlcmZhY2VzIChVU0IsIHRodW5kZXJib2x0KS4gVGhlIGdvYWwgb2YgdGhpcyBkb2N1bWVudCBpcyB0byBleHBsYWluXFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9zbnAtdGR4LXRocmVhdC1tb2RlbC5yc3QtMTktYWRkaXRpb25hbCBhdHRhY2sgdmVjdG9ycyB0aGF0IGFyaXNlIGluIHRoZSBjb25maWRlbnRpYWwgY29tcHV0aW5nIHNwYWNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3Q9NzU9VG9kb2xpc3Q6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3QtMTIwLSogICBzdmdhXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvaW5kZXgucnN0OjEyMToqICAgdGh1bmRlcmJvbHRcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9pbmRleC5yc3QtMTIyLSogICB1ZnNcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdD03Nz1Ub2RvbGlzdDpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjMtKiAgIHN2Z2FcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9pbmRleC5yc3Q6MTI0OiogICB0aHVuZGVyYm9sdFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL2luZGV4LnJzdC0xMjUtKiAgIHVmc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi93bWkvZHJpdmVyLWRldmVsb3BtZW50LWd1aWRlLnJzdD0xMTY9dGhlIG51bWJlciBvZiBpbnN0YW5jZXMgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB3bWlkZXZfaW5zdGFuY2VfY291bnQoKS5cXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0LTExNy1cXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0OjExODpUYWtlIGEgbG9vayBhdCBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC93bWkvdGh1bmRlcmJvbHQuYyBmb3IgYW4gZXhhbXBsZSBXTUkgbWV0aG9kIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL3dtaS9kcml2ZXItZGV2ZWxvcG1lbnQtZ3VpZGUucnN0LTExOS1cXG4tLVxcbk1BSU5UQUlORVJTPTEzNDg1PVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjEzNDg2OkY6XFx0ZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvd21pL3RodW5kZXJib2x0LmNcXG5NQUlOVEFJTkVSUy0xMzQ4Ny1cXG4tLVxcbk1BSU5UQUlORVJTPTI2OTA2PVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjI2OTA3OkY6XFx0ZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jXFxuTUFJTlRBSU5FUlMtMjY5MDgtXFxuLS1cXG5NQUlOVEFJTkVSUz0yNjkxND1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoyNjkxNTpUOlxcdGdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvd2VzdGVyaS90aHVuZGVyYm9sdC5naXRcXG5NQUlOVEFJTkVSUzoyNjkxNjpGOlxcdERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdGh1bmRlcmJvbHQucnN0XFxuTUFJTlRBSU5FUlM6MjY5MTc6RjpcXHRkcml2ZXJzL3RodW5kZXJib2x0L1xcbk1BSU5UQUlORVJTOjI2OTE4OkY6XFx0aW5jbHVkZS9saW51eC90aHVuZGVyYm9sdC5oXFxuTUFJTlRBSU5FUlMtMjY5MTktXFxuLS1cXG5NQUlOVEFJTkVSUz0yNjkyND1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoyNjkyNTpGOlxcdGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L1xcbk1BSU5UQUlORVJTLTI2OTI2LVxcbi0tXFxuZHJpdmVycy9LY29uZmlnPTIxND1zb3VyY2UgXFxcImRyaXZlcnMvcmFzL0tjb25maWdcXFwiXFxuZHJpdmVycy9LY29uZmlnLTIxNS1cXG5kcml2ZXJzL0tjb25maWc6MjE2OnNvdXJjZSBcXFwiZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvS2NvbmZpZy0yMTctXFxuLS1cXG5kcml2ZXJzL01ha2VmaWxlPTE3NT1vYmotJChDT05GSUdfUkFTKVxcdFxcdCs9IHJhcy9cXG5kcml2ZXJzL01ha2VmaWxlOjE3NjpvYmotJChDT05GSUdfVVNCNClcXHRcXHQrPSB0aHVuZGVyYm9sdC9cXG5kcml2ZXJzL01ha2VmaWxlLTE3Ny1vYmotJChDT05GSUdfQ09SRVNJR0hUKVxcdFxcdCs9IGh3dHJhY2luZy9jb3Jlc2lnaHQvXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jPTg3PW5vdXZlYXVfdmdhX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jLTEwMC1cXHQvKiBkb24ndCByZWdpc3RlciBUaHVuZGVyYm9sdCBlR1BVIHdpdGggdmdhX3N3aXRjaGVyb28gKi9cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jOjEwMTpcXHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTAyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmM9MTExPW5vdXZlYXVfdmdhX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jLTEyMy1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ZnYS5jOjEyNDpcXHRpZiAocGNpX2lzX3RodW5kZXJib2x0X2F0dGFjaGVkKHBkZXYpKVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMtMTI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jPTEyNzk9aW50IHJhZGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE0MzAtXFx0XFx0cnVudGltZSA9IHRydWU7XFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM6MTQzMTpcXHRpZiAoIXBjaV9pc190aHVuZGVyYm9sdF9hdHRhY2hlZChyZGV2LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYy0xNDMyLVxcdFxcdHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2NsaWVudChyZGV2LVxcdTAwM2VwZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM9MTUxMz12b2lkIHJhZGVvbl9kZXZpY2VfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jLTE1MjAtXFx0cmFkZW9uX2ZpbmkocmRldik7XFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmM6MTUyMTpcXHRpZiAoIXBjaV9pc190aHVuZGVyYm9sdF9hdHRhY2hlZChyZGV2LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYy0xNTIyLVxcdFxcdHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KHJkZXYtXFx1MDAzZXBkZXYpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa21zLmM9MTAzPWludCByYWRlb25fZHJpdmVyX2xvYWRfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYy0xMzMtXFx0ICAgICgoZmxhZ3MgXFx1MDAyNiBSQURFT05fSVNfSUdQKSA9PSAwKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ttcy5jOjEzNDpcXHQgICAgIXBjaV9pc190aHVuZGVyYm9sdF9hdHRhY2hlZChwZGV2KSlcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYy0xMzUtXFx0XFx0ZmxhZ3MgfD0gUkFERU9OX0lTX1BYO1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjAxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMi1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU9ODU9b2JqLSQoQ09ORklHX0ZVSklUU1VfRVMpICs9IGZqZXMvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6ODY6b2JqLSQoQ09ORklHX1VTQjRfTkVUKSArPSB0aHVuZGVyYm9sdC9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS04Ny1vYmotJChDT05GSUdfTkVUREVWU0lNKSArPSBuZXRkZXZzaW0vXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM0OjU0Ljc1MzI4NTQ0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDQwNjYwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVGh1bmRlcmJvbHQgTmV0d29ya2luZyBDb2RlIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdgIGFuZCBJIHNlZSB0aGlzIGBjb25maWcgVVNCNF9ORVRgIG9wdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgc2VlbXMgdG8gcmVzaWRlIGluIGBkcml2ZXJzL3RodW5kZXJib2x0L2AsIGFzIEknZCBleHBlY3QuIE5vdywgbXkgbWluZCBkcmlmdHMgdG8gZnV6emluZyDigJMgYXJlIHRoZXJlIGFueSBleGlzdGluZyBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzIGRlZmluZWQgZm9yIHRodW5kZXJib2x0PyBObywgcHJvYmFibHkgbm90LCBJIHNob3VsZG4ndCBldmVuIGJvdGhlciBzZWFyY2hpbmcgZm9yIGBzeXpfYC4gQnV0IGhhbmcgb24sIHRoZSBwYXRjaCBJJ20gaW50ZXJlc3RlZCBpbiBpcyBpbiBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jYC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gYmVjb21lczogQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGNvZGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gVGh1bmRlcmJvbHQgbmV0d29ya2luZyBpcyBrbm93biB0byBpbnZvbHZlIFRodW5kZXJib2x0IGRvbWFpbnMgYW5kIFhEb21haW4gY29ubmVjdGlvbnMuIFRoZSB0cmlja3kgcGFydCBpcywgY2FuIFFFTVUgZW11bGF0ZSB0aGUgVGh1bmRlcmJvbHQgaGFyZHdhcmUgaXRzZWxmPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBhdmFpbGFibGUgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgZm9yIHRoaXMsIHNvbWV0aGluZyBzaW1pbGFyIHRvIGhvdyBgbWFjODAyMTFfaHdzaW1gIG9yIGB2aGNpYCB3b3JrIGZvciBvdGhlciBzdWJzeXN0ZW1zLiBUaW1lIHRvIGdyZXAgZm9yIGB0aHVuZGVyYm9sdGAgd2l0aGluIGBkcml2ZXJzL3RodW5kZXJib2x0L2AuIE1heWJlIHRoZXJlJ3MgYSBkZWRpY2F0ZWQgc29mdHdhcmUgdGVzdGluZyBkcml2ZXIgdGhhdCB3b3VsZCBtYWtlIHRoaXMgcHJvY2VzcyBtdWNoIGVhc2llci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0OTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MDAuMTU3MzUzNzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTIyODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt1bml0fHRlc3R8bW9ja3xzaW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMzYxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWc9NDk9Y29uZmlnIFVTQjRfS1VOSVRfVEVTVFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZzo1MDpcXHRib29sIFxcXCJLVW5pdCB0ZXN0c1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy01MS1cXHRkZXBlbmRzIG9uIFVTQjQgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnPTU0PWNvbmZpZyBVU0I0X0RNQV9URVNUXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnOjU1OlxcdHRyaXN0YXRlIFxcXCJETUEgdHJhZmZpYyB0ZXN0IGRyaXZlclxcXCJcXG5kcml2ZXJzL3RodW5kZXJib2x0L0tjb25maWctNTYtXFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnLTU5LVxcdCAgY29ubmVjdGlvbi4gTG9vcGJhY2sgY29ubmVjdGlvbiBjYW4gYmUgZG9uZSBieSBlaXRoZXIgc3BlY2lhbFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZzo2MDpcXHQgIGRvbmdsZSB0aGF0IGhhcyBUWC9SWCBsaW5lcyBjcm9zc2VkLCBvciBieSBzaW1wbHkgY29ubmVjdGluZyBhXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnLTYxLVxcdCAgY2FibGUgYmFjayB0byB0aGUgaG9zdC4gT25seSBlbmFibGUgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnLTY0LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9LY29uZmlnOjY1OlxcdCAgY2FsbGVkIHRodW5kZXJib2x0X2RtYV90ZXN0LlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvS2NvbmZpZy02Ni1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGU9MTA9dGh1bmRlcmJvbHQtJChDT05GSUdfVVNCNF9DT05GSUdGUykgKz0gY29uZmlnZnMub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGU6MTE6dGh1bmRlcmJvbHQtJHtDT05GSUdfVVNCNF9LVU5JVF9URVNUfSArPSB0ZXN0Lm9cXG5kcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlOjEyOkNGTEFHU190ZXN0Lm8gKz0gJChESVNBQkxFX1NUUlVDVExFQUtfUExVR0lOKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNDp0aHVuZGVyYm9sdF9kbWFfdGVzdC0ke0NPTkZJR19VU0I0X0RNQV9URVNUfSArPSBkbWFfdGVzdC5vXFxuZHJpdmVycy90aHVuZGVyYm9sdC9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfVVNCNF9ETUFfVEVTVCkgKz0gdGh1bmRlcmJvbHRfZG1hX3Rlc3Qub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTYtXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jPTEzMz1zdGF0aWMgaW50IHRiX2NmZ19yZXF1ZXN0X2VucXVldWUoc3RydWN0IHRiX2N0bCAqY3RsLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xMzUte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM6MTM2OlxcdFdBUk5fT04odGVzdF9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcXHUwMDI2cmVxLVxcdTAwM2VmbGFncykpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTM3LVxcdFdBUk5fT04ocmVxLVxcdTAwM2VjdGwpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYz0xNTE9c3RhdGljIHZvaWQgdGJfY2ZnX3JlcXVlc3RfZGVxdWV1ZShzdHJ1Y3QgdGJfY2ZnX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTU1LVxcdG11dGV4X2xvY2soXFx1MDAyNmN0bC1cXHUwMDNlcmVxdWVzdF9xdWV1ZV9sb2NrKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jOjE1NjpcXHRpZiAoIXRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0FDVElWRSwgXFx1MDAyNnJlcS1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xNTctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdGwtXFx1MDAzZXJlcXVlc3RfcXVldWVfbG9jayk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTE2Mi1cXHRjbGVhcl9iaXQoVEJfQ0ZHX1JFUVVFU1RfQUNUSVZFLCBcXHUwMDI2cmVxLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzoxNjM6XFx0aWYgKHRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0NBTkNFTEVELCBcXHUwMDI2cmVxLVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy0xNjQtXFx0XFx0d2FrZV91cChcXHUwMDI2dGJfY2ZnX3JlcXVlc3RfY2FuY2VsX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM9MTY4PXN0YXRpYyBib29sIHRiX2NmZ19yZXF1ZXN0X2lzX2FjdGl2ZShzdHJ1Y3QgdGJfY2ZnX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3RodW5kZXJib2x0L2N0bC5jLTE2OS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzoxNzA6XFx0cmV0dXJuIHRlc3RfYml0KFRCX0NGR19SRVFVRVNUX0FDVElWRSwgXFx1MDAyNnJlcS1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtMTcxLX1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmM9NTI0PXN0YXRpYyB2b2lkIHRiX2NmZ19yZXF1ZXN0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYy01MjctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jdGwuYzo1Mjg6XFx0aWYgKCF0ZXN0X2JpdChUQl9DRkdfUkVRVUVTVF9DQU5DRUxFRCwgXFx1MDAyNnJlcS1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY3RsLmMtNTI5LVxcdFxcdHJlcS1cXHUwMDNlY2FsbGJhY2socmVxLVxcdTAwM2VjYWxsYmFja19kYXRhKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTQxND1zdGF0aWMgc3NpemVfdCByZXRpbWVyX3NiX3JlZ3Nfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy00ODMtICogQHRpbWU6ICV0cnVlIGlmIHRpbWUgbWFyZ2luaW5nIGlzIHVzZWQgaW5zdGVhZCBvZiB2b2x0YWdlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6NDg0OiAqIEByaWdodF9oaWdoOiAlZmFsc2UgaWYgbGVmdC9sb3cgbWFyZ2luIHRlc3QgaXMgcGVyZm9ybWVkLCAldHJ1ZSBpZlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTQ4NS0gKlxcdFxcdHJpZ2h0L2hpZ2hcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTY4MT1zdGF0aWMgaW50IG1hcmdpbmluZ19jYXBzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpub3RfdXNlZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTcwNS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYzo3MDY6XFx0c2VxX3ByaW50ZihzLCBcXFwiIyBhbGwgbGFuZXMgc2ltdWx0YW5lb3VzbHk6ICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTcwNy1cXHRcXHQgIHN0cl95ZXNfbm8oYWxsX2xhbmVzKG1hcmdpbmluZykpKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jPTExNTM9c3RhdGljIGludCBtYXJnaW5pbmdfcnVuX3N3KHN0cnVjdCB0Yl9tYXJnaW5pbmcgKm1hcmdpbmluZyxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTExODMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTE4NDpcXHRcXHQvKiBBbnkgZXJyb3JzIHN0b3AgdGhlIHRlc3QgKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xMTg1LVxcdFxcdGlmIChlcnJvcnMpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYz0xNDczPURFQlVHRlNfQVRUUl9SVyhtYXJnaW5pbmdfcmVzdWx0cyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTQ3NC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYzoxNDc1OnN0YXRpYyBzc2l6ZV90IG1hcmdpbmluZ190ZXN0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE0NzYtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE1MDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM6MTUxMDpzdGF0aWMgaW50IG1hcmdpbmluZ190ZXN0X3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpub3RfdXNlZClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTExLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jLTE1MjktfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE1MzA6REVCVUdGU19BVFRSX1JXKG1hcmdpbmluZ190ZXN0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RlYnVnZnMuYy0xNTMxLVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmM9MTY1MD1zdGF0aWMgc3RydWN0IHRiX21hcmdpbmluZyAqbWFyZ2luaW5nX2FsbG9jKHN0cnVjdCB0Yl9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTczOC1cXHRcXHRcXHQgICAgXFx1MDAyNm1hcmdpbmluZ19yZXN1bHRzX2ZvcHMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZGVidWdmcy5jOjE3Mzk6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwidGVzdFxcXCIsIDA2MDAsIGRpciwgbWFyZ2luaW5nLCBcXHUwMDI2bWFyZ2luaW5nX3Rlc3RfZm9wcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kZWJ1Z2ZzLmMtMTc0MC1cXHRpZiAoaW5kZXBlbmRlbnRfdm9sdGFnZV9tYXJnaW5zKG1hcmdpbmluZykgPT0gVVNCNF9NQVJHSU5fQ0FQX1ZPTFRBR0VfSU5EUF9HRU5fMl8zX0hMIHx8XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMi0vKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozOiAqIERNQSB0cmFmZmljIHRlc3QgZHJpdmVyXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjI6ZW51bSBkbWFfdGVzdF9mcmFtZV9wZGYge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMy1cXHRETUFfVEVTVF9QREZfRlJBTUVfU1RBUlQgPSAxLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyNzpzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyODpcXHRzdHJ1Y3QgZG1hX3Rlc3QgKmRtYV90ZXN0O1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yOS1cXHR2b2lkICpkYXRhO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMyLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMzplbnVtIGRtYV90ZXN0X3Rlc3RfZXJyb3Ige1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNC1cXHRETUFfVEVTVF9OT19FUlJPUixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDU6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbWFfdGVzdF9lcnJvcl9uYW1lc1tdID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00Ni1cXHRbRE1BX1RFU1RfTk9fRVJST1JdID0gXFxcIm5vIGVycm9yc1xcXCIsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU3OmVudW0gZG1hX3Rlc3RfcmVzdWx0IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTgtXFx0RE1BX1RFU1RfTk9UX1JVTixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02Mi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjM6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbWFfdGVzdF9yZXN1bHRfbmFtZXNbXSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjQtXFx0W0RNQV9URVNUX05PVF9SVU5dID0gXFxcIm5vdCBydW5cXFwiLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5LS8qKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDogKiBzdHJ1Y3QgZG1hX3Rlc3QgLSBETUEgdGVzdCBkZXZpY2UgZHJpdmVyIHByaXZhdGUgZGF0YVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MS0gKiBAc3ZjOiBYRG9tYWluIHNlcnZpY2UgdGhlIGRyaXZlciBpcyBib3VuZCB0b1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTgyLSAqIEBsaW5rX3dpZHRoOiBFeHBlY3RlZCBsaW5rIHdpZHRoIChHYi9zKSwgJTAgdG8gdXNlIHdoYXRldmVyIGlzIG5lZ290aWF0ZWRcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6ODM6ICogQGNyY19lcnJvcnM6IE51bWJlciBvZiBDUkMgZXJyb3JzIGR1cmluZyB0aGUgdGVzdCBydW5cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6ODQ6ICogQGJ1ZmZlcl9vdmVyZmxvd19lcnJvcnM6IE51bWJlciBvZiBidWZmZXIgb3ZlcmZsb3cgZXJyb3JzIGR1cmluZyB0aGUgdGVzdFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy04NS0gKlxcdFxcdFxcdCAgICBydW5cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy05MC0gKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6OTE6c3RydWN0IGRtYV90ZXN0IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtOTItXFx0Y29uc3Qgc3RydWN0IHRiX3NlcnZpY2UgKnN2YztcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMDUtXFx0dW5zaWduZWQgaW50IGJ1ZmZlcl9vdmVyZmxvd19lcnJvcnM7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEwNjpcXHRlbnVtIGRtYV90ZXN0X3Jlc3VsdCByZXN1bHQ7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjEwNzpcXHRlbnVtIGRtYV90ZXN0X3Rlc3RfZXJyb3IgZXJyb3JfY29kZTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTA4LVxcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExMS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTEyOi8qIERNQSB0ZXN0IHByb3BlcnR5IGRpcmVjdG9yeSBVVUlEOiAzMTg4Y2QxMC02NTIzLTRhNWEtYTY4Mi1mZGNhMDdhMjQ4ZDggKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTEzOnN0YXRpYyBjb25zdCB1dWlkX3QgZG1hX3Rlc3RfZGlyX3V1aWQgPVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMTQtXFx0VVVJRF9JTklUKDB4MzE4OGNkMTAsIDB4NjUyMywgMHg0YTVhLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTExNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTE3OnN0YXRpYyBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkbWFfdGVzdF9kaXI7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjExODpzdGF0aWMgdm9pZCAqZG1hX3Rlc3RfcGF0dGVybjtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTE5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxMjA6c3RhdGljIHZvaWQgZG1hX3Rlc3RfZnJlZV9yaW5ncyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xMjEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTEzMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTM0OnN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3RhcnRfcmluZ3Moc3RydWN0IGRtYV90ZXN0ICpkdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTM1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNjEtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTYyOlxcdFxcdFxcdGRtYV90ZXN0X2ZyZWVfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNjMtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0xNzktXFx0XFx0aWYgKCFyaW5nKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjE4MDpcXHRcXHRcXHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTgxLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4OS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoxOTA6XFx0XFx0XFx0ZG1hX3Rlc3RfZnJlZV9yaW5ncyhkdCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE5MS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIwMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIwMjpcXHRcXHRkbWFfdGVzdF9mcmVlX3JpbmdzKGR0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjAzLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjEzLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyMTQ6c3RhdGljIHZvaWQgZG1hX3Rlc3Rfc3RvcF9yaW5ncyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMTUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIyOS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjMwOlxcdGRtYV90ZXN0X2ZyZWVfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzEtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIzMzpzdGF0aWMgdm9pZCBkbWFfdGVzdF9yeF9jYWxsYmFjayhzdHJ1Y3QgdGJfcmluZyAqcmluZywgc3RydWN0IHJpbmdfZnJhbWUgKmZyYW1lLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yMzQtXFx0XFx0XFx0XFx0IGJvb2wgY2FuY2VsZWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTIzNS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjIzNjpcXHRzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUgKnRmID0gY29udGFpbmVyX29mKGZyYW1lLCB0eXBlb2YoKnRmKSwgZnJhbWUpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyMzc6XFx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRmLVxcdTAwM2VkbWFfdGVzdDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjM4LVxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSB0Yl9yaW5nX2RtYV9kZXZpY2UoZHQtXFx1MDAzZXJ4X3JpbmcpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI2My1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjY0OnN0YXRpYyBpbnQgZG1hX3Rlc3Rfc3VibWl0X3J4KHN0cnVjdCBkbWFfdGVzdCAqZHQsIHNpemVfdCBucGFja2V0cylcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0yNjktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5wYWNrZXRzOyBpKyspIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MjcwOlxcdFxcdHN0cnVjdCBkbWFfdGVzdF9mcmFtZSAqdGY7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI3MS1cXHRcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTI5MS1cXHRcXHR0Zi1cXHUwMDNlZnJhbWUuYnVmZmVyX3BoeSA9IGRtYV9hZGRyO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzoyOTI6XFx0XFx0dGYtXFx1MDAzZWZyYW1lLmNhbGxiYWNrID0gZG1hX3Rlc3RfcnhfY2FsbGJhY2s7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjI5MzpcXHRcXHR0Zi1cXHUwMDNlZG1hX3Rlc3QgPSBkdDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMjk0LVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ0Zi1cXHUwMDNlZnJhbWUubGlzdCk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzAxLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMDI6c3RhdGljIHZvaWQgZG1hX3Rlc3RfdHhfY2FsbGJhY2soc3RydWN0IHRiX3JpbmcgKnJpbmcsIHN0cnVjdCByaW5nX2ZyYW1lICpmcmFtZSxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzAzLVxcdFxcdFxcdFxcdCBib29sIGNhbmNlbGVkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMDQte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMDU6XFx0c3RydWN0IGRtYV90ZXN0X2ZyYW1lICp0ZiA9IGNvbnRhaW5lcl9vZihmcmFtZSwgdHlwZW9mKCp0ZiksIGZyYW1lKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzA2OlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Zi1cXHUwMDNlZG1hX3Rlc3Q7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMwNy1cXHRzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gdGJfcmluZ19kbWFfZGV2aWNlKGR0LVxcdTAwM2V0eF9yaW5nKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMTQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMxNTpzdGF0aWMgaW50IGRtYV90ZXN0X3N1Ym1pdF90eChzdHJ1Y3QgZG1hX3Rlc3QgKmR0LCBzaXplX3QgbnBhY2tldHMpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTMxNi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucGFja2V0czsgaSsrKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMyMTpcXHRcXHRzdHJ1Y3QgZG1hX3Rlc3RfZnJhbWUgKnRmO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMjItXFx0XFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMjgtXFx0XFx0dGYtXFx1MDAzZWZyYW1lLnNpemUgPSAwOyAvKiBtZWFucyA0MDk2ICovXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjMyOTpcXHRcXHR0Zi1cXHUwMDNlZG1hX3Rlc3QgPSBkdDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzMwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozMzE6XFx0XFx0dGYtXFx1MDAzZWRhdGEgPSBrbWVtZHVwKGRtYV90ZXN0X3BhdHRlcm4sIERNQV9URVNUX0ZSQU1FX1NJWkUsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zMzItXFx0XFx0aWYgKCF0Zi1cXHUwMDNlZGF0YSkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM0NS1cXHRcXHR0Zi1cXHUwMDNlZnJhbWUuYnVmZmVyX3BoeSA9IGRtYV9hZGRyO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozNDY6XFx0XFx0dGYtXFx1MDAzZWZyYW1lLmNhbGxiYWNrID0gZG1hX3Rlc3RfdHhfY2FsbGJhY2s7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM0Ny1cXHRcXHR0Zi1cXHUwMDNlZnJhbWUuc29mID0gRE1BX1RFU1RfUERGX0ZSQU1FX1NUQVJUO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTM2Mj1zdGF0aWMgaW50IF9fZm9wcyAjIyBfc2hvdyh2b2lkICpkYXRhLCB1NjQgKnZhbClcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMzY0LVxcdHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMgPSBkYXRhO1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MzY1OlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XFx0XFxcXFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNjYtXFx0aW50IHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9Mzc1PXN0YXRpYyBpbnQgX19mb3BzICMjIF9zdG9yZSh2b2lkICpkYXRhLCB1NjQgdmFsKVxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zNzctXFx0c3RydWN0IHRiX3NlcnZpY2UgKnN2YyA9IGRhdGE7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzozNzg6XFx0c3RydWN0IGRtYV90ZXN0ICpkdCA9IHRiX3NlcnZpY2VfZ2V0X2RydmRhdGEoc3ZjKTtcXHRcXFxcXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM3OS1cXHRpbnQgcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz0zOTE9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKF9fZm9wcyAjIyBfZm9wcywgX19mb3BzICMjIF9zaG93LFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy0zOTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjM5NDpzdGF0aWMgdm9pZCBsYW5lc19nZXQoY29uc3Qgc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0ICp2YWwpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTM5NS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9Mzk5PXN0YXRpYyBpbnQgbGFuZXNfdmFsaWRhdGUodTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MDMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQwNDpzdGF0aWMgdm9pZCBsYW5lc19zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDA1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00MDg9RE1BX1RFU1RfREVCVUdGU19BVFRSKGxhbmVzLCBsYW5lc19nZXQsIGxhbmVzX3ZhbGlkYXRlLCBsYW5lc19zZXQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQxMDpzdGF0aWMgdm9pZCBzcGVlZF9nZXQoY29uc3Qgc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0ICp2YWwpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NDE1PXN0YXRpYyBpbnQgc3BlZWRfdmFsaWRhdGUodTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MjctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQyODpzdGF0aWMgdm9pZCBzcGVlZF9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDI5LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00MzI9RE1BX1RFU1RfREVCVUdGU19BVFRSKHNwZWVkLCBzcGVlZF9nZXQsIHNwZWVkX3ZhbGlkYXRlLCBzcGVlZF9zZXQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MzMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQzNDpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3JlY2VpdmVfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00MzUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQzOT1zdGF0aWMgaW50IHBhY2tldHNfdG9fcmVjZWl2ZV92YWxpZGF0ZSh1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ0My1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDQ0OnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fcmVjZWl2ZV9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDQ1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NDg9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fcmVjZWl2ZSwgcGFja2V0c190b19yZWNlaXZlX2dldCxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NTAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ1MTpzdGF0aWMgdm9pZCBwYWNrZXRzX3RvX3NlbmRfZ2V0KGNvbnN0IHN0cnVjdCBkbWFfdGVzdCAqZHQsIHU2NCAqdmFsKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NTIte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jPTQ1Nj1zdGF0aWMgaW50IHBhY2tldHNfdG9fc2VuZF92YWxpZGF0ZSh1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ2MC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NDYxOnN0YXRpYyB2b2lkIHBhY2tldHNfdG9fc2VuZF9zZXQoc3RydWN0IGRtYV90ZXN0ICpkdCwgdTY0IHZhbClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDYyLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz00NjU9RE1BX1RFU1RfREVCVUdGU19BVFRSKHBhY2tldHNfdG9fc2VuZCwgcGFja2V0c190b19zZW5kX2dldCxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy00NjctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjQ2ODpzdGF0aWMgaW50IGRtYV90ZXN0X3NldF9ib25kaW5nKHN0cnVjdCBkbWFfdGVzdCAqZHQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ2OS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDgwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0ODE6c3RhdGljIGJvb2wgZG1hX3Rlc3RfdmFsaWRhdGVfY29uZmlnKHN0cnVjdCBkbWFfdGVzdCAqZHQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ4Mi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNDkwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo0OTE6c3RhdGljIHZvaWQgZG1hX3Rlc3RfY2hlY2tfZXJyb3JzKHN0cnVjdCBkbWFfdGVzdCAqZHQsIGludCByZXQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTQ5Mi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTA5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1MTA6c3RhdGljIGludCB0ZXN0X3N0b3JlKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxMS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxMi1cXHRzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjID0gZGF0YTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTEzOlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUxNC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUyOS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTMwOlxcdGRldl9kYmcoXFx1MDAyNnN2Yy1cXHUwMDNlZGV2LCBcXFwiRE1BIHRlc3Qgc3RhcnRpbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01MzEtXFx0aWYgKGR0LVxcdTAwM2VsaW5rX3NwZWVkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTUzNy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTM4OlxcdGlmICghZG1hX3Rlc3RfdmFsaWRhdGVfY29uZmlnKGR0KSkge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1Mzk6XFx0XFx0ZGV2X2VycihcXHUwMDI2c3ZjLVxcdTAwM2VkZXYsIFxcXCJpbnZhbGlkIHRlc3QgY29uZmlndXJhdGlvblxcXFxuXFxcIik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU0MC1cXHRcXHRkdC1cXHUwMDNlZXJyb3JfY29kZSA9IERNQV9URVNUX0NPTkZJR19FUlJPUjtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NDMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU0NDpcXHRyZXQgPSBkbWFfdGVzdF9zZXRfYm9uZGluZyhkdCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU0NS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTUwLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo1NTE6XFx0cmV0ID0gZG1hX3Rlc3Rfc3RhcnRfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NTItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU1OS1cXHRcXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2ZHQtXFx1MDAzZWNvbXBsZXRlKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTYwOlxcdFxcdHJldCA9IGRtYV90ZXN0X3N1Ym1pdF9yeChkdCwgZHQtXFx1MDAzZXBhY2tldHNfdG9fcmVjZWl2ZSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU2MS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTY4LVxcdGlmIChkdC1cXHUwMDNlcGFja2V0c190b19zZW5kKSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU2OTpcXHRcXHRyZXQgPSBkbWFfdGVzdF9zdWJtaXRfdHgoZHQsIGR0LVxcdTAwM2VwYWNrZXRzX3RvX3NlbmQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01NzAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU4NS1vdXRfc3RvcDpcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTg2OlxcdGRtYV90ZXN0X3N0b3BfcmluZ3MoZHQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01ODctb3V0X3VubG9jazpcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTg4OlxcdGRtYV90ZXN0X2NoZWNrX2Vycm9ycyhkdCwgcmV0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTg5LVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZHQtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjU5MTpcXHRkZXZfZGJnKFxcdTAwMjZzdmMtXFx1MDAzZWRldiwgXFxcIkRNQSB0ZXN0ICVzXFxcXG5cXFwiLCBkbWFfdGVzdF9yZXN1bHRfbmFtZXNbZHQtXFx1MDAzZXJlc3VsdF0pO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy01OTItXFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTkzLX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTk0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURSh0ZXN0X2ZvcHMsIE5VTEwsIHRlc3Rfc3RvcmUsIFxcXCIlbGx1XFxcXG5cXFwiKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNTk1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz01OTY9c3RhdGljIGludCBzdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKm5vdF91c2VkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTU5OC1cXHRzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NTk5OlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQgPSB0Yl9zZXJ2aWNlX2dldF9kcnZkYXRhKHN2Yyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwMC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwNS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjA2OlxcdHNlcV9wcmludGYocywgXFxcInJlc3VsdDogJXNcXFxcblxcXCIsIGRtYV90ZXN0X3Jlc3VsdF9uYW1lc1tkdC1cXHUwMDNlcmVzdWx0XSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYwNy1cXHRpZiAoZHQtXFx1MDAzZXJlc3VsdCA9PSBETUFfVEVTVF9OT1RfUlVOKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYxNC1cXHRcXHQgICBkdC1cXHUwMDNlYnVmZmVyX292ZXJmbG93X2Vycm9ycyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjYxNTpcXHRzZXFfcHJpbnRmKHMsIFxcXCJlcnJvcjogJXNcXFxcblxcXCIsIGRtYV90ZXN0X2Vycm9yX25hbWVzW2R0LVxcdTAwM2VlcnJvcl9jb2RlXSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYxNi1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz02MjE9REVGSU5FX1NIT1dfQVRUUklCVVRFKHN0YXR1cyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyMi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjIzOnN0YXRpYyB2b2lkIGRtYV90ZXN0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgdGJfc2VydmljZSAqc3ZjKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYyNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjI3OlxcdGRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKFxcXCJkbWFfdGVzdFxcXCIsIHN2Yy1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02MjgtXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjM1LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInN0YXR1c1xcXCIsIDA0MDAsIGRlYnVnZnNfZGlyLCBzdmMsIFxcdTAwMjZzdGF0dXNfZm9wcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjYzNjpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0ZXN0XFxcIiwgMDIwMCwgZGVidWdmc19kaXIsIHN2YywgXFx1MDAyNnRlc3RfZm9wcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzNy19XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTYzOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjM5OnN0YXRpYyBpbnQgZG1hX3Rlc3RfcHJvYmUoc3RydWN0IHRiX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHRiX3NlcnZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDAte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NDEtXFx0c3RydWN0IHRiX3hkb21haW4gKnhkID0gdGJfc2VydmljZV9wYXJlbnQoc3ZjKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjQyOlxcdHN0cnVjdCBkbWFfdGVzdCAqZHQ7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY0My1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NTMtXFx0dGJfc2VydmljZV9zZXRfZHJ2ZGF0YShzdmMsIGR0KTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjU0OlxcdGRtYV90ZXN0X2RlYnVnZnNfaW5pdChzdmMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NTUtXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjU4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2NTk6c3RhdGljIHZvaWQgZG1hX3Rlc3RfcmVtb3ZlKHN0cnVjdCB0Yl9zZXJ2aWNlICpzdmMpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2MC17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY2MTpcXHRzdHJ1Y3QgZG1hX3Rlc3QgKmR0ID0gdGJfc2VydmljZV9nZXRfZHJ2ZGF0YShzdmMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NjItXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY2My1cXHRtdXRleF9sb2NrKFxcdTAwMjZkdC1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY2NDpcXHRkZWJ1Z2ZzX2xvb2t1cF9hbmRfcmVtb3ZlKFxcXCJkbWFfdGVzdFxcXCIsIHN2Yy1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NjUtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkdC1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjY3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2Njg6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBkbWFfdGVzdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjY5LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzEtXFx0ICogTm8gbmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsIGhlcmUuIElmIHVzZXJzcGFjZSBpcyB3cml0aW5nXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3MjpcXHQgKiB0byB0aGUgdGVzdCBhdHRyaWJ1dGUgd2hlbiBzdXNwZW5kIHN0YXJ0ZWQsIGl0IGNvbWVzIG91dCBmcm9tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY3My1cXHQgKiB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoKSB3aXRoIC1FUkVTVEFSVFNZUyBhbmQgdGhlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY3NDpcXHQgKiBETUEgdGVzdCBmYWlscyB0ZWFyaW5nIGRvd24gdGhlIHJpbmdzLiBPbmNlIHVzZXJzcGFjZSBpc1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02NzUtXFx0ICogdGhhd2VkIHRoZSBrZXJuZWwgcmVzdGFydHMgdGhlIHdyaXRlIHN5c2NhbGwgZWZmZWN0aXZlbHlcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njc2OlxcdCAqIHJlLXJ1bm5pbmcgdGhlIHRlc3QuXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY3Ny1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02ODAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjY4MTpzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGRtYV90ZXN0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4Mi17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2ODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRtYV90ZXN0X3BtX29wcyA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njg3OlxcdFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGRtYV90ZXN0X3N1c3BlbmQsIGRtYV90ZXN0X3Jlc3VtZSlcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjg4LX07XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY4OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdGJfc2VydmljZV9pZCBkbWFfdGVzdF9pZHNbXSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NjkxOlxcdHsgVEJfU0VSVklDRShcXFwiZG1hX3Rlc3RcXFwiLCAxKSB9LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTItXFx0eyB9LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTMtfTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njk0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodGJzdmMsIGRtYV90ZXN0X2lkcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTY5NS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6Njk2OnN0YXRpYyBzdHJ1Y3QgdGJfc2VydmljZV9kcml2ZXIgZG1hX3Rlc3RfZHJpdmVyID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy02OTctXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNjk4LVxcdFxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo2OTk6XFx0XFx0Lm5hbWUgPSBcXFwidGh1bmRlcmJvbHRfZG1hX3Rlc3RcXFwiLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MDA6XFx0XFx0LnBtID0gXFx1MDAyNmRtYV90ZXN0X3BtX29wcyxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzAxLVxcdH0sXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwMjpcXHQucHJvYmUgPSBkbWFfdGVzdF9wcm9iZSxcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzAzOlxcdC5yZW1vdmUgPSBkbWFfdGVzdF9yZW1vdmUsXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwNDpcXHQuaWRfdGFibGUgPSBkbWFfdGVzdF9pZHMsXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcwNS19O1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MDYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcwNzpzdGF0aWMgaW50IF9faW5pdCBkbWFfdGVzdF9pbml0KHZvaWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcwOC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzExLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTI6XFx0ZG1hX3Rlc3RfcGF0dGVybiA9IGttYWxsb2MoRE1BX1RFU1RfRlJBTUVfU0laRSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjcxMzpcXHRpZiAoIWRtYV90ZXN0X3BhdHRlcm4pXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTcxNC1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MTYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjXFx0RE1BX1RFU1RfRlJBTUVfU0laRSAvIHNpemVvZihkYXRhX3ZhbHVlKTsgaSsrKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTc6XFx0XFx0KCh1MzIgKilkbWFfdGVzdF9wYXR0ZXJuKVtpXSA9IGRhdGFfdmFsdWUrKztcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzE4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MTk6XFx0ZG1hX3Rlc3RfZGlyID0gdGJfcHJvcGVydHlfY3JlYXRlX2RpcihcXHUwMDI2ZG1hX3Rlc3RfZGlyX3V1aWQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjA6XFx0aWYgKCFkbWFfdGVzdF9kaXIpIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzIxLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzI0LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MjU6XFx0dGJfcHJvcGVydHlfYWRkX2ltbWVkaWF0ZShkbWFfdGVzdF9kaXIsIFxcXCJwcnRjaWRcXFwiLCAxKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI2OlxcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcXFwicHJ0Y3ZlcnNcXFwiLCAxKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI3OlxcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcXFwicHJ0Y3JldnNcXFwiLCAwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzI4OlxcdHRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoZG1hX3Rlc3RfZGlyLCBcXFwicHJ0Y3N0bnNcXFwiLCAwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzI5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3MzA6XFx0cmV0ID0gdGJfcmVnaXN0ZXJfcHJvcGVydHlfZGlyKFxcXCJkbWFfdGVzdFxcXCIsIGRtYV90ZXN0X2Rpcik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzM0OlxcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NDAtZXJyX3VucmVnaXN0ZXJfZGlyOlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDE6XFx0dGJfdW5yZWdpc3Rlcl9wcm9wZXJ0eV9kaXIoXFxcImRtYV90ZXN0XFxcIiwgZG1hX3Rlc3RfZGlyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzQyLWVycl9mcmVlX2RpcjpcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzQzOlxcdHRiX3Byb3BlcnR5X2ZyZWVfZGlyKGRtYV90ZXN0X2Rpcik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0NC1lcnJfZnJlZV9wYXR0ZXJuOlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDU6XFx0a2ZyZWUoZG1hX3Rlc3RfcGF0dGVybik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc0Ni1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NDgtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NDk6bW9kdWxlX2luaXQoZG1hX3Rlc3RfaW5pdCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc1MC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzUxOnN0YXRpYyB2b2lkIF9fZXhpdCBkbWFfdGVzdF9leGl0KHZvaWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTc1Mi17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1MzpcXHR0Yl91bnJlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYzo3NTQ6XFx0dGJfdW5yZWdpc3Rlcl9wcm9wZXJ0eV9kaXIoXFxcImRtYV90ZXN0XFxcIiwgZG1hX3Rlc3RfZGlyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzU1OlxcdHRiX3Byb3BlcnR5X2ZyZWVfZGlyKGRtYV90ZXN0X2Rpcik7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jOjc1NjpcXHRrZnJlZShkbWFfdGVzdF9wYXR0ZXJuKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtNzU3LX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzU4Om1vZHVsZV9leGl0KGRtYV90ZXN0X2V4aXQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NTktXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM9NzYxPU1PRFVMRV9BVVRIT1IoXFxcIk1pa2EgV2VzdGVyYmVyZyBcXHUwMDNjbWlrYS53ZXN0ZXJiZXJnQGxpbnV4LmludGVsLmNvbVxcdTAwM2VcXFwiKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzYyOk1PRFVMRV9ERVNDUklQVElPTihcXFwiVGh1bmRlcmJvbHQvVVNCNCBETUEgdHJhZmZpYyB0ZXN0IGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03NjMtTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYz0xMjQwPV9faWNtX3RyX2RldmljZV9jb25uZWN0ZWQoc3RydWN0IHRiICp0YiwgY29uc3Qgc3RydWN0IGljbV9wa2dfaGVhZGVyICpoZHIsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTQtXFx0ICogQ3VycmVudGx5IHdlIGRvbid0IHVzZSB0aGUgUW9TIGluZm9ybWF0aW9uIGNvbWluZyB3aXRoIHRoZVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvaWNtLmM6MTI1NTpcXHQgKiBkZXZpY2UgY29ubmVjdGVkIG1lc3NhZ2Ugc28gc2ltcGx5IGp1c3QgaWdub3JlIHRoYXQgZXh0cmFcXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTEyNTYtXFx0ICogcGFja2V0IGZvciBub3cuXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTI0Nzk9c3RydWN0IHRiICppY21fcHJvYmUoc3RydWN0IHRiX25oaSAqbmhpKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy0yNTE0LVxcdFxcdC8qXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYzoyNTE1OlxcdFxcdCAqIE5WTSB1cGdyYWRlIGhhcyBub3QgYmVlbiB0ZXN0ZWQgb24gQXBwbGUgc3lzdGVtcyBhbmRcXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jLTI1MTYtXFx0XFx0ICogdGhleSBkb24ndCBwcm92aWRlIGltYWdlcyBwdWJsaWNseSBlaXRoZXIuIFRvIGJlIG9uXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jPTc2PXN0YXRpYyB2b2lkIHJpbmdfaW50ZXJydXB0X2FjdGl2ZShzdHJ1Y3QgdGJfcmluZyAqcmluZywgYm9vbCBhY3RpdmUpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L25oaS5jLTEwMi1cXHRcXHQgKiB0byBwcmV2ZW50IGNvbmRpdGlvbnMgdGhhdCBtYXkgb2NjdXIgd2hlcmUgdHdvXFxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYzoxMDM6XFx0XFx0ICogTVNJWCBpbnRlcnJ1cHRzIGFyZSBzaW11bHRhbmVvdXNseSBhY3RpdmUgYW5kXFxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYy0xMDQtXFx0XFx0ICogcmVhZGluZyB0aGUgcmVnaXN0ZXIgY2xlYXJzIGJvdGggb2YgdGhlbS5cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmM9MTE2Mz1zdGF0aWMgc3RydWN0IHRiICpuaGlfc2VsZWN0X2NtKHN0cnVjdCB0Yl9uaGkgKm5oaSlcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmMtMTE2Ny1cXHQvKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvbmhpLmM6MTE2ODpcXHQgKiBVU0I0IGNhc2UgaXMgc2ltcGxlLiBJZiB3ZSBnb3QgY29udHJvbCBvZiBhbnkgb2YgdGhlXFxuZHJpdmVycy90aHVuZGVyYm9sdC9uaGkuYy0xMTY5LVxcdCAqIGNhcGFiaWxpdGllcywgd2UgdXNlIHNvZnR3YXJlIENNLlxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zd2l0Y2guYz0zNjQxPXZvaWQgdGJfc3dpdGNoX3N1c3BlbmQoc3RydWN0IHRiX3N3aXRjaCAqc3csIGJvb2wgcnVudGltZSlcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3dpdGNoLmMtMzY0OS1cXHQvKlxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNTowMC4yMDYyODMxMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTI1OTQ4NDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGh1bmRlcmJvbHQgTmV0d29yayBEcml2ZXIgVGVzdGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRlc3RpbmcgdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGB0aHVuZGVyYm9sdC1uZXRgIGRyaXZlciwgYW5kIEkgc2VlIGEgY291cGxlIG9mIGV4aXN0aW5nIFVTQjQgdGVzdCBjb25maWd1cmF0aW9uczogYFVTQjRfS1VOSVRfVEVTVGAgYW5kIGBVU0I0X0RNQV9URVNUYC4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyIGl0c2VsZj8gSXQgcmVsaWVzIG9uIFRodW5kZXJib2x0IFhEb21haW4gc2VydmljZXMsIHNvIHRoYXQncyB0aGUga2V5LlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgY3JlYXRlIGEgbW9jayBUaHVuZGVyYm9sdCBkZXZpY2Ugd2l0aGluIFFFTVU/IExldCBtZSBjaGVjayBmb3IgZXhpc3RpbmcgYHVzYjRgIG9yIGB0aHVuZGVyYm9sdGAgZW11bGF0aW9uIHdpdGhpbiBRRU1VIGZpcnN0LiBEYXJuLCBsb29rcyBsaWtlIHRoZXJlJ3Mgbm8gVGh1bmRlcmJvbHQgY29udHJvbGxlciBlbXVsYXRpb24gaW4gUUVNVS4gVGhhdCdzIGEgc2VyaW91cyByb2FkYmxvY2suXG5cbkhvbGQgb24gYSBzZWNvbmQsIHdoYXQgaWYgd2UgY2FuIGluc3RhbnRpYXRlIHRoZSBkcml2ZXIgdGhyb3VnaCBhbiBhbHRlcm5hdGUgbWV0aG9kLCBzaW1pbGFyIHRvIGhvdyB3ZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgIGZvciBVU0I/IElzIHRoZXJlIGFueXRoaW5nIGxpa2UgYSBgdGh1bmRlcmJvbHRfaHdzaW1gIG9yIGEgc2ltaWxhciB2aXJ0dWFsaXplZCBoYXJkd2FyZSBtb2RlbCBhdmFpbGFibGU/IEl0IGlzIHVubGlrZWx5LCBidXQgbGV0IG1lIGNoZWNrLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgdGhlcmUgaXMgYSB3YXkgdG8gY3JlYXRlIGEgbW9jayBUaHVuZGVyYm9sdCBkZXZpY2UuIFRpbWUgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIGEgbW9jayBvciB0ZXN0IGhhcm5lc3MuIEknbGwgc2VhcmNoIGZvciBgdGJfcmVnaXN0ZXJfcHJvcGVydHlfZGlyYCBvciBgdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXJgLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgbGVhZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzQ0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjA2LjEzMjIzMzY0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNDc1NjExMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Yl9yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTE1MDE9c3RhdGljIGludCBfX2luaXQgdGJuZXRfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE1MjItXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jOjE1MjM6XFx0cmV0ID0gdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXIoXFx1MDAyNnRibmV0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTE1MjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz03MDc9c3RhdGljIGludCBfX2luaXQgZG1hX3Rlc3RfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTczMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6NzM0OlxcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZkbWFfdGVzdF9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYy03MzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTY0OD1zdGF0aWMgaW50IF9faW5pdCB0YnN0cmVhbV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NjktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjcwOlxcdHJldCA9IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKFxcdTAwMjZ0YnN0cmVhbV9kcml2ZXIpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTY3MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9OTM5PXRiX3hkcF9zY2hlZHVsZV9yZXF1ZXN0KHN0cnVjdCB0YiAqdGIsIGNvbnN0IHN0cnVjdCB0Yl94ZHBfaGVhZGVyICpoZHIsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NjEtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6OTYyOiAqIHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKCkgLSBSZWdpc3RlciBYRG9tYWluIHNlcnZpY2UgZHJpdmVyXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTYzLSAqIEBkcnY6IERyaXZlciB0byByZWdpc3Rlclxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTY4LSAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjk2OTppbnQgdGJfcmVnaXN0ZXJfc2VydmljZV9kcml2ZXIoc3RydWN0IHRiX3NlcnZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtOTcwLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTk3My19XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6OTc0OkVYUE9SVF9TWU1CT0xfR1BMKHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy05NzUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0Lmg9NDY2PXN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0LmgtNDc5LVxcbmluY2x1ZGUvbGludXgvdGh1bmRlcmJvbHQuaDo0ODA6aW50IHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyKHN0cnVjdCB0Yl9zZXJ2aWNlX2RyaXZlciAqZHJ2KTtcXG5pbmNsdWRlL2xpbnV4L3RodW5kZXJib2x0LmgtNDgxLXZvaWQgdGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihzdHJ1Y3QgdGJfc2VydmljZV9kcml2ZXIgKmRydik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjA4LjE1Njk5OTY1OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjc1MjYzMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGh1bmRlcmJvbHQgRHJpdmVyIFNlY3VyaXR5IExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBUaHVuZGVyYm9sdCBkcml2ZXIgc2l0dWF0aW9uLCBhbmQgdGhlIGltbWVkaWF0ZSBpbXByZXNzaW9uIGlzIHRoYXQgdGhlcmUgaXNuJ3QgYW4gb2J2aW91cyBcIm1vY2sgZHJpdmVyXCIgcHJlc2VudC4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHRiX3JlZ2lzdGVyX3NlcnZpY2VfZHJpdmVyYCBzZWVtcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgYHRibmV0YCwgYGRtYV90ZXN0YCwgYW5kIGBzdHJlYW1gLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgaG93IGVhc2lseSBpdCBjYW4gYmUgcmVhY2hlZC4gQnV0LCB3YWl0Li4uIGNvdWxkIGB0Ym5ldGAgYmUgZnV6emFibGUgdGhyb3VnaCBhIHNlY29uZGFyeSBwYXRod2F5P1xuXG5Ob3csIGNvbnNpZGVyaW5nIHNjZW5hcmlvcyB3aGVyZSBUaHVuZGVyYm9sdCBoYXJkd2FyZSBtaWdodCBiZSBhYnNlbnQuLi4gSWYgdGhlcmUncyBubyBUaHVuZGVyYm9sdCBoYXJkd2FyZSB0byBiZWdpbiB3aXRoLCB0aGUgYHRodW5kZXJib2x0YCBkcml2ZXIgd29uJ3QgcHJvYmUgYW55IGNvbnRyb2xsZXJzLiBUaGF0J3MgYSBnaXZlbi4gQW5kIGlmIG5vIGNvbnRyb2xsZXJzIGFyZSBwcm9iZWQsIGl0IGxvZ2ljYWxseSBmb2xsb3dzIHRoYXQgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQuIFRoZSByaXBwbGUgZWZmZWN0IGNvbnRpbnVlczogaWYgbm8gYHRiX3NlcnZpY2VgIGRldmljZXMgYXJlIGNyZWF0ZWQsIGB0Ym5ldF9wcm9iZWAg4oCTIHdoaWNoIGlzIGtleSB0byB0cmlnZ2VyaW5nIHRoZSBgdGJuZXRgIGRyaXZlciDigJMgaXMgbmV2ZXIgaW52b2tlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBgdGJuZXRgIGRyaXZlciwgYXQgbGVhc3QgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucywgbWlnaHQgYmUgZW50aXJlbHkgdW5yZWFjaGFibGUuIFRoYXQncyBhIGh1Z2UgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGUsIGFzc3VtaW5nIGl0IGNhbid0IGJlIHJlYWNoZWQuXG5cblNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhwbG9yZSB3aGV0aGVyIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiBzb21laG93IGNyZWF0ZSBhIGB0Yl9zZXJ2aWNlYCBkZXZpY2UuIE15IGZvY3VzIHdpbGwgYmUgb24gc2VhcmNoaW5nIGZvciBjYWxscyBsaWtlIGB0Yl9zZXJ2aWNlX2NyZWF0ZWAgb3Igc29tZXRoaW5nIHdpdGggYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uIHRvIHNlZSBpZiBzdWNoIGEgdGhpbmcgZXhpc3RzLiBJZiBJIGNhbiBmaW5kIGEgd2F5IHRvIGNyZWF0ZSBvbmUgZnJvbSB1c2Vyc3BhY2UsIHRoYXQgb3BlbnMgdXAgYWxsIHNvcnRzIG9mIGZ1enppbmcgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MjYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MTMuNDMyMjY3MzY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAwODUyOTgyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Yl9zZXJ2aWNlX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjE1LjMzMzEzMDE5OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU3OTc3MDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFRodW5kZXJib2x0IERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgaG93IHRoZXNlIFRodW5kZXJib2x0IGRldmljZXMgYXJlIGJlaW5nIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSB4ZG9tYWluIGNvbnRleHQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBoZWFkIGRpcmVjdGx5IGludG8gdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlLiBTcGVjaWZpY2FsbHksIGBkcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uY2AgbG9va3MgbGlrZSB0aGUgcHJpbWUgc3VzcGVjdCBmb3IgdGhpcyBraW5kIG9mIGxvdy1sZXZlbCBkZXZpY2UgaW50ZXJhY3Rpb24uIEknbSBnb2luZyB0byBxdWlja2x5IHVzZSBgZ3JlcGAgdG8gbG9vayBmb3IgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCB0eXBpY2FsbHkgaGFuZGxlIGRldmljZSByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLiBJJ2xsIHNlYXJjaCBmb3IgYGRldmljZV9yZWdpc3RlcmAgYW5kIGBkZXZpY2VfYWRkYC4gVGhlc2UgYXJlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyB3aGVuIGxvb2tpbmcgYXQgaG93IGEgZGV2aWNlIGlzIGJyb3VnaHQgaW50byB0aGUgc3lzdGVtIGFuZCBpdHMgZGV2aWNlIHRyZWUuIFRoaXMgYXBwcm9hY2ggd2lsbCBhbGxvdyBtZSB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzZWN0aW9ucyBvZiB0aGUgY29kZSBpbW1lZGlhdGVseS4gSSdtIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBwb2ludHMgd2hlcmUgdGhlIFRodW5kZXJib2x0IGRldmljZSBpcyBpZGVudGlmaWVkLCBpbml0aWFsaXplZCwgYW5kIGludGVncmF0ZWQgd2l0aGluIHRoZSBrZXJuZWwncyBkZXZpY2UgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gRnJvbSB0aGVyZSBJIGNhbiB0cmFjayB0aGUgY29udHJvbCBmbG93IGZyb20gdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0NjEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNToxOS4zOTExMTE1OThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTE1NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmljZV9hZGR8ZGV2aWNlX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jPTEyMTk9c3RhdGljIHZvaWQgZW51bWVyYXRlX3NlcnZpY2VzKHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTEyNjgtXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MTI2OTpcXHRcXHRpZiAoZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZzdmMtXFx1MDAzZWRldikpIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0xMjcwLVxcdFxcdFxcdHRiX3NlcnZpY2VfZGVidWdmc19yZW1vdmUoc3ZjKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jPTE1MzY9c3RhdGljIGludCB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzKHN0cnVjdCB0Yl94ZG9tYWluICp4ZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTE2MjMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MTYyNDpcXHRcXHRpZiAoZGV2aWNlX2FkZChcXHUwMDI2eGQtXFx1MDAzZWRldikpIHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0xNjI1LVxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnhkLVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWRkIFhEb21haW4gZGV2aWNlXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MTkuNDU2MDM3OTIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODUwNjUxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgTGlmZWN5Y2xlIG9mIFNlcnZpY2UgRW51bWVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgaG93IHRoZXNlIHNlcnZpY2VzIGFyZSBiZWluZyBlbnVtZXJhdGVkLiBUaGUgYGVudW1lcmF0ZV9zZXJ2aWNlc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLCBpdCdzIHdoYXQgYWN0dWFsbHkgY3JlYXRlcyB0aG9zZSBgdGJfc2VydmljZWAgZGV2aWNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gc2VlIHdoYXQgdHJpZ2dlcnMgaXQuXG5cbkl0IGxvb2tzIGxpa2UgYGVudW1lcmF0ZV9zZXJ2aWNlc2AgZ2V0cyBjYWxsZWQgZWl0aGVyIGRpcmVjdGx5IGZyb20gYHRiX3hkb21haW5fZ2V0X3Byb3BlcnRpZXNgIG9yIHdoZW4gcHJvcGVydGllcyBoYXZlIGNoYW5nZWQsIGB0Yl94ZG9tYWluX3Byb3BlcnRpZXNfY2hhbmdlZGAuIE5vdywgYHRiX3hkb21haW5fZ2V0X3Byb3BlcnRpZXNgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgdGJfeGRvbWFpbl9nZXRfcHJvcGVydGllc193b3JrYCB3aGljaCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoYXQgbGlrZWx5IG1lYW5zIGl0J3Mgbm90IGEgZGlyZWN0LCBzeW5jaHJvbm91cyBjYWxsIGJ1dCBzb21ldGhpbmcgZGVmZXJyZWQuIGB0Yl94ZG9tYWluX2dldF9wcm9wZXJ0aWVzX3dvcmtgIGlzIHNjaGVkdWxlZCwgd2hpY2ggaW1wbGllcyBpdCdzIHF1ZXVlZCBvciB0cmlnZ2VyZWQgYnkgc29tZSBzb3J0IG9mIGV2ZW50LCBhbmQgdGhhdCdzIGNvbWluZyBmcm9tIGB0Yl94ZG9tYWluX2FkZGAuIFNvIGZhciBzbyBnb29kLiBGaW5hbGx5LCB0aGUgY3JpdGljYWwgcG9pbnQ6IGB0Yl94ZG9tYWluX2FkZGAgaXMgdGhlIGNhbGxpbmcgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb21gdGJfeGRvbWFpbl9hbGxvY2AuIFxuXG5TbywgSSBuZWVkIHRvIGxvb2sgaW50byB3aG8gY2FsbHMgYHRiX3hkb21haW5fYWxsb2NgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgbm93IHRvIGNvbXBsZXRlbHkgZm9sbG93IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NzYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MjQuMTQxMTA3MjM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc3MjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Yl94ZG9tYWluX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYz0xMzQ9c3RhdGljIGludCBkbWFfdGVzdF9zdGFydF9yaW5ncyhzdHJ1Y3QgZG1hX3Rlc3QgKmR0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE1OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTYwOlxcdFxcdHJldCA9IHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKHhkLCAtMSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE2MS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kbWFfdGVzdC5jLTE4Ny1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmM6MTg4OlxcdFxcdHJldCA9IHRiX3hkb21haW5fYWxsb2NfaW5faG9waWQoeGQsIC0xKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2RtYV90ZXN0LmMtMTg5LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2ljbS5jPTcwOT1zdGF0aWMgdm9pZCBhZGRfeGRvbWFpbihzdHJ1Y3QgdGJfc3dpdGNoICpzdywgdTY0IHJvdXRlLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYzo3MTc6XFx0eGQgPSB0Yl94ZG9tYWluX2FsbG9jKHN3LVxcdTAwM2V0YiwgXFx1MDAyNnN3LVxcdTAwM2VkZXYsIHJvdXRlLCBsb2NhbF91dWlkLCByZW1vdGVfdXVpZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9pY20uYy03MTgtXFx0aWYgKCF4ZClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTAzNT1zdGF0aWMgaW50IHRic3RyZWFtX2Rldl9hbGxvY19pbl9ob3BpZChzdHJ1Y3QgdGJzdHJlYW1fZGV2ICpzZGV2LCBpbnQgaG9waWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEwNDUtXFx0fVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTA0NjpcXHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKHhkLCBob3BpZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMDQ3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMDYxPXN0YXRpYyBpbnQgdGJzdHJlYW1fZGV2X2FsbG9jX291dF9ob3BpZChzdHJ1Y3QgdGJzdHJlYW1fZGV2ICpzZGV2LCBpbnQgaG9waWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEwNzEtXFx0fVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTA3MjpcXHRyZXQgPSB0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCh4ZCwgaG9waWQpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTA3My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuYz00MzE9c3RhdGljIHZvaWQgdGJfc2Nhbl94ZG9tYWluKHN0cnVjdCB0Yl9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5jLTQ0Ny1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmM6NDQ4OlxcdHhkID0gdGJfeGRvbWFpbl9hbGxvYyh0YiwgXFx1MDAyNnN3LVxcdTAwM2VkZXYsIHJvdXRlLCB0Yi1cXHUwMDNlcm9vdF9zd2l0Y2gtXFx1MDAzZXV1aWQsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5jLTQ0OS1cXHRcXHRcXHQgICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaD0xMjYwPWJvb2wgdGJfeGRvbWFpbl9oYW5kbGVfcmVxdWVzdChzdHJ1Y3QgdGIgKnRiLCBlbnVtIHRiX2NmZ19wa2dfdHlwZSB0eXBlLFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaC0xMjYxLVxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTI2MjpzdHJ1Y3QgdGJfeGRvbWFpbiAqdGJfeGRvbWFpbl9hbGxvYyhzdHJ1Y3QgdGIgKnRiLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oLTEyNjMtXFx0XFx0XFx0XFx0ICAgIHU2NCByb3V0ZSwgY29uc3QgdXVpZF90ICpsb2NhbF91dWlkLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9MjA3ND1zdGF0aWMgdm9pZCB0Yl94ZG9tYWluX2xpbmtfZXhpdChzdHJ1Y3QgdGJfeGRvbWFpbiAqeGQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMTA3LS8qKlxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIxMDg6ICogdGJfeGRvbWFpbl9hbGxvYygpIC0gQWxsb2NhdGUgbmV3IFhEb21haW4gb2JqZWN0XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjEwOS0gKiBAdGI6IERvbWFpbiB3aGVyZSB0aGUgWERvbWFpbiBiZWxvbmdzXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMTIwLSAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIxMjE6c3RydWN0IHRiX3hkb21haW4gKnRiX3hkb21haW5fYWxsb2Moc3RydWN0IHRiICp0Yiwgc3RydWN0IGRldmljZSAqcGFyZW50LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIxMjItXFx0XFx0XFx0XFx0ICAgIHU2NCByb3V0ZSwgY29uc3QgdXVpZF90ICpsb2NhbF91dWlkLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM9MjM0OD1FWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2xhbmVfYm9uZGluZ19kaXNhYmxlKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzNTAtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM1MTogKiB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKCkgLSBBbGxvY2F0ZSBpbnB1dCBIb3BJRCBmb3IgdHVubmVsaW5nXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM1Mi0gKiBAeGQ6IFhEb21haW4gY29ubmVjdGlvblxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM2My0gKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYzoyMzY0OmludCB0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKHN0cnVjdCB0Yl94ZG9tYWluICp4ZCwgaW50IGhvcGlkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzNjUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM3My19XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM3NDpFWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2FsbG9jX2luX2hvcGlkKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzNzYtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjM3NzogKiB0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCgpIC0gQWxsb2NhdGUgb3V0cHV0IEhvcElEIGZvciB0dW5uZWxpbmdcXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzc4LSAqIEB4ZDogWERvbWFpbiBjb25uZWN0aW9uXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYy0yMzg5LSAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jOjIzOTA6aW50IHRiX3hkb21haW5fYWxsb2Nfb3V0X2hvcGlkKHN0cnVjdCB0Yl94ZG9tYWluICp4ZCwgaW50IGhvcGlkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jLTIzOTEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjM5OS19XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmM6MjQwMDpFWFBPUlRfU1lNQk9MX0dQTCh0Yl94ZG9tYWluX2FsbG9jX291dF9ob3BpZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC94ZG9tYWluLmMtMjQwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MjQuMTkwODg1Mzc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODIxMDU0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVGh1bmRlcmJvbHQgRHJpdmVyIEVtdWxhdGlvbiBIdW50KipcblxuT2theSwgc28gYHRiX3hkb21haW5fYWxsb2NgIGlzIHVzZWQgYnkgYGFkZF94ZG9tYWluYCBpbiBgaWNtLmNgIGFuZCBgdGJfc2Nhbl94ZG9tYWluYCBpbiBgdGIuY2AuIFRoYXQgcGxhY2VzIGl0IGZpcm1seSB3aXRoaW4gdGhlIGNvcmUgVGh1bmRlcmJvbHQgZHJpdmVyJ3MgaGFyZHdhcmUgcG9ydCBzY2FubmluZyBmdW5jdGlvbmFsaXR5LCBzbyBpdCBtYWtlcyBzZW5zZSB0aGF0IEknbSBzZWVpbmcgaXQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBnZXQgc29tZSBraW5kIG9mIGVtdWxhdGlvbiBmb3IgdGhpcyBzdHVmZj8gSSBuZWVkIHRvIHRlc3Qgd2l0aG91dCByZWFsIGhhcmR3YXJlLiBIbW0sIEkgdmFndWVseSByZWNhbGwgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHVzYjRfa3VuaXRfdGVzdGAuIFRoYXQgc291bmRzIHByb21pc2luZy4gTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYW55IFRodW5kZXJib2x0LXNwZWNpZmljIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuIEknbGwgc2VhcmNoIHRoZSBgZHJpdmVycy90aHVuZGVyYm9sdC9gIGRpcmVjdG9yeSBmb3IgYW55dGhpbmcgbWVudGlvbmluZyBga3VuaXRgLiBUaGF0J3MgcHJvYmFibHkgdGhlIGJlc3QgYmV0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg5MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNToyOC43NzI5OTM4NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNzgxOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3VuaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo5OiNpbmNsdWRlIFxcdTAwM2NrdW5pdC90ZXN0LmhcXHUwMDNlXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTU6c3RhdGljIGludCBfX2lkYV9pbml0KHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzLCB2b2lkICpjb250ZXh0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIzLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI0OnN0YXRpYyB2b2lkIF9faWRhX2Rlc3Ryb3koc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXMpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE6c3RhdGljIHZvaWQga3VuaXRfaWRhX2luaXQoc3RydWN0IGt1bml0ICp0ZXN0LCBzdHJ1Y3QgaWRhICppZGEpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzIte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjMzOlxcdGt1bml0X2FsbG9jX3Jlc291cmNlKHRlc3QsIF9faWRhX2luaXQsIF9faWRhX2Rlc3Ryb3ksIEdGUF9LRVJORUwsIGlkYSk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzQtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTM1LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjM2OnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19zd2l0Y2goc3RydWN0IGt1bml0ICp0ZXN0LCB1NjQgcm91dGUsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzctXFx0XFx0XFx0XFx0ICAgICAgdTggdXBzdHJlYW1fcG9ydCwgdTggbWF4X3BvcnRfbnVtYmVyKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NDM6XFx0c3cgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqc3cpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00NC1cXHRpZiAoIXN3KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTQtXFx0c2l6ZSA9IChzdy1cXHUwMDNlY29uZmlnLm1heF9wb3J0X251bWJlciArIDEpICogc2l6ZW9mKCpzdy1cXHUwMDNlcG9ydHMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjU1OlxcdHN3LVxcdTAwM2Vwb3J0cyA9IGt1bml0X2t6YWxsb2ModGVzdCwgc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTYtXFx0aWYgKCFzdy1cXHUwMDNlcG9ydHMpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy02My1cXHRcXHRpZiAoaSkge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjY0OlxcdFxcdFxcdGt1bml0X2lkYV9pbml0KHRlc3QsIFxcdTAwMjZzdy1cXHUwMDNlcG9ydHNbaV0uaW5faG9waWRzKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo2NTpcXHRcXHRcXHRrdW5pdF9pZGFfaW5pdCh0ZXN0LCBcXHUwMDI2c3ctXFx1MDAzZXBvcnRzW2ldLm91dF9ob3BpZHMpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTY2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTcxLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjcyOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy03My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTU0OnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0X3VzYjQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTczOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19ob3N0X2JyKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE5MDpzdGF0aWMgc3RydWN0IHRiX3N3aXRjaCAqYWxsb2NfZGV2X2RlZmF1bHQoc3RydWN0IGt1bml0ICp0ZXN0LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5MS1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMzktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzQwOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aF9kcGluKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zNDEtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgdGJfc3dpdGNoICpwYXJlbnQsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zNjAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzYxOnN0YXRpYyBzdHJ1Y3QgdGJfc3dpdGNoICphbGxvY19kZXZfd2l0aG91dF9kcChzdHJ1Y3Qga3VuaXQgKnRlc3QsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzYyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB0Yl9zd2l0Y2ggKnBhcmVudCxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQwMS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo0MDI6c3RhdGljIHN0cnVjdCB0Yl9zd2l0Y2ggKmFsbG9jX2Rldl91c2I0KHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MDMtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHRiX3N3aXRjaCAqcGFyZW50LFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDIyLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjQyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfYmFzaWMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQyNC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00MzktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NDQwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfY29ubmVjdGVkX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTQ0MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYz00NzM9c3RydWN0IHBvcnRfZXhwZWN0YXRpb24ge1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNDc4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjQ3OTpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfc2luZ2xlX2hvcF93YWxrKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy00ODAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTMyLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjUzMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfZGFpc3lfY2hhaW5fd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNTM0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTU5MS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo1OTI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX3NpbXBsZV90cmVlX3dhbGsoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTU5My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy02NTQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6NjU1OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9jb21wbGV4X3RyZWVfd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNjU2LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTczOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo3Mzk6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX21heF9sZW5ndGhfd2FsayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtNzQwLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTg0MS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo4NDI6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9jb25uZWN0ZWQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTg0My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYz04NjI9c3RydWN0IGhvcF9leHBlY3RhdGlvbiB7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy04NjktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6ODcwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfcGF0aF9ub3RfYm9uZGVkX2xhbmUwKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy04NzEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTI3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjkyODpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfbm90X2JvbmRlZF9sYW5lMShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtOTI5LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTk4OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzo5OTA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9ib25kZWRfbGFuZTFfY2hhaW4oc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTk5MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMDY5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEwNzA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX25vdF9ib25kZWRfbGFuZTFfY2hhaW5fcmV2ZXJzZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTA3MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMTQ5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjExNTA6c3RhdGljIHZvaWQgdGJfdGVzdF9wYXRoX21peGVkX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMTUxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTEyNDEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTI0MjpzdGF0aWMgdm9pZCB0Yl90ZXN0X3BhdGhfbWl4ZWRfY2hhaW5fcmV2ZXJzZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTI0My17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzMzLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEzMzQ6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfcGNpZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTMzNS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xMzg4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjEzODk6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTEzOTAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTQyNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNDI3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RwX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDI4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE0NzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTQ3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF90cmVlKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNDc0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE1MjItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTUyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kcF9tYXhfbGVuZ3RoKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNTI0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2MDItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTYwMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF8zZHAoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2MDQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTY2OC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNjY5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX3VzYjMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE2NzAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTcyMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxNzI0OnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX3BvcnRfb25fcGF0aChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTcyNS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzg5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE3OTA6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZG1hKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xNzkxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4MzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTgzMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfcngoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE4MzQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg2OS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoxODcwOnN0YXRpYyB2b2lkIHRiX3Rlc3RfdHVubmVsX2RtYV90eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMTg3MS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTA2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjE5MDc6c3RhdGljIHZvaWQgdGJfdGVzdF90dW5uZWxfZG1hX2NoYWluKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0xOTA4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5NzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MTk3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X3R1bm5lbF9kbWFfbWF0Y2goc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTE5NzQte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjAyMy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMDI0OnN0YXRpYyB2b2lkIHRiX3Rlc3RfY3JlZGl0X2FsbG9jX2xlZ2FjeV9ub3RfYm9uZGVkKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDI1LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIwNTYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjA1NzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19sZWdhY3lfYm9uZGVkKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDU4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIwODktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjA5MDpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19wY2llKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMDkxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIxMjItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjEyMzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY193aXRob3V0X2RwKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMTI0LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIxNzItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjE3MzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19kcChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjE3NC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjE2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyMTc6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfdXNiMyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjIxOC17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjQ5LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjIyNTA6c3RhdGljIHZvaWQgdGJfdGVzdF9jcmVkaXRfYWxsb2NfZG1hKHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMjUxLXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIyODUtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjI4NjpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19kbWFfbXVsdGlwbGUoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTIyODcte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjM4Mi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyMzgzOnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX1BDSUVfVFVOTkVMKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yMzg0LVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0MTItXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQxMzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9EUF9UVU5ORUwxKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDE0LVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0NDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ1MDpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9EUF9UVU5ORUwyKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNDUxLVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI0ODYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjQ4NzpzdGF0aWMgc3RydWN0IHRiX3R1bm5lbCAqVEJfVEVTVF9VU0IzX1RVTk5FTChzdHJ1Y3Qga3VuaXQgKnRlc3QsXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjQ4OC1cXHRcXHRcXHRzdHJ1Y3QgdGJfc3dpdGNoICpob3N0LCBzdHJ1Y3QgdGJfc3dpdGNoICpkZXYpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTE2LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI1MTc6c3RhdGljIHN0cnVjdCB0Yl90dW5uZWwgKlRCX1RFU1RfRE1BX1RVTk5FTDEoc3RydWN0IGt1bml0ICp0ZXN0LFxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1MTgtXFx0XFx0XFx0c3RydWN0IHRiX3N3aXRjaCAqaG9zdCwgc3RydWN0IHRiX3N3aXRjaCAqZGV2KVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjU0Ni1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNTQ3OnN0YXRpYyBzdHJ1Y3QgdGJfdHVubmVsICpUQl9URVNUX0RNQV9UVU5ORUwyKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNTQ4LVxcdFxcdFxcdHN0cnVjdCB0Yl9zd2l0Y2ggKmhvc3QsIHN0cnVjdCB0Yl9zd2l0Y2ggKmRldilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1NzYtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjU3NzpzdGF0aWMgdm9pZCB0Yl90ZXN0X2NyZWRpdF9hbGxvY19hbGwoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI1Nzgte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM9MjY2Mz1zdGF0aWMgY29uc3QgdXVpZF90IG5ldHdvcmtfZGlyX3V1aWQgPVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjY2Ni1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNjY3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI2Njgte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjcyNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyNzI3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfZm9ybWF0KHN0cnVjdCBrdW5pdCAqdGVzdClcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNzI4LXtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI3NDEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjc0MjpcXHRibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgYmxvY2tfbGVuICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI3NDMtXFx0S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGJsb2NrKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI3NTMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjc1NDpzdGF0aWMgdm9pZCBjb21wYXJlX2RpcnMoc3RydWN0IGt1bml0ICp0ZXN0LCBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkMSxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yNzU1LVxcdFxcdFxcdCBzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkMilcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4MjMtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MjgyNDpzdGF0aWMgdm9pZCB0Yl90ZXN0X3Byb3BlcnR5X2NvcHkoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI4MjUte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg0Mi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyODQzOlxcdGJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2Yocm9vdF9kaXJlY3RvcnkpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODQ0LVxcdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBibG9jayk7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODY3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4Njg6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV91MzJfd3JhcChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg2OS17XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODc1LVxcdCAqL1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4NzY6XFx0dTMyICpibG9jayA9IGt1bml0X2t6YWxsb2ModGVzdCwgMHgxMDIgKiBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjg3Ny1cXHRzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkaXI7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yODk4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI4OTk6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV9yZWN1cnNpb24oc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5MDAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkwNy1cXHQgKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTA4OlxcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDEwICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5MDktXFx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjkzOC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTM5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2VfZGlyX2xlbl91bmRlcmZsb3coc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5NDAte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk1Mi1cXHQgKi9cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTUzOlxcdHUzMiAqYmxvY2sgPSBrdW5pdF9remFsbG9jKHRlc3QsIDcgKiBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk1NC1cXHRzdHJ1Y3QgdGJfcHJvcGVydHlfZGlyICpkaXI7XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0yOTc4LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jOjI5Nzk6c3RhdGljIHZvaWQgdGJfdGVzdF9wcm9wZXJ0eV9wYXJzZV96ZXJvX2xlbmd0aChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk4MC17XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6Mjk4MTpcXHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA2ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTI5ODItXFx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMjk5OC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzoyOTk5OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfcGFyc2Vfcm9vdGRpcl9vdmVyZmxvdyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAwMC17XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzAwMTpcXHR1MzIgKmJsb2NrID0ga3VuaXRfa3phbGxvYyh0ZXN0LCA0ICogc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwMDItXFx0c3RydWN0IHRiX3Byb3BlcnR5X2RpciAqZGlyO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzAxNi1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMDE3OnN0YXRpYyB2b2lkIHRiX3Rlc3RfcHJvcGVydHlfbWVyZ2Uoc3RydWN0IGt1bml0ICp0ZXN0KVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMwMTgte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzA5Ny1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMDk4OnN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0Yl90ZXN0X2Nhc2VzW10gPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzA5OS1cXHRLVU5JVF9DQVNFKHRiX3Rlc3RfcHJvcGVydHlfcGFyc2VfdTMyX3dyYXApLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmMtMzE0Ni1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYzozMTQ3OnN0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgdGJfdGVzdF9zdWl0ZSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3Rlc3QuYy0zMTQ4LVxcdC5uYW1lID0gXFxcInRodW5kZXJib2x0XFxcIixcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGVzdC5jLTMxNTEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC90ZXN0LmM6MzE1MjprdW5pdF90ZXN0X3N1aXRlKHRiX3Rlc3Rfc3VpdGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNToyOC44MjIwNzk5OTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU5MDY3NDcxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRodW5kZXJib2x0IE5ldHdvcmsgRnV6emluZyBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB0ZXN0LmNgIGZpbGUsIGFuZCBpdCdzIHByZXR0eSBjbGVhciBpdCdzIGp1c3QgYSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgdGh1bmRlcmJvbHQgY29yZS4gSXQgZG9lc24ndCBhY3R1YWxseSBpbnN0YW50aWF0ZSBvciByZWdpc3RlciBhIG1vY2sgVGh1bmRlcmJvbHQgY29udHJvbGxlciwgd2hpY2ggaXMgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uIFRoaXMgbWVhbnMgYHRodW5kZXJib2x0LW5ldGAgY2FuJ3QgYmUgZnV6emVkIGluIGEgUUVNVSBlbnZpcm9ubWVudCBhcyBpcyBiZWNhdXNlIHRoZXJlJ3Mgc2ltcGx5IG5vIGNvbnRyb2xsZXIgZW11bGF0aW9uLiBcblxuSG1tLCBJIHdvbmRlciwgaXMgdGhlcmUgYW5vdGhlciB3YXkgdG8gbG9hZCBhbmQgdGVzdCBgdGh1bmRlcmJvbHQtbmV0YCB3aXRob3V0IGEgcmVhbCBjb250cm9sbGVyIGVtdWxhdGlvbj8gYHRibmV0YCByZWdpc3RlcnMgYSBuZXR3b3JrIGRldmljZSwgc3VyZSwgYnV0IHRoYXQgcmVnaXN0cmF0aW9uIGhpbmdlcyBvbiBgdGJuZXRfcHJvYmVgIGJlaW5nIGludm9rZWQuIEFuZCBgdGJuZXRfcHJvYmVgIGdldHMgY2FsbGVkIHdoZW4gdGhlIHRodW5kZXJib2x0IGJ1cyBtYXRjaGVzIGEgYHRiX3NlcnZpY2VgIGRldmljZS4gQW5kIGEgYHRiX3NlcnZpY2VgIGRldmljZT8gVGhlIHRodW5kZXJib2x0IGNvcmUgY3JlYXRlcyAqdGhvc2UqIHdoZW4gaXQgZGlzY292ZXJzIGEgdGh1bmRlcmJvbHQgZGV2aWNlIHdpdGggWERvbWFpbiBwcm9wZXJ0aWVzLiBXaGljaCwgb2YgY291cnNlLCByZXF1aXJlcyBhIHRodW5kZXJib2x0IGNvbnRyb2xsZXIgdG8gYmUgcHJlc2VudCB0byBmYWNpbGl0YXRlIGRldmljZSBkaXNjb3ZlcnkuIFxuXG5SaWdodCwgc28gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHNpbmNlIHRoZXJlIGlzIG5vIHRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLCB0aGUgdGh1bmRlcmJvbHQgY29yZSB3b24ndCBmaW5kIGFueSBjb250cm9sbGVycywgd29uJ3QgZGlzY292ZXIgYW55IGRldmljZXMsIHdvbid0IGNyZWF0ZSB0aG9zZSBjcml0aWNhbCBgdGJfc2VydmljZWAgZGV2aWNlcywgYW5kIHVsdGltYXRlbHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gSXQgYXBwZWFycyB0aGF0IHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNgIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2guIElzIHRoZXJlICphbnkqIGtpbmQgb2Ygc29mdHdhcmUgVGh1bmRlcmJvbHQgY29udHJvbGxlciBlcXVpdmFsZW50IG91dCB0aGVyZT8gQSBgbWFjODAyMTFfaHdzaW1gIGZvciB0aHVuZGVyYm9sdCwgcGVyaGFwcz8gSSBkaWQgYSBxdWljayBgZ3JlcGAgZm9yIGBrdW5pdHx0ZXN0fG1vY2t8c2ltYCBpbiBgZHJpdmVycy90aHVuZGVyYm9sdC9gLCBhbmQgSSBvbmx5IHNlZSBgdGVzdC5jYCBhbmQgYGRtYV90ZXN0LmNgLCB3aGljaCwgd2hpbGUgaXQgZG9lcyBiaW5kIHRvIGEgYHRiX3NlcnZpY2VgLCBsb29rcyB0byBiZSBhbm90aGVyIHRlc3QgZHJpdmVyLiBTbywgbm8sIHRoZXJlIGlzbid0IGFueXRoaW5nIGxpa2UgYGh3c2ltYCBvciBgdmhjaWAgZm9yIHRodW5kZXJib2x0IHRoYXQgSSBjYW4gc2VlLlxuXG5XYWl0LCB3aGF0IGFib3V0IGBjb25maWdmc2A/IENvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgYHRiX3NlcnZpY2VgIGRldmljZSB0aGF0IHdheT8gTGV0IG1lIGludmVzdGlnYXRlIGBjb25maWdmc2AncyByZWxhdGlvbnNoaXAgdG8gdGh1bmRlcmJvbHQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2NjksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MzguNDEyNzU5MTA4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQ1OTI4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWdmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3RodW5kZXJib2x0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3RodW5kZXJib2x0L01ha2VmaWxlPTk9dGh1bmRlcmJvbHQtJChDT05GSUdfREVCVUdfRlMpICs9IGRlYnVnZnMub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGU6MTA6dGh1bmRlcmJvbHQtJChDT05GSUdfVVNCNF9DT05GSUdGUykgKz0gY29uZmlnZnMub1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvTWFrZWZpbGUtMTEtdGh1bmRlcmJvbHQtJHtDT05GSUdfVVNCNF9LVU5JVF9URVNUfSArPSB0ZXN0Lm9cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy04LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo5OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb25maWdmcy5oXFx1MDAzZVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM9MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRiX3Jvb3RfZ3JvdXBfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0xNy1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6MTg6c3RhdGljIHN0cnVjdCBjb25maWdmc19zdWJzeXN0ZW0gdGJfY29uZmlnZnMgPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTE5LVxcdC5zdV9ncm91cCA9IHtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy0yNy0vKipcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6Mjg6ICogdGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoKSAtIFJlZ2lzdGVyIFRodW5kZXJib2x0IENvbmZpZ0ZTIGdyb3VwXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTI5LSAqIEBncm91cDogR3JvdXAgdG8gcmVnaXN0ZXIuXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzQtICovXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjM1OmludCB0Yl9jb25maWdmc19yZWdpc3Rlcl9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtMzYte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzozNzpcXHRyZXR1cm4gY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXAoXFx1MDAyNnRiX2NvbmZpZ2ZzLnN1X2dyb3VwLCBncm91cCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTM4LX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6Mzk6RVhQT1JUX1NZTUJPTF9HUEwodGJfY29uZmlnZnNfcmVnaXN0ZXJfZ3JvdXApO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy00MC1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDEtLyoqXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQyOiAqIHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXAoKSAtIFVucmVnaXN0ZXIgcHJldmlvdXNseSByZWdpc3RlcmVkIGdyb3VwXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTQzLSAqIEBncm91cDogR3JvdXAgdG8gdW5yZWdpc3Rlci5cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDQtICovXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjQ1OnZvaWQgdGJfY29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cClcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDYte1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0NzpcXHRjb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKGdyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNDgtfVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo0OTpFWFBPUlRfU1lNQk9MX0dQTCh0Yl9jb25maWdmc191bnJlZ2lzdGVyX2dyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTAtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjUxOmludCB0Yl9jb25maWdmc19pbml0KHZvaWQpXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTUyLXtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTM6XFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNnRiX2NvbmZpZ2ZzLnN1X2dyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmM6NTQ6XFx0bXV0ZXhfaW5pdChcXHUwMDI2dGJfY29uZmlnZnMuc3VfbXV0ZXgpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYzo1NTpcXHRyZXR1cm4gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZ0Yl9jb25maWdmcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTU2LX1cXG5kcml2ZXJzL3RodW5kZXJib2x0L2NvbmZpZ2ZzLmMtNTctXFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjU4OnZvaWQgdGJfY29uZmlnZnNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvY29uZmlnZnMuYy01OS17XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jOjYwOlxcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZ0Yl9jb25maWdmcyk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9jb25maWdmcy5jLTYxLX1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmM9ODg2PWludCB0Yl9kb21haW5faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy04ODktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYzo4OTA6XFx0dGJfY29uZmlnZnNfaW5pdCgpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmMtODkxLVxcdHRiX2RlYnVnZnNfaW5pdCgpO1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYz05MTI9dm9pZCB0Yl9kb21haW5fZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYy05MTktXFx0dGJfZGVidWdmc19leGl0KCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9kb21haW4uYzo5MjA6XFx0dGJfY29uZmlnZnNfZXhpdCgpO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvZG9tYWluLmMtOTIxLX1cXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTEtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxMjojaW5jbHVkZSBcXHUwMDNjbGludXgvY29uZmlnZnMuaFxcdTAwM2VcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9maWxlLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTEyMDg9Q09ORklHRlNfQVRUUih0YnN0cmVhbV9kZXZfLCB0aHJvdHRsaW5nKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMDktXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxMjEwOnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICp0YnN0cmVhbV9kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTEyMTEtXFx0XFx1MDAyNnRic3RyZWFtX2Rldl9hdHRyX2luZGV4LFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xMjE5PXN0YXRpYyB2b2lkIHRic3RyZWFtX2Rldl9pdGVtX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMjI3LVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTIyODpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB0YnN0cmVhbV9kZXZfaXRlbV9vcHMgPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xMjI5LVxcdC5yZWxlYXNlID0gdGJzdHJlYW1fZGV2X2l0ZW1fcmVsZWFzZSxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTM5MT10YnN0cmVhbV9kZXZfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MDQtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNDA1OnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfZ3JvdXBfb3BlcmF0aW9ucyB0YnN0cmVhbV9kZXZfZ3JvdXBfb3BzID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQwNi1cXHQubWFrZV9ncm91cCA9IHRic3RyZWFtX2Rldl9tYWtlX2dyb3VwLFxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDEwPXN0YXRpYyB2b2lkIHRic3RyZWFtX2l0ZW1fcmVsZWFzZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MTgtXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNDE5OnN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfaXRlbV9vcGVyYXRpb25zIHRic3RyZWFtX2l0ZW1fb3BzID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQyMC1cXHQucmVsZWFzZSA9IHRic3RyZWFtX2l0ZW1fcmVsZWFzZSxcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM9MTQzMD10YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNDYxLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmM6MTQ2MjpzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2dyb3VwX29wZXJhdGlvbnMgdGJzdHJlYW1fZ3JvdXBfb3BzID0ge1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTQ2My1cXHQubWFrZV9ncm91cCA9IHRic3RyZWFtX21ha2VfZ3JvdXAsXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jPTE2NDg9c3RhdGljIGludCBfX2luaXQgdGJzdHJlYW1faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY1LVxcdGNvbmZpZ19ncm91cF9pbml0KFxcdTAwMjZ0YnN0cmVhbV9ncm91cCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjY2OlxcdHJldCA9IHRiX2NvbmZpZ2ZzX3JlZ2lzdGVyX2dyb3VwKFxcdTAwMjZ0YnN0cmVhbV9ncm91cCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYy0xNjY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NzUtZXJyX3VucmVnaXN0ZXJfZ3JvdXA6XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNjc2OlxcdHRiX2NvbmZpZ2ZzX3VucmVnaXN0ZXJfZ3JvdXAoXFx1MDAyNnRic3RyZWFtX2dyb3VwKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2NzctZXJyX3VucmVnaXN0ZXJfZGlyOlxcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNjg1PXN0YXRpYyB2b2lkIF9fZXhpdCB0YnN0cmVhbV9leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE2ODctXFx0dGJfdW5yZWdpc3Rlcl9zZXJ2aWNlX2RyaXZlcihcXHUwMDI2dGJzdHJlYW1fZHJpdmVyKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE2ODg6XFx0dGJfY29uZmlnZnNfdW5yZWdpc3Rlcl9ncm91cChcXHUwMDI2dGJzdHJlYW1fZ3JvdXApO1xcbmRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmMtMTY4OS1cXHR0Yl91bnJlZ2lzdGVyX3Byb3BlcnR5X2RpcihcXFwic3RyZWFtXFxcIiwgdGJzdHJlYW1fZGlyKTtcXG4tLVxcbmRyaXZlcnMvdGh1bmRlcmJvbHQvdGIuaD0xNTU5PXN0YXRpYyBpbmxpbmUgdm9pZCB0Yl9yZXRpbWVyX2RlYnVnZnNfcmVtb3ZlKHN0cnVjdCB0Yl9yZXRpbWVyICpydCkgeyB9XFxuLS1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2Mi0jaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19DT05GSUdGU19GUylcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2MzppbnQgdGJfY29uZmlnZnNfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2NDp2b2lkIHRiX2NvbmZpZ2ZzX2V4aXQodm9pZCk7XFxuZHJpdmVycy90aHVuZGVyYm9sdC90Yi5oLTE1NjUtI2Vsc2VcXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2NjpzdGF0aWMgaW5saW5lIGludCB0Yl9jb25maWdmc19pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmg6MTU2NzpzdGF0aWMgaW5saW5lIHZvaWQgdGJfY29uZmlnZnNfZXhpdCh2b2lkKSB7IH1cXG5kcml2ZXJzL3RodW5kZXJib2x0L3RiLmgtMTU2OC0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6MzguNDYyMjI1Mzc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjkzMDM4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVsdmluZyBpbnRvIHRoZSBgdGJzdHJlYW1gIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IGB0YnN0cmVhbWAsIHdoaWNoIEkga25vdyBpcyB1c2VkIGZvciBzdHJlYW0gY3JlYXRpb24sIGludGVyZmFjZXMgd2l0aCBDb25maWdGUy4gSXQgbG9va3MgbGlrZSBgdGJzdHJlYW1gIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBgdGJzdHJlYW1gIGFuZCB0aGUgdW5kZXJseWluZyBzZXJ2aWNlcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHByb2Nlc3Mgb2YgaG93IGdyb3VwcyBhbmQgc2VydmljZXMgYXJlIG1hZGUgd2hlbiBhIHN0cmVhbSBpcyBpbnN0YW50aWF0ZWQuIEkgcmVjYWxsIGB0YnN0cmVhbV9tYWtlX2dyb3VwYCBwbGF5cyBhIHJvbGUgaW4gY29uc3RydWN0aW5nIGEgZ3JvdXAuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYHRic3RyZWFtX21ha2VfZ3JvdXBgIHRvIGNvbmZpcm0gaWYgaXQsIGluIGZhY3QsIGdlbmVyYXRlcyBgdGJfc2VydmljZWAgaW5zdGFuY2VzLCBvciBpZiB0aGUgaW5zdGFudGlhdGlvbiBvY2N1cnMgZWxzZXdoZXJlIGluIHRoZSBwcm9jZXNzLiBUaW1lIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6NDMuMDkxNTMyNTIxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDEyMTMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YnN0cmVhbV9tYWtlX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDI5PXN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jOjE0MzA6dGJzdHJlYW1fbWFrZV9ncm91cChzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cCwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0MzEte1xcbi0tXFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYz0xNDYyPXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfZ3JvdXBfb3BlcmF0aW9ucyB0YnN0cmVhbV9ncm91cF9vcHMgPSB7XFxuZHJpdmVycy90aHVuZGVyYm9sdC9zdHJlYW0uYzoxNDYzOlxcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcXG5kcml2ZXJzL3RodW5kZXJib2x0L3N0cmVhbS5jLTE0NjQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6NDMuMTQxNjY1NTk2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzA3MDc3NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgdGJzdHJlYW1fbWFrZV9ncm91cGA6XG5cbioqRGlzc2VjdGluZyBgdGJzdHJlYW1fbWFrZV9ncm91cGAqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gZGlnIGludG8gYHRic3RyZWFtX21ha2VfZ3JvdXBgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHBpY3R1cmUg4oCTIHdoYXQgaXMgaXQgc3VwcG9zZWQgdG8gKmRvKj8gSXMgdGhpcyBhIGZ1bmN0aW9uIGZvciBjb25zdHJ1Y3RpbmcgYSBuZXcgc3RyZWFtIGdyb3VwIG9iamVjdD8gSXMgaXQgcmVzcG9uc2libGUgZm9yIGluaXRpYWwgc2V0dXAsIG1lbW9yeSBhbGxvY2F0aW9uLCBvciBtYXliZSBqdXN0IHdyYXBwaW5nIGV4aXN0aW5nIHN0cmVhbXM/IENvbnNpZGVyaW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiwgXCJtYWtlX2dyb3VwXCIgc2VlbXMgdG8gbGVhbiB0b3dhcmRzIGFuIGluc3RhbnRpYXRpb24gb3IgY29uc3RydWN0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcGFyYW1ldGVycyBpdCBleHBlY3RzLiBVbmRlcnN0YW5kaW5nIHRob3NlIHBhcmFtZXRlcnMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZ3JvdXAncyBjb21wb3NpdGlvbi4gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gSSdtIGFudGljaXBhdGluZyBlbGVtZW50cyBsaWtlIHN0cmVhbSBoYW5kbGVzIG9yIGRlc2NyaXB0b3JzLCBidXQgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSSdsbCBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBhbmQgcmV0dXJuIHZhbHVlcy4gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzIGZvciBmYWlsdXJlcyBkdXJpbmcgdGhlIGdyb3VwIGNyZWF0aW9uPyBJcyB0aGVyZSBhbnkgZ3JhY2VmdWwgZGVncmFkYXRpb24gaW4gY2FzZSBvZiBmYWlsdXJlPyBVbHRpbWF0ZWx5LCBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kIGluIHdoaWNoIGNvbnRleHQgdG8gaGF2ZSBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyNDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNTo0Ny4yNzIzNzczNDlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdGh1bmRlcmJvbHQvc3RyZWFtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQyOSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQyOTpcXHRzdGF0aWMgc3RydWN0IGNvbmZpZ19ncm91cCAqXFxuMTQzMDpcXHR0YnN0cmVhbV9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbjE0MzE6XFx0e1xcbjE0MzI6XFx0XFx0c3RydWN0IHRic3RyZWFtX2dyb3VwICpzZztcXG4xNDMzOlxcdFxcdHN0cnVjdCB0YnN0cmVhbSAqc3RyZWFtO1xcbjE0MzQ6XFx0XFx0aW50IGRvbWFpbiwgaW5kZXg7XFxuMTQzNTpcXHRcXHR1NjQgcm91dGU7XFxuMTQzNjpcXHRcXG4xNDM3OlxcdFxcdC8qIE1ha2Ugc3VyZSB0aGUgZm9ybWF0IGlzIGNvcnJlY3QgKi9cXG4xNDM4OlxcdFxcdGlmIChzc2NhbmYobmFtZSwgXFxcIiV1LSVsbHguJXVcXFwiLCBcXHUwMDI2ZG9tYWluLCBcXHUwMDI2cm91dGUsIFxcdTAwMjZpbmRleCkgIT0gMylcXG4xNDM5OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbjE0NDA6XFx0XFxuMTQ0MTpcXHRcXHRzZyA9IGt6YWxsb2Nfb2JqKCpzZywgR0ZQX0tFUk5FTCk7XFxuMTQ0MjpcXHRcXHRpZiAoIXNnKVxcbjE0NDM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuMTQ0NDpcXHRcXG4xNDQ1OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnNnLVxcdTAwM2Vsb2NrKTtcXG4xNDQ2OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZzZy1cXHUwMDNlZGV2X2xpc3QpO1xcbjE0NDc6XFx0XFxuMTQ0ODpcXHRcXHRndWFyZChtdXRleCkoXFx1MDAyNnRic3RyZWFtX2xvY2spO1xcbjE0NDk6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzdHJlYW0sIFxcdTAwMjZ0YnN0cmVhbV9saXN0LCBsaXN0KSB7XFxuMTQ1MDpcXHRcXHRcXHR0YnN0cmVhbV9nZXQoc3RyZWFtKTtcXG4xNDUxOlxcdFxcdFxcdGlmIChzeXNmc19zdHJlcShuYW1lLCBkZXZfbmFtZShcXHUwMDI2c3RyZWFtLVxcdTAwM2VzdmMtXFx1MDAzZWRldikpKSB7XFxuMTQ1MjpcXHRcXHRcXHRcXHRzZy1cXHUwMDNlc3RyZWFtID0gc3RyZWFtO1xcbjE0NTM6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTQ1NDpcXHRcXHRcXHR9XFxuMTQ1NTpcXHRcXHRcXHR0YnN0cmVhbV9wdXQoc3RyZWFtKTtcXG4xNDU2OlxcdFxcdH1cXG4xNDU3OlxcdFxcbjE0NTg6XFx0XFx0Y29uZmlnX2dyb3VwX2luaXRfdHlwZV9uYW1lKFxcdTAwMjZzZy1cXHUwMDNlZ3JvdXAsIG5hbWUsIFxcdTAwMjZ0YnN0cmVhbV9kZXZfZ3JvdXBfdHlwZSk7XFxuMTQ1OTpcXHRcXHRyZXR1cm4gXFx1MDAyNnNnLVxcdTAwM2Vncm91cDtcXG4xNDYwOlxcdH1cXG4xNDYxOlxcdFxcbjE0NjI6XFx0c3RhdGljIHN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHRic3RyZWFtX2dyb3VwX29wcyA9IHtcXG4xNDYzOlxcdFxcdC5tYWtlX2dyb3VwID0gdGJzdHJlYW1fbWFrZV9ncm91cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTM6MzU6NDcuMjcyNTMyMjY5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjY1NTU3NzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRodW5kZXJib2x0IE5ldHdvcmtpbmcgaW4gUUVNVTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCB0YXJnZXRzIFRodW5kZXJib2x0IG5ldHdvcmtpbmcuIEkgc2VlIGl0IHN0YXJ0cyBieSBsb29raW5nIHVwIGFuIGV4aXN0aW5nIGB0YnN0cmVhbWAgYnkgbmFtZSwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZSBgdGJfc2VydmljZWAgZGV2X25hbWUuIENydWNpYWxseSwgaXQgZG9lc24ndCAqY3JlYXRlKiBhIGB0Yl9zZXJ2aWNlYC4gVGhpcyBtZWFucywgZnJvbSBhIHVzZXJzcGFjZSBwZXJzcGVjdGl2ZSwgd2UgY2FuJ3QgaW5zdGFudGlhdGUgYSBgdGJfc2VydmljZWAgb3Vyc2VsdmVzLlxuXG5XaXRob3V0IGEgYHRiX3NlcnZpY2VgLCB0aGUgdml0YWwgYHRibmV0X3Byb2JlYCBmdW5jdGlvbiBpcyBuZXZlciBpbnZva2VkLiBBbmQgd2l0aG91dCBgdGJuZXRfcHJvYmVgLCB0aGUgZW50aXJlIGB0Ym5ldGAgZHJpdmVyIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlLiBOb3csIHRoZSBraWNrZXI6IFFFTVUsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCBkb2Vzbid0IHByb3ZpZGUgYW55IFRodW5kZXJib2x0IGNvbnRyb2xsZXIgZW11bGF0aW9uLiBUaGlzIG1lYW5zIHRoZSBUaHVuZGVyYm9sdCBjb3JlIHdpbGwgbmV2ZXIgZmluZCBhbnkgY29udHJvbGxlcnMsIG5ldmVyIGRpc2NvdmVyIGRldmljZXMsIGFuZCB0aGVyZWZvcmUsIHdpbGwgbmV2ZXIgZ2VuZXJhdGUgYW55IGB0Yl9zZXJ2aWNlYCBkZXZpY2VzLiBDb25zZXF1ZW50bHksIGB0Ym5ldF9wcm9iZWAgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC5cblxuVGhlcmVmb3JlLCB0aGlzIGNvZGUgaW4gYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY2AgaXMgdXR0ZXJseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUuXG5cbldhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIHJvdXRlIHRvIHRoaXMgY29kZT8gSSdtIHdvbmRlcmluZyBpZiBhIFRodW5kZXJib2x0IGRldmljZSBjb3VsZCBiZSBpbmplY3RlZCBzb21laG93PyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIGVxdWl2YWxlbnQgdG8gYHZoY2lgIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIFRodW5kZXJib2x0LiBUaGUgYHRlc3QuY2AgZHJpdmVyIGlzIGEgS1VuaXQgdGVzdCwgYW5kIGl0IGRvZXNuJ3QgZXhwb3NlIGEgbW9jayBUaHVuZGVyYm9sdCBjb250cm9sbGVyIHRvIHRoZSBzeXN0ZW0uIFRoaXMgY29uZmlybXMgaXQ6IGB0aHVuZGVyYm9sdC1uZXRgIHNpbXBseSBjYW5ub3QgYmUgZnV6emVkIGluIFFFTVUuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBpZiBgVVNCNF9ORVRgIGNhbiBiZSByZWFjaGVkLiBUaGUgcGF0Y2ggZm9jdXNlcyBvbiBgdGJuZXRfY29ubmVjdF9mYWlsZWRgIGFuZCBgdGJuZXRfY29ubmVjdGVkX3dvcmtgLCBib3RoIHBhcnQgb2YgdGhlIGB0aHVuZGVyYm9sdC1uZXRgIGRyaXZlci4gU2luY2UgdGhhdCBkcml2ZXIgZnVuZGFtZW50YWxseSByZWxpZXMgb24gVGh1bmRlcmJvbHQgaGFyZHdhcmUsIHdoaWNoIGlzICpub3QqIGVtdWxhdGVkIGluIFFFTVUsIGl0J3MgYSBkZWFkIGVuZC4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLCBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IFRodW5kZXJib2x0IG5ldHdvcmtpbmcgYWJzb2x1dGVseSByZXF1aXJlcyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSByb2J1c3QgZW11bGF0aW9uIGxheWVyLCB3aGljaCBRRU1VIGRvZXNuJ3QgaGF2ZS5cblxuTGV0IG1lIGp1c3QgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMuIFRoZXkgZXhwbGljaXRseSBzYXk6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBwcmVjaXNlbHkgZml0cyBUaHVuZGVyYm9sdCBuZXR3b3JraW5nLiBUaGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgaW4gUUVNVS5cblxuRmluYWxseSwganVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4sIGxldCdzIHZlcmlmeSBpZiBgVVNCNF9ORVRgIGRlcGVuZHMgb24gYFVTQjRgICh0aGUgVGh1bmRlcmJvbHQgY29yZSkuIFllcywgYGRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdgIGNvbmZpcm1zOiBgY29uZmlnIFVTQjRfTkVULi4uIGRlcGVuZHMgb24gVVNCNCBcdTAwMjZcdTAwMjYgSU5FVGAuIEFuZCBzaW5jZSB0aGVyZSBpcyBubyBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGVtdWxhdGlvbiBpbiBRRU1VLCB0aGUgY29kZSByZW1haW5zIHVucmVhY2hhYmxlLlxuXG5TbywgSSdtIHN0aWNraW5nIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDc0LCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDEzOjM1OjU5LjkzODA5MzkyNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUaHVuZGVyYm9sdCBuZXR3b3JraW5nIGRyaXZlciAodGh1bmRlcmJvbHQtbmV0KS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGFuZCBYRG9tYWluIGNvbm5lY3Rpb25zIHRvIGZ1bmN0aW9uLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFRodW5kZXJib2x0IGNvbnRyb2xsZXJzIGluIHN0YW5kYXJkIFFFTVUgKHVubGlrZSBVU0Igd2l0aCB2aGNpIG9yIFdpLUZpIHdpdGggbWFjODAyMTFfaHdzaW0pLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRodW5kZXJib2x0IG5ldHdvcmtpbmcgZHJpdmVyICh0aHVuZGVyYm9sdC1uZXQpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBhIFRodW5kZXJib2x0IGNvbnRyb2xsZXIgYW5kIFhEb21haW4gY29ubmVjdGlvbnMgdG8gZnVuY3Rpb24uIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMgaW4gc3RhbmRhcmQgUUVNVSAodW5saWtlIFVTQiB3aXRoIHZoY2kgb3IgV2ktRmkgd2l0aCBtYWM4MDIxMV9od3NpbSksIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxMzozNTo1OS45MzgxMzUxOTRaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowksdk2[1] Phase: Running StartedAt: 2026-08-11 13:36:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksdk2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-11 13:36:11 +0000 UTC FinishedAt: 2026-08-11 13:36:16 +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,}