RnJpIEp1biAxMiAyMzoyOTo0NCAxOTk4ICBNYXJjZWwgQmF1ciAgPG1iYXVyQGcyNi5ldGh6LmNoPgogICAgICAgICogRml4ZWQgR2V0RGF0ZUZvcm1hdCgpLT5HZXRUaW1lRm9ybWF0KCkgZm9yIGxvY2FsZSB0aW1lLgoKTW9uIE1heSAyNSAxNDozMDowMCAxOTk4ICBIZW5yaWsgT2xzZW4gPGhlbnJpa0BpYWVzdGUuZGs+CiAgICAgICAgKiBbRGEucmNdCiAgICAgICAgQWRkZWQgRGFuaXNoIGxhbmd1YWdlIHN1cHBvcnQuCgpGcmkgTWF5IDE1IDIzOjU5OjIyIDE5OTggIE1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KICAgICAgICAqIERhdGUvVGltZSBub3cgdXNlcyBsb2NhbGUtc3BlY2lmaWMgZm9ybWF0cwogICAgICAgICogTGFuZ3VhZ2Utc3BlY2lmaWMgd2luZG93IGNhcHRpb24sIGRpc3BsYXlzIGZpbGUgYmVpbmcgZWRpdGVkLgogICAgICAgICogU3RhcnRlZCB3aXRoIHBhcnNpbmcgb2YgY29tbWFuZCBsaW5lIHNldHRpbmdzCiAgICAgICAgKiBTdGFydGVkIHdpdGggRG9PcGVuRmlsZSwgRG9DbG9zZUZpbGUsIERvU2F2ZUZpbGUgbG9naWNzCiAgICAgICAgKiBQcm9tcHQgdXNlciB0byBzYXZlIHNldHRpbmdzIHdoZW4gY2xvc2luZyBhIGZpbGUKICAgICAgICAgIC0+IEludHJvZHVjZWQgYSBuZXcgbWVzc2FnZSBib3ggKG5vdCB5ZXQgZmluaXNoZWQpCiAgICAgICAgKiBGaXhlZCBtaW5vciBmZWF0dXJlcyAobWlzc2luZyBJRFMgaW4gbWFpbi5oLCAuLi4pCgpTdW4gTWFyIDI5IDIwOjI5OjQxIDE5OTggIExhdXJlbnQgQnVmZmxlciA8bGF1cmVudEBibHVld2luLmNoPgogICAgICAgICogW0ZyLnJjXQogICAgICAgIEFkZGVkIEZyZW5jaCBsYW5ndWFnZSBzdXBwb3J0LgoKRnJpIEZlYiAyNyAyMTowMzozNyAxOTk4ICBLYXJsIEJhY2tzdHL2bSA8a2FybF9iQGdlb2NpdGllcy5jb20+CiAgICAgICAgKiBGaXhlZCBzb21lIG1pbm9yIGZlYXR1cmVzLgoKU2F0IEZlYiAxNCAxNzo0MjoyOSAxOTk4ICBLYXJsIEJhY2tzdHL2bSA8a2FybF9iQGdlb2NpdGllcy5jb20+CiAgICAgICAgKiBORVcgW2xhbmd1YWdlLmNdIFtsYW5ndWFnZS5oXQogICAgICAgIFRha2VzIGNhcmUgb2YgYWxsIGxhbmd1YWdlIHJlbGF0ZWQgc3R1ZmYuCiAgICAgICAgQSBuZXcgW3Byb2dyYW1zXSBpbiAud2luZXJjIGlzIGluIHVzZS4KClR1ZSBGZWIgMTAgMjM6MzQ6MDggMTk5OCAgTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogICAgICAgICogRml4ZWQgYnJva2VuIGxhbmd1YWdlIG1lbnVzCgpGcmkgRmViIDA2IDIzLjU0LjM1IDE5OTggIEthcmwgQmFja3N0cvZtIDxrYXJsX2JAZ2VvY2l0aWVzLmNvbT4KICAgICAgICAqIFttYWluLmNdIFttYWluLmhdIFtub3RlcGFkLnJjXQogICAgICAgIEZpeGVkIGxhbmd1YWdlIHN1cHBvcnQgZm9yIG1lbnVzLiAgICAgCiAgICAgICAgKiBORVcgW2RpYWxvZy5jXSBbZGlhbG9nLmhdCiAgICAgICAgTW92ZWQgYWxsIG1lbnUgYW5kIGRpYWxvZyByZWxhdGVkIHN0dWZmIGhlcmUuCgpTdW4gSmFuIDE4IDIzOjA1OjA0IDE5OTggIEthcmwgQmFja3N0cvZtIDxrYXJsX2JAZ2VvY2l0aWVzLmNvbT4KICAgICAgICAqIFtTdy5yY10KICAgICAgICBBZGRlZC91cGRhdGVkIFN3ZWRpc2ggbGFuZ3VhZ2Ugc3VwcG9ydC4KClR1ZSBEZWMgMjMgMjM6MzU6MDQgMTk5NyAgTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogICAgICAgICogRml4ZWQgbG90cyBvZiBidWdzIHcvIHJlc291cmNlcyBpbiAqLnJjCiAgICAgICAgKiBtb3ZlZCBbbm90ZXBhZC5jXSBpbnRvIFttYWluLmNdCiAgICAgICAgKiBtb3ZlZCBbbm90ZXBhZC5oXSBpbnRvIFttYWluLmhdCiAgICAgICAKRnJpIERlYyAwNSAyMDo1MTo1NSAxOTk3ICBNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CiAgICAgICAgKiBbbm90ZXBhZC5jXSBbbm90ZXBhZC5oXSBbbm90ZXBhZC5yY10gW0VuLnJjXSBbRGUucmNdCiAgICAgICAgICBbbGljZW5zZS5jXSBbbGljZW5zZS5oXSBbTGljZW5zZV9Fbi5jXQogICAgICAgICAgW1JFQURNRV0gW1RPRE9dIFtDaGFuZ2VMb2ddCiAgICAgICAgICBPcmlnaW5hbHMgYnkgTWFyY2VsIEJhdXIK