Mercurial > pidgin.yaz
changeset 23440:08bbba359cc2
merge of '2b441ba99ecbf84cdadb1490a51f92857dda488c'
and 'd9e0ab44297f2bce87552d380756e255662bd9ad'
author | Jochen Kemnade <jochenkemnade@web.de> |
---|---|
date | Tue, 08 Jul 2008 17:50:25 +0000 |
parents | 6dc33eb841aa (diff) 3aa125505393 (current diff) |
children | 819346c150f1 b1457c51da46 |
files | |
diffstat | 9 files changed, 171 insertions(+), 58 deletions(-) [+] |
line wrap: on
line diff
--- a/configure.ac Sun Jul 06 12:23:30 2008 +0000 +++ b/configure.ac Tue Jul 08 17:50:25 2008 +0000 @@ -336,6 +336,10 @@ AC_DEFINE_UNQUOTED(DISPLAY_VERSION, "$VERSION", [display version info]) fi +AC_ARG_ENABLE(missing-dependencies, [AC_HELP_STRING([--disable-missing-dependencies], + [skip missing dependencies instead of aborting configure])], + force_deps="$enableval", force_deps="yes") + AC_ARG_WITH(x, [], with_x="$withval", with_x="yes") AC_ARG_ENABLE(gtkui, [AC_HELP_STRING([--disable-gtkui], @@ -419,10 +423,12 @@ X11_LIBS="$x_libpath_add" X11_CFLAGS="$x_incpath_add" else - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ X11 development headers not found. Use --without-x if you do not need X11 support. ]) + fi fi ]) AC_SUBST(X11_LIBS) @@ -461,11 +467,13 @@ AC_DEFINE(USE_SCREENSAVER, 1, [Define if we're using XScreenSaver.]) AC_SUBST(XSS_LIBS) else - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ XScreenSaver extension development headers not found. Use --disable-screensaver if you do not need XScreenSaver extension support, this is required for detecting idle time by mouse and keyboard usage. ]) + fi fi else AC_MSG_ERROR([X support is required to build with XScreenSaver extensions]) @@ -490,10 +498,12 @@ AC_DEFINE(USE_SM, 1, [Define if we're using X Session Management.]) AC_SUBST(SM_LIBS) else - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ X session management development headers not found. Use --disable-sm if you do not need session management support. ]) + fi fi else AC_MSG_ERROR([X support is required to build with X session management support]) @@ -515,10 +525,12 @@ if test "x$enable_startup_notification" = "xyes"; then PKG_CHECK_MODULES(STARTUP_NOTIFICATION, [libstartup-notification-1.0 >= 0.5], , [ AC_MSG_RESULT(no) - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ Startup notification development headers not found. Use --disable-startup-notification if you do not need it. -])]) +]) + fi]) if test "x$enable_startup_notification" = "xyes"; then AC_DEFINE(HAVE_STARTUP_NOTIFICATION, 1, [Define if we're using libstartup-notification.]) @@ -533,10 +545,12 @@ if test "x$enable_gtkspell" = "xyes" ; then PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, , [ AC_MSG_RESULT(no) - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ GtkSpell development headers not found. Use --disable-gtkspell if you do not need it. -])]) +]) + fi]) if test "x$enable_gtkspell" = "xyes" ; then AC_DEFINE(USE_GTKSPELL, 1, [Define if we're using GtkSpell]) AC_SUBST(GTKSPELL_CFLAGS) @@ -566,10 +580,12 @@ AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS) AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS) else - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ Evolution development headers not found. Use --disable-gevolution if you do not need it. ]) + fi fi fi @@ -579,10 +595,12 @@ if test "x$enable_cap" = "xyes"; then PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.3,,[ AC_MSG_RESULT(no) - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ sqlite3 development headers not found. Use --disable-cap if you do not need the Contact Availability Prediction plugin. -])]) +]) + fi]) fi @@ -719,10 +737,12 @@ [], [$GSTREAMER_LIBS]) ], [ AC_MSG_RESULT(no) - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ GStreamer development headers not found. Use --disable-gstreamer if you do not need GStreamer (sound) support. -])]) +]) + fi]) fi dnl ####################################################################### @@ -737,10 +757,12 @@ have_meanwhile="yes" ], [ have_meanwhile="no" - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ Meanwhile development headers not found. Use --disable-meanwhile if you do not need meanwhile (Sametime) support. -])]) +]) + fi]) fi AC_SUBST(MEANWHILE_CFLAGS) AC_SUBST(MEANWHILE_LIBS) @@ -783,7 +805,7 @@ fi AC_CHECK_LIB(avahi-client, avahi_client_new, [avahilibs=yes], [avahilibs=no], $AVAHI_LIBS) -if test "x$enable_avahi" = "xyes" -a \( "x$avahiincludes" = "xno" -o "x$avahilibs" = "xno" \); then +if test "x$enable_avahi" = "xyes" -a "x$force_deps" = "xyes" -a \( "x$avahiincludes" = "xno" -o "x$avahilibs" = "xno" \); then AC_MSG_ERROR([ avahi development headers not found. Use --disable-avahi if you do not need avahi (Bonjour) support. @@ -1155,7 +1177,6 @@ "-Wmissing-declarations" \ "-Wmissing-noreturn" \ "-Wmissing-prototypes" \ - "-Wnested-externs" \ "-Wpointer-arith" \ "-Wundef" \ ; do @@ -1220,10 +1241,12 @@ AC_SUBST(DBUS_LIBS) enable_dbus=yes ], [ + if test "x$force_deps" = "xyes" ; then AC_MSG_ERROR([ D-Bus development headers not found. Use --disable-dbus if you do not need D-Bus support. -])]) +]) + fi]) dnl Check for NetworkManager.h; if we don't have it, oh well if test "x$enable_nm" = "xyes" ; then @@ -1232,10 +1255,12 @@ AC_SUBST(NETWORKMANAGER_LIBS) AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.]) ], [ - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ NetworkManager development headers not found. Use --disable-nm if you do not need NetworkManager support. -])]) +]) + fi]) fi else enable_nm=no @@ -1548,7 +1573,7 @@ AM_CONDITIONAL(USE_PERL, false) fi -if test "x$looked_for_perl" = "xyes" -a "x$enable_perl" = "xno"; then +if test "x$looked_for_perl" = "xyes" -a "x$enable_perl" = "xno" -a "x$force_deps" = "xyes"; then AC_MSG_ERROR([ Perl development headers not found. Use --disable-perl if you do not need Perl scripting support. @@ -1959,19 +1984,19 @@ msg_ssl=$msg_nss elif test "x$msg_gnutls" != "x"; then msg_ssl=$msg_gnutls -elif test "x$looked_for_gnutls" = "xyes" -a "x$looked_for_nss" = "xyes"; then +elif test "x$looked_for_gnutls" = "xyes" -a "x$looked_for_nss" = "xyes" -a "x$force_deps" = "xyes" ; then AC_MSG_ERROR([ Neither GnuTLS or NSS SSL development headers found. Use --disable-nss --disable-gnutls if you do not need SSL support. MSN, Novell Groupwise and Google Talk will not work without GnuTLS or NSS. OpenSSL is NOT usable! ]) -elif test "x$looked_for_gnutls" = "xyes"; then +elif test "x$looked_for_gnutls" = "xyes" -a "x$force_deps" = "xyes" ; then AC_MSG_ERROR([ GnuTLS SSL development headers not found. Use --disable-gnutls if you do not need SSL support. MSN, Novell Groupwise and Google Talk will not work without SSL support. ]) -elif test "x$looked_for_nss" = "xyes"; then +elif test "x$looked_for_nss" = "xyes" -a "x$force_deps" = "xyes" ; then AC_MSG_ERROR([ NSS SSL development headers not found. Use --disable-nss if you do not need SSL support. @@ -2010,10 +2035,12 @@ if test "$TCLCONFIG" = "no"; then AC_MSG_RESULT([no]) enable_tcl=no - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ Tcl development headers not found. Use --disable-tcl if you do not need Tcl scripting support. ]) + fi else . $TCLCONFIG AC_MSG_CHECKING([Tcl version compatability]) @@ -2078,10 +2105,12 @@ if test "$TKCONFIG" = "no"; then AC_MSG_RESULT([no]) enable_tk=no - AC_MSG_ERROR([ + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ Tk development headers not found. Use --disable-tk if you do not need Tk scripting support. ]) + fi else . $TKCONFIG eval "TK_LIB_SPEC=\"$TK_LIB_SPEC\""
--- a/libpurple/protocols/irc/msgs.c Sun Jul 06 12:23:30 2008 +0000 +++ b/libpurple/protocols/irc/msgs.c Tue Jul 08 17:50:25 2008 +0000 @@ -1007,6 +1007,9 @@ irc->reqnick = newnick; irc->nickused = TRUE; + purple_connection_set_display_name( + purple_account_get_connection(irc->account), newnick); + buf = irc_format(irc, "vn", "NICK", newnick); irc_send(irc, buf); g_free(buf);
--- a/libpurple/protocols/jabber/parser.c Sun Jul 06 12:23:30 2008 +0000 +++ b/libpurple/protocols/jabber/parser.c Tue Jul 08 17:50:25 2008 +0000 @@ -132,6 +132,18 @@ xmlnode_insert_data(js->current, (const char*) text, text_len); } +static void +jabber_parser_structured_error_handler(void *user_data, xmlErrorPtr error) +{ + JabberStream *js = user_data; + + purple_debug_error("jabber", "XML parser error for JabberStream %p: " + "Domain %i, code %i, level %i: %s\n", + js, + error->domain, error->code, error->level, + (error->message ? error->message : "(null)")); +} + static xmlSAXHandler jabber_parser_libxml = { NULL, /*internalSubset*/ NULL, /*isStandalone*/ @@ -164,7 +176,7 @@ NULL, /*_private*/ jabber_parser_element_start_libxml, /*startElementNs*/ jabber_parser_element_end_libxml, /*endElementNs*/ - NULL /*serror*/ + jabber_parser_structured_error_handler /*serror*/ }; void @@ -187,15 +199,25 @@ void jabber_parser_process(JabberStream *js, const char *buf, int len) { - if (js->context == NULL) { + int ret; + + if (js->context == NULL) { /* libxml inconsistently starts parsing on creating the * parser, so do a ParseChunk right afterwards to force it. */ js->context = xmlCreatePushParserCtxt(&jabber_parser_libxml, js, buf, len, NULL); xmlParseChunk(js->context, "", 0, 0); - } else if (xmlParseChunk(js->context, buf, len, 0) < 0) { - purple_connection_error_reason (js->gc, - PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("XML Parse error")); + } else if ((ret = xmlParseChunk(js->context, buf, len, 0)) != XML_ERR_OK) { + purple_debug_error("jabber", "xmlParseChunk returned error %i", ret); + + if ((ret >= XML_ERR_INVALID_HEX_CHARREF) && (ret <= XML_ERR_INVALID_CHAR)) { + /* If the error involves an invalid character, just drop this message. + * We'll create a new parser next time it's needed. */ + jabber_parser_free(js); + } else { + purple_connection_error_reason (js->gc, + PURPLE_CONNECTION_ERROR_NETWORK_ERROR, + _("XML Parse error")); + } } }
--- a/libpurple/protocols/jabber/presence.c Sun Jul 06 12:23:30 2008 +0000 +++ b/libpurple/protocols/jabber/presence.c Tue Jul 08 17:50:25 2008 +0000 @@ -141,6 +141,11 @@ /* check for buzz support */ allowBuzz = purple_status_get_attr_boolean(status,"buzz"); /* changing the buzz state has to trigger a re-broadcasting of the presence for caps */ + + if (js->googletalk && stripped == NULL && purple_presence_is_status_primitive_active(p, PURPLE_STATUS_TUNE)) { + tune = purple_presence_get_status(p, "tune"); + stripped = jabber_google_presence_outgoing(tune); + } #define CHANGED(a,b) ((!a && b) || (a && a[0] == '\0' && b && b[0] != '\0') || \ (a && !b) || (a && a[0] != '\0' && b && b[0] == '\0') || (a && b && strcmp(a,b))) @@ -149,11 +154,6 @@ js->old_priority != priority || CHANGED(js->old_avatarhash, js->avatar_hash)) { js->allowBuzz = allowBuzz; - if (js->googletalk && stripped == NULL && purple_presence_is_status_primitive_active(p, PURPLE_STATUS_TUNE)) { - tune = purple_presence_get_status(p, "tune"); - stripped = jabber_google_presence_outgoing(tune); - } - presence = jabber_presence_create_js(js, state, stripped, priority); if(js->avatar_hash) { @@ -178,9 +178,9 @@ js->old_avatarhash = g_strdup(js->avatar_hash); js->old_state = state; js->old_priority = priority; - g_free(stripped); } - + g_free(stripped); + /* next, check if there are any changes to the tune values */ tune = purple_presence_get_status(p, "tune"); if (tune && purple_status_is_active(tune)) {
--- a/libpurple/protocols/jabber/roster.c Sun Jul 06 12:23:30 2008 +0000 +++ b/libpurple/protocols/jabber/roster.c Tue Jul 08 17:50:25 2008 +0000 @@ -316,7 +316,6 @@ { JabberStream *js = gc->proto_data; char *who; - GSList *groups = NULL; JabberBuddy *jb; JabberBuddyResource *jbr; char *my_bare_jid; @@ -329,20 +328,7 @@ jb = jabber_buddy_find(js, buddy->name, FALSE); - /* - * For some reason if we're waiting for our subscription request - * to be approved and we try to add the buddy to another group - * then we remove the buddy from the old group. I don't understand - * the rationale for this, can someone please explain it? It seems - * like we should pass NULL as the groups parameter to - * jabber_roster_update(). - */ - if(!jb || !(jb->subscription & JABBER_SUB_TO)) { - groups = g_slist_append(groups, group->name); - } - - jabber_roster_update(js, who, groups); - g_slist_free(groups); + jabber_roster_update(js, who, NULL); my_bare_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); if(!strcmp(who, my_bare_jid)) {
--- a/libpurple/protocols/oscar/oscar.c Sun Jul 06 12:23:30 2008 +0000 +++ b/libpurple/protocols/oscar/oscar.c Tue Jul 08 17:50:25 2008 +0000 @@ -4928,11 +4928,6 @@ purple_debug_info("oscar", "ssi: syncing local list and server list\n"); - if ((timestamp == 0) || (numitems == 0)) { - purple_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.\n"); - return 1; - } - /* Clean the buddy list */ aim_ssi_cleanlist(od);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/CAcert_Class3.pem Tue Jul 08 17:50:25 2008 +0000 @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGCDCCA/CgAwIBAgIBATANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wNTEwMTQwNzM2NTVaFw0zMzAzMjgwNzM2NTVaMFQxFDAS +BgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5v +cmcxHDAaBgNVBAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCrSTURSHzSJn5TlM9Dqd0o10Iqi/OHeBlYfA+e2ol9 +4fvrcpANdKGWZKufoCSZc9riVXbHF3v1BKxGuMO+f2SNEGwk82GcwPKQ+lHm9WkB +Y8MPVuJKQs/iRIwlKKjFeQl9RrmK8+nzNCkIReQcn8uUBByBqBSzmGXEQ+xOgo0J +0b2qW42S0OzekMV/CsLj6+YxWl50PpczWejDAz1gM7/30W9HxM3uYoNSbi4ImqTZ +FRiRpoWSR7CuSOtttyHshRpocjWr//AQXcD0lKdq1TuSfkyQBX6TwSyLpI5idBVx +bgtxA+qvFTia1NIFcm+M+SvrWnIl+TlG43IbPgTDZCciECqKT1inA62+tC4T7V2q +SNfVfdQqe1z6RgRQ5MwOQluM7dvyz/yWk+DbETZUYjQ4jwxgmzuXVjit89Jbi6Bb +6k6WuHzX1aCGcEDTkSm3ojyt9Yy7zxqSiuQ0e8DYbF/pCsLDpyCaWt8sXVJcukfV +m+8kKHA4IC/VfynAskEDaJLM4JzMl0tF7zoQCqtwOpiVcK01seqFK6QcgCExqa5g +eoAmSAC4AcCTY1UikTxW56/bOiXzjzFU6iaLgVn5odFTEcV7nQP2dBHgbbEsPyyG +kZlxmqZ3izRg0RS0LKydr4wQ05/EavhvE/xzWfdmQnQeiuP43NJvmJzLR5iVQAX7 +6QIDAQABo4G/MIG8MA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEEUTBPMCMG +CCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEFBQcwAoYc +aHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBBMD8GCCsGAQQB +gZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5w +aHA/aWQ9MTAwDQYJKoZIhvcNAQEEBQADggIBAH8IiKHaGlBJ2on7oQhy84r3HsQ6 +tHlbIDCxRd7CXdNlafHCXVRUPIVfuXtCkcKZ/RtRm6tGpaEQU55tiKxzbiwzpvD0 +nuB1wT6IRanhZkP+VlrRekF490DaSjrxC1uluxYG5sLnk7mFTZdPsR44Q4Dvmw2M +77inYACHV30eRBzLI++bPJmdr7UpHEV5FpZNJ23xHGzDwlVks7wU4vOkHx4y/CcV +Bc/dLq4+gmF78CEQGPZE6lM5+dzQmiDgxrvgu1pPxJnIB721vaLbLmINQjRBvP+L +ivVRIqqIMADisNS8vmW61QNXeZvo3MhN+FDtkaVSKKKs+zZYPumUK5FQhxvWXtaM +zPcPEAxSTtAWYeXlCmy/F8dyRlecmPVsYGN6b165Ti/Iubm7aoW8mA3t+T6XhDSU +rgCvoeXnkm5OvfPi2RSLXNLrAWygF6UtEOucekq9ve7O/e0iQKtwOIj1CodqwqsF +YMlIBdpTwd5Ed2qz8zw87YC8pjhKKSRf/lk7myV6VmMAZLldpGJ9VzZPrYPvH5JT +oI53V93lYRE9IwCQTDz6o2CTBKOvNfYOao9PSmCnhQVsRqGP9Md246FZV/dxssRu +FFxtbUFm3xuTsdQAw+7Lzzw9IYCpX2Nl/N3gX6T0K/CFcUHUZyX7GrGXrtaZghNB +0m6lG5kngOcLqagA +-----END CERTIFICATE-----
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/CAcert_Root.pem Tue Jul 08 17:50:25 2008 +0000 @@ -0,0 +1,41 @@ +-----BEGIN CERTIFICATE----- +MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO +BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi +MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ +ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ +8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 +zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y +fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 +w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc +G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k +epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q +laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ +QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU +fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 +YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w +ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY +gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe +MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 +IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy +dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw +czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 +dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl +aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC +AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg +b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB +ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc +nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg +18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c +gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl +Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY +sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T +SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF +CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum +GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk +zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW +omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD +-----END CERTIFICATE-----