dHJlZSA4ZjQ4OWRlMjAwMTk1ZTU4MmZjMjc5MWNlMzgyNzdlMmM0YTQ4ZmRmCnBhcmVudCBiZDM0ZDRmZjQxMTI5MDBhY2QzZGQ2MzMzNTJkYTQ4MmYwY2JhMzRjCmF1dGhvciBBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQHdpbmVocS5vcmc+IDgwNTA1MTEwNyArMDAwMApjb21taXR0ZXIgQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEB3aW5laHEub3JnPiA4MDUwNTExMDcgKzAwMDAKClJlbGVhc2UgOTUwNzA2CgpXZWQgSnVsICA1IDE5OjA2OjM1IDE5OTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHN1bnNpdGUudW5jLmVkdT4KCgkqIFtjb250cm9scy9zY3JvbGwuY10KCUZpeGVkIGRyYXdpbmcgYnVnIHRoYXQgY2F1c2VkIHBhcnQgb2YgYSBub24tY2xpZW50IHNjcm9sbCBiYXIKCXRvIGJlIHBhaW50ZWQgZXZlbiB3aGVuIHRoZSBzY3JvbGwtYmFyIHdhcyBoaWRkZW4uCgoJKiBbZGVidWdnZXIvYnJlYWsuY10gW2RlYnVnZ2VyL2RiZy55XQoJUmV3cm90ZSBicmVha3BvaW50IGhhbmRsaW5nIHRvIHdvcmsgaW4gMTYtYml0IG1vZGUuCglJbXBsZW1lbnRlZCBzaW5nbGUtc3RlcHBpbmcgKCdzdGVwJyBhbmQgJ25leHQnIGluc3RydWN0aW9ucykuCgoJKiBbZGVidWdnZXIvZGVidWcubF0KCUZvcm1hdCBzcGVjaWZpZXIgaXMgbm93IGEgc2VwYXJhdGUgdG9rZW4uCglFbnRlcmluZyBhbiBlbXB0eSBsaW5lIGF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQgY2F1c2VzIHRoZSBwcmV2aW91cwoJY29tbWFuZCB0byBiZSByZXBlYXRlZCwgbGlrZSB1bmRlciBnZGIuCgkKCSogW2RlYnVnZ2VyL2RlYnVnLmxdIFtkZWJ1Z2dlci9yZWdpc3RlcnMuY10KCURpZmZlcmVudGlhdGUgMTYtYml0IGFuZCAzMi1iaXQgcmVnaXN0ZXJzIHdpdGhvdXQgdGFraW5nIGN1cnJlbnQKCW1vZGUgaW50byBhY2NvdW50ICgkZWF4IGlzIGFsd2F5cyAzMi1iaXQsICRheCBhbHdheXMgMTYtYml0KS4KCgkqIFtkZWJ1Z2dlci9zdGFjay5jXQoJRml4ZWQgc3RhY2sgaW5mb3JtYXRpb24gcm91dGluZXMgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDE2LWJpdAoJYW5kIDMyLWJpdCBzdGFja3MuCgoJKiBbbG9hZGVyL3Rhc2suY10KCU9wdGlvbiAtZGVidWcgbm93IHNldHMgYSBicmVha3BvaW50IGF0IHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBvZgoJZXZlcnkgbG9hZGVkIHRhc2suCgoJKiBbbWlzY2VtdS9pbnN0ci5jXQoJQWRkZWQgaGFuZGxpbmcgb2YgbG9jaywgcmVwZSBhbmQgcmVwbmUgcHJlZml4ZXMuCgoJKiBbb2JqZWN0cy9kaWIuY10KCUNoYW5nZWQgU3RyZXRjaERJQml0cygpIHRvIGRvIHRoZSBjb3JyZWN0IHRoaW5nLCBldmVuIGlmIGl0J3Mgc3RpbGwKCW5vdCByZWFsbHkgb3B0aW1hbC4KCgkqIFt3aW5kb3dzL2dyYXBoaWNzLmNdCglGaXhlcyBpbiBSb3VuZFJlY3QoKSwgdGhhbmtzIHRvIEJhYmFrIE1hc2FsZWhkYW4uCgoJKiBbd2luZG93cy9tZXNzYWdlLmNdCglUcmllZCB0byBmaXggbW91c2UgZXZlbnQgaGFuZGxpbmcgd2l0aCByZXNwZWN0IHRvIGRpc2FibGVkCgl3aW5kb3dzLgoKCSogW3dpbmRvd3MvcGFpbnRpbmcuY10KCUNsZWFyIFdJTl9ORUVEU19OQ1BBSU5UIGZsYWcgYmVmb3JlIHNlbmRpbmcgV01fTkNQQUlOVCB0byBhdm9pZAoJaW5maW5pdGUgbG9vcHMuCgoJKiBbd2luZG93cy93aW4uY10KCUZpeGVkIElzV2luZG93VmlzaWJsZSgpIHRvIHJldHVybiBGQUxTRSB3aGVuIG9uZSBvZiB0aGUgcGFyZW50Cgl3aW5kb3dzIGlzIGhpZGRlbi4KClNhdCBKdWwgIDEgMjI6MDg6MjEgMTk5NSAgIE1hcnRpbiB2b24gTG9ld2lzIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBbaWYxNjMyL2NvbXBvYmouc3BlY11bbWlzYy9jb21wb2JqLmNdCglDb0dldE1hbGxvYzogTmV3IGZ1bmN0aW9uCglBZGRlZCByZWxheSBlbnRyaWVzIGZvciBDT01QT0JKIG9yZGluYWxzIGFib3ZlIDEwMAoJQ29Jbml0aWFsaXplOiBDaGFuZ2VkIHBhcmFtZXRlciB0byBEV09SRAoKCSogW2lmMTYzMi9vbGUyLnNwZWNdCglFeHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBPbGVCdWlsZFZlcnNpb24KCgkqIFtpZjE2MzIvb2xlMmRpc3Auc3BlY11bbWlzYy9vbGUyZGlzcC5jXVttaXNjL0ltYWtlZmlsZV0KCW9sZTJkaXNwLmM6IE5ldyBmaWxlCglTeXNBbGxvY1N0cmluZywgU3lzUmVhbGxvY1N0cmluZywgU3lzQWxsb2NTdHJpbmdMZW4sCglTeXNSZUFsbG9jU3RyaW5nTGVuLCBTeXNGcmVlU3RyaW5nLCBTeXNTdHJpbmdMZW46IG5ldyBmdW5jdGlvbnMKCgkqIFtpZjE2MzIvb2xlMm5scy5zcGVjXVtpbmNsdWRlL3dpbm5scy5oXVttaXNjL29sZTJubHMuY10KCUNvbXBhcmVTdHJpbmdBOiBOZXcgZnVuY3Rpb24KClRodSBKdW4gMjkgMTk6NDI6MDIgMTk5NSAgTWFyY3VzIE1laXNzbmVyICA8bXNtZWlzc25AZmF1aTAxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJKiBbb2JqZWN0cy9mb250LmNdIFtpZjE2MzIvZ2RpLnNwZWNdCglOZXcgc3R1YnMgZm9yIENyZWF0ZVNjYWxhYmxlRm9udFJlc291cmNlLCBHZXRHbHlwaE91dGxpbmUuCgpUaHUgSnVuIDI5IDEzOjQ3OjA4IEdNVCAxOTk1ICBH9nJhbiBUaHluaSAgKGdvcmFuQG5vcnJza2VuLmJpbGRiYXNlbi5zZSkKCgkqIFttaXNjL2NvbW1kbGcuY10KCUV4dGVuc2l2ZSBjaGFuZ2VzIGFuZCBidWcgZml4ZXMgdG8gRmlsZURpYWxvZyBoYW5kbGluZywKICAgICAgICBiZWhhdmVzIG1vcmUgbGlrZSBuYXRpdmUgV2luZG93cy4KCldlZCBKdW4gMjggMTM6MDQ6NDQgMTk5NSAgIEJlcm5kIFNjaG1pZHQgPGNydXhAcG9vbC5pbmZvcm1hdGlrLnJ3dGgtYWFjaGVuLmRlPgoKICAgICAgICAqIFtjb250cm9scy9saXN0Ym94LmNdIFtjb250cm9scy9jb21iby5jXQoJU29tZSBtaW5vciBvcHRpbWl6YXRpb25zLgoJCgkqIFttZW1vcnkvbG9jYWwuY10KCUxPQ0FMX0ZpbmRGcmVlQmxvY2soKTogTmV2ZXIgdXNlIHRoZSBsYXN0IG9uZS4KCQoJKiBbbWVtb3J5L2dsb2JhbC5jXQoJR2xvYmFsUmVBbGxvYygpOiBHTUVNX01PRElGWSBtdXN0IG5vdCBiZSBpZ25vcmVkIHdoZW4gc2l6ZT09MC4KCQoJKiBbbWlzYy9maWxlLmNdCglyZWFkKCkgcmV0dXJucyBhbiBlcnJvciB3aGVuIGxlbmd0aD09MC4gVGhpcyBpcyBub3Qgd2hhdCBXaW5kb3dzCglwcm9ncmFtcyBleHBlY3QsIHNvIHBheSBhdHRlbnRpb24gdG8gdGhpcyBpbiBfbHJlYWQoKS4gQ2hhbmdlZCB0aGlzCglpbiBfbHdyaXRlKCksIF9ocmVhZCgpLCBfaHdyaXRlKCksIHRvby4KCgkqIFtsb2FkZXIvcmVzb3VyY2UuY10KCUxvYWRJY29uKCk6IElnbm9yZSBiaWgtPmJpU2l6ZUltYWdlLCBzb21lIGljb25zIGhhdmUgd3JvbmcgdmFsdWVzIGluCgl0aGVyZS4KCQoJKiBbaWYxNjMyL3NoZWxsLnNwZWNdIFttaXNjL3NoZWxsLmNdCglXcm9uZyBzcGVjIGZpbGUgZW50cmllcyBjYXVzZWQgaGF2b2M6IEhLRVkgaGFzIDMyIGJpdCwgbm90IDE2LgoJQWNjZXB0IHNvbWUgbW9yZSBjb21iaW5hdGlvbnMgb2YgcGFyYW1ldGVycyBpbiB0aGUgUmVnLi4oKSBmdW5jdGlvbnMuCgkKCSogW2lmMTYzMi90b29saGVscC5zcGVjXQoJTWFrZSBJbnRlcnJ1cHRSZWdpc3RlcigpIGFuZCBJbnRlcnJ1cHRVbnJlZ2lzdGVyKCkgcmV0dXJuIGZhbHNlLgoKCSogW3dpbmRvd3MvaG9vay5jXQoJQ2FsbE5leHRIb29rRXgoKSB1c2VkIHRvIGNyYXNoIHdoZW4gY2FsbGVkIHdpdGggYSBudWxsIGhob29rLiBGaXhlZC4KCldlZCBKdW4gMjggMTA6MTQ6MzQgMTk5NSAgTWFydGluIHZvbiBMb2V3aXMgIDxtYXJ0aW5AaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBbaW5jbHVkZS9uZWV4ZS5oXVtsb2FkZXIvbmVfaW1hZ2UuY10KCU5FX0xvYWRTZWdtZW50OiBEZXRlY3QgaXRlcmF0ZWQgc2VnbWVudHMKCgkqIFttaXNjL29sZTJubHMuY10KCUxPQ0FMRV9TTE9OR0RBVEU6IGZpeGVkIHR5cG8KCgkqIFttaXNjZW11L2ludDVjLmNdCglSZW9yZGVyZWQgaW5jbHVkZSBmaWxlcyB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBMaW51eCBsaWJjLjUuMQoKCSogW3JjL3dpbmVyYy5jXQoJQWRkZWQgLWIgb3B0aW9uIHRvIHByb2Nlc3MgYmluYXJ5IHJlc291cmNlIGZpbGVzIGludG8gQyBhcnJheXMKCgkqIFtpbmNsdWRlL2NhbGxiYWNrLmhdCglDYWxsV25kUHJvYzogQWRkZWQgZHVtbXkgZHMgcGFyYW1ldGVyIGZvciBsaWJ3aW5lCgoJKiBbaW5jbHVkZS9nZGkuaF1baW5jbHVkZS91c2VyLmhdCglVU0VSX0hFQVBfQUxMT0MsIEdESV9IRUFQX0FMTE9DOiBkcm9wcGVkIGZsYWdzIHBhcmFtZXRlcgoKCSogW2luY2x1ZGUvbGR0LmhdW2luY2x1ZGUvc3RhY2tmcmFtZS5oXQoJZGVmaW5lZCBzZWdtZW50IGNvbnZlcnNpb24gbWFjcm9zIGZvciBsaWJ3aW5lCgoJKiBbbWlzYy9hdG9tLmNdCglEZWZpbmVkIFVTRVJfSGVhcFNlbCBmb3IgbGlid2luZQoKCSogW21pc2MvbWFpbi5jXQoJRGlzYWJsZSAtZGxsIG9wdGlvbiBmb3IgbGlid2luZQoKCSogW21pc2MvdXNlci5jXQoJcmVtb3ZlZCBHZXRGcmVlU3lzdGVtUmVzb3VyY2VzLCBTeXN0ZW1IZWFwSW5mbyBmcm9tIGxpYndpbmUgZm9yIG5vdwoKCSogW3Rvb2xraXQvaGVhcC5jXQoJZml4ZWQgTG9jYWxMb2NrIHByb3RvdHlwZQoKCSogW3Rvb2xraXQvc3VwLmNdCglzeW5jJ2VkIGxvYWRfbXpfaGVhZGVyLCBsb2FkX25lX2hlYWRlciB3aXRoIHN0cnVjdHVyZXMKCgkqIFt0b29sa2l0L3dpbm1haW4uY10KCURpc2FibGVkIHJlc291cmNlIERMTHMgZm9yIGxpYndpbmUgZm9yIG5vdwoKTW9uIEp1biAyNiAxOTozMDoyNCAxOTk1ICBIYW5zIGRlIEdyYWFmZiAgKGdyYWFmZkB0d2k3Mi50d2kudHVkZWxmdC5ubCkKCgkqIFttaXNjL21haW4uY10KCUZpeGVkIC1lbmhhbmNlZCBvcHRpb24gdG8gcmVwb3J0IGEgMzg2IENQVSBpbnN0ZWFkIG9mIGEgMjg2LgoKRnJpIEp1biAyMyAyMzoxODoyNSAxOTk1ICBNYXJjdXMgTWVpc3NuZXIgIDxtc21laXNzbkBmYXVpMDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgoJKiBbbWlzYy9kb3NfZnMuY10KCVJlbW92ZSBtYXhpbXVtIG9wZW4gZG9zZGlyZW50IGxpbWl0IChmaXhpbmcgdGhlIHdpbmZpbGUuZXhlCiAJcHJvYmxlbSkgYnkgdXNpbmcgdGVsbGRpcigpL3NlZWtkaXIoKS4KCQpGcmkgSnVuIDIzIDEzOjQyOjI1IDE5OTUgIEhhbnMgZGUgR3JhYWZmICAoZ3JhYWZmQHR3aTcyLnR3aS50dWRlbGZ0Lm5sKQoKCSogW21pc2MvcHJvZmlsZS5jXQoJRml4ZWQgcHJvYmxlbSBwYXJzaW5nIGVtcHR5IGxpbmVzIHdpdGhpbiBzZWN0aW9ucyBpbiAuaW5pIGZpbGVzLgo=