Name: series-workflowgcgfr Phase: Failed StartedAt: 2026-08-30 04:13:33 +0000 UTC FinishedAt: 2026-08-30 04:39:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgcgfr[0] Phase: Succeeded StartedAt: 2026-08-30 04:13:33 +0000 UTC FinishedAt: 2026-08-30 04:39:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgcgfr[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 04:13:33 +0000 UTC FinishedAt: 2026-08-30 04:39:13 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGMwYWNhMTEzZGQ4ODFkNDM2ODkyY2M1MzBhMWNkZTM5YThhMjcxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDA0OjM3OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBmMmZjODkxNzY2NTRlLi43MWM2YTk0MWZiOTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE3MjgsNyAmIzQzOzE3MjgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4gXHR9XG4gXG4tXHRpZiAodHhfcS1cdTAwM2V4ZHBmW2ldIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICh0eF9xLVx1MDAzZXhkcGYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbiBcdCAgICAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxuIFx0ICAgICB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh0eF9xLVx1MDAzZXhkcGZbaV0pO1xuQEAgLTE3MzgsNyAmIzQzOzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXG4gXHRcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lJiM0MzsmIzQzOztcbiBcbi1cdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG5AQCAtMTc2MSw2ICYjNDM7MTc2MSwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9IFx1MDAyNmRtYV9jb25mLVx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcbiBcdGludCBpO1xuIFxuJiM0MztcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdHN0bW1hY19mcmVlX3J4X2J1ZmZlcihwcml2LCByeF9xLCBpKTtcbiB9XG5AQCAtMTgwMiw2ICYjNDM7MTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbiYjNDM7XHRpZiAoIXJ4X3EtXHUwMDNlYnVmX3Bvb2wpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcdTAwMjZyeF9xLVx1MDAzZWJ1Zl9wb29sW2ldO1xuIFxuQEAgLTIwOTcsNiAmIzQzOzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lID0gMDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplOyBpJiM0MzsmIzQzOylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBpbiBidWZmZXIgZGVhbGxvY2F0aW9uIHJvdXRpbmVzIGluIHRoZSBTVE1NQUMgKFN5bm9wc3lzIERlc2lnbldhcmUgLyBTVE1pY3JvZWxlY3Ryb25pY3MpIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFNvQyBvciBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YzBhY2ExMTNkZDg4MWQ0MzY4OTJjYzUzMGExY2RlMzlhOGEyNzEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMDQ6Mzc6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBmMmZjODkxNzY2NTRlLi43MWM2YTk0MWZiOTFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTE3MjgsNyAmIzQzOzE3MjgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCQkgRE1BX1RPX0RFVklDRSk7CiAJfQogCi0JaWYgKHR4X3EtJmd0O3hkcGZbaV0gJmFtcDsmYW1wOwomIzQzOwlpZiAodHhfcS0mZ3Q7eGRwZiAmYW1wOyZhbXA7IHR4X3EtJmd0O3hkcGZbaV0gJmFtcDsmYW1wOwogCSAgICAodHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHwKIAkgICAgIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHsKIAkJeGRwX3JldHVybl9mcmFtZSh0eF9xLSZndDt4ZHBmW2ldKTsKQEAgLTE3MzgsNyAmIzQzOzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCWlmICh0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWCkKIAkJdHhfcS0mZ3Q7eHNrX2ZyYW1lc19kb25lJiM0MzsmIzQzOzsKIAotCWlmICh0eF9xLSZndDt0eF9za2J1ZmZbaV0gJmFtcDsmYW1wOwomIzQzOwlpZiAodHhfcS0mZ3Q7dHhfc2tidWZmICZhbXA7JmFtcDsgdHhfcS0mZ3Q7dHhfc2tidWZmW2ldICZhbXA7JmFtcDsKIAkgICAgdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHsKIAkJZGV2X2tmcmVlX3NrYl9hbnkodHhfcS0mZ3Q7dHhfc2tidWZmW2ldKTsKIAkJdHhfcS0mZ3Q7dHhfc2tidWZmW2ldID0gTlVMTDsKQEAgLTE3NjEsNiAmIzQzOzE3NjEsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gJmFtcDtkbWFfY29uZi0mZ3Q7cnhfcXVldWVbcXVldWVdOwogCWludCBpOwogCiYjNDM7CS8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqLwomIzQzOwlpZiAoIXJ4X3EtJmd0O2J1Zl9wb29sKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KQogCQlzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7CiB9CkBAIC0xODAyLDYgJiM0MzsxODA2LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3hza2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCXN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSAmYW1wO2RtYV9jb25mLSZndDtyeF9xdWV1ZVtxdWV1ZV07CiAJaW50IGk7CiAKJiM0MzsJLyogYnVmX3Bvb2wgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovCiYjNDM7CWlmICghcnhfcS0mZ3Q7YnVmX3Bvb2wpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGRtYV9jb25mLSZndDtkbWFfcnhfc2l6ZTsgaSYjNDM7JiM0MzspIHsKIAkJc3RydWN0IHN0bW1hY19yeF9idWZmZXIgKmJ1ZiA9ICZhbXA7cnhfcS0mZ3Q7YnVmX3Bvb2xbaV07CiAKQEAgLTIwOTcsNiAmIzQzOzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xID0gJmFtcDtkbWFfY29uZi0mZ3Q7dHhfcXVldWVbcXVldWVdOwogCWludCBpOwogCiYjNDM7CS8qIHR4X3NrYnVmZl9kbWEgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovCiYjNDM7CWlmICghdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAl0eF9xLSZndDt4c2tfZnJhbWVzX2RvbmUgPSAwOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGRtYV9jb25mLSZndDtkbWFfdHhfc2l6ZTsgaSYjNDM7JiM0MzspCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogRGl2aW5nIGludG8gdGhlIGBzdG1tYWNgIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3Mgd2l0aCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHRoZSBgc3RtbWFjYCBFdGhlcm5ldCBkcml2ZXIuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBgc3RtbWFjYCBhY3R1YWxseSAqaXMqLiBJcyB0aGlzIHNvbWV0aGluZyBwcmltYXJpbHkgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLCBhIHNwZWNpZmljIHBsYXRmb3JtJiMzOTtzIE5JQywgb3IgaXMgaXQgYSBQQ0kgZHJpdmVyPyBPciBpcyBpdCBzb21ldGhpbmcgdGhhdCBoYXMgc29tZSByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/CgpCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBmaWd1cmUgb3V0IHRoZSAqY29udGV4dCogb2YgYHN0bW1hY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0JiMzOTtzIHVzZWQg4oCTIHdoYXQgb3RoZXIgZHJpdmVycyBkZXBlbmQgb24gaXQsIG9yIGhvdyBpdCBnZXRzIGluc3RhbnRpYXRlZC4gQW5kIGNyaXRpY2FsbHksIEkgaGF2ZSB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGdvdCBhbnkgcmVsZXZhbmNlIHRvIG15IHZpcnR1YWxpemVkIHdvcmxkLiBJcyB0aGVyZSBhbnkgY2hhbmNlIHRoaXMgcGF0Y2ggaGFzIGltcGxpY2F0aW9ucyBmb3IgUUVNVSwgR0NFLCBvciBvdGhlciBlbXVsYXRlZCBlbnZpcm9ubWVudHM/CgpMZXQgbWUgdXNlIHRoZSBgZ3JlcHBlcmAgdG9vbCB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCBsZWFybiBtb3JlIGFib3V0IHRoaXMgZHJpdmVyIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgbGluZS1ieS1saW5lIGluc3BlY3Rpb24gb2YgdGhlIGFjdHVhbCBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODppZiBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDA3PWNvbmZpZyBTVE1NQUNfUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTktXHQgIElmIHVuc3VyZSwgc2F5IE4uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQyMDplbmRpZiAjIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICYjNDM7PSBzdG1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMy1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgc3RtbWFjYCB0aGluZyBpcyBzb21ldGhpbmcgdGhhdCBRRU1VIGNhbiBldmVuIHRvdWNoLCBvciBpZiBpdCYjMzk7cyB0aWVkIHRvIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIElzIGl0IERlc2lnbldhcmU/IElzIGl0IGFuIGVtYmVkZGVkIFNvQyBNQUMgZnJvbSBTVE1pY3JvZWxlY3Ryb25pY3MgKFNUTU1BQyk/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LgoKSSBuZWVkIHRvIHF1aWNrbHkgZmlndXJlIG91dCBpZiBzdG1tYWMgaXMgc29tZXRoaW5nIHRoYXQgaXMgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUuIElzIHN0bW1hYyBhIHR5cGljYWwsIHZlbmRvci1uZXV0cmFsIGludGVyZmFjZSwgb3IgaXMgaXQgYSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCBRRU1VIHdvdWxkbiYjMzk7dCBlbXVsYXRlIHdlbGw/CgpIYW5nIG9uLCBiZWZvcmUgSSBqdW1wIHRvIGNvbmNsdXNpb25zLCBsZXQgbWUgcmVyZWFkIHRob3NlIHByb21wdCBydWxlcyBjYXJlZnVsbHkuIFJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlsdGVyIG91dCBhIGJ1bmNoIG9mIHNjZW5hcmlvcyB3aGVyZSB0aGUgZnV6emluZyBlZmZvcnQgd291bGQgYmUgYSB3YXN0ZSBvZiB0aW1lLiBObyBkb2N1bWVudGF0aW9uIGNoYW5nZXMsIGNvc21ldGljIHN0dWZmLCB1bnJlYWNoYWJsZSBjb2RlLCB2ZW5kb3Itc3BlY2lmaWMgc3R1ZmYsIG9yIGNsZWFudXAgZnVuY3Rpb25zLiBHb3QgaXQuCgpOb3csICpkb2VzKiBzdGFuZGFyZCBRRU1VICh4ODZfNjQgb3IgYXJtNjQsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSB1c3VhbGx5IGRlYWxpbmcgd2l0aCkgYWN0dWFsbHkgZW11bGF0ZSBgc3RtbWFjYCwgYGR3bWFjYCwgb3IgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGhhcmR3YXJlPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSBhY2Nlc3NpYmxlIGFuZCBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LgoKTGV0IG1lIHRyeSB0byB1bmRlcnN0YW5kIHdoYXQgaGFyZHdhcmUgcGxhdGZvcm1zIHN0bW1hYyBpcyBjb21tb25seSB1c2VkIG9uLiBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGljaCBwbGF0Zm9ybXMgaXQgaXMgZGVzaWduZWQgZm9yLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIERXTUFDX0dFTkVSSUNcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueVxuICA1NzpcdFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4gIDU4Olx0XHQgIGRhdGEgZm9yIHNldHVwLlxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBEV01BQ19BTkFSSU9OXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVmYXVsdCBBUkNcbiAgNjM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBEV01BQ19FSUM3NzAwXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbiAgNzI6XHRcdGhlbHBcbiAgNzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcbiAgNzQ6XHRcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xuICA3NTpcdFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcbiAgNzY6XHRcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIERXTUFDX0lOR0VOSUNcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlZmF1bHQgTUFDSF9JTkdFTklDXG4gIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQ5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKktjb25maWcgRGVlcCBEaXZlIGluIHN0bW1hYyAtIE9uZ29pbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBmb2N1c2luZyBvbiBzdG1tYWMgYW5kLCBhcyBJIGRpZyBkZWVwZXIsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBteSBpbnZlc3RpZ2F0aW9uIGlzIHRvIG1ldGljdWxvdXNseSByZXZpZXcgdGhlIHJlc3Qgb2YgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBjb3VsZCBpbXBhY3QgdGhlIGJyb2FkZXIgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgYmV5b25kIHRoZSBpbW1lZGlhdGUgYXJlYSBJIHdhcyBpbml0aWFsbHkgZm9jdXNlZCBvbi4gVGhpcyBpcyBhYm91dCBlbnN1cmluZyBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgYW5kIGlkZW50aWZ5aW5nIGFueSBoaWRkZW4gZWRnZSBjYXNlcy4gVGhpcyBkZXRhaWxlZCBwYXNzIGlzIGNydWNpYWwgZm9yIGEgcm9idXN0IGFuZCBtYWludGFpbmFibGUgZHJpdmVyLiBJdCBtaWdodCB1bmNvdmVyIGEgY3JpdGljYWwsIHlldCBvYnNjdXJlLCBidWlsZCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIHJvbGwgdXAgbXkgc2xlZXZlcyBhbmQgZGl2ZSBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDIwOlx0ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYyNAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHN0bW1hY2AsIHRoZSBFdGhlcm5ldCBNQUMgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IElQcy4gQSBsb3Qgb2YgU29DcyB1c2UgaXQsIHJpZ2h0PyBTVCwgQWxsd2lubmVyLCBBbWxvZ2ljLCBBbHRlcmEsIEludGVsIFF1YXJrLCBhbmQgb24gYW5kIG9uLiBCdXQgdGhlIGtleSBxdWVzdGlvbiBoZXJlIGlzLCBkb2VzIFFFTVUsIHRoZSBlbXVsYXRvciwgYWN0dWFsbHkgKmVtdWxhdGUqIGFueSBvZiB0aG9zZSBzdG1tYWMgb3IgZHdtYWMgZGV2aWNlcz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbWFjaGluZSBtb2RlbHMgaW4gUUVNVSBtaWdodCBiZSByZWxldmFudC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byByZW1lbWJlciBpZiBRRU1VIG9mZmVycyBhbnl0aGluZyBsaWtlIGBkd21hY2AsIG9yIHNwZWNpZmljYWxseSBgYWxsd2lubmVyYCBvciBhIHJlbGF0ZWQgYHN0bW1hY2AgaW1wbGVtZW50YXRpb24uCgpJIGtub3cgUUVNVSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBgYWxsd2lubmVyLWExMGAgb3IgYGFsbHdpbm5lci1oM2AuIEl0IGV2ZW4gaGFzIGBhbGx3aW5uZXItZW1hY2AgYW5kIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgZm9yIEFSTSBib2FyZHMgbGlrZSB0aGUgT3JhbmdlcGkgb3IgQ3ViaWVib2FyZCwgYnV0IGFyZSB0aG9zZSAqYWN0dWFsbHkqIHVzaW5nIGBzdG1tYWNgIHVuZGVyIHRoZSBob29kPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBBaCwgd2FpdCwgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBzZWVtcyB0byB1c2UgYGFsbHdpbm5lci1zdW40aS1lbWFjYCBvciBgc3VuOGktZW1hY2AsIHdoaWNoIHVzZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmNgIG9yIHBvdGVudGlhbGx5IGBkd21hYy1zdW44aS5jYC4gU28gaXMgdGhhdCBldmVuIHVzaW5nIHN0bW1hYz8KCk9rYXksIHNvIGFtIEkgZXZlbiBhc2tpbmcgdGhlIHJpZ2h0IHF1ZXN0aW9ucz8gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBkaXJlY3QgZW11bGF0aW9uIG9mIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgYXMgYSBgZHdtYWNgPyBPciBtYXliZSBpdCYjMzk7cyB1c2luZyBzb21ldGhpbmcgZWxzZSBsaWtlIGBpbXhgIChmZWMpIG9yIGBjYWRlbmNlX2dlbWA/IEkgbmVlZCB0byBicm9hZGVuIG15IHNjb3BlLgoKRXZlbiBpZiB0aGVyZSBpcyBhIE1BQyBlbXVsYXRlZCwgSSBuZWVkIHRvIGNoZWNrOiBjYW4gSSBldmVuIHJlYWNoIGBzdG1tYWNgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciwgbW9yZSBpbXBvcnRhbnRseSwgUUVNVT8gU3l6a2FsbGVyJiMzOTtzIGNvdmVyYWdlIGlzIHJlbGV2YW50IGhlcmUuIEkgcmVtZW1iZXIgU3l6a2FsbGVyIHRlc3RzIHg4Nl82NCBhbmQgYXJtNjQgUUVNVSBhbmQgR0NFIGluc3RhbmNlcy4gU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBhbmQgcHJvYmUgYHN0bW1hY2Agd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZSBhdCBhbGw/CgpMZXQgbWUganVzdCBwYXVzZSwgYW5kIHJlZm9jdXMuIERvZXMgYHN0bW1hY2AgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBjYW4gSSBnZXQgYXdheSB3aXRoIHByb2JpbmcgaXQgdGhyb3VnaCB0aGUgcGxhdGZvcm0gb3IgUENJLCBvciBkbyBJIG5lZWQgYWN0dWFsIGhhcmR3YXJlPyBJIG5lZWQgdG8gbmFpbCBkb3duIHRob3NlIHByZXJlcXVpc2l0ZXMuCgpPa2F5LCBsZXQgbWUgYmFjayB1cCBhIHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyAqc3BlY2lmaWMqIHBhdGNoIGlzIHRyeWluZyB0byBkbywgYW5kICp3aHkqLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgcGF0Y2ggY29tbWl0IGRldGFpbHMgYW5kIHNlZSB3aGF0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQsIGFuZCB3aGF0IHRoYXQgdGVsbHMgbWUgYWJvdXQgdGhlIHByb2JsZW0gaXQmIzM5O3Mgc29sdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzI1Olx0XHRcdFx0ZG1hX3VubWFwX3NpbmdsZShwcml2LVx1MDAzZWRldmljZSxcbjE3MjY6XHRcdFx0XHRcdFx0IHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWYsXG4xNzI3Olx0XHRcdFx0XHRcdCB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0ubGVuLFxuMTcyODpcdFx0XHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4xNzI5Olx0XHR9XG4xNzMwOlx0XG4xNzMxOlx0XHRpZiAodHhfcS1cdTAwM2V4ZHBmIFx1MDAyNlx1MDAyNiB0eF9xLVx1MDAzZXhkcGZbaV0gXHUwMDI2XHUwMDI2XG4xNzMyOlx0XHQgICAgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHxcbjE3MzM6XHRcdCAgICAgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XG4xNzM0Olx0XHRcdHhkcF9yZXR1cm5fZnJhbWUodHhfcS1cdTAwM2V4ZHBmW2ldKTtcbjE3MzU6XHRcdFx0dHhfcS1cdTAwM2V4ZHBmW2ldID0gTlVMTDtcbjE3MzY6XHRcdH1cbjE3Mzc6XHRcbjE3Mzg6XHRcdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWFNLX1RYKVxuMTczOTpcdFx0XHR0eF9xLVx1MDAzZXhza19mcmFtZXNfZG9uZSYjNDM7JiM0Mzs7XG4xNzQwOlx0XG4xNzQxOlx0XHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuMTc0MjpcdFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbjE3NDM6XHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuMTc0NDpcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG4xNzQ1Olx0XHR9XG4xNzQ2Olx0XG4xNzQ3Olx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmID0gMDtcbjE3NDg6XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5tYXBfYXNfcGFnZSA9IGZhbHNlO1xuMTc0OTpcdH1cbjE3NTA6XHRcbjE3NTE6XHQvKipcbjE3NTI6XHQgKiBkbWFfZnJlZV9yeF9za2J1ZnMgLSBmcmVlIFJYIGRtYSBidWZmZXJzXG4xNzUzOlx0ICogQHByaXY6IHByaXZhdGUgc3RydWN0dXJlXG4xNzU0Olx0ICogQGRtYV9jb25mOiBzdHJ1Y3R1cmUgdG8gdGFrZSB0aGUgZG1hIGRhdGFcbjE3NTU6XHQgKiBAcXVldWU6IFJYIHF1ZXVlIGluZGV4XG4xNzU2Olx0ICovXG4xNzU3Olx0c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbjE3NTg6XHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4xNzU5Olx0XHRcdFx0ICAgICAgIHUzMiBxdWV1ZSlcbjE3NjA6XHR7XG4xNzYxOlx0XHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2ZG1hX2NvbmYtXHUwMDNlcnhfcXVldWVbcXVldWVdO1xuMTc2MjpcdFx0aW50IGk7XG4xNzYzOlx0XG4xNzY0Olx0XHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbjE3NjU6XHRcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbjE3NjY6XHRcdFx0cmV0dXJuO1xuMTc2NzpcdFxuMTc2ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KVxuMTc2OTpcdFx0XHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NzIKCQkJCQkJCW91dHB1dDogNjIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBEZWFsbG9jYXRpb24gaW4gdGhlIFNUTU1BQyBEcml2ZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFNUTU1BQyBjb2RlLiBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIG1lbW9yeSBkZWFsbG9jYXRpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgZG1hX2ZyZWVfcnhfc2tidWZzYCwgYGRtYV9mcmVlX3R4X3NrYnVmc2AsIGFuZCBgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyYC4gSSBuZWVkIGEgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZXNlIGZ1bmN0aW9ucy4gS25vd2luZyAqd2hlcmUqIHRoZXNlIGFyZSBjYWxsZWQgZnJvbSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGlzc3VlcyBsaWtlIGRvdWJsZSBmcmVlcywgbWVtb3J5IGxlYWtzLCBvciBpbXByb3BlciByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBkcml2ZXIuCgpHcmVwcGluZyBpcyBkZWZpbml0ZWx5IHRoZSB3YXkgdG8gZ28uIEEgcXVpY2sgc2VhcmNoIHNob3VsZCBnaXZlIG1lIGEgc29saWQgbGlzdCBvZiBjYWxsZXJzIGZvciBlYWNoIG9mIHRob3NlLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIHNlYXJjaCBwYXR0ZXJuIGFuZCB0aGVuIHJlZmluZSBpdCBpZiB0aGUgaW5pdGlhbCByZXN1bHRzIGFyZSB0b28gYnJvYWQuIERlcGVuZGluZyBvbiB0aGUgc2VhcmNoIHRvb2wgYW5kIHRoZSBzaXplIG9mIHRoZSBjb2RlYmFzZSwgSSBtaWdodCBsb29rIGF0IGluY2x1ZGluZyBhIHNpbXBsZSByZWdleCBvciB0d28gdG8gbmFycm93IGl0IGRvd24gYSBiaXQsIG1heWJlIGZvY3VzaW5nIHRoZSBzZWFyY2ggaW4gYSBmZXcgc2VsZWN0IGZpbGVzLCBvciBleGNsdWRpbmcgc29tZS4gVGhlIGdyZXBwZXIgc2hvdWxkIHRlbGwgbWUgd2hvJiMzOTtzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZXNlIGJ1ZmZlcnMsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGJ1aWxkIGFuIGFjY3VyYXRlIG1lbnRhbCBtb2RlbCBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCBhbmQgaWRlbnRpZnkgbGlrZWx5IHNvdXJjZXMgb2YgcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtYV9mcmVlX3J4X3NrYnVmc3xkbWFfZnJlZV90eF9za2J1ZnN8c3RtbWFjX2ZyZWVfdHhfYnVmZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjg5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3J4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzA0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNzA1OiAqIHN0bW1hY19mcmVlX3R4X2J1ZmZlciAtIGZyZWUgUlggZG1hIGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcwNi0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3MTAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3MTE6c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcxMi1cdFx0XHRcdCAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNzUyOiAqIGRtYV9mcmVlX3J4X3NrYnVmcyAtIGZyZWUgUlggZG1hIGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1My0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3NTYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3NTc6c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1OC1cdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xOTM2PXN0YXRpYyBpbnQgaW5pdF9kbWFfcnhfZGVzY19yaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTk2My1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxOTY0Olx0XHRcdGRtYV9mcmVlX3J4X3NrYnVmcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xOTY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjA3ND1zdGF0aWMgaW50IGluaXRfZG1hX2Rlc2NfcmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIwOTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIwOTY6ICogZG1hX2ZyZWVfdHhfc2tidWZzIC0gZnJlZSBUWCBkbWEgYnVmZmVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMDk3LSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEwMTpzdGF0aWMgdm9pZCBkbWFfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTAyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMTQtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxMTU6XHRcdHN0bW1hY19mcmVlX3R4X2J1ZmZlcihwcml2LCBkbWFfY29uZiwgcXVldWUsIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTE2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjEyOD1zdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEzMy1cdGZvciAocXVldWUgPSAwOyBxdWV1ZSBcdTAwM2MgdHhfcXVldWVfY250OyBxdWV1ZSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxMzQ6XHRcdGRtYV9mcmVlX3R4X3NrYnVmcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE0Mz1zdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxNTQtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNTU6XHRcdGRtYV9mcmVlX3J4X3NrYnVmcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE5NT1zdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMDMtXHQvKiBSZWxlYXNlIHRoZSBETUEgVFggc29ja2V0IGJ1ZmZlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIwNDpcdGRtYV9mcmVlX3R4X3NrYnVmcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjA1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzAxOT1zdGF0aWMgdm9pZCBzdG1tYWNfdHhfZXJyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI1LVx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozMDI2Olx0ZG1hX2ZyZWVfdHhfc2tidWZzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI3LVx0c3RtbWFjX2NsZWFyX3R4X2Rlc2NyaXB0b3JzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIGNoYW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc3NwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE0MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IHN0bW1hYyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBhIHBhdGNoIGFmZmVjdGluZyB0aGUgYHN0bW1hY2AgZHJpdmVyIHdhcnJhbnRzIGZ1cnRoZXIgZnV6emluZy4gIEZpcnN0IHRoaW5ncyBmaXJzdDogYHN0bW1hY2AgaXMgYSBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBvZnRlbiBmb3VuZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGZyb20gU1RNaWNyb2VsZWN0cm9uaWNzIGFuZCBvdGhlcnMuICBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgSSBjYW4gYWN0dWFsbHkgcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLgoKTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoaXM6IHRoZSBydWxlcyBzcGVjaWZpY2FsbHkgc3RhdGUgdG8gc2tpcCBwYXRjaGVzIGlmIHRoZSBhZmZlY3RlZCBjb2RlIHBhdGggaXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuICBTbywgaXMgYHN0bW1hY2AgZW11bGF0ZWQ/CgpJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIFFFTVUgbW9kZWxzIHRoZSBTeW5vcHN5cyBEV01BQyB1c2VkIGJ5IGBzdG1tYWNgIG9yIG5vdC4gTGV0IG1lIHJlY2FsbCB0aGUgdHlwaWNhbCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgaW4gUUVNVTogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgZXRjLiAgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIERXTUFDIG1vZGVsLiBJbiBmYWN0LCBRRU1VIGhhcyBzcGVjaWZpYyBtb2RlbHMgZm9yIGFsbHdpbm5lciBTb0NzIGxpa2UgYGFsbHdpbm5lcl9lbWFjYCBmb3Igc3VuNGkuIEFuZCB3aGlsZSB0aGVyZSYjMzk7cyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGFzIHdlbGwsIGJ1dCBkb2VzIHRoYXQgdXNlIGBkd21hYy1zdW44aS5jYD8gIFRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcsIGJ1dCBldmVuIGlmIHRoZSBhbGx3aW5uZXIgbW9kZWxzIGFyZSBhdmFpbGFibGUsIHN5emthbGxlciBwcmltYXJpbHkgdXNlcyBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBmb3IgeDg2XzY0IGFuZCBhYXJjaDY0IHZpcnQgbWFjaGluZXMuIEl0IGRvZXNuJiMzOTt0IHVzZSB0aGVzZSBBbGx3aW5uZXIgb3Igb3RoZXIgbm9uLXN0YW5kYXJkIFFFTVUgbW9kZWxzLgoKTmV4dCwgSSB0aGluayBhYm91dCBwb3NzaWJsZSB3YXlzIHRvIGluc3RhbnRpYXRlIGBzdG1tYWNgIG91dHNpZGUgb2Ygc3RhbmRhcmQgZW11bGF0aW9uLiBDb3VsZCBpdCBiZSBhIHBsYXRmb3JtIGRldmljZSwgYSBkdW1teSBkZXZpY2UsIG9yIG1heWJlIHNvbWV0aGluZyBleHBvc2VkIHZpYSBuZXRsaW5rPyBJIGtub3cgcGxhdGZvcm0gZGV2aWNlcyBhcmUgaW5zdGFudGlhdGVkIHZpYSBkZXZpY2UgdHJlZSAoT0YpLCBBQ1BJIG9yIFBDSS4gQ2FuIHVzZXIgc3BhY2UgY3JlYXRlIHRoZXNlIHdpdGhvdXQgdW5kZXJseWluZyBoYXJkd2FyZT8gTm90IHJlYWxseSwgdW5sZXNzIHdlIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cyB2aWEgY29uZmlnZnMsIHdoaWNoIGlzbiYjMzk7dCBzdGFuZGFyZCBzeXprYWxsZXIgcHJhY3RpY2UuCgpXaGF0IGFib3V0IFBDST8gSSBzZWUgYHN0bW1hY2AgaGFzIFBDSSBJRHMsIGFzIHVzZWQgYnkgYGR3bWFjLWludGVsLmNgLCBgc3RtbWFjX3BjaS5jYCwgYGR3bWFjLWxvb25nc29uLmNgLCBldGMuIEJ1dCBJJiMzOTttIHByZXR0eSBzdXJlIHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgc3BlY2lmaWMgSW50ZWwsIExvb25nc29uLCBvciBTeW5vcHN5cyBQQ0kgcHJvdG90eXBpbmcga2l0IHRoYXQgd291bGQgdXRpbGl6ZSBgc3RtbWFjYC4KCkFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IG5vdCBVU0IsIHNvIHRoYXQmIzM5O3Mgb2ZmIHRoZSB0YWJsZS4KCk5vdywgbGV0IG1lIGdvIGJhY2sgYW5kIHJlLXJlYWQgdGhlIHJ1bGVzLCBtYWtpbmcgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZHJpdmVyIGlzbiYjMzk7dCB1c2VkIGluIHNvbWUgY29yZSBuZXR3b3JraW5nIGNvbnRleHQuIFRoZSBydWxlIHNwZWNpZmljYWxseSBtZW50aW9ucyBhdm9pZGluZyBkcml2ZXJzIGZvciAmIzM0O3BoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KCkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBjYW4gYHN0bW1hY2AgYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmc/IE5vLCBpdCYjMzk7cyBhIGRyaXZlciBmb3IgZW1iZWRkZWQgU29DcyAoQWxsd2lubmVyLCBTVGksIEFtbG9naWMsIFJvY2tjaGlwLCBOWFAsIGV0Yy4pIGFuZCBjZXJ0YWluIEludGVsL0xvb25nc29uIFBDSSBjb250cm9sbGVycyBhbmQgbm9uZSBvZiB0aGVzZSBhcmUgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsIG1hY2hpbmVzIG9yIFFFTVUgaW5zdGFuY2VzIHVzZWQgZm9yIGZ1enppbmcuIEZ1cnRoZXJtb3JlLCBpdCYjMzk7cyBub3QgYSBzb2Z0d2FyZS1vbmx5IG5ldHdvcmsgZHJpdmVyIChsaWtlIHR1biwgdGFwLCBvciBkdW1teSkgb3IgYSB2aXJ0dWFsIGRldmljZSBidXMgKGxpa2UgdmlydGlvKSBvciBzb2Z0d2FyZSBlbXVsYXRlZCBkZXZpY2UgKHVzYiBvciBtYWM4MDIxMV9od3NpbSkuIEFuZCBJIG5lZWQgdG8gdmVyaWZ5IGJ5IHNlYXJjaGluZyBmb3IgcmVmZXJlbmNlcyB0byBgc3RtbWFjYCBvdXRzaWRlIG9mIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9gIGRpcmVjdG9yeS4gR2l2ZW4gYWxsIHRoaXMsIGl0IGRvZXMgbm90IHNlZW0gd29ydGggZnV6emluZyBhdCB0aGlzIHN0YWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMTMKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogNDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGUgZGlmZi4gSXQmIzM5O3MgY29uZmluZWQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaGF0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCB0aGV5JiMzOTtyZSBhbGwgbnVsbCBjaGVja3MgaW4gdGhlIGJ1ZmZlciBtYW5hZ2VtZW50IHJvdXRpbmVzOiBgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyYCwgYGRtYV9mcmVlX3J4X3NrYnVmc2AsIGBkbWFfZnJlZV9yeF94c2tidWZzYCwgYW5kIGBkbWFfZnJlZV90eF9za2J1ZnNgLiBUaGVzZSBhcmUgZGVmZW5zaXZlIG1lYXN1cmVzLCBsaWtlbHkgdG8gcHJldmVudCBjcmFzaGVzIGR1cmluZyBlcnJvciBoYW5kbGluZyBvciBjbGVhbnVwLgoKTm93LCB0aGUgY3JpdGljYWwgcG9pbnQuIFRoZSBTVE1NQUMgZHJpdmVyICpyZXF1aXJlcyogc3BlY2lmaWMgaGFyZHdhcmUg4oCTIGEgcGh5c2ljYWwgU29DIG9yIFBDSSBkZXZpY2UuIFRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBlbXVsYXRlZCByZWxpYWJseSBpbiB0eXBpY2FsIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBpcyB3aGVyZSBmdXp6aW5nIHVzdWFsbHkgaGFwcGVucy4gQmVjYXVzZSBvZiB0aGF0IGRlcGVuZGVuY3kgb24gc3BlY2lmaWMgaGFyZHdhcmUsIHRoaXMgY29kZSBpc24mIzM5O3QgcmVhY2hhYmxlIGR1cmluZyB0aGUgZnV6emluZyBwcm9jZXNzLiBObyBtYXR0ZXIgaG93IGNsZXZlciB0aGUgZnV6emVyIGlzLCBpdCB3b24mIzM5O3QgdHJpZ2dlciB0aGVzZSBwYXRocy4gVGhlcmVmb3JlLCB0aGUgbGlrZWxpaG9vZCBvZiBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGlzIGVzc2VudGlhbGx5IHplcm8uCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBmYWxzZS4gTm8gbmVlZCB0byB3YXN0ZSByZXNvdXJjZXMgb24gdGhpcy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQuIFRoZSBmb2N1cyBzeW1ib2xzIGxpc3QgaXMgZW1wdHksIGFuZCB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuYWJsZSBiZWNhdXNlIHRoZSBpc3N1ZSBpc24mIzM5O3Qgd2hldGhlciBvciBub3QgYSBzZXR0aW5nIGlzIGVuYWJsZWQsIGJ1dCB0aGUgZmFjdCB0aGF0IHRoZSBTVE1NQUMgZHJpdmVyIHJlbGllcyBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUuIEkmIzM5O3ZlIHJlLXJldmlld2VkIHRoaXMgYW5kIHRoZSByYXRpb25hbGUgaXMgc291bmQuCgpMZXQmIzM5O3MgcHJvY2VlZCB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZGVmZW5zaXZlIE5VTEwgY2hlY2tzIGluIGJ1ZmZlciBkZWFsbG9jYXRpb24gcm91dGluZXMgaW4gdGhlIFNUTU1BQyAoU3lub3BzeXMgRGVzaWduV2FyZSAvIFNUTWljcm9lbGVjdHJvbmljcykgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU29DIG9yIFBDSSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6MTIuMjkxMjM3Nzg0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNDE2Mzk2NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozNzoxMi4yOTEyNDM0NTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Njc0NDczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRjMGFjYTExM2RkODgxZDQzNjg5MmNjNTMwYTFjZGUzOWE4YTI3MTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMzAgMDQ6Mzc6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBmMmZjODkxNzY2NTRlLi43MWM2YTk0MWZiOTFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTE3MjgsNyArMTcyOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdFxcdCBETUFfVE9fREVWSUNFKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHR4X3EtXFx1MDAzZXhkcGZbaV0gXFx1MDAyNlxcdTAwMjZcXG4rXFx0aWYgKHR4X3EtXFx1MDAzZXhkcGYgXFx1MDAyNlxcdTAwMjYgdHhfcS1cXHUwMDNleGRwZltpXSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX1RYIHx8XFxuIFxcdCAgICAgdHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfTkRPKSkge1xcbiBcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKHR4X3EtXFx1MDAzZXhkcGZbaV0pO1xcbkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXFxuIFxcdFxcdHR4X3EtXFx1MDAzZXhza19mcmFtZXNfZG9uZSsrO1xcbiBcXG4tXFx0aWYgKHR4X3EtXFx1MDAzZXR4X3NrYnVmZltpXSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmIFxcdTAwMjZcXHUwMDI2IHR4X3EtXFx1MDAzZXR4X3NrYnVmZltpXSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgdHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcXG4gXFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cXHUwMDNldHhfc2tidWZmW2ldKTtcXG4gXFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmW2ldID0gTlVMTDtcXG5AQCAtMTc2MSw2ICsxNzYxLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcXHUwMDI2ZG1hX2NvbmYtXFx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cXG4rXFx0aWYgKCFyeF9xLVxcdTAwM2VidWZfcG9vbClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRtYV9jb25mLVxcdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKVxcbiBcXHRcXHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XFxuIH1cXG5AQCAtMTgwMiw2ICsxODA2LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3hza2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXFx1MDAyNmRtYV9jb25mLVxcdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LyogYnVmX3Bvb2wgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXFxuK1xcdGlmICghcnhfcS1cXHUwMDNlYnVmX3Bvb2wpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkbWFfY29uZi1cXHUwMDNlZG1hX3J4X3NpemU7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3J4X2J1ZmZlciAqYnVmID0gXFx1MDAyNnJ4X3EtXFx1MDAzZWJ1Zl9wb29sW2ldO1xcbiBcXG5AQCAtMjA5Nyw2ICsyMTA1LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcXHUwMDI2ZG1hX2NvbmYtXFx1MDAzZXR4X3F1ZXVlW3F1ZXVlXTtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHQvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xcbitcXHRpZiAoIXR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWEpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdHR4X3EtXFx1MDAzZXhza19mcmFtZXNfZG9uZSA9IDA7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NvbmYtXFx1MDAzZWRtYV90eF9zaXplOyBpKyspXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjEyLjczODY1MTgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDk5Njg5Njg2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZGVmZW5zaXZlIE5VTEwgY2hlY2tzIGluIGJ1ZmZlciBkZWFsbG9jYXRpb24gcm91dGluZXMgaW4gdGhlIFNUTU1BQyAoU3lub3BzeXMgRGVzaWduV2FyZSAvIFNUTWljcm9lbGVjdHJvbmljcykgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU29DIG9yIFBDSSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGMwYWNhMTEzZGQ4ODFkNDM2ODkyY2M1MzBhMWNkZTM5YThhMjcxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDA0OjM3OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGYyZmM4OTE3NjY1NGUuLjcxYzZhOTQxZmI5MWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMTcyOCw3ICsxNzI4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdFx0IERNQV9UT19ERVZJQ0UpO1xuIFx0fVxuIFxuLVx0aWYgKHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbitcdGlmICh0eF9xLVx1MDAzZXhkcGYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbiBcdCAgICAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxuIFx0ICAgICB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh0eF9xLVx1MDAzZXhkcGZbaV0pO1xuQEAgLTE3MzgsNyArMTczOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWClcbiBcdFx0dHhfcS1cdTAwM2V4c2tfZnJhbWVzX2RvbmUrKztcbiBcbi1cdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSBcdTAwMjZcdTAwMjZcbitcdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZiBcdTAwMjZcdTAwMjYgdHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0gXHUwMDI2XHUwMDI2XG4gXHQgICAgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1NLQikge1xuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueSh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSk7XG4gXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmW2ldID0gTlVMTDtcbkBAIC0xNzYxLDYgKzE3NjEsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbitcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuK1x0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKVxuIFx0XHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XG4gfVxuQEAgLTE4MDIsNiArMTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbitcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuK1x0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKSB7XG4gXHRcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcdTAwMjZyeF9xLVx1MDAzZWJ1Zl9wb29sW2ldO1xuIFxuQEAgLTIwOTcsNiArMjEwNSwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSA9IFx1MDAyNmRtYV9jb25mLVx1MDAzZXR4X3F1ZXVlW3F1ZXVlXTtcbiBcdGludCBpO1xuIFxuK1x0LyogdHhfc2tidWZmX2RtYSBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbitcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKVxuK1x0XHRyZXR1cm47XG4rXG4gXHR0eF9xLVx1MDAzZXhza19mcmFtZXNfZG9uZSA9IDA7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZTsgaSsrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6MTIuNzM4NjUyODVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzcxODYzMDU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBEaXZpbmcgaW50byB0aGUgYHN0bW1hY2AgRHJpdmVyKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3Mgd2l0aCB0aGlzIHBhdGNoLiBJdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgdGhlIGBzdG1tYWNgIEV0aGVybmV0IGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IGBzdG1tYWNgIGFjdHVhbGx5ICppcyouIElzIHRoaXMgc29tZXRoaW5nIHByaW1hcmlseSBmb3IgcGh5c2ljYWwgaGFyZHdhcmUsIGEgc3BlY2lmaWMgcGxhdGZvcm0ncyBOSUMsIG9yIGlzIGl0IGEgUENJIGRyaXZlcj8gT3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgaGFzIHNvbWUgcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzP1xuXG5CZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBmaWd1cmUgb3V0IHRoZSAqY29udGV4dCogb2YgYHN0bW1hY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0J3MgdXNlZCDigJMgd2hhdCBvdGhlciBkcml2ZXJzIGRlcGVuZCBvbiBpdCwgb3IgaG93IGl0IGdldHMgaW5zdGFudGlhdGVkLiBBbmQgY3JpdGljYWxseSwgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYW55IHJlbGV2YW5jZSB0byBteSB2aXJ0dWFsaXplZCB3b3JsZC4gSXMgdGhlcmUgYW55IGNoYW5jZSB0aGlzIHBhdGNoIGhhcyBpbXBsaWNhdGlvbnMgZm9yIFFFTVUsIEdDRSwgb3Igb3RoZXIgZW11bGF0ZWQgZW52aXJvbm1lbnRzP1xuXG5MZXQgbWUgdXNlIHRoZSBgZ3JlcHBlcmAgdG9vbCB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCBsZWFybiBtb3JlIGFib3V0IHRoaXMgZHJpdmVyIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgbGluZS1ieS1saW5lIGluc3BlY3Rpb24gb2YgdGhlIGFjdHVhbCBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4NywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjQwLjQ1NzI4NTIwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTIzOTMwNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDX0VUSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTktXFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDIwOmVuZGlmICMgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfU1RNTUFDX0VUSCkgKz0gc3RtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0zLXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjQwLjcwOTY4NDY2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1Njc1MTgwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgc3RtbWFjYCB0aGluZyBpcyBzb21ldGhpbmcgdGhhdCBRRU1VIGNhbiBldmVuIHRvdWNoLCBvciBpZiBpdCdzIHRpZWQgdG8gdmVyeSBzcGVjaWZpYyBoYXJkd2FyZS4gSXMgaXQgRGVzaWduV2FyZT8gSXMgaXQgYW4gZW1iZWRkZWQgU29DIE1BQyBmcm9tIFNUTWljcm9lbGVjdHJvbmljcyAoU1RNTUFDKT8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuXG5cbkkgbmVlZCB0byBxdWlja2x5IGZpZ3VyZSBvdXQgaWYgc3RtbWFjIGlzIHNvbWV0aGluZyB0aGF0IGlzIGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBJcyBzdG1tYWMgYSB0eXBpY2FsLCB2ZW5kb3ItbmV1dHJhbCBpbnRlcmZhY2UsIG9yIGlzIGl0IGEgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgUUVNVSB3b3VsZG4ndCBlbXVsYXRlIHdlbGw/XG5cbkhhbmcgb24sIGJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIGxldCBtZSByZXJlYWQgdGhvc2UgcHJvbXB0IHJ1bGVzIGNhcmVmdWxseS4gUmlnaHQsIHNvIEkgbmVlZCB0byBmaWx0ZXIgb3V0IGEgYnVuY2ggb2Ygc2NlbmFyaW9zIHdoZXJlIHRoZSBmdXp6aW5nIGVmZm9ydCB3b3VsZCBiZSBhIHdhc3RlIG9mIHRpbWUuIE5vIGRvY3VtZW50YXRpb24gY2hhbmdlcywgY29zbWV0aWMgc3R1ZmYsIHVucmVhY2hhYmxlIGNvZGUsIHZlbmRvci1zcGVjaWZpYyBzdHVmZiwgb3IgY2xlYW51cCBmdW5jdGlvbnMuIEdvdCBpdC5cblxuTm93LCAqZG9lcyogc3RhbmRhcmQgUUVNVSAoeDg2XzY0IG9yIGFybTY0LCB3aGljaCBpcyB3aGF0IEknbSB1c3VhbGx5IGRlYWxpbmcgd2l0aCkgYWN0dWFsbHkgZW11bGF0ZSBgc3RtbWFjYCwgYGR3bWFjYCwgb3IgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGhhcmR3YXJlPyBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGFjY2Vzc2libGUgYW5kIGVtdWxhdGVkIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuXG5cbkxldCBtZSB0cnkgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcmR3YXJlIHBsYXRmb3JtcyBzdG1tYWMgaXMgY29tbW9ubHkgdXNlZCBvbi4gSSdsbCBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGljaCBwbGF0Zm9ybXMgaXQgaXMgZGVzaWduZWQgZm9yLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6NDYuMjc3MjA0ODY4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBEV01BQ19HRU5FUklDXFxuICA1MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XFxuICA1NzpcXHRcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4gIDU4OlxcdFxcdCAgZGF0YSBmb3Igc2V0dXAuXFxuICA1OTpcXHRcXG4gIDYwOlxcdGNvbmZpZyBEV01BQ19BTkFSSU9OXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZWZhdWx0IEFSQ1xcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgRFdNQUNfRUlDNzcwMFxcbiAgNzA6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXFxuICA3NDpcXHRcXHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcXG4gIDc1OlxcdFxcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXFxuICA3NjpcXHRcXHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgRFdNQUNfSU5HRU5JQ1xcbiAgNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZ2VuaWMgTUFDIHN1cHBvcnRcXFwiXFxuICA4MDpcXHRcXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcbiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozNzo0Ni4yNzcyOTU2MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzY5NTMyOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2NvbmZpZyBEZWVwIERpdmUgaW4gc3RtbWFjIC0gT25nb2luZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBmb2N1c2luZyBvbiBzdG1tYWMgYW5kLCBhcyBJIGRpZyBkZWVwZXIsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBteSBpbnZlc3RpZ2F0aW9uIGlzIHRvIG1ldGljdWxvdXNseSByZXZpZXcgdGhlIHJlc3Qgb2YgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IGNvdWxkIGltcGFjdCB0aGUgYnJvYWRlciBzeXN0ZW0uIEknbSBsb29raW5nIGJleW9uZCB0aGUgaW1tZWRpYXRlIGFyZWEgSSB3YXMgaW5pdGlhbGx5IGZvY3VzZWQgb24uIFRoaXMgaXMgYWJvdXQgZW5zdXJpbmcgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIGFuZCBpZGVudGlmeWluZyBhbnkgaGlkZGVuIGVkZ2UgY2FzZXMuIFRoaXMgZGV0YWlsZWQgcGFzcyBpcyBjcnVjaWFsIGZvciBhIHJvYnVzdCBhbmQgbWFpbnRhaW5hYmxlIGRyaXZlci4gSXQgbWlnaHQgdW5jb3ZlciBhIGNyaXRpY2FsLCB5ZXQgb2JzY3VyZSwgYnVpbGQgY29uZmlndXJhdGlvbi4gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGRpdmUgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjU1LjY0NjgzMDgyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDQyMDpcXHRlbmRpZiAjIFNUTU1BQ19FVEhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6NTUuNjQ2OTI3OTgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk0MTQ5MzgzOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBMaW5lIG9mIFJlYXNvbmluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgc3RtbWFjYCwgdGhlIEV0aGVybmV0IE1BQyBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgSVBzLiBBIGxvdCBvZiBTb0NzIHVzZSBpdCwgcmlnaHQ/IFNULCBBbGx3aW5uZXIsIEFtbG9naWMsIEFsdGVyYSwgSW50ZWwgUXVhcmssIGFuZCBvbiBhbmQgb24uIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMsIGRvZXMgUUVNVSwgdGhlIGVtdWxhdG9yLCBhY3R1YWxseSAqZW11bGF0ZSogYW55IG9mIHRob3NlIHN0bW1hYyBvciBkd21hYyBkZXZpY2VzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBtYWNoaW5lIG1vZGVscyBpbiBRRU1VIG1pZ2h0IGJlIHJlbGV2YW50LiBTcGVjaWZpY2FsbHksIEknbSB0cnlpbmcgdG8gcmVtZW1iZXIgaWYgUUVNVSBvZmZlcnMgYW55dGhpbmcgbGlrZSBgZHdtYWNgLCBvciBzcGVjaWZpY2FsbHkgYGFsbHdpbm5lcmAgb3IgYSByZWxhdGVkIGBzdG1tYWNgIGltcGxlbWVudGF0aW9uLlxuXG5JIGtub3cgUUVNVSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBgYWxsd2lubmVyLWExMGAgb3IgYGFsbHdpbm5lci1oM2AuIEl0IGV2ZW4gaGFzIGBhbGx3aW5uZXItZW1hY2AgYW5kIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgZm9yIEFSTSBib2FyZHMgbGlrZSB0aGUgT3JhbmdlcGkgb3IgQ3ViaWVib2FyZCwgYnV0IGFyZSB0aG9zZSAqYWN0dWFsbHkqIHVzaW5nIGBzdG1tYWNgIHVuZGVyIHRoZSBob29kPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBBaCwgd2FpdCwgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBzZWVtcyB0byB1c2UgYGFsbHdpbm5lci1zdW40aS1lbWFjYCBvciBgc3VuOGktZW1hY2AsIHdoaWNoIHVzZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmNgIG9yIHBvdGVudGlhbGx5IGBkd21hYy1zdW44aS5jYC4gU28gaXMgdGhhdCBldmVuIHVzaW5nIHN0bW1hYz9cblxuT2theSwgc28gYW0gSSBldmVuIGFza2luZyB0aGUgcmlnaHQgcXVlc3Rpb25zPyBEb2VzIFFFTVUgZXZlbiBoYXZlIGRpcmVjdCBlbXVsYXRpb24gb2YgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBhcyBhIGBkd21hY2A/IE9yIG1heWJlIGl0J3MgdXNpbmcgc29tZXRoaW5nIGVsc2UgbGlrZSBgaW14YCAoZmVjKSBvciBgY2FkZW5jZV9nZW1gPyBJIG5lZWQgdG8gYnJvYWRlbiBteSBzY29wZS5cblxuRXZlbiBpZiB0aGVyZSBpcyBhIE1BQyBlbXVsYXRlZCwgSSBuZWVkIHRvIGNoZWNrOiBjYW4gSSBldmVuIHJlYWNoIGBzdG1tYWNgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciwgbW9yZSBpbXBvcnRhbnRseSwgUUVNVT8gU3l6a2FsbGVyJ3MgY292ZXJhZ2UgaXMgcmVsZXZhbnQgaGVyZS4gSSByZW1lbWJlciBTeXprYWxsZXIgdGVzdHMgeDg2XzY0IGFuZCBhcm02NCBRRU1VIGFuZCBHQ0UgaW5zdGFuY2VzLiBTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGFuZCBwcm9iZSBgc3RtbWFjYCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlIGF0IGFsbD9cblxuTGV0IG1lIGp1c3QgcGF1c2UsIGFuZCByZWZvY3VzLiBEb2VzIGBzdG1tYWNgICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgY2FuIEkgZ2V0IGF3YXkgd2l0aCBwcm9iaW5nIGl0IHRocm91Z2ggdGhlIHBsYXRmb3JtIG9yIFBDSSwgb3IgZG8gSSBuZWVkIGFjdHVhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIG5haWwgZG93biB0aG9zZSBwcmVyZXF1aXNpdGVzLlxuXG5Pa2F5LCBsZXQgbWUgYmFjayB1cCBhIHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyAqc3BlY2lmaWMqIHBhdGNoIGlzIHRyeWluZyB0byBkbywgYW5kICp3aHkqLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBwYXRjaCBjb21taXQgZGV0YWlscyBhbmQgc2VlIHdoYXQgZnVuY3Rpb25zIGFyZSBiZWluZyBtb2RpZmllZCwgYW5kIHdoYXQgdGhhdCB0ZWxscyBtZSBhYm91dCB0aGUgcHJvYmxlbSBpdCdzIHNvbHZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjQsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODoyNS4wNjE4NjkwODdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcyNSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTcyNTpcXHRcXHRcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSxcXG4xNzI2OlxcdFxcdFxcdFxcdFxcdFxcdCB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1ZixcXG4xNzI3OlxcdFxcdFxcdFxcdFxcdFxcdCB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmxlbixcXG4xNzI4OlxcdFxcdFxcdFxcdFxcdFxcdCBETUFfVE9fREVWSUNFKTtcXG4xNzI5OlxcdFxcdH1cXG4xNzMwOlxcdFxcbjE3MzE6XFx0XFx0aWYgKHR4X3EtXFx1MDAzZXhkcGYgXFx1MDAyNlxcdTAwMjYgdHhfcS1cXHUwMDNleGRwZltpXSBcXHUwMDI2XFx1MDAyNlxcbjE3MzI6XFx0XFx0ICAgICh0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxcbjE3MzM6XFx0XFx0ICAgICB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XFxuMTczNDpcXHRcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKHR4X3EtXFx1MDAzZXhkcGZbaV0pO1xcbjE3MzU6XFx0XFx0XFx0dHhfcS1cXHUwMDNleGRwZltpXSA9IE5VTEw7XFxuMTczNjpcXHRcXHR9XFxuMTczNzpcXHRcXG4xNzM4OlxcdFxcdGlmICh0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWClcXG4xNzM5OlxcdFxcdFxcdHR4X3EtXFx1MDAzZXhza19mcmFtZXNfZG9uZSsrO1xcbjE3NDA6XFx0XFxuMTc0MTpcXHRcXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmIFxcdTAwMjZcXHUwMDI2IHR4X3EtXFx1MDAzZXR4X3NrYnVmZltpXSBcXHUwMDI2XFx1MDAyNlxcbjE3NDI6XFx0XFx0ICAgIHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfU0tCKSB7XFxuMTc0MzpcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueSh0eF9xLVxcdTAwM2V0eF9za2J1ZmZbaV0pO1xcbjE3NDQ6XFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmW2ldID0gTlVMTDtcXG4xNzQ1OlxcdFxcdH1cXG4xNzQ2OlxcdFxcbjE3NDc6XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWYgPSAwO1xcbjE3NDg6XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5tYXBfYXNfcGFnZSA9IGZhbHNlO1xcbjE3NDk6XFx0fVxcbjE3NTA6XFx0XFxuMTc1MTpcXHQvKipcXG4xNzUyOlxcdCAqIGRtYV9mcmVlX3J4X3NrYnVmcyAtIGZyZWUgUlggZG1hIGJ1ZmZlcnNcXG4xNzUzOlxcdCAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxcbjE3NTQ6XFx0ICogQGRtYV9jb25mOiBzdHJ1Y3R1cmUgdG8gdGFrZSB0aGUgZG1hIGRhdGFcXG4xNzU1OlxcdCAqIEBxdWV1ZTogUlggcXVldWUgaW5kZXhcXG4xNzU2OlxcdCAqL1xcbjE3NTc6XFx0c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4xNzU4OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4xNzU5OlxcdFxcdFxcdFxcdCAgICAgICB1MzIgcXVldWUpXFxuMTc2MDpcXHR7XFxuMTc2MTpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXFx1MDAyNmRtYV9jb25mLVxcdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XFxuMTc2MjpcXHRcXHRpbnQgaTtcXG4xNzYzOlxcdFxcbjE3NjQ6XFx0XFx0LyogYnVmX3Bvb2wgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXFxuMTc2NTpcXHRcXHRpZiAoIXJ4X3EtXFx1MDAzZWJ1Zl9wb29sKVxcbjE3NjY6XFx0XFx0XFx0cmV0dXJuO1xcbjE3Njc6XFx0XFxuMTc2ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NvbmYtXFx1MDAzZWRtYV9yeF9zaXplOyBpKyspXFxuMTc2OTpcXHRcXHRcXHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM4OjI1LjA2MjE0MTA2N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc2Nzg5NTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgRGVhbGxvY2F0aW9uIGluIHRoZSBTVE1NQUMgRHJpdmVyKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFNUTU1BQyBjb2RlLiBJJ20gemVyb2luZyBpbiBvbiB0aGUgbWVtb3J5IGRlYWxsb2NhdGlvbiByb3V0aW5lcywgc3BlY2lmaWNhbGx5IGBkbWFfZnJlZV9yeF9za2J1ZnNgLCBgZG1hX2ZyZWVfdHhfc2tidWZzYCwgYW5kIGBzdG1tYWNfZnJlZV90eF9idWZmZXJgLiBJIG5lZWQgYSBxdWljayBvdmVydmlldyBvZiB0aGUgY2FsbCBncmFwaCBmb3IgdGhlc2UgZnVuY3Rpb25zLiBLbm93aW5nICp3aGVyZSogdGhlc2UgYXJlIGNhbGxlZCBmcm9tIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBpZGVudGlmeWluZyBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgZG91YmxlIGZyZWVzLCBtZW1vcnkgbGVha3MsIG9yIGltcHJvcGVyIHJlc291cmNlIGNsZWFudXAgaW4gdGhlIGRyaXZlci5cblxuR3JlcHBpbmcgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGxpc3Qgb2YgY2FsbGVycyBmb3IgZWFjaCBvZiB0aG9zZS4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIHNlYXJjaCBwYXR0ZXJuIGFuZCB0aGVuIHJlZmluZSBpdCBpZiB0aGUgaW5pdGlhbCByZXN1bHRzIGFyZSB0b28gYnJvYWQuIERlcGVuZGluZyBvbiB0aGUgc2VhcmNoIHRvb2wgYW5kIHRoZSBzaXplIG9mIHRoZSBjb2RlYmFzZSwgSSBtaWdodCBsb29rIGF0IGluY2x1ZGluZyBhIHNpbXBsZSByZWdleCBvciB0d28gdG8gbmFycm93IGl0IGRvd24gYSBiaXQsIG1heWJlIGZvY3VzaW5nIHRoZSBzZWFyY2ggaW4gYSBmZXcgc2VsZWN0IGZpbGVzLCBvciBleGNsdWRpbmcgc29tZS4gVGhlIGdyZXBwZXIgc2hvdWxkIHRlbGwgbWUgd2hvJ3MgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlc2UgYnVmZmVycywgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gRnJvbSB0aGVyZSwgSSBjYW4gYnVpbGQgYW4gYWNjdXJhdGUgbWVudGFsIG1vZGVsIG9mIHdoYXQncyBnb2luZyBvbiwgYW5kIGlkZW50aWZ5IGxpa2VseSBzb3VyY2VzIG9mIHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTcyLCJPdXRwdXRUb2tlbnMiOjYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODo0Ni44MzAwMzk1MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MTI0NDQxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkbWFfZnJlZV9yeF9za2J1ZnN8ZG1hX2ZyZWVfdHhfc2tidWZzfHN0bW1hY19mcmVlX3R4X2J1ZmZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTE2ODk9c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfcnhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcwNC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3MDU6ICogc3RtbWFjX2ZyZWVfdHhfYnVmZmVyIC0gZnJlZSBSWCBkbWEgYnVmZmVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcwNi0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcxMC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3MTE6c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3MTItXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3NTI6ICogZG1hX2ZyZWVfcnhfc2tidWZzIC0gZnJlZSBSWCBkbWEgYnVmZmVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1My0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1Ni0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3NTc6c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3NTgtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xOTM2PXN0YXRpYyBpbnQgaW5pdF9kbWFfcnhfZGVzY19yaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xOTYzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE5NjQ6XFx0XFx0XFx0ZG1hX2ZyZWVfcnhfc2tidWZzKHByaXYsIGRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xOTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMDc0PXN0YXRpYyBpbnQgaW5pdF9kbWFfZGVzY19yaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMDk1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjA5NjogKiBkbWFfZnJlZV90eF9za2J1ZnMgLSBmcmVlIFRYIGRtYSBidWZmZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMDk3LSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTAwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEwMTpzdGF0aWMgdm9pZCBkbWFfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEwMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMTQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRtYV9jb25mLVxcdTAwM2VkbWFfdHhfc2l6ZTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjExNTpcXHRcXHRzdG1tYWNfZnJlZV90eF9idWZmZXIocHJpdiwgZG1hX2NvbmYsIHF1ZXVlLCBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIxMjg9c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEzMy1cXHRmb3IgKHF1ZXVlID0gMDsgcXVldWUgXFx1MDAzYyB0eF9xdWV1ZV9jbnQ7IHF1ZXVlKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM0OlxcdFxcdGRtYV9mcmVlX3R4X3NrYnVmcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTQzPXN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTU0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNTU6XFx0XFx0ZG1hX2ZyZWVfcnhfc2tidWZzKHByaXYsIGRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTk1PXN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjAzLVxcdC8qIFJlbGVhc2UgdGhlIERNQSBUWCBzb2NrZXQgYnVmZmVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIwNDpcXHRkbWFfZnJlZV90eF9za2J1ZnMocHJpdiwgZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTMwMTk9c3RhdGljIHZvaWQgc3RtbWFjX3R4X2VycihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI1LVxcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjMwMjY6XFx0ZG1hX2ZyZWVfdHhfc2tidWZzKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZiwgY2hhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI3LVxcdHN0bW1hY19jbGVhcl90eF9kZXNjcmlwdG9ycyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIGNoYW4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODo0Ny4xOTEyOTE5NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTExMzc3NTc5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IHN0bW1hYyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBhZmZlY3RpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciB3YXJyYW50cyBmdXJ0aGVyIGZ1enppbmcuICBGaXJzdCB0aGluZ3MgZmlyc3Q6IGBzdG1tYWNgIGlzIGEgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyBFdGhlcm5ldCBjb250cm9sbGVycywgb2Z0ZW4gZm91bmQgaW4gZW1iZWRkZWQgc3lzdGVtcyBmcm9tIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgb3RoZXJzLiAgVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHJlYWNoIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoaXM6IHRoZSBydWxlcyBzcGVjaWZpY2FsbHkgc3RhdGUgdG8gc2tpcCBwYXRjaGVzIGlmIHRoZSBhZmZlY3RlZCBjb2RlIHBhdGggaXMgXCJpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuICBTbywgaXMgYHN0bW1hY2AgZW11bGF0ZWQ/XG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgUUVNVSBtb2RlbHMgdGhlIFN5bm9wc3lzIERXTUFDIHVzZWQgYnkgYHN0bW1hY2Agb3Igbm90LiBMZXQgbWUgcmVjYWxsIHRoZSB0eXBpY2FsIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyBpbiBRRU1VOiBlMTAwMCwgaWdiLCB2aXJ0aW8tbmV0LCBldGMuICBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBEV01BQyBtb2RlbC4gSW4gZmFjdCwgUUVNVSBoYXMgc3BlY2lmaWMgbW9kZWxzIGZvciBhbGx3aW5uZXIgU29DcyBsaWtlIGBhbGx3aW5uZXJfZW1hY2AgZm9yIHN1bjRpLiBBbmQgd2hpbGUgdGhlcmUncyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGFzIHdlbGwsIGJ1dCBkb2VzIHRoYXQgdXNlIGBkd21hYy1zdW44aS5jYD8gIFRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcsIGJ1dCBldmVuIGlmIHRoZSBhbGx3aW5uZXIgbW9kZWxzIGFyZSBhdmFpbGFibGUsIHN5emthbGxlciBwcmltYXJpbHkgdXNlcyBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBmb3IgeDg2XzY0IGFuZCBhYXJjaDY0IHZpcnQgbWFjaGluZXMuIEl0IGRvZXNuJ3QgdXNlIHRoZXNlIEFsbHdpbm5lciBvciBvdGhlciBub24tc3RhbmRhcmQgUUVNVSBtb2RlbHMuXG5cbk5leHQsIEkgdGhpbmsgYWJvdXQgcG9zc2libGUgd2F5cyB0byBpbnN0YW50aWF0ZSBgc3RtbWFjYCBvdXRzaWRlIG9mIHN0YW5kYXJkIGVtdWxhdGlvbi4gQ291bGQgaXQgYmUgYSBwbGF0Zm9ybSBkZXZpY2UsIGEgZHVtbXkgZGV2aWNlLCBvciBtYXliZSBzb21ldGhpbmcgZXhwb3NlZCB2aWEgbmV0bGluaz8gSSBrbm93IHBsYXRmb3JtIGRldmljZXMgYXJlIGluc3RhbnRpYXRlZCB2aWEgZGV2aWNlIHRyZWUgKE9GKSwgQUNQSSBvciBQQ0kuIENhbiB1c2VyIHNwYWNlIGNyZWF0ZSB0aGVzZSB3aXRob3V0IHVuZGVybHlpbmcgaGFyZHdhcmU/IE5vdCByZWFsbHksIHVubGVzcyB3ZSB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdmlhIGNvbmZpZ2ZzLCB3aGljaCBpc24ndCBzdGFuZGFyZCBzeXprYWxsZXIgcHJhY3RpY2UuXG5cbldoYXQgYWJvdXQgUENJPyBJIHNlZSBgc3RtbWFjYCBoYXMgUENJIElEcywgYXMgdXNlZCBieSBgZHdtYWMtaW50ZWwuY2AsIGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtbG9vbmdzb24uY2AsIGV0Yy4gQnV0IEknbSBwcmV0dHkgc3VyZSBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgc3BlY2lmaWMgSW50ZWwsIExvb25nc29uLCBvciBTeW5vcHN5cyBQQ0kgcHJvdG90eXBpbmcga2l0IHRoYXQgd291bGQgdXRpbGl6ZSBgc3RtbWFjYC5cblxuQW5kIGl0J3MgZGVmaW5pdGVseSBub3QgVVNCLCBzbyB0aGF0J3Mgb2ZmIHRoZSB0YWJsZS5cblxuTm93LCBsZXQgbWUgZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgcnVsZXMsIG1ha2luZyBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGRyaXZlciBpc24ndCB1c2VkIGluIHNvbWUgY29yZSBuZXR3b3JraW5nIGNvbnRleHQuIFRoZSBydWxlIHNwZWNpZmljYWxseSBtZW50aW9ucyBhdm9pZGluZyBkcml2ZXJzIGZvciBcInBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi5cblxuQ29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIGNhbiBgc3RtbWFjYCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZz8gTm8sIGl0J3MgYSBkcml2ZXIgZm9yIGVtYmVkZGVkIFNvQ3MgKEFsbHdpbm5lciwgU1RpLCBBbWxvZ2ljLCBSb2NrY2hpcCwgTlhQLCBldGMuKSBhbmQgY2VydGFpbiBJbnRlbC9Mb29uZ3NvbiBQQ0kgY29udHJvbGxlcnMgYW5kIG5vbmUgb2YgdGhlc2UgYXJlIHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbCBtYWNoaW5lcyBvciBRRU1VIGluc3RhbmNlcyB1c2VkIGZvciBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgaXQncyBub3QgYSBzb2Z0d2FyZS1vbmx5IG5ldHdvcmsgZHJpdmVyIChsaWtlIHR1biwgdGFwLCBvciBkdW1teSkgb3IgYSB2aXJ0dWFsIGRldmljZSBidXMgKGxpa2UgdmlydGlvKSBvciBzb2Z0d2FyZSBlbXVsYXRlZCBkZXZpY2UgKHVzYiBvciBtYWM4MDIxMV9od3NpbSkuIEFuZCBJIG5lZWQgdG8gdmVyaWZ5IGJ5IHNlYXJjaGluZyBmb3IgcmVmZXJlbmNlcyB0byBgc3RtbWFjYCBvdXRzaWRlIG9mIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9gIGRpcmVjdG9yeS4gR2l2ZW4gYWxsIHRoaXMsIGl0IGRvZXMgbm90IHNlZW0gd29ydGggZnV6emluZyBhdCB0aGlzIHN0YWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc3NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzg6NTguMzI5MDUyODUyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTc5NDg0NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODo1OC4zOTg4NjQ2MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDMwODcyODIwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIGRpZmYuIEl0J3MgY29uZmluZWQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaGF0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIHRoZXkncmUgYWxsIG51bGwgY2hlY2tzIGluIHRoZSBidWZmZXIgbWFuYWdlbWVudCByb3V0aW5lczogYHN0bW1hY19mcmVlX3R4X2J1ZmZlcmAsIGBkbWFfZnJlZV9yeF9za2J1ZnNgLCBgZG1hX2ZyZWVfcnhfeHNrYnVmc2AsIGFuZCBgZG1hX2ZyZWVfdHhfc2tidWZzYC4gVGhlc2UgYXJlIGRlZmVuc2l2ZSBtZWFzdXJlcywgbGlrZWx5IHRvIHByZXZlbnQgY3Jhc2hlcyBkdXJpbmcgZXJyb3IgaGFuZGxpbmcgb3IgY2xlYW51cC5cblxuTm93LCB0aGUgY3JpdGljYWwgcG9pbnQuIFRoZSBTVE1NQUMgZHJpdmVyICpyZXF1aXJlcyogc3BlY2lmaWMgaGFyZHdhcmUg4oCTIGEgcGh5c2ljYWwgU29DIG9yIFBDSSBkZXZpY2UuIFRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGVtdWxhdGVkIHJlbGlhYmx5IGluIHR5cGljYWwgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIGlzIHdoZXJlIGZ1enppbmcgdXN1YWxseSBoYXBwZW5zLiBCZWNhdXNlIG9mIHRoYXQgZGVwZW5kZW5jeSBvbiBzcGVjaWZpYyBoYXJkd2FyZSwgdGhpcyBjb2RlIGlzbid0IHJlYWNoYWJsZSBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gTm8gbWF0dGVyIGhvdyBjbGV2ZXIgdGhlIGZ1enplciBpcywgaXQgd29uJ3QgdHJpZ2dlciB0aGVzZSBwYXRocy4gVGhlcmVmb3JlLCB0aGUgbGlrZWxpaG9vZCBvZiBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGlzIGVzc2VudGlhbGx5IHplcm8uXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGZhbHNlLiBObyBuZWVkIHRvIHdhc3RlIHJlc291cmNlcyBvbiB0aGlzLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0LiBUaGUgZm9jdXMgc3ltYm9scyBsaXN0IGlzIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUgYmVjYXVzZSB0aGUgaXNzdWUgaXNuJ3Qgd2hldGhlciBvciBub3QgYSBzZXR0aW5nIGlzIGVuYWJsZWQsIGJ1dCB0aGUgZmFjdCB0aGF0IHRoZSBTVE1NQUMgZHJpdmVyIHJlbGllcyBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUuIEkndmUgcmUtcmV2aWV3ZWQgdGhpcyBhbmQgdGhlIHJhdGlvbmFsZSBpcyBzb3VuZC5cblxuTGV0J3MgcHJvY2VlZCB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzAxMywiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzk6MDIuNzA3NTk2MDI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBpbiBidWZmZXIgZGVhbGxvY2F0aW9uIHJvdXRpbmVzIGluIHRoZSBTVE1NQUMgKFN5bm9wc3lzIERlc2lnbldhcmUgLyBTVE1pY3JvZWxlY3Ryb25pY3MpIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFNvQyBvciBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM5OjAyLjcwNzYyMzExN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowgcgfr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 04:13:33 +0000 UTC FinishedAt: 2026-08-30 04:39:04 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGMwYWNhMTEzZGQ4ODFkNDM2ODkyY2M1MzBhMWNkZTM5YThhMjcxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDA0OjM3OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBmMmZjODkxNzY2NTRlLi43MWM2YTk0MWZiOTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE3MjgsNyAmIzQzOzE3MjgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4gXHR9XG4gXG4tXHRpZiAodHhfcS1cdTAwM2V4ZHBmW2ldIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICh0eF9xLVx1MDAzZXhkcGYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbiBcdCAgICAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxuIFx0ICAgICB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh0eF9xLVx1MDAzZXhkcGZbaV0pO1xuQEAgLTE3MzgsNyAmIzQzOzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXG4gXHRcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lJiM0MzsmIzQzOztcbiBcbi1cdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG5AQCAtMTc2MSw2ICYjNDM7MTc2MSwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9IFx1MDAyNmRtYV9jb25mLVx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcbiBcdGludCBpO1xuIFxuJiM0MztcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdHN0bW1hY19mcmVlX3J4X2J1ZmZlcihwcml2LCByeF9xLCBpKTtcbiB9XG5AQCAtMTgwMiw2ICYjNDM7MTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbiYjNDM7XHRpZiAoIXJ4X3EtXHUwMDNlYnVmX3Bvb2wpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcdTAwMjZyeF9xLVx1MDAzZWJ1Zl9wb29sW2ldO1xuIFxuQEAgLTIwOTcsNiAmIzQzOzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lID0gMDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplOyBpJiM0MzsmIzQzOylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBpbiBidWZmZXIgZGVhbGxvY2F0aW9uIHJvdXRpbmVzIGluIHRoZSBTVE1NQUMgKFN5bm9wc3lzIERlc2lnbldhcmUgLyBTVE1pY3JvZWxlY3Ryb25pY3MpIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFNvQyBvciBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YzBhY2ExMTNkZDg4MWQ0MzY4OTJjYzUzMGExY2RlMzlhOGEyNzEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMDQ6Mzc6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBmMmZjODkxNzY2NTRlLi43MWM2YTk0MWZiOTFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTE3MjgsNyAmIzQzOzE3MjgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCQkgRE1BX1RPX0RFVklDRSk7CiAJfQogCi0JaWYgKHR4X3EtJmd0O3hkcGZbaV0gJmFtcDsmYW1wOwomIzQzOwlpZiAodHhfcS0mZ3Q7eGRwZiAmYW1wOyZhbXA7IHR4X3EtJmd0O3hkcGZbaV0gJmFtcDsmYW1wOwogCSAgICAodHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHwKIAkgICAgIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHsKIAkJeGRwX3JldHVybl9mcmFtZSh0eF9xLSZndDt4ZHBmW2ldKTsKQEAgLTE3MzgsNyAmIzQzOzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCWlmICh0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWCkKIAkJdHhfcS0mZ3Q7eHNrX2ZyYW1lc19kb25lJiM0MzsmIzQzOzsKIAotCWlmICh0eF9xLSZndDt0eF9za2J1ZmZbaV0gJmFtcDsmYW1wOwomIzQzOwlpZiAodHhfcS0mZ3Q7dHhfc2tidWZmICZhbXA7JmFtcDsgdHhfcS0mZ3Q7dHhfc2tidWZmW2ldICZhbXA7JmFtcDsKIAkgICAgdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHsKIAkJZGV2X2tmcmVlX3NrYl9hbnkodHhfcS0mZ3Q7dHhfc2tidWZmW2ldKTsKIAkJdHhfcS0mZ3Q7dHhfc2tidWZmW2ldID0gTlVMTDsKQEAgLTE3NjEsNiAmIzQzOzE3NjEsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gJmFtcDtkbWFfY29uZi0mZ3Q7cnhfcXVldWVbcXVldWVdOwogCWludCBpOwogCiYjNDM7CS8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqLwomIzQzOwlpZiAoIXJ4X3EtJmd0O2J1Zl9wb29sKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KQogCQlzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7CiB9CkBAIC0xODAyLDYgJiM0MzsxODA2LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3hza2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCXN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSAmYW1wO2RtYV9jb25mLSZndDtyeF9xdWV1ZVtxdWV1ZV07CiAJaW50IGk7CiAKJiM0MzsJLyogYnVmX3Bvb2wgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovCiYjNDM7CWlmICghcnhfcS0mZ3Q7YnVmX3Bvb2wpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGRtYV9jb25mLSZndDtkbWFfcnhfc2l6ZTsgaSYjNDM7JiM0MzspIHsKIAkJc3RydWN0IHN0bW1hY19yeF9idWZmZXIgKmJ1ZiA9ICZhbXA7cnhfcS0mZ3Q7YnVmX3Bvb2xbaV07CiAKQEAgLTIwOTcsNiAmIzQzOzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xID0gJmFtcDtkbWFfY29uZi0mZ3Q7dHhfcXVldWVbcXVldWVdOwogCWludCBpOwogCiYjNDM7CS8qIHR4X3NrYnVmZl9kbWEgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovCiYjNDM7CWlmICghdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAl0eF9xLSZndDt4c2tfZnJhbWVzX2RvbmUgPSAwOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGRtYV9jb25mLSZndDtkbWFfdHhfc2l6ZTsgaSYjNDM7JiM0MzspCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogRGl2aW5nIGludG8gdGhlIGBzdG1tYWNgIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3Mgd2l0aCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHRoZSBgc3RtbWFjYCBFdGhlcm5ldCBkcml2ZXIuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBgc3RtbWFjYCBhY3R1YWxseSAqaXMqLiBJcyB0aGlzIHNvbWV0aGluZyBwcmltYXJpbHkgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLCBhIHNwZWNpZmljIHBsYXRmb3JtJiMzOTtzIE5JQywgb3IgaXMgaXQgYSBQQ0kgZHJpdmVyPyBPciBpcyBpdCBzb21ldGhpbmcgdGhhdCBoYXMgc29tZSByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/CgpCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBmaWd1cmUgb3V0IHRoZSAqY29udGV4dCogb2YgYHN0bW1hY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0JiMzOTtzIHVzZWQg4oCTIHdoYXQgb3RoZXIgZHJpdmVycyBkZXBlbmQgb24gaXQsIG9yIGhvdyBpdCBnZXRzIGluc3RhbnRpYXRlZC4gQW5kIGNyaXRpY2FsbHksIEkgaGF2ZSB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGdvdCBhbnkgcmVsZXZhbmNlIHRvIG15IHZpcnR1YWxpemVkIHdvcmxkLiBJcyB0aGVyZSBhbnkgY2hhbmNlIHRoaXMgcGF0Y2ggaGFzIGltcGxpY2F0aW9ucyBmb3IgUUVNVSwgR0NFLCBvciBvdGhlciBlbXVsYXRlZCBlbnZpcm9ubWVudHM/CgpMZXQgbWUgdXNlIHRoZSBgZ3JlcHBlcmAgdG9vbCB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCBsZWFybiBtb3JlIGFib3V0IHRoaXMgZHJpdmVyIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgbGluZS1ieS1saW5lIGluc3BlY3Rpb24gb2YgdGhlIGFjdHVhbCBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODppZiBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDA3PWNvbmZpZyBTVE1NQUNfUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTktXHQgIElmIHVuc3VyZSwgc2F5IE4uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQyMDplbmRpZiAjIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICYjNDM7PSBzdG1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMy1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgc3RtbWFjYCB0aGluZyBpcyBzb21ldGhpbmcgdGhhdCBRRU1VIGNhbiBldmVuIHRvdWNoLCBvciBpZiBpdCYjMzk7cyB0aWVkIHRvIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIElzIGl0IERlc2lnbldhcmU/IElzIGl0IGFuIGVtYmVkZGVkIFNvQyBNQUMgZnJvbSBTVE1pY3JvZWxlY3Ryb25pY3MgKFNUTU1BQyk/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LgoKSSBuZWVkIHRvIHF1aWNrbHkgZmlndXJlIG91dCBpZiBzdG1tYWMgaXMgc29tZXRoaW5nIHRoYXQgaXMgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUuIElzIHN0bW1hYyBhIHR5cGljYWwsIHZlbmRvci1uZXV0cmFsIGludGVyZmFjZSwgb3IgaXMgaXQgYSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCBRRU1VIHdvdWxkbiYjMzk7dCBlbXVsYXRlIHdlbGw/CgpIYW5nIG9uLCBiZWZvcmUgSSBqdW1wIHRvIGNvbmNsdXNpb25zLCBsZXQgbWUgcmVyZWFkIHRob3NlIHByb21wdCBydWxlcyBjYXJlZnVsbHkuIFJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlsdGVyIG91dCBhIGJ1bmNoIG9mIHNjZW5hcmlvcyB3aGVyZSB0aGUgZnV6emluZyBlZmZvcnQgd291bGQgYmUgYSB3YXN0ZSBvZiB0aW1lLiBObyBkb2N1bWVudGF0aW9uIGNoYW5nZXMsIGNvc21ldGljIHN0dWZmLCB1bnJlYWNoYWJsZSBjb2RlLCB2ZW5kb3Itc3BlY2lmaWMgc3R1ZmYsIG9yIGNsZWFudXAgZnVuY3Rpb25zLiBHb3QgaXQuCgpOb3csICpkb2VzKiBzdGFuZGFyZCBRRU1VICh4ODZfNjQgb3IgYXJtNjQsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSB1c3VhbGx5IGRlYWxpbmcgd2l0aCkgYWN0dWFsbHkgZW11bGF0ZSBgc3RtbWFjYCwgYGR3bWFjYCwgb3IgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGhhcmR3YXJlPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSBhY2Nlc3NpYmxlIGFuZCBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LgoKTGV0IG1lIHRyeSB0byB1bmRlcnN0YW5kIHdoYXQgaGFyZHdhcmUgcGxhdGZvcm1zIHN0bW1hYyBpcyBjb21tb25seSB1c2VkIG9uLiBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGljaCBwbGF0Zm9ybXMgaXQgaXMgZGVzaWduZWQgZm9yLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIERXTUFDX0dFTkVSSUNcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueVxuICA1NzpcdFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4gIDU4Olx0XHQgIGRhdGEgZm9yIHNldHVwLlxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBEV01BQ19BTkFSSU9OXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVmYXVsdCBBUkNcbiAgNjM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBEV01BQ19FSUM3NzAwXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbiAgNzI6XHRcdGhlbHBcbiAgNzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcbiAgNzQ6XHRcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xuICA3NTpcdFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcbiAgNzY6XHRcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIERXTUFDX0lOR0VOSUNcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlZmF1bHQgTUFDSF9JTkdFTklDXG4gIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQ5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKktjb25maWcgRGVlcCBEaXZlIGluIHN0bW1hYyAtIE9uZ29pbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBmb2N1c2luZyBvbiBzdG1tYWMgYW5kLCBhcyBJIGRpZyBkZWVwZXIsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBteSBpbnZlc3RpZ2F0aW9uIGlzIHRvIG1ldGljdWxvdXNseSByZXZpZXcgdGhlIHJlc3Qgb2YgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBjb3VsZCBpbXBhY3QgdGhlIGJyb2FkZXIgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgYmV5b25kIHRoZSBpbW1lZGlhdGUgYXJlYSBJIHdhcyBpbml0aWFsbHkgZm9jdXNlZCBvbi4gVGhpcyBpcyBhYm91dCBlbnN1cmluZyBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgYW5kIGlkZW50aWZ5aW5nIGFueSBoaWRkZW4gZWRnZSBjYXNlcy4gVGhpcyBkZXRhaWxlZCBwYXNzIGlzIGNydWNpYWwgZm9yIGEgcm9idXN0IGFuZCBtYWludGFpbmFibGUgZHJpdmVyLiBJdCBtaWdodCB1bmNvdmVyIGEgY3JpdGljYWwsIHlldCBvYnNjdXJlLCBidWlsZCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIHJvbGwgdXAgbXkgc2xlZXZlcyBhbmQgZGl2ZSBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDIwOlx0ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYyNAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHN0bW1hY2AsIHRoZSBFdGhlcm5ldCBNQUMgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IElQcy4gQSBsb3Qgb2YgU29DcyB1c2UgaXQsIHJpZ2h0PyBTVCwgQWxsd2lubmVyLCBBbWxvZ2ljLCBBbHRlcmEsIEludGVsIFF1YXJrLCBhbmQgb24gYW5kIG9uLiBCdXQgdGhlIGtleSBxdWVzdGlvbiBoZXJlIGlzLCBkb2VzIFFFTVUsIHRoZSBlbXVsYXRvciwgYWN0dWFsbHkgKmVtdWxhdGUqIGFueSBvZiB0aG9zZSBzdG1tYWMgb3IgZHdtYWMgZGV2aWNlcz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbWFjaGluZSBtb2RlbHMgaW4gUUVNVSBtaWdodCBiZSByZWxldmFudC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byByZW1lbWJlciBpZiBRRU1VIG9mZmVycyBhbnl0aGluZyBsaWtlIGBkd21hY2AsIG9yIHNwZWNpZmljYWxseSBgYWxsd2lubmVyYCBvciBhIHJlbGF0ZWQgYHN0bW1hY2AgaW1wbGVtZW50YXRpb24uCgpJIGtub3cgUUVNVSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBgYWxsd2lubmVyLWExMGAgb3IgYGFsbHdpbm5lci1oM2AuIEl0IGV2ZW4gaGFzIGBhbGx3aW5uZXItZW1hY2AgYW5kIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgZm9yIEFSTSBib2FyZHMgbGlrZSB0aGUgT3JhbmdlcGkgb3IgQ3ViaWVib2FyZCwgYnV0IGFyZSB0aG9zZSAqYWN0dWFsbHkqIHVzaW5nIGBzdG1tYWNgIHVuZGVyIHRoZSBob29kPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBBaCwgd2FpdCwgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBzZWVtcyB0byB1c2UgYGFsbHdpbm5lci1zdW40aS1lbWFjYCBvciBgc3VuOGktZW1hY2AsIHdoaWNoIHVzZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmNgIG9yIHBvdGVudGlhbGx5IGBkd21hYy1zdW44aS5jYC4gU28gaXMgdGhhdCBldmVuIHVzaW5nIHN0bW1hYz8KCk9rYXksIHNvIGFtIEkgZXZlbiBhc2tpbmcgdGhlIHJpZ2h0IHF1ZXN0aW9ucz8gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBkaXJlY3QgZW11bGF0aW9uIG9mIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgYXMgYSBgZHdtYWNgPyBPciBtYXliZSBpdCYjMzk7cyB1c2luZyBzb21ldGhpbmcgZWxzZSBsaWtlIGBpbXhgIChmZWMpIG9yIGBjYWRlbmNlX2dlbWA/IEkgbmVlZCB0byBicm9hZGVuIG15IHNjb3BlLgoKRXZlbiBpZiB0aGVyZSBpcyBhIE1BQyBlbXVsYXRlZCwgSSBuZWVkIHRvIGNoZWNrOiBjYW4gSSBldmVuIHJlYWNoIGBzdG1tYWNgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciwgbW9yZSBpbXBvcnRhbnRseSwgUUVNVT8gU3l6a2FsbGVyJiMzOTtzIGNvdmVyYWdlIGlzIHJlbGV2YW50IGhlcmUuIEkgcmVtZW1iZXIgU3l6a2FsbGVyIHRlc3RzIHg4Nl82NCBhbmQgYXJtNjQgUUVNVSBhbmQgR0NFIGluc3RhbmNlcy4gU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBhbmQgcHJvYmUgYHN0bW1hY2Agd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZSBhdCBhbGw/CgpMZXQgbWUganVzdCBwYXVzZSwgYW5kIHJlZm9jdXMuIERvZXMgYHN0bW1hY2AgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBjYW4gSSBnZXQgYXdheSB3aXRoIHByb2JpbmcgaXQgdGhyb3VnaCB0aGUgcGxhdGZvcm0gb3IgUENJLCBvciBkbyBJIG5lZWQgYWN0dWFsIGhhcmR3YXJlPyBJIG5lZWQgdG8gbmFpbCBkb3duIHRob3NlIHByZXJlcXVpc2l0ZXMuCgpPa2F5LCBsZXQgbWUgYmFjayB1cCBhIHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyAqc3BlY2lmaWMqIHBhdGNoIGlzIHRyeWluZyB0byBkbywgYW5kICp3aHkqLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgcGF0Y2ggY29tbWl0IGRldGFpbHMgYW5kIHNlZSB3aGF0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQsIGFuZCB3aGF0IHRoYXQgdGVsbHMgbWUgYWJvdXQgdGhlIHByb2JsZW0gaXQmIzM5O3Mgc29sdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzI1Olx0XHRcdFx0ZG1hX3VubWFwX3NpbmdsZShwcml2LVx1MDAzZWRldmljZSxcbjE3MjY6XHRcdFx0XHRcdFx0IHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWYsXG4xNzI3Olx0XHRcdFx0XHRcdCB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0ubGVuLFxuMTcyODpcdFx0XHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4xNzI5Olx0XHR9XG4xNzMwOlx0XG4xNzMxOlx0XHRpZiAodHhfcS1cdTAwM2V4ZHBmIFx1MDAyNlx1MDAyNiB0eF9xLVx1MDAzZXhkcGZbaV0gXHUwMDI2XHUwMDI2XG4xNzMyOlx0XHQgICAgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHxcbjE3MzM6XHRcdCAgICAgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XG4xNzM0Olx0XHRcdHhkcF9yZXR1cm5fZnJhbWUodHhfcS1cdTAwM2V4ZHBmW2ldKTtcbjE3MzU6XHRcdFx0dHhfcS1cdTAwM2V4ZHBmW2ldID0gTlVMTDtcbjE3MzY6XHRcdH1cbjE3Mzc6XHRcbjE3Mzg6XHRcdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWFNLX1RYKVxuMTczOTpcdFx0XHR0eF9xLVx1MDAzZXhza19mcmFtZXNfZG9uZSYjNDM7JiM0Mzs7XG4xNzQwOlx0XG4xNzQxOlx0XHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuMTc0MjpcdFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbjE3NDM6XHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuMTc0NDpcdFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG4xNzQ1Olx0XHR9XG4xNzQ2Olx0XG4xNzQ3Olx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmID0gMDtcbjE3NDg6XHRcdHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5tYXBfYXNfcGFnZSA9IGZhbHNlO1xuMTc0OTpcdH1cbjE3NTA6XHRcbjE3NTE6XHQvKipcbjE3NTI6XHQgKiBkbWFfZnJlZV9yeF9za2J1ZnMgLSBmcmVlIFJYIGRtYSBidWZmZXJzXG4xNzUzOlx0ICogQHByaXY6IHByaXZhdGUgc3RydWN0dXJlXG4xNzU0Olx0ICogQGRtYV9jb25mOiBzdHJ1Y3R1cmUgdG8gdGFrZSB0aGUgZG1hIGRhdGFcbjE3NTU6XHQgKiBAcXVldWU6IFJYIHF1ZXVlIGluZGV4XG4xNzU2Olx0ICovXG4xNzU3Olx0c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbjE3NTg6XHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4xNzU5Olx0XHRcdFx0ICAgICAgIHUzMiBxdWV1ZSlcbjE3NjA6XHR7XG4xNzYxOlx0XHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2ZG1hX2NvbmYtXHUwMDNlcnhfcXVldWVbcXVldWVdO1xuMTc2MjpcdFx0aW50IGk7XG4xNzYzOlx0XG4xNzY0Olx0XHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbjE3NjU6XHRcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbjE3NjY6XHRcdFx0cmV0dXJuO1xuMTc2NzpcdFxuMTc2ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KVxuMTc2OTpcdFx0XHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NzIKCQkJCQkJCW91dHB1dDogNjIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBEZWFsbG9jYXRpb24gaW4gdGhlIFNUTU1BQyBEcml2ZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFNUTU1BQyBjb2RlLiBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIG1lbW9yeSBkZWFsbG9jYXRpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgZG1hX2ZyZWVfcnhfc2tidWZzYCwgYGRtYV9mcmVlX3R4X3NrYnVmc2AsIGFuZCBgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyYC4gSSBuZWVkIGEgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZXNlIGZ1bmN0aW9ucy4gS25vd2luZyAqd2hlcmUqIHRoZXNlIGFyZSBjYWxsZWQgZnJvbSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGlzc3VlcyBsaWtlIGRvdWJsZSBmcmVlcywgbWVtb3J5IGxlYWtzLCBvciBpbXByb3BlciByZXNvdXJjZSBjbGVhbnVwIGluIHRoZSBkcml2ZXIuCgpHcmVwcGluZyBpcyBkZWZpbml0ZWx5IHRoZSB3YXkgdG8gZ28uIEEgcXVpY2sgc2VhcmNoIHNob3VsZCBnaXZlIG1lIGEgc29saWQgbGlzdCBvZiBjYWxsZXJzIGZvciBlYWNoIG9mIHRob3NlLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIHNlYXJjaCBwYXR0ZXJuIGFuZCB0aGVuIHJlZmluZSBpdCBpZiB0aGUgaW5pdGlhbCByZXN1bHRzIGFyZSB0b28gYnJvYWQuIERlcGVuZGluZyBvbiB0aGUgc2VhcmNoIHRvb2wgYW5kIHRoZSBzaXplIG9mIHRoZSBjb2RlYmFzZSwgSSBtaWdodCBsb29rIGF0IGluY2x1ZGluZyBhIHNpbXBsZSByZWdleCBvciB0d28gdG8gbmFycm93IGl0IGRvd24gYSBiaXQsIG1heWJlIGZvY3VzaW5nIHRoZSBzZWFyY2ggaW4gYSBmZXcgc2VsZWN0IGZpbGVzLCBvciBleGNsdWRpbmcgc29tZS4gVGhlIGdyZXBwZXIgc2hvdWxkIHRlbGwgbWUgd2hvJiMzOTtzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZXNlIGJ1ZmZlcnMsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGJ1aWxkIGFuIGFjY3VyYXRlIG1lbnRhbCBtb2RlbCBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCBhbmQgaWRlbnRpZnkgbGlrZWx5IHNvdXJjZXMgb2YgcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtYV9mcmVlX3J4X3NrYnVmc3xkbWFfZnJlZV90eF9za2J1ZnN8c3RtbWFjX2ZyZWVfdHhfYnVmZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjg5PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3J4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzA0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNzA1OiAqIHN0bW1hY19mcmVlX3R4X2J1ZmZlciAtIGZyZWUgUlggZG1hIGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcwNi0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3MTAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3MTE6c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcxMi1cdFx0XHRcdCAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNzUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNzUyOiAqIGRtYV9mcmVlX3J4X3NrYnVmcyAtIGZyZWUgUlggZG1hIGJ1ZmZlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1My0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3NTYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3NTc6c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1OC1cdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xOTM2PXN0YXRpYyBpbnQgaW5pdF9kbWFfcnhfZGVzY19yaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTk2My1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxOTY0Olx0XHRcdGRtYV9mcmVlX3J4X3NrYnVmcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xOTY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjA3ND1zdGF0aWMgaW50IGluaXRfZG1hX2Rlc2NfcmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIwOTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIwOTY6ICogZG1hX2ZyZWVfdHhfc2tidWZzIC0gZnJlZSBUWCBkbWEgYnVmZmVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMDk3LSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEwMTpzdGF0aWMgdm9pZCBkbWFfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTAyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMTQtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxMTU6XHRcdHN0bW1hY19mcmVlX3R4X2J1ZmZlcihwcml2LCBkbWFfY29uZiwgcXVldWUsIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTE2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjEyOD1zdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEzMy1cdGZvciAocXVldWUgPSAwOyBxdWV1ZSBcdTAwM2MgdHhfcXVldWVfY250OyBxdWV1ZSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxMzQ6XHRcdGRtYV9mcmVlX3R4X3NrYnVmcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE0Mz1zdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxNTQtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNTU6XHRcdGRtYV9mcmVlX3J4X3NrYnVmcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE5NT1zdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMDMtXHQvKiBSZWxlYXNlIHRoZSBETUEgVFggc29ja2V0IGJ1ZmZlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIwNDpcdGRtYV9mcmVlX3R4X3NrYnVmcyhwcml2LCBkbWFfY29uZiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjA1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzAxOT1zdGF0aWMgdm9pZCBzdG1tYWNfdHhfZXJyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI1LVx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozMDI2Olx0ZG1hX2ZyZWVfdHhfc2tidWZzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI3LVx0c3RtbWFjX2NsZWFyX3R4X2Rlc2NyaXB0b3JzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYsIGNoYW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc3NwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE0MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IHN0bW1hYyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBhIHBhdGNoIGFmZmVjdGluZyB0aGUgYHN0bW1hY2AgZHJpdmVyIHdhcnJhbnRzIGZ1cnRoZXIgZnV6emluZy4gIEZpcnN0IHRoaW5ncyBmaXJzdDogYHN0bW1hY2AgaXMgYSBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBvZnRlbiBmb3VuZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGZyb20gU1RNaWNyb2VsZWN0cm9uaWNzIGFuZCBvdGhlcnMuICBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgSSBjYW4gYWN0dWFsbHkgcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLgoKTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoaXM6IHRoZSBydWxlcyBzcGVjaWZpY2FsbHkgc3RhdGUgdG8gc2tpcCBwYXRjaGVzIGlmIHRoZSBhZmZlY3RlZCBjb2RlIHBhdGggaXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuICBTbywgaXMgYHN0bW1hY2AgZW11bGF0ZWQ/CgpJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIFFFTVUgbW9kZWxzIHRoZSBTeW5vcHN5cyBEV01BQyB1c2VkIGJ5IGBzdG1tYWNgIG9yIG5vdC4gTGV0IG1lIHJlY2FsbCB0aGUgdHlwaWNhbCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgaW4gUUVNVTogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgZXRjLiAgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIERXTUFDIG1vZGVsLiBJbiBmYWN0LCBRRU1VIGhhcyBzcGVjaWZpYyBtb2RlbHMgZm9yIGFsbHdpbm5lciBTb0NzIGxpa2UgYGFsbHdpbm5lcl9lbWFjYCBmb3Igc3VuNGkuIEFuZCB3aGlsZSB0aGVyZSYjMzk7cyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGFzIHdlbGwsIGJ1dCBkb2VzIHRoYXQgdXNlIGBkd21hYy1zdW44aS5jYD8gIFRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcsIGJ1dCBldmVuIGlmIHRoZSBhbGx3aW5uZXIgbW9kZWxzIGFyZSBhdmFpbGFibGUsIHN5emthbGxlciBwcmltYXJpbHkgdXNlcyBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBmb3IgeDg2XzY0IGFuZCBhYXJjaDY0IHZpcnQgbWFjaGluZXMuIEl0IGRvZXNuJiMzOTt0IHVzZSB0aGVzZSBBbGx3aW5uZXIgb3Igb3RoZXIgbm9uLXN0YW5kYXJkIFFFTVUgbW9kZWxzLgoKTmV4dCwgSSB0aGluayBhYm91dCBwb3NzaWJsZSB3YXlzIHRvIGluc3RhbnRpYXRlIGBzdG1tYWNgIG91dHNpZGUgb2Ygc3RhbmRhcmQgZW11bGF0aW9uLiBDb3VsZCBpdCBiZSBhIHBsYXRmb3JtIGRldmljZSwgYSBkdW1teSBkZXZpY2UsIG9yIG1heWJlIHNvbWV0aGluZyBleHBvc2VkIHZpYSBuZXRsaW5rPyBJIGtub3cgcGxhdGZvcm0gZGV2aWNlcyBhcmUgaW5zdGFudGlhdGVkIHZpYSBkZXZpY2UgdHJlZSAoT0YpLCBBQ1BJIG9yIFBDSS4gQ2FuIHVzZXIgc3BhY2UgY3JlYXRlIHRoZXNlIHdpdGhvdXQgdW5kZXJseWluZyBoYXJkd2FyZT8gTm90IHJlYWxseSwgdW5sZXNzIHdlIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cyB2aWEgY29uZmlnZnMsIHdoaWNoIGlzbiYjMzk7dCBzdGFuZGFyZCBzeXprYWxsZXIgcHJhY3RpY2UuCgpXaGF0IGFib3V0IFBDST8gSSBzZWUgYHN0bW1hY2AgaGFzIFBDSSBJRHMsIGFzIHVzZWQgYnkgYGR3bWFjLWludGVsLmNgLCBgc3RtbWFjX3BjaS5jYCwgYGR3bWFjLWxvb25nc29uLmNgLCBldGMuIEJ1dCBJJiMzOTttIHByZXR0eSBzdXJlIHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgc3BlY2lmaWMgSW50ZWwsIExvb25nc29uLCBvciBTeW5vcHN5cyBQQ0kgcHJvdG90eXBpbmcga2l0IHRoYXQgd291bGQgdXRpbGl6ZSBgc3RtbWFjYC4KCkFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IG5vdCBVU0IsIHNvIHRoYXQmIzM5O3Mgb2ZmIHRoZSB0YWJsZS4KCk5vdywgbGV0IG1lIGdvIGJhY2sgYW5kIHJlLXJlYWQgdGhlIHJ1bGVzLCBtYWtpbmcgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZHJpdmVyIGlzbiYjMzk7dCB1c2VkIGluIHNvbWUgY29yZSBuZXR3b3JraW5nIGNvbnRleHQuIFRoZSBydWxlIHNwZWNpZmljYWxseSBtZW50aW9ucyBhdm9pZGluZyBkcml2ZXJzIGZvciAmIzM0O3BoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KCkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBjYW4gYHN0bW1hY2AgYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmc/IE5vLCBpdCYjMzk7cyBhIGRyaXZlciBmb3IgZW1iZWRkZWQgU29DcyAoQWxsd2lubmVyLCBTVGksIEFtbG9naWMsIFJvY2tjaGlwLCBOWFAsIGV0Yy4pIGFuZCBjZXJ0YWluIEludGVsL0xvb25nc29uIFBDSSBjb250cm9sbGVycyBhbmQgbm9uZSBvZiB0aGVzZSBhcmUgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsIG1hY2hpbmVzIG9yIFFFTVUgaW5zdGFuY2VzIHVzZWQgZm9yIGZ1enppbmcuIEZ1cnRoZXJtb3JlLCBpdCYjMzk7cyBub3QgYSBzb2Z0d2FyZS1vbmx5IG5ldHdvcmsgZHJpdmVyIChsaWtlIHR1biwgdGFwLCBvciBkdW1teSkgb3IgYSB2aXJ0dWFsIGRldmljZSBidXMgKGxpa2UgdmlydGlvKSBvciBzb2Z0d2FyZSBlbXVsYXRlZCBkZXZpY2UgKHVzYiBvciBtYWM4MDIxMV9od3NpbSkuIEFuZCBJIG5lZWQgdG8gdmVyaWZ5IGJ5IHNlYXJjaGluZyBmb3IgcmVmZXJlbmNlcyB0byBgc3RtbWFjYCBvdXRzaWRlIG9mIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9gIGRpcmVjdG9yeS4gR2l2ZW4gYWxsIHRoaXMsIGl0IGRvZXMgbm90IHNlZW0gd29ydGggZnV6emluZyBhdCB0aGlzIHN0YWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMTMKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogNDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGUgZGlmZi4gSXQmIzM5O3MgY29uZmluZWQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaGF0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCB0aGV5JiMzOTtyZSBhbGwgbnVsbCBjaGVja3MgaW4gdGhlIGJ1ZmZlciBtYW5hZ2VtZW50IHJvdXRpbmVzOiBgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyYCwgYGRtYV9mcmVlX3J4X3NrYnVmc2AsIGBkbWFfZnJlZV9yeF94c2tidWZzYCwgYW5kIGBkbWFfZnJlZV90eF9za2J1ZnNgLiBUaGVzZSBhcmUgZGVmZW5zaXZlIG1lYXN1cmVzLCBsaWtlbHkgdG8gcHJldmVudCBjcmFzaGVzIGR1cmluZyBlcnJvciBoYW5kbGluZyBvciBjbGVhbnVwLgoKTm93LCB0aGUgY3JpdGljYWwgcG9pbnQuIFRoZSBTVE1NQUMgZHJpdmVyICpyZXF1aXJlcyogc3BlY2lmaWMgaGFyZHdhcmUg4oCTIGEgcGh5c2ljYWwgU29DIG9yIFBDSSBkZXZpY2UuIFRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBlbXVsYXRlZCByZWxpYWJseSBpbiB0eXBpY2FsIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBpcyB3aGVyZSBmdXp6aW5nIHVzdWFsbHkgaGFwcGVucy4gQmVjYXVzZSBvZiB0aGF0IGRlcGVuZGVuY3kgb24gc3BlY2lmaWMgaGFyZHdhcmUsIHRoaXMgY29kZSBpc24mIzM5O3QgcmVhY2hhYmxlIGR1cmluZyB0aGUgZnV6emluZyBwcm9jZXNzLiBObyBtYXR0ZXIgaG93IGNsZXZlciB0aGUgZnV6emVyIGlzLCBpdCB3b24mIzM5O3QgdHJpZ2dlciB0aGVzZSBwYXRocy4gVGhlcmVmb3JlLCB0aGUgbGlrZWxpaG9vZCBvZiBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGlzIGVzc2VudGlhbGx5IHplcm8uCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBmYWxzZS4gTm8gbmVlZCB0byB3YXN0ZSByZXNvdXJjZXMgb24gdGhpcy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQuIFRoZSBmb2N1cyBzeW1ib2xzIGxpc3QgaXMgZW1wdHksIGFuZCB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuYWJsZSBiZWNhdXNlIHRoZSBpc3N1ZSBpc24mIzM5O3Qgd2hldGhlciBvciBub3QgYSBzZXR0aW5nIGlzIGVuYWJsZWQsIGJ1dCB0aGUgZmFjdCB0aGF0IHRoZSBTVE1NQUMgZHJpdmVyIHJlbGllcyBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUuIEkmIzM5O3ZlIHJlLXJldmlld2VkIHRoaXMgYW5kIHRoZSByYXRpb25hbGUgaXMgc291bmQuCgpMZXQmIzM5O3MgcHJvY2VlZCB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZGVmZW5zaXZlIE5VTEwgY2hlY2tzIGluIGJ1ZmZlciBkZWFsbG9jYXRpb24gcm91dGluZXMgaW4gdGhlIFNUTU1BQyAoU3lub3BzeXMgRGVzaWduV2FyZSAvIFNUTWljcm9lbGVjdHJvbmljcykgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU29DIG9yIFBDSSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwNDozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6MTIuMjkxMjM3Nzg0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNDE2Mzk2NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozNzoxMi4yOTEyNDM0NTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Njc0NDczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRjMGFjYTExM2RkODgxZDQzNjg5MmNjNTMwYTFjZGUzOWE4YTI3MTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMzAgMDQ6Mzc6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBmMmZjODkxNzY2NTRlLi43MWM2YTk0MWZiOTFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTE3MjgsNyArMTcyOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdFxcdCBETUFfVE9fREVWSUNFKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHR4X3EtXFx1MDAzZXhkcGZbaV0gXFx1MDAyNlxcdTAwMjZcXG4rXFx0aWYgKHR4X3EtXFx1MDAzZXhkcGYgXFx1MDAyNlxcdTAwMjYgdHhfcS1cXHUwMDNleGRwZltpXSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX1RYIHx8XFxuIFxcdCAgICAgdHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfTkRPKSkge1xcbiBcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKHR4X3EtXFx1MDAzZXhkcGZbaV0pO1xcbkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXFxuIFxcdFxcdHR4X3EtXFx1MDAzZXhza19mcmFtZXNfZG9uZSsrO1xcbiBcXG4tXFx0aWYgKHR4X3EtXFx1MDAzZXR4X3NrYnVmZltpXSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmIFxcdTAwMjZcXHUwMDI2IHR4X3EtXFx1MDAzZXR4X3NrYnVmZltpXSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgdHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcXG4gXFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cXHUwMDNldHhfc2tidWZmW2ldKTtcXG4gXFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmW2ldID0gTlVMTDtcXG5AQCAtMTc2MSw2ICsxNzYxLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcXHUwMDI2ZG1hX2NvbmYtXFx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cXG4rXFx0aWYgKCFyeF9xLVxcdTAwM2VidWZfcG9vbClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRtYV9jb25mLVxcdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKVxcbiBcXHRcXHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XFxuIH1cXG5AQCAtMTgwMiw2ICsxODA2LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3hza2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXFx1MDAyNmRtYV9jb25mLVxcdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LyogYnVmX3Bvb2wgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXFxuK1xcdGlmICghcnhfcS1cXHUwMDNlYnVmX3Bvb2wpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkbWFfY29uZi1cXHUwMDNlZG1hX3J4X3NpemU7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3J4X2J1ZmZlciAqYnVmID0gXFx1MDAyNnJ4X3EtXFx1MDAzZWJ1Zl9wb29sW2ldO1xcbiBcXG5AQCAtMjA5Nyw2ICsyMTA1LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcXHUwMDI2ZG1hX2NvbmYtXFx1MDAzZXR4X3F1ZXVlW3F1ZXVlXTtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHQvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xcbitcXHRpZiAoIXR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWEpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdHR4X3EtXFx1MDAzZXhza19mcmFtZXNfZG9uZSA9IDA7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NvbmYtXFx1MDAzZWRtYV90eF9zaXplOyBpKyspXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjEyLjczODY1MTgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDk5Njg5Njg2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZGVmZW5zaXZlIE5VTEwgY2hlY2tzIGluIGJ1ZmZlciBkZWFsbG9jYXRpb24gcm91dGluZXMgaW4gdGhlIFNUTU1BQyAoU3lub3BzeXMgRGVzaWduV2FyZSAvIFNUTWljcm9lbGVjdHJvbmljcykgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU29DIG9yIFBDSSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGMwYWNhMTEzZGQ4ODFkNDM2ODkyY2M1MzBhMWNkZTM5YThhMjcxM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDA0OjM3OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGYyZmM4OTE3NjY1NGUuLjcxYzZhOTQxZmI5MWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMTcyOCw3ICsxNzI4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdFx0IERNQV9UT19ERVZJQ0UpO1xuIFx0fVxuIFxuLVx0aWYgKHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbitcdGlmICh0eF9xLVx1MDAzZXhkcGYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbiBcdCAgICAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxuIFx0ICAgICB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh0eF9xLVx1MDAzZXhkcGZbaV0pO1xuQEAgLTE3MzgsNyArMTczOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWClcbiBcdFx0dHhfcS1cdTAwM2V4c2tfZnJhbWVzX2RvbmUrKztcbiBcbi1cdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSBcdTAwMjZcdTAwMjZcbitcdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZiBcdTAwMjZcdTAwMjYgdHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0gXHUwMDI2XHUwMDI2XG4gXHQgICAgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1NLQikge1xuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueSh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSk7XG4gXHRcdHR4X3EtXHUwMDNldHhfc2tidWZmW2ldID0gTlVMTDtcbkBAIC0xNzYxLDYgKzE3NjEsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbitcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuK1x0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKVxuIFx0XHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XG4gfVxuQEAgLTE4MDIsNiArMTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbitcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuK1x0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKSB7XG4gXHRcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcdTAwMjZyeF9xLVx1MDAzZWJ1Zl9wb29sW2ldO1xuIFxuQEAgLTIwOTcsNiArMjEwNSwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSA9IFx1MDAyNmRtYV9jb25mLVx1MDAzZXR4X3F1ZXVlW3F1ZXVlXTtcbiBcdGludCBpO1xuIFxuK1x0LyogdHhfc2tidWZmX2RtYSBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbitcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKVxuK1x0XHRyZXR1cm47XG4rXG4gXHR0eF9xLVx1MDAzZXhza19mcmFtZXNfZG9uZSA9IDA7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZTsgaSsrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6MTIuNzM4NjUyODVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzcxODYzMDU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBEaXZpbmcgaW50byB0aGUgYHN0bW1hY2AgRHJpdmVyKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3Mgd2l0aCB0aGlzIHBhdGNoLiBJdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgdGhlIGBzdG1tYWNgIEV0aGVybmV0IGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IGBzdG1tYWNgIGFjdHVhbGx5ICppcyouIElzIHRoaXMgc29tZXRoaW5nIHByaW1hcmlseSBmb3IgcGh5c2ljYWwgaGFyZHdhcmUsIGEgc3BlY2lmaWMgcGxhdGZvcm0ncyBOSUMsIG9yIGlzIGl0IGEgUENJIGRyaXZlcj8gT3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgaGFzIHNvbWUgcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzP1xuXG5CZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBmaWd1cmUgb3V0IHRoZSAqY29udGV4dCogb2YgYHN0bW1hY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0J3MgdXNlZCDigJMgd2hhdCBvdGhlciBkcml2ZXJzIGRlcGVuZCBvbiBpdCwgb3IgaG93IGl0IGdldHMgaW5zdGFudGlhdGVkLiBBbmQgY3JpdGljYWxseSwgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYW55IHJlbGV2YW5jZSB0byBteSB2aXJ0dWFsaXplZCB3b3JsZC4gSXMgdGhlcmUgYW55IGNoYW5jZSB0aGlzIHBhdGNoIGhhcyBpbXBsaWNhdGlvbnMgZm9yIFFFTVUsIEdDRSwgb3Igb3RoZXIgZW11bGF0ZWQgZW52aXJvbm1lbnRzP1xuXG5MZXQgbWUgdXNlIHRoZSBgZ3JlcHBlcmAgdG9vbCB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCBsZWFybiBtb3JlIGFib3V0IHRoaXMgZHJpdmVyIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgbGluZS1ieS1saW5lIGluc3BlY3Rpb24gb2YgdGhlIGFjdHVhbCBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4NywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjQwLjQ1NzI4NTIwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTIzOTMwNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDX0VUSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTktXFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDIwOmVuZGlmICMgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfU1RNTUFDX0VUSCkgKz0gc3RtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0zLXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjQwLjcwOTY4NDY2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1Njc1MTgwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgc3RtbWFjYCB0aGluZyBpcyBzb21ldGhpbmcgdGhhdCBRRU1VIGNhbiBldmVuIHRvdWNoLCBvciBpZiBpdCdzIHRpZWQgdG8gdmVyeSBzcGVjaWZpYyBoYXJkd2FyZS4gSXMgaXQgRGVzaWduV2FyZT8gSXMgaXQgYW4gZW1iZWRkZWQgU29DIE1BQyBmcm9tIFNUTWljcm9lbGVjdHJvbmljcyAoU1RNTUFDKT8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuXG5cbkkgbmVlZCB0byBxdWlja2x5IGZpZ3VyZSBvdXQgaWYgc3RtbWFjIGlzIHNvbWV0aGluZyB0aGF0IGlzIGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBJcyBzdG1tYWMgYSB0eXBpY2FsLCB2ZW5kb3ItbmV1dHJhbCBpbnRlcmZhY2UsIG9yIGlzIGl0IGEgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgUUVNVSB3b3VsZG4ndCBlbXVsYXRlIHdlbGw/XG5cbkhhbmcgb24sIGJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIGxldCBtZSByZXJlYWQgdGhvc2UgcHJvbXB0IHJ1bGVzIGNhcmVmdWxseS4gUmlnaHQsIHNvIEkgbmVlZCB0byBmaWx0ZXIgb3V0IGEgYnVuY2ggb2Ygc2NlbmFyaW9zIHdoZXJlIHRoZSBmdXp6aW5nIGVmZm9ydCB3b3VsZCBiZSBhIHdhc3RlIG9mIHRpbWUuIE5vIGRvY3VtZW50YXRpb24gY2hhbmdlcywgY29zbWV0aWMgc3R1ZmYsIHVucmVhY2hhYmxlIGNvZGUsIHZlbmRvci1zcGVjaWZpYyBzdHVmZiwgb3IgY2xlYW51cCBmdW5jdGlvbnMuIEdvdCBpdC5cblxuTm93LCAqZG9lcyogc3RhbmRhcmQgUUVNVSAoeDg2XzY0IG9yIGFybTY0LCB3aGljaCBpcyB3aGF0IEknbSB1c3VhbGx5IGRlYWxpbmcgd2l0aCkgYWN0dWFsbHkgZW11bGF0ZSBgc3RtbWFjYCwgYGR3bWFjYCwgb3IgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGhhcmR3YXJlPyBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGFjY2Vzc2libGUgYW5kIGVtdWxhdGVkIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuXG5cbkxldCBtZSB0cnkgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcmR3YXJlIHBsYXRmb3JtcyBzdG1tYWMgaXMgY29tbW9ubHkgdXNlZCBvbi4gSSdsbCBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgdG8gZmlndXJlIG91dCB3aGljaCBwbGF0Zm9ybXMgaXQgaXMgZGVzaWduZWQgZm9yLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6NDYuMjc3MjA0ODY4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBEV01BQ19HRU5FUklDXFxuICA1MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XFxuICA1NzpcXHRcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4gIDU4OlxcdFxcdCAgZGF0YSBmb3Igc2V0dXAuXFxuICA1OTpcXHRcXG4gIDYwOlxcdGNvbmZpZyBEV01BQ19BTkFSSU9OXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZWZhdWx0IEFSQ1xcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgRFdNQUNfRUlDNzcwMFxcbiAgNzA6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXFxuICA3NDpcXHRcXHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcXG4gIDc1OlxcdFxcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXFxuICA3NjpcXHRcXHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgRFdNQUNfSU5HRU5JQ1xcbiAgNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZ2VuaWMgTUFDIHN1cHBvcnRcXFwiXFxuICA4MDpcXHRcXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcbiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozNzo0Ni4yNzcyOTU2MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzY5NTMyOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2NvbmZpZyBEZWVwIERpdmUgaW4gc3RtbWFjIC0gT25nb2luZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBmb2N1c2luZyBvbiBzdG1tYWMgYW5kLCBhcyBJIGRpZyBkZWVwZXIsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBteSBpbnZlc3RpZ2F0aW9uIGlzIHRvIG1ldGljdWxvdXNseSByZXZpZXcgdGhlIHJlc3Qgb2YgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IGNvdWxkIGltcGFjdCB0aGUgYnJvYWRlciBzeXN0ZW0uIEknbSBsb29raW5nIGJleW9uZCB0aGUgaW1tZWRpYXRlIGFyZWEgSSB3YXMgaW5pdGlhbGx5IGZvY3VzZWQgb24uIFRoaXMgaXMgYWJvdXQgZW5zdXJpbmcgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIGFuZCBpZGVudGlmeWluZyBhbnkgaGlkZGVuIGVkZ2UgY2FzZXMuIFRoaXMgZGV0YWlsZWQgcGFzcyBpcyBjcnVjaWFsIGZvciBhIHJvYnVzdCBhbmQgbWFpbnRhaW5hYmxlIGRyaXZlci4gSXQgbWlnaHQgdW5jb3ZlciBhIGNyaXRpY2FsLCB5ZXQgb2JzY3VyZSwgYnVpbGQgY29uZmlndXJhdGlvbi4gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGRpdmUgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM3OjU1LjY0NjgzMDgyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDQyMDpcXHRlbmRpZiAjIFNUTU1BQ19FVEhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzc6NTUuNjQ2OTI3OTgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk0MTQ5MzgzOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBMaW5lIG9mIFJlYXNvbmluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgc3RtbWFjYCwgdGhlIEV0aGVybmV0IE1BQyBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgSVBzLiBBIGxvdCBvZiBTb0NzIHVzZSBpdCwgcmlnaHQ/IFNULCBBbGx3aW5uZXIsIEFtbG9naWMsIEFsdGVyYSwgSW50ZWwgUXVhcmssIGFuZCBvbiBhbmQgb24uIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMsIGRvZXMgUUVNVSwgdGhlIGVtdWxhdG9yLCBhY3R1YWxseSAqZW11bGF0ZSogYW55IG9mIHRob3NlIHN0bW1hYyBvciBkd21hYyBkZXZpY2VzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBtYWNoaW5lIG1vZGVscyBpbiBRRU1VIG1pZ2h0IGJlIHJlbGV2YW50LiBTcGVjaWZpY2FsbHksIEknbSB0cnlpbmcgdG8gcmVtZW1iZXIgaWYgUUVNVSBvZmZlcnMgYW55dGhpbmcgbGlrZSBgZHdtYWNgLCBvciBzcGVjaWZpY2FsbHkgYGFsbHdpbm5lcmAgb3IgYSByZWxhdGVkIGBzdG1tYWNgIGltcGxlbWVudGF0aW9uLlxuXG5JIGtub3cgUUVNVSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBgYWxsd2lubmVyLWExMGAgb3IgYGFsbHdpbm5lci1oM2AuIEl0IGV2ZW4gaGFzIGBhbGx3aW5uZXItZW1hY2AgYW5kIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgZm9yIEFSTSBib2FyZHMgbGlrZSB0aGUgT3JhbmdlcGkgb3IgQ3ViaWVib2FyZCwgYnV0IGFyZSB0aG9zZSAqYWN0dWFsbHkqIHVzaW5nIGBzdG1tYWNgIHVuZGVyIHRoZSBob29kPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBBaCwgd2FpdCwgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBzZWVtcyB0byB1c2UgYGFsbHdpbm5lci1zdW40aS1lbWFjYCBvciBgc3VuOGktZW1hY2AsIHdoaWNoIHVzZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmNgIG9yIHBvdGVudGlhbGx5IGBkd21hYy1zdW44aS5jYC4gU28gaXMgdGhhdCBldmVuIHVzaW5nIHN0bW1hYz9cblxuT2theSwgc28gYW0gSSBldmVuIGFza2luZyB0aGUgcmlnaHQgcXVlc3Rpb25zPyBEb2VzIFFFTVUgZXZlbiBoYXZlIGRpcmVjdCBlbXVsYXRpb24gb2YgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBhcyBhIGBkd21hY2A/IE9yIG1heWJlIGl0J3MgdXNpbmcgc29tZXRoaW5nIGVsc2UgbGlrZSBgaW14YCAoZmVjKSBvciBgY2FkZW5jZV9nZW1gPyBJIG5lZWQgdG8gYnJvYWRlbiBteSBzY29wZS5cblxuRXZlbiBpZiB0aGVyZSBpcyBhIE1BQyBlbXVsYXRlZCwgSSBuZWVkIHRvIGNoZWNrOiBjYW4gSSBldmVuIHJlYWNoIGBzdG1tYWNgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciwgbW9yZSBpbXBvcnRhbnRseSwgUUVNVT8gU3l6a2FsbGVyJ3MgY292ZXJhZ2UgaXMgcmVsZXZhbnQgaGVyZS4gSSByZW1lbWJlciBTeXprYWxsZXIgdGVzdHMgeDg2XzY0IGFuZCBhcm02NCBRRU1VIGFuZCBHQ0UgaW5zdGFuY2VzLiBTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGFuZCBwcm9iZSBgc3RtbWFjYCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlIGF0IGFsbD9cblxuTGV0IG1lIGp1c3QgcGF1c2UsIGFuZCByZWZvY3VzLiBEb2VzIGBzdG1tYWNgICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgY2FuIEkgZ2V0IGF3YXkgd2l0aCBwcm9iaW5nIGl0IHRocm91Z2ggdGhlIHBsYXRmb3JtIG9yIFBDSSwgb3IgZG8gSSBuZWVkIGFjdHVhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIG5haWwgZG93biB0aG9zZSBwcmVyZXF1aXNpdGVzLlxuXG5Pa2F5LCBsZXQgbWUgYmFjayB1cCBhIHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyAqc3BlY2lmaWMqIHBhdGNoIGlzIHRyeWluZyB0byBkbywgYW5kICp3aHkqLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBwYXRjaCBjb21taXQgZGV0YWlscyBhbmQgc2VlIHdoYXQgZnVuY3Rpb25zIGFyZSBiZWluZyBtb2RpZmllZCwgYW5kIHdoYXQgdGhhdCB0ZWxscyBtZSBhYm91dCB0aGUgcHJvYmxlbSBpdCdzIHNvbHZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjQsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODoyNS4wNjE4NjkwODdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcyNSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTcyNTpcXHRcXHRcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKHByaXYtXFx1MDAzZWRldmljZSxcXG4xNzI2OlxcdFxcdFxcdFxcdFxcdFxcdCB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1ZixcXG4xNzI3OlxcdFxcdFxcdFxcdFxcdFxcdCB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmxlbixcXG4xNzI4OlxcdFxcdFxcdFxcdFxcdFxcdCBETUFfVE9fREVWSUNFKTtcXG4xNzI5OlxcdFxcdH1cXG4xNzMwOlxcdFxcbjE3MzE6XFx0XFx0aWYgKHR4X3EtXFx1MDAzZXhkcGYgXFx1MDAyNlxcdTAwMjYgdHhfcS1cXHUwMDNleGRwZltpXSBcXHUwMDI2XFx1MDAyNlxcbjE3MzI6XFx0XFx0ICAgICh0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxcbjE3MzM6XFx0XFx0ICAgICB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XFxuMTczNDpcXHRcXHRcXHR4ZHBfcmV0dXJuX2ZyYW1lKHR4X3EtXFx1MDAzZXhkcGZbaV0pO1xcbjE3MzU6XFx0XFx0XFx0dHhfcS1cXHUwMDNleGRwZltpXSA9IE5VTEw7XFxuMTczNjpcXHRcXHR9XFxuMTczNzpcXHRcXG4xNzM4OlxcdFxcdGlmICh0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWClcXG4xNzM5OlxcdFxcdFxcdHR4X3EtXFx1MDAzZXhza19mcmFtZXNfZG9uZSsrO1xcbjE3NDA6XFx0XFxuMTc0MTpcXHRcXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmIFxcdTAwMjZcXHUwMDI2IHR4X3EtXFx1MDAzZXR4X3NrYnVmZltpXSBcXHUwMDI2XFx1MDAyNlxcbjE3NDI6XFx0XFx0ICAgIHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfU0tCKSB7XFxuMTc0MzpcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueSh0eF9xLVxcdTAwM2V0eF9za2J1ZmZbaV0pO1xcbjE3NDQ6XFx0XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmW2ldID0gTlVMTDtcXG4xNzQ1OlxcdFxcdH1cXG4xNzQ2OlxcdFxcbjE3NDc6XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWYgPSAwO1xcbjE3NDg6XFx0XFx0dHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5tYXBfYXNfcGFnZSA9IGZhbHNlO1xcbjE3NDk6XFx0fVxcbjE3NTA6XFx0XFxuMTc1MTpcXHQvKipcXG4xNzUyOlxcdCAqIGRtYV9mcmVlX3J4X3NrYnVmcyAtIGZyZWUgUlggZG1hIGJ1ZmZlcnNcXG4xNzUzOlxcdCAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxcbjE3NTQ6XFx0ICogQGRtYV9jb25mOiBzdHJ1Y3R1cmUgdG8gdGFrZSB0aGUgZG1hIGRhdGFcXG4xNzU1OlxcdCAqIEBxdWV1ZTogUlggcXVldWUgaW5kZXhcXG4xNzU2OlxcdCAqL1xcbjE3NTc6XFx0c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4xNzU4OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4xNzU5OlxcdFxcdFxcdFxcdCAgICAgICB1MzIgcXVldWUpXFxuMTc2MDpcXHR7XFxuMTc2MTpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXFx1MDAyNmRtYV9jb25mLVxcdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XFxuMTc2MjpcXHRcXHRpbnQgaTtcXG4xNzYzOlxcdFxcbjE3NjQ6XFx0XFx0LyogYnVmX3Bvb2wgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXFxuMTc2NTpcXHRcXHRpZiAoIXJ4X3EtXFx1MDAzZWJ1Zl9wb29sKVxcbjE3NjY6XFx0XFx0XFx0cmV0dXJuO1xcbjE3Njc6XFx0XFxuMTc2ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NvbmYtXFx1MDAzZWRtYV9yeF9zaXplOyBpKyspXFxuMTc2OTpcXHRcXHRcXHRzdG1tYWNfZnJlZV9yeF9idWZmZXIocHJpdiwgcnhfcSwgaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM4OjI1LjA2MjE0MTA2N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc2Nzg5NTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgRGVhbGxvY2F0aW9uIGluIHRoZSBTVE1NQUMgRHJpdmVyKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFNUTU1BQyBjb2RlLiBJJ20gemVyb2luZyBpbiBvbiB0aGUgbWVtb3J5IGRlYWxsb2NhdGlvbiByb3V0aW5lcywgc3BlY2lmaWNhbGx5IGBkbWFfZnJlZV9yeF9za2J1ZnNgLCBgZG1hX2ZyZWVfdHhfc2tidWZzYCwgYW5kIGBzdG1tYWNfZnJlZV90eF9idWZmZXJgLiBJIG5lZWQgYSBxdWljayBvdmVydmlldyBvZiB0aGUgY2FsbCBncmFwaCBmb3IgdGhlc2UgZnVuY3Rpb25zLiBLbm93aW5nICp3aGVyZSogdGhlc2UgYXJlIGNhbGxlZCBmcm9tIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBpZGVudGlmeWluZyBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgZG91YmxlIGZyZWVzLCBtZW1vcnkgbGVha3MsIG9yIGltcHJvcGVyIHJlc291cmNlIGNsZWFudXAgaW4gdGhlIGRyaXZlci5cblxuR3JlcHBpbmcgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGxpc3Qgb2YgY2FsbGVycyBmb3IgZWFjaCBvZiB0aG9zZS4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIHNlYXJjaCBwYXR0ZXJuIGFuZCB0aGVuIHJlZmluZSBpdCBpZiB0aGUgaW5pdGlhbCByZXN1bHRzIGFyZSB0b28gYnJvYWQuIERlcGVuZGluZyBvbiB0aGUgc2VhcmNoIHRvb2wgYW5kIHRoZSBzaXplIG9mIHRoZSBjb2RlYmFzZSwgSSBtaWdodCBsb29rIGF0IGluY2x1ZGluZyBhIHNpbXBsZSByZWdleCBvciB0d28gdG8gbmFycm93IGl0IGRvd24gYSBiaXQsIG1heWJlIGZvY3VzaW5nIHRoZSBzZWFyY2ggaW4gYSBmZXcgc2VsZWN0IGZpbGVzLCBvciBleGNsdWRpbmcgc29tZS4gVGhlIGdyZXBwZXIgc2hvdWxkIHRlbGwgbWUgd2hvJ3MgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlc2UgYnVmZmVycywgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gRnJvbSB0aGVyZSwgSSBjYW4gYnVpbGQgYW4gYWNjdXJhdGUgbWVudGFsIG1vZGVsIG9mIHdoYXQncyBnb2luZyBvbiwgYW5kIGlkZW50aWZ5IGxpa2VseSBzb3VyY2VzIG9mIHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTcyLCJPdXRwdXRUb2tlbnMiOjYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODo0Ni44MzAwMzk1MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MTI0NDQxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkbWFfZnJlZV9yeF9za2J1ZnN8ZG1hX2ZyZWVfdHhfc2tidWZzfHN0bW1hY19mcmVlX3R4X2J1ZmZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTE2ODk9c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfcnhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcwNC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3MDU6ICogc3RtbWFjX2ZyZWVfdHhfYnVmZmVyIC0gZnJlZSBSWCBkbWEgYnVmZmVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcwNi0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTcxMC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3MTE6c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3MTItXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3NTI6ICogZG1hX2ZyZWVfcnhfc2tidWZzIC0gZnJlZSBSWCBkbWEgYnVmZmVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1My0gKiBAcHJpdjogcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTc1Ni0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE3NTc6c3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE3NTgtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xOTM2PXN0YXRpYyBpbnQgaW5pdF9kbWFfcnhfZGVzY19yaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xOTYzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE5NjQ6XFx0XFx0XFx0ZG1hX2ZyZWVfcnhfc2tidWZzKHByaXYsIGRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xOTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMDc0PXN0YXRpYyBpbnQgaW5pdF9kbWFfZGVzY19yaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMDk1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjA5NjogKiBkbWFfZnJlZV90eF9za2J1ZnMgLSBmcmVlIFRYIGRtYSBidWZmZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMDk3LSAqIEBwcml2OiBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTAwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEwMTpzdGF0aWMgdm9pZCBkbWFfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEwMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMTQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRtYV9jb25mLVxcdTAwM2VkbWFfdHhfc2l6ZTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjExNTpcXHRcXHRzdG1tYWNfZnJlZV90eF9idWZmZXIocHJpdiwgZG1hX2NvbmYsIHF1ZXVlLCBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTIxMjg9c3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjEzMy1cXHRmb3IgKHF1ZXVlID0gMDsgcXVldWUgXFx1MDAzYyB0eF9xdWV1ZV9jbnQ7IHF1ZXVlKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTM0OlxcdFxcdGRtYV9mcmVlX3R4X3NrYnVmcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTQzPXN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTU0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxNTU6XFx0XFx0ZG1hX2ZyZWVfcnhfc2tidWZzKHByaXYsIGRtYV9jb25mLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTk1PXN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjAzLVxcdC8qIFJlbGVhc2UgdGhlIERNQSBUWCBzb2NrZXQgYnVmZmVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIwNDpcXHRkbWFfZnJlZV90eF9za2J1ZnMocHJpdiwgZG1hX2NvbmYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTMwMTk9c3RhdGljIHZvaWQgc3RtbWFjX3R4X2VycihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI1LVxcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjMwMjY6XFx0ZG1hX2ZyZWVfdHhfc2tidWZzKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfY29uZiwgY2hhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDI3LVxcdHN0bW1hY19jbGVhcl90eF9kZXNjcmlwdG9ycyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIGNoYW4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODo0Ny4xOTEyOTE5NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTExMzc3NTc5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IHN0bW1hYyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBhZmZlY3RpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciB3YXJyYW50cyBmdXJ0aGVyIGZ1enppbmcuICBGaXJzdCB0aGluZ3MgZmlyc3Q6IGBzdG1tYWNgIGlzIGEgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyBFdGhlcm5ldCBjb250cm9sbGVycywgb2Z0ZW4gZm91bmQgaW4gZW1iZWRkZWQgc3lzdGVtcyBmcm9tIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgb3RoZXJzLiAgVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHJlYWNoIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoaXM6IHRoZSBydWxlcyBzcGVjaWZpY2FsbHkgc3RhdGUgdG8gc2tpcCBwYXRjaGVzIGlmIHRoZSBhZmZlY3RlZCBjb2RlIHBhdGggaXMgXCJpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuICBTbywgaXMgYHN0bW1hY2AgZW11bGF0ZWQ/XG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgUUVNVSBtb2RlbHMgdGhlIFN5bm9wc3lzIERXTUFDIHVzZWQgYnkgYHN0bW1hY2Agb3Igbm90LiBMZXQgbWUgcmVjYWxsIHRoZSB0eXBpY2FsIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyBpbiBRRU1VOiBlMTAwMCwgaWdiLCB2aXJ0aW8tbmV0LCBldGMuICBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBEV01BQyBtb2RlbC4gSW4gZmFjdCwgUUVNVSBoYXMgc3BlY2lmaWMgbW9kZWxzIGZvciBhbGx3aW5uZXIgU29DcyBsaWtlIGBhbGx3aW5uZXJfZW1hY2AgZm9yIHN1bjRpLiBBbmQgd2hpbGUgdGhlcmUncyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGFzIHdlbGwsIGJ1dCBkb2VzIHRoYXQgdXNlIGBkd21hYy1zdW44aS5jYD8gIFRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcsIGJ1dCBldmVuIGlmIHRoZSBhbGx3aW5uZXIgbW9kZWxzIGFyZSBhdmFpbGFibGUsIHN5emthbGxlciBwcmltYXJpbHkgdXNlcyBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBmb3IgeDg2XzY0IGFuZCBhYXJjaDY0IHZpcnQgbWFjaGluZXMuIEl0IGRvZXNuJ3QgdXNlIHRoZXNlIEFsbHdpbm5lciBvciBvdGhlciBub24tc3RhbmRhcmQgUUVNVSBtb2RlbHMuXG5cbk5leHQsIEkgdGhpbmsgYWJvdXQgcG9zc2libGUgd2F5cyB0byBpbnN0YW50aWF0ZSBgc3RtbWFjYCBvdXRzaWRlIG9mIHN0YW5kYXJkIGVtdWxhdGlvbi4gQ291bGQgaXQgYmUgYSBwbGF0Zm9ybSBkZXZpY2UsIGEgZHVtbXkgZGV2aWNlLCBvciBtYXliZSBzb21ldGhpbmcgZXhwb3NlZCB2aWEgbmV0bGluaz8gSSBrbm93IHBsYXRmb3JtIGRldmljZXMgYXJlIGluc3RhbnRpYXRlZCB2aWEgZGV2aWNlIHRyZWUgKE9GKSwgQUNQSSBvciBQQ0kuIENhbiB1c2VyIHNwYWNlIGNyZWF0ZSB0aGVzZSB3aXRob3V0IHVuZGVybHlpbmcgaGFyZHdhcmU/IE5vdCByZWFsbHksIHVubGVzcyB3ZSB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdmlhIGNvbmZpZ2ZzLCB3aGljaCBpc24ndCBzdGFuZGFyZCBzeXprYWxsZXIgcHJhY3RpY2UuXG5cbldoYXQgYWJvdXQgUENJPyBJIHNlZSBgc3RtbWFjYCBoYXMgUENJIElEcywgYXMgdXNlZCBieSBgZHdtYWMtaW50ZWwuY2AsIGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtbG9vbmdzb24uY2AsIGV0Yy4gQnV0IEknbSBwcmV0dHkgc3VyZSBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgc3BlY2lmaWMgSW50ZWwsIExvb25nc29uLCBvciBTeW5vcHN5cyBQQ0kgcHJvdG90eXBpbmcga2l0IHRoYXQgd291bGQgdXRpbGl6ZSBgc3RtbWFjYC5cblxuQW5kIGl0J3MgZGVmaW5pdGVseSBub3QgVVNCLCBzbyB0aGF0J3Mgb2ZmIHRoZSB0YWJsZS5cblxuTm93LCBsZXQgbWUgZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgcnVsZXMsIG1ha2luZyBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGRyaXZlciBpc24ndCB1c2VkIGluIHNvbWUgY29yZSBuZXR3b3JraW5nIGNvbnRleHQuIFRoZSBydWxlIHNwZWNpZmljYWxseSBtZW50aW9ucyBhdm9pZGluZyBkcml2ZXJzIGZvciBcInBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi5cblxuQ29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIGNhbiBgc3RtbWFjYCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZz8gTm8sIGl0J3MgYSBkcml2ZXIgZm9yIGVtYmVkZGVkIFNvQ3MgKEFsbHdpbm5lciwgU1RpLCBBbWxvZ2ljLCBSb2NrY2hpcCwgTlhQLCBldGMuKSBhbmQgY2VydGFpbiBJbnRlbC9Mb29uZ3NvbiBQQ0kgY29udHJvbGxlcnMgYW5kIG5vbmUgb2YgdGhlc2UgYXJlIHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbCBtYWNoaW5lcyBvciBRRU1VIGluc3RhbmNlcyB1c2VkIGZvciBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgaXQncyBub3QgYSBzb2Z0d2FyZS1vbmx5IG5ldHdvcmsgZHJpdmVyIChsaWtlIHR1biwgdGFwLCBvciBkdW1teSkgb3IgYSB2aXJ0dWFsIGRldmljZSBidXMgKGxpa2UgdmlydGlvKSBvciBzb2Z0d2FyZSBlbXVsYXRlZCBkZXZpY2UgKHVzYiBvciBtYWM4MDIxMV9od3NpbSkuIEFuZCBJIG5lZWQgdG8gdmVyaWZ5IGJ5IHNlYXJjaGluZyBmb3IgcmVmZXJlbmNlcyB0byBgc3RtbWFjYCBvdXRzaWRlIG9mIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9gIGRpcmVjdG9yeS4gR2l2ZW4gYWxsIHRoaXMsIGl0IGRvZXMgbm90IHNlZW0gd29ydGggZnV6emluZyBhdCB0aGlzIHN0YWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc3NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzg6NTguMzI5MDUyODUyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTc5NDg0NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwNDozODo1OC4zOTg4NjQ2MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDMwODcyODIwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIGRpZmYuIEl0J3MgY29uZmluZWQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaGF0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIHRoZXkncmUgYWxsIG51bGwgY2hlY2tzIGluIHRoZSBidWZmZXIgbWFuYWdlbWVudCByb3V0aW5lczogYHN0bW1hY19mcmVlX3R4X2J1ZmZlcmAsIGBkbWFfZnJlZV9yeF9za2J1ZnNgLCBgZG1hX2ZyZWVfcnhfeHNrYnVmc2AsIGFuZCBgZG1hX2ZyZWVfdHhfc2tidWZzYC4gVGhlc2UgYXJlIGRlZmVuc2l2ZSBtZWFzdXJlcywgbGlrZWx5IHRvIHByZXZlbnQgY3Jhc2hlcyBkdXJpbmcgZXJyb3IgaGFuZGxpbmcgb3IgY2xlYW51cC5cblxuTm93LCB0aGUgY3JpdGljYWwgcG9pbnQuIFRoZSBTVE1NQUMgZHJpdmVyICpyZXF1aXJlcyogc3BlY2lmaWMgaGFyZHdhcmUg4oCTIGEgcGh5c2ljYWwgU29DIG9yIFBDSSBkZXZpY2UuIFRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGVtdWxhdGVkIHJlbGlhYmx5IGluIHR5cGljYWwgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIGlzIHdoZXJlIGZ1enppbmcgdXN1YWxseSBoYXBwZW5zLiBCZWNhdXNlIG9mIHRoYXQgZGVwZW5kZW5jeSBvbiBzcGVjaWZpYyBoYXJkd2FyZSwgdGhpcyBjb2RlIGlzbid0IHJlYWNoYWJsZSBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gTm8gbWF0dGVyIGhvdyBjbGV2ZXIgdGhlIGZ1enplciBpcywgaXQgd29uJ3QgdHJpZ2dlciB0aGVzZSBwYXRocy4gVGhlcmVmb3JlLCB0aGUgbGlrZWxpaG9vZCBvZiBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGlzIGVzc2VudGlhbGx5IHplcm8uXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGZhbHNlLiBObyBuZWVkIHRvIHdhc3RlIHJlc291cmNlcyBvbiB0aGlzLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0LiBUaGUgZm9jdXMgc3ltYm9scyBsaXN0IGlzIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUgYmVjYXVzZSB0aGUgaXNzdWUgaXNuJ3Qgd2hldGhlciBvciBub3QgYSBzZXR0aW5nIGlzIGVuYWJsZWQsIGJ1dCB0aGUgZmFjdCB0aGF0IHRoZSBTVE1NQUMgZHJpdmVyIHJlbGllcyBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUuIEkndmUgcmUtcmV2aWV3ZWQgdGhpcyBhbmQgdGhlIHJhdGlvbmFsZSBpcyBzb3VuZC5cblxuTGV0J3MgcHJvY2VlZCB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzAxMywiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDQ6Mzk6MDIuNzA3NTk2MDI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgaW4gYnVmZmVyIGRlYWxsb2NhdGlvbiByb3V0aW5lcyBpbiB0aGUgU1RNTUFDIChTeW5vcHN5cyBEZXNpZ25XYXJlIC8gU1RNaWNyb2VsZWN0cm9uaWNzKSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIHRoYXQgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBpbiBidWZmZXIgZGVhbGxvY2F0aW9uIHJvdXRpbmVzIGluIHRoZSBTVE1NQUMgKFN5bm9wc3lzIERlc2lnbldhcmUgLyBTVE1pY3JvZWxlY3Ryb25pY3MpIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFNvQyBvciBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA0OjM5OjAyLjcwNzYyMzExN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowgcgfr[1] Phase: Running StartedAt: 2026-08-30 04:39:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgcgfr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-30 04:39:13 +0000 UTC FinishedAt: 2026-08-30 04:39:17 +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,}