U3VuIEp1bCAgNSAyMDoxMDo1MyAxOTk4ICBNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CiAgICAgICAqIE1vdmVkICJBbHdheXMgb24gdG9wIiBtZW51IGludG8gc3lzdGVtIG1lbnUgKGFzIGluIFdpbmRvd3MpCiAgICAgICAgIFRoaXMgcmVxdWlyZWQgbWlub3IgY2hhbmdlcyBpbiAKICAgICAgICAgW21haW4uaF0gW2Nsb2NrLnJjXSBbbGFuZ3VhZ2UuY10gWz8/LnJjXQoKRnJpIEp1biAxMiAyMjo0Nzo1NiAxOTk4ICBNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CiAgICAgICAqIEZpeGVkIHJlc291cmNlIGJ1ZyBpbiBVcGRhdGVXaW5kb3dDYXB0aW9uKCkgdGhhdCBjYXVzZWQgd3JvbmcgKG9sZCkKICAgICAgICAgbG9jYWxlIGZvciB0aGUgZGlzcGxheWVkIGRhdGUKICAgICAgICogVGhlIGRpZ2l0YWwgY2xvY2sgbm93IHNob3dzIHVwIChXSU5FLU5MUy1VTktOT1dOIG1lYW5zIHRoYXQgdGhlcmUKICAgICAgICAgaXMgbm8gbG9jYWxlIHJ1bGUgZm9yIHRpbWUgc3RyaW5nIGZvcm1hdCBpbiAvb2xlL29sZTJubHMuYykKClRodSBNYXkgMjggMjA6NDI6MTMgMTk5OCAgTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogICAgICAgKiBbbGFuZ3VhZ2UuY10KICAgICAgICAgVXBkYXRlV2luZG93Q2FwdGlvbigpLCBsb2NhbGUgYW5kIGRhdGUKICAgICAgICAgVXBkYXRlTWVudUNoZWNrbWFya3MoKQogICAgICAgICBHZW5lcmFsIGNvZGUgY2xlYW51cCAocmVtb3ZlZCBvYnNvbGV0ZSBwcmludGYncykKICAgICAgICAgClRodSBNYXkgMjggMjA6MTA6MzYgMTk5OCAgTWlrb2xhaiBaYWxld3NraSA8bWlrb2xhanpAaWRzLmVkdS5wbD4KICAgICAgICogW21haW4uY10gW3dpbmNsb2NrLmhdCiAgICAgICAgIEZpeGVkIGRlc3Ryb3llZCBiYWNrZ3JvdW5kCgpNb24gTWF5IDI1IDE0OjMwOjMyIDE5OTggIEhlbnJpayBPbHNlbiA8aGVucmlrQGlhZXN0ZS5kaz4KICAgICAgICogW0RhLnJjXQogICAgICAgICBBZGRlZCBEYW5pc2ggbGFuZ3VhZ2Ugc3VwcG9ydC4KCldlZCBNYXIgMTEgMjM6MTA6MzcgMTk5OCAgS2FybCBCYWNrc3Ry9m0gPGthcmxfYkBnZW9jaXRpZXMuY29tPgogICAgICAgKiBbbWFpbi5jXQogICAgICAgICBTdGFydGVkIHdpdGggdGhlIGRpZ2l0YWwgY2xvY2suCgpUdWUgRmViIDI0IDIzOjI2OjQwIDE5OTggIEthcmwgQmFja3N0cvZtIDxrYXJsX2JAZ2VvY2l0aWVzLmNvbT4KICAgICAgICogW2xhbmd1YWdlLmNdIFtsYW5ndWFnZS5oXSBORVcKICAgICAgICAgTW92ZWQgbGFuZ3VhZ2Ugc3R1ZmYgaGVyZS4KICAgICAgICogW21haW4uY10gW3dpbmNsb2NrLmNdIFtjbG9jay5yY10KICAgICAgICAgTWFkZSB0aGUgY2xvY2sgYXBwZWFyIGluIHRoZSBjZW50ZXIuCiAgICAgICAgIEZpeGVkIHByb2JsZW1zIHdpdGggbWVudWVzLgoKTW9uIEZlYiAyMyAxOTo1OToyNyAxOTk4ICBNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CiAgICAgICAqIFtDaGFuZ2VMb2ddIFtEZS5yY10gW0VuLnJjXSBbU3cucmNdIFtjbG9jay5yY10KICAgICAgICAgW2xpY2Vuc2UuY10gW2xpY2Vuc2UuaF0gW0xpY2Vuc2VfRW4uY10KICAgICAgICAgW1JFQURNRV0gW1RPRE9dCiAgICAgICAgIFttYWluLmNdIFttYWluLmhdIFt3aW5jbG9jay5jXSBbd2luY2xvY2suaF0KCiAgICAgICAgIE9yaWdpbmFscyBieSBNYXJjZWwgQmF1cgo=