QPID-8241 : Remove use of javax.xml.bind.DatatypeConverter
diff --git a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBAMQP10V0UpgradeTest.java b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBAMQP10V0UpgradeTest.java
index 2d8fd16..c8c5e9a 100644
--- a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBAMQP10V0UpgradeTest.java
+++ b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBAMQP10V0UpgradeTest.java
@@ -42,7 +42,6 @@
 import javax.jms.MessageConsumer;
 import javax.jms.Queue;
 import javax.jms.Session;
-import javax.xml.bind.DatatypeConverter;
 
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -50,6 +49,7 @@
 
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.util.FileUtils;
+import org.apache.qpid.server.util.StringUtil;
 import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNode;
 import org.apache.qpid.systests.JmsTestBase;
 import org.apache.qpid.tests.utils.ConfigItem;
@@ -117,7 +117,7 @@
     {
         MessageDigest digest = MessageDigest.getInstance("SHA-256");
         byte[] hash = digest.digest(content);
-        return DatatypeConverter.printHexBinary(hash);
+        return StringUtil.toHex(hash);
     }
 
     @Override
diff --git a/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java b/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
index a335fd1..b0f50ab 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
@@ -36,6 +36,16 @@
 import java.security.cert.Certificate;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneOffset;
+import java.time.chrono.IsoChronology;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.format.DateTimeParseException;
+import java.time.temporal.ChronoField;
+import java.time.temporal.TemporalAccessor;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -50,8 +60,6 @@
 import java.util.UUID;
 import java.util.regex.Pattern;
 
-import javax.xml.bind.DatatypeConverter;
-
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.base.Defaults;
 
@@ -70,6 +78,22 @@
         }
     };
 
+    private static final DateTimeFormatter ISO_DATE_TIME_FORMAT =  new DateTimeFormatterBuilder()
+                .parseCaseInsensitive()
+                .append(DateTimeFormatter.ISO_LOCAL_DATE)
+                .optionalStart()
+                .appendLiteral('T')
+                .append(DateTimeFormatter.ISO_LOCAL_TIME)
+                .optionalStart()
+                .appendOffsetId()
+                .optionalStart()
+                .appendLiteral('[')
+                .parseCaseSensitive()
+                .appendZoneRegionId()
+                .appendLiteral(']')
+                .toFormatter()
+                .withChronology(IsoChronology.INSTANCE);
+
     static final AttributeValueConverter<Object> OBJECT_CONVERTER = new AttributeValueConverter<Object>()
     {
         @Override
@@ -538,9 +562,10 @@
                 {
                     try
                     {
-                        return DatatypeConverter.parseDateTime(interpolated).getTime();
+                        return ISO_DATE_TIME_FORMAT.parse(interpolated)
+                                .query(this::convertToDate);
                     }
-                    catch (IllegalArgumentException e1)
+                    catch (DateTimeParseException e1)
                     {
                         throw new IllegalArgumentException("Cannot convert string '" + interpolated + "' to a Date."
                                                            + " It is neither a ISO-8601 date or date time nor a string"
@@ -557,6 +582,18 @@
                 throw new IllegalArgumentException("Cannot convert type " + value.getClass() + " to a Date");
             }
         }
+
+        private Date convertToDate(TemporalAccessor t)
+        {
+            if(!t.isSupported(ChronoField.INSTANT_SECONDS))
+            {
+                t = LocalDateTime.of(LocalDate.from(t), LocalTime.MIN).atOffset(ZoneOffset.UTC);
+            }
+            return new Date((t.getLong(ChronoField.INSTANT_SECONDS) * 1000L)
+                             + t.getLong(ChronoField.MILLI_OF_SECOND));
+
+
+        }
     };
 
     public static final AttributeValueConverter<Principal> PRINCIPAL_CONVERTER = new AttributeValueConverter<Principal>()
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStoreImpl.java b/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStoreImpl.java
index 244d802..f596a8d 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStoreImpl.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/AutoGeneratedSelfSignedKeyStoreImpl.java
@@ -43,6 +43,7 @@
 import java.security.cert.X509Certificate;
 import java.security.spec.InvalidKeySpecException;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.Date;
@@ -52,7 +53,6 @@
 
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
-import javax.xml.bind.DatatypeConverter;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -143,7 +143,7 @@
     {
         try
         {
-            return DatatypeConverter.printBase64Binary(_certificate.getEncoded());
+            return Base64.getEncoder().encodeToString(_certificate.getEncoded());
         }
         catch (CertificateEncodingException e)
         {
@@ -154,7 +154,7 @@
     @Override
     public String getEncodedPrivateKey()
     {
-        return DatatypeConverter.printBase64Binary(_privateKey.getEncoded());
+        return Base64.getEncoder().encodeToString(_privateKey.getEncoded());
     }
 
     @Override
@@ -447,7 +447,7 @@
         {
             _disposition = "attachment; filename=\"" + name + ".pem\"";
             StringBuilder certStringBuffer = new StringBuilder("-----BEGIN CERTIFICATE-----\n");
-            String cert = DatatypeConverter.printBase64Binary(certificate.getEncoded());
+            String cert = Base64.getEncoder().encodeToString(certificate.getEncoded());
             int offset = 0;
             while(cert.length()-offset > 64)
             {
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStoreImpl.java b/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStoreImpl.java
index 09029de..983a2a1 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStoreImpl.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/SiteSpecificTrustStoreImpl.java
@@ -32,6 +32,7 @@
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
@@ -43,7 +44,6 @@
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
 import javax.net.ssl.X509TrustManager;
-import javax.xml.bind.DatatypeConverter;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -136,7 +136,7 @@
         {
             try
             {
-                return DatatypeConverter.printBase64Binary(_x509Certificate.getEncoded());
+                return Base64.getEncoder().encodeToString(_x509Certificate.getEncoded());
             }
             catch (CertificateEncodingException e)
             {
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/database/HashedUser.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/database/HashedUser.java
index 7db98db..b1ccf29 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/database/HashedUser.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/database/HashedUser.java
@@ -24,8 +24,7 @@
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-
-import javax.xml.bind.DatatypeConverter;
+import java.util.Base64;
 
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
@@ -179,7 +178,7 @@
         {
             byteArray[index++] = (byte) c;
         }
-        _encodedPassword = DatatypeConverter.printBase64Binary(byteArray).getBytes(StandardCharsets.UTF_8);
+        _encodedPassword = Base64.getEncoder().encodeToString(byteArray).getBytes(StandardCharsets.UTF_8);
     }
 
     @Override
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java
index 4c619ca..e8bb81e 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java
@@ -26,6 +26,7 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -33,7 +34,6 @@
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import javax.security.sasl.SaslException;
-import javax.xml.bind.DatatypeConverter;
 
 import com.google.common.util.concurrent.ListenableFuture;
 
@@ -171,8 +171,8 @@
 
                 String password = passwordFields[PasswordField.SALT.ordinal()] + ","
                                   + "," // remove previously insecure salted password field
-                                  + DatatypeConverter.printBase64Binary(storedKey) + ","
-                                  + DatatypeConverter.printBase64Binary(serverKey) + ","
+                                  + Base64.getEncoder().encodeToString(storedKey) + ","
+                                  + Base64.getEncoder().encodeToString(serverKey) + ","
                                   + oldDefaultIterationCount;
                 upgradeUserPassword(user, password);
             }
@@ -272,10 +272,10 @@
             byte[] storedKey = MessageDigest.getInstance(getDigestName()).digest(clientKey);
             byte[] serverKey = computeHmac(saltedPassword, "Server Key");
 
-            return DatatypeConverter.printBase64Binary(salt) + ","
+            return Base64.getEncoder().encodeToString(salt) + ","
                    + "," // leave insecure salted password field blank
-                   + DatatypeConverter.printBase64Binary(storedKey) + ","
-                   + DatatypeConverter.printBase64Binary(serverKey) + ","
+                   + Base64.getEncoder().encodeToString(storedKey) + ","
+                   + Base64.getEncoder().encodeToString(serverKey) + ","
                    + iterationCount;
         }
         catch (NoSuchAlgorithmException e)
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationResultCacher.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationResultCacher.java
index b034916..b18147d 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationResultCacher.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationResultCacher.java
@@ -32,7 +32,6 @@
 import java.util.concurrent.TimeUnit;
 
 import javax.security.auth.Subject;
-import javax.xml.bind.DatatypeConverter;
 
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
@@ -42,6 +41,7 @@
 
 import org.apache.qpid.server.security.auth.AuthenticationResult;
 import org.apache.qpid.server.security.auth.SocketConnectionPrincipal;
+import org.apache.qpid.server.util.StringUtil;
 
 public class AuthenticationResultCacher
 {
@@ -147,7 +147,7 @@
                 credentialDigest = md.digest(credentialDigest);
             }
 
-            return DatatypeConverter.printHexBinary(credentialDigest);
+            return StringUtil.toHex(credentialDigest);
         }
         catch (NoSuchAlgorithmException e)
         {
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java
index 189a78f..cf3e18f 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java
@@ -24,12 +24,11 @@
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import javax.xml.bind.DatatypeConverter;
-
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
@@ -75,7 +74,7 @@
         }
 
         md.update(data);
-        return DatatypeConverter.printBase64Binary(md.digest());
+        return Base64.getEncoder().encodeToString(md.digest());
     }
 
     @Override
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
index 43ce269..6854bd5 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
@@ -32,6 +32,7 @@
 import java.net.URLEncoder;
 import java.security.GeneralSecurityException;
 import java.security.Principal;
+import java.util.Base64;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -39,8 +40,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.xml.bind.DatatypeConverter;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.slf4j.Logger;
@@ -276,7 +275,7 @@
             String clientSecret = getClientSecret() == null ? "" : getClientSecret();
             if (getTokenEndpointNeedsAuth())
             {
-                String encoded = DatatypeConverter.printBase64Binary((getClientId() + ":" + clientSecret).getBytes(UTF_8));
+                String encoded = Base64.getEncoder().encodeToString((getClientId() + ":" + clientSecret).getBytes(UTF_8));
                 connection.setRequestProperty("Authorization", "Basic " + encoded);
             }
             else
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/cloudfoundry/CloudFoundryOAuth2IdentityResolverService.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/cloudfoundry/CloudFoundryOAuth2IdentityResolverService.java
index b9510b5..ae9e724 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/cloudfoundry/CloudFoundryOAuth2IdentityResolverService.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/cloudfoundry/CloudFoundryOAuth2IdentityResolverService.java
@@ -30,11 +30,10 @@
 import java.net.URL;
 import java.security.GeneralSecurityException;
 import java.security.Principal;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.Map;
 
-import javax.xml.bind.DatatypeConverter;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.slf4j.Logger;
@@ -108,7 +107,7 @@
         connection.setRequestProperty("Accept-Charset", UTF_8.name());
         connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + UTF_8.name());
         connection.setRequestProperty("Accept", "application/json");
-        String encoded = DatatypeConverter.printBase64Binary((clientId + ":" + clientSecret).getBytes(UTF_8));
+        String encoded = Base64.getEncoder().encodeToString((clientId + ":" + clientSecret).getBytes(UTF_8));
         connection.setRequestProperty("Authorization", "Basic " + encoded);
 
         final Map<String,String> requestParameters = Collections.singletonMap("token", accessToken);
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/auth/sasl/scram/ScramSaslServer.java b/broker-core/src/main/java/org/apache/qpid/server/security/auth/sasl/scram/ScramSaslServer.java
index 9169ee8..8dddfbc 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/auth/sasl/scram/ScramSaslServer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/auth/sasl/scram/ScramSaslServer.java
@@ -26,13 +26,13 @@
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.UUID;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import javax.security.sasl.SaslException;
 import javax.security.sasl.SaslServer;
-import javax.xml.bind.DatatypeConverter;
 
 import org.apache.qpid.server.util.Strings;
 
@@ -128,7 +128,7 @@
         _nonce = parts[3].substring(2) + UUID.randomUUID().toString();
 
         _saltAndPassword = _authManager.getSaltAndPasswordKeys(_username);
-        _serverFirstMessage = "r="+_nonce+",s="+ DatatypeConverter.printBase64Binary(_saltAndPassword.getSalt())+",i=" + _saltAndPassword.getIterationCount();
+        _serverFirstMessage = "r=" + _nonce + ",s=" + Base64.getEncoder().encodeToString(_saltAndPassword.getSalt()) + ",i=" + _saltAndPassword.getIterationCount();
         return _serverFirstMessage.getBytes(ASCII);
     }
 
@@ -202,7 +202,7 @@
             }
 
             byte[] serverKey = _saltAndPassword.getServerKey();
-            String finalResponse = "v=" + DatatypeConverter.printBase64Binary(computeHmac(serverKey, authMessage));
+            String finalResponse = "v=" + Base64.getEncoder().encodeToString(computeHmac(serverKey, authMessage));
 
             return finalResponse.getBytes(ASCII);
         }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypter.java b/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypter.java
index 73a4f74..ed90d4f 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypter.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypter.java
@@ -28,13 +28,13 @@
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
+import java.util.Base64;
 
 import javax.crypto.Cipher;
 import javax.crypto.CipherInputStream;
 import javax.crypto.NoSuchPaddingException;
 import javax.crypto.SecretKey;
 import javax.crypto.spec.IvParameterSpec;
-import javax.xml.bind.DatatypeConverter;
 
 import org.apache.qpid.server.util.Strings;
 
@@ -74,7 +74,7 @@
             byte[] output = new byte[AES_INITIALIZATION_VECTOR_LENGTH + encryptedBytes.length];
             System.arraycopy(ivbytes, 0, output, 0, AES_INITIALIZATION_VECTOR_LENGTH);
             System.arraycopy(encryptedBytes, 0, output, AES_INITIALIZATION_VECTOR_LENGTH, encryptedBytes.length);
-            return DatatypeConverter.printBase64Binary(output);
+            return Base64.getEncoder().encodeToString(output);
         }
         catch (IOException | InvalidAlgorithmParameterException | InvalidKeyException | NoSuchAlgorithmException | NoSuchPaddingException e)
         {
diff --git a/broker-core/src/main/java/org/apache/qpid/server/util/DataUrlUtils.java b/broker-core/src/main/java/org/apache/qpid/server/util/DataUrlUtils.java
index 08880c9..199e4da 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/util/DataUrlUtils.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/util/DataUrlUtils.java
@@ -19,14 +19,14 @@
 
 package org.apache.qpid.server.util;
 
-import javax.xml.bind.DatatypeConverter;
+import java.util.Base64;
 
 public class DataUrlUtils
 {
     public static String getDataUrlForBytes(final byte[] bytes)
     {
         StringBuilder inlineURL = new StringBuilder("data:;base64,");
-        inlineURL.append(DatatypeConverter.printBase64Binary(bytes));
+        inlineURL.append(Base64.getEncoder().encodeToString(bytes));
         return inlineURL.toString();
     }
 }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/util/StringUtil.java b/broker-core/src/main/java/org/apache/qpid/server/util/StringUtil.java
index b986370..8f785d1 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/util/StringUtil.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/util/StringUtil.java
@@ -25,15 +25,13 @@
 import java.security.NoSuchAlgorithmException;
 import java.util.Random;
 
-import javax.xml.bind.DatatypeConverter;
-
-
 public class StringUtil
 {
     private static final String NUMBERS = "0123456789";
     private static final String LETTERS = "abcdefghijklmnopqrstuvwxwy";
     private static final String OTHERS = "_-";
     private static final char[] CHARACTERS = (NUMBERS + LETTERS + LETTERS.toUpperCase() + OTHERS).toCharArray();
+    private static final char[] HEX = "0123456789ABCDEF".toCharArray();
 
     private Random _random = new Random();
 
@@ -42,6 +40,16 @@
         return String.valueOf(path).toLowerCase().startsWith("data:") ? "data:..." : path;
     }
 
+    public static String toHex(byte[] bin)
+    {
+        StringBuilder result = new StringBuilder(2 * bin.length);
+        for (byte b : bin) {
+            result.append(HEX[(b >> 4) & 0xF]);
+            result.append(HEX[(b & 0xF)]);
+        }
+        return result.toString();
+    }
+
     public String randomAlphaNumericString(int maxLength)
     {
         char[] result = new char[maxLength];
@@ -80,7 +88,7 @@
         try
         {
             byte[] digest = MessageDigest.getInstance("MD5").digest(managerName.getBytes(StandardCharsets.UTF_8));
-            builder.append(DatatypeConverter.printHexBinary(digest).toLowerCase());
+            builder.append(toHex(digest).toLowerCase());
         }
         catch (NoSuchAlgorithmException e)
         {
diff --git a/broker-core/src/main/java/org/apache/qpid/server/util/Strings.java b/broker-core/src/main/java/org/apache/qpid/server/util/Strings.java
index 5a0953a..0e468fb 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/util/Strings.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/util/Strings.java
@@ -24,8 +24,8 @@
 import java.io.Writer;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
-import java.util.Formatter;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -36,8 +36,6 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.xml.bind.DatatypeConverter;
-
 
 /**
  * Strings
@@ -139,7 +137,7 @@
             throw new IllegalArgumentException("Cannot convert string '"+ base64String+ "'to a byte[] - it does not appear to be base64 data");
         }
 
-        return DatatypeConverter.parseBase64Binary(base64String);
+        return Base64.getDecoder().decode(base64String);
     }
 
     public static interface Resolver
diff --git a/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java b/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java
index 89057a1..341cc4b 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java
@@ -131,7 +131,7 @@
                             new Date(1000),
                             converter.convert(iso8601DateTime, object));
 
-        final String iso8601Date = "1970-01-02Z";
+        final String iso8601Date = "1970-01-02";
         assertEquals("Cannot convert date expressed as ISO8601 date",
                             new Date(TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS)),
                             converter.convert(iso8601Date, object));
diff --git a/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java b/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
index 246329f..0ebfed9 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
@@ -301,7 +301,7 @@
     public void testDateAttributeFromIso8601()
     {
         final String objectName = "myName";
-        String date = "1970-01-01Z";
+        String date = "1970-01-01";
 
         Map<String, Object> attributes = new HashMap<>();
         attributes.put(TestSingleton.NAME, objectName);
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/NonJavaKeyStoreTest.java b/broker-core/src/test/java/org/apache/qpid/server/security/NonJavaKeyStoreTest.java
index e88bcc6..583ba8b 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/NonJavaKeyStoreTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/NonJavaKeyStoreTest.java
@@ -41,6 +41,7 @@
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -49,7 +50,6 @@
 import java.util.concurrent.TimeUnit;
 
 import javax.net.ssl.KeyManager;
-import javax.xml.bind.DatatypeConverter;
 
 import org.junit.After;
 import org.junit.Before;
@@ -130,7 +130,7 @@
             if (pem)
             {
                 kos.write("-----BEGIN PRIVATE KEY-----\n".getBytes());
-                String base64encoded = DatatypeConverter.printBase64Binary(pvt.getEncoded());
+                String base64encoded = Base64.getEncoder().encodeToString(pvt.getEncoded());
                 while(base64encoded.length() > 76)
                 {
                     kos.write(base64encoded.substring(0,76).getBytes());
@@ -156,7 +156,7 @@
             if (pem)
             {
                 cos.write("-----BEGIN CERTIFICATE-----\n".getBytes());
-                String base64encoded = DatatypeConverter.printBase64Binary(pub.getEncoded());
+                String base64encoded = Base64.getEncoder().encodeToString(pub.getEncoded());
                 while(base64encoded.length() > 76)
                 {
                     cos.write(base64encoded.substring(0,76).getBytes());
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabaseTest.java b/broker-core/src/test/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabaseTest.java
index 6e9925c..d741cbc 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabaseTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabaseTest.java
@@ -34,12 +34,12 @@
 import java.io.IOException;
 import java.security.Principal;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.List;
 import java.util.regex.Pattern;
 
 import javax.security.auth.callback.PasswordCallback;
 import javax.security.auth.login.AccountNotFoundException;
-import javax.xml.bind.DatatypeConverter;
 
 import org.junit.After;
 import org.junit.Before;
@@ -59,7 +59,7 @@
 
     static
     {
-        byte[] decoded = DatatypeConverter.parseBase64Binary(PASSWORD_B64MD5HASHED);
+        byte[] decoded = Base64.getDecoder().decode(PASSWORD_B64MD5HASHED);
         PASSWORD_MD5_CHARS = new char[decoded.length];
         for(int i = 0; i < decoded.length; i++)
         {
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2MockEndpoint.java b/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2MockEndpoint.java
index 61fdb56..6e80105 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2MockEndpoint.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2MockEndpoint.java
@@ -21,12 +21,12 @@
 package org.apache.qpid.server.security.auth.manager.oauth2;
 
 import java.io.IOException;
+import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.DatatypeConverter;
 
 class OAuth2MockEndpoint
 {
@@ -44,7 +44,7 @@
         response.setContentType("application/json");
         if (_needsAuth)
         {
-            String expected = "Basic " + DatatypeConverter.printBase64Binary((OAuth2AuthenticationProviderImplTest.TEST_CLIENT_ID + ":" + OAuth2AuthenticationProviderImplTest.TEST_CLIENT_SECRET).getBytes(
+            String expected = "Basic " + Base64.getEncoder().encodeToString((OAuth2AuthenticationProviderImplTest.TEST_CLIENT_ID + ":" + OAuth2AuthenticationProviderImplTest.TEST_CLIENT_SECRET).getBytes(
                     OAuth2AuthenticationProviderImplTest.UTF8));
             doAssertEquals("Authorization required",
                            expected,
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/crammd5/CramMd5NegotiatorTest.java b/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/crammd5/CramMd5NegotiatorTest.java
index 5bd686a..11e8e2b 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/crammd5/CramMd5NegotiatorTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/crammd5/CramMd5NegotiatorTest.java
@@ -31,8 +31,7 @@
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-
-import javax.xml.bind.DatatypeConverter;
+import java.util.Base64;
 
 import org.junit.After;
 import org.junit.Before;
@@ -309,8 +308,8 @@
         byte[] data = new String(VALID_USERPASSWORD).getBytes(StandardCharsets.UTF_8);
         MessageDigest md = MessageDigest.getInstance("MD5");
         md.update(data);
-        char[] password = DatatypeConverter.printBase64Binary(md.digest()).toCharArray();
+        char[] password = Base64.getEncoder().encodeToString(md.digest()).toCharArray();
         when(_passwordSource.getPassword(eq(VALID_USERNAME))).thenReturn(password);
     }
 
-}
\ No newline at end of file
+}
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/scram/ScramNegotiatorTest.java b/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/scram/ScramNegotiatorTest.java
index 48e6440..788c6e4 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/scram/ScramNegotiatorTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/auth/sasl/scram/ScramNegotiatorTest.java
@@ -32,6 +32,7 @@
 import java.nio.charset.Charset;
 import java.security.MessageDigest;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -40,7 +41,6 @@
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import javax.security.sasl.SaslException;
-import javax.xml.bind.DatatypeConverter;
 
 import org.junit.After;
 import org.junit.Before;
@@ -369,7 +369,7 @@
         byte[] saltedPassword = generateSaltedPassword(passwordBytes, hmacName, _iterationCount, salt);
 
         String clientFinalMessageWithoutProof =
-                "c=" + DatatypeConverter.printBase64Binary(GS2_HEADER.getBytes(ASCII))
+                "c=" + Base64.getEncoder().encodeToString(GS2_HEADER.getBytes(ASCII))
                 + ",r=" + nonce;
 
         String authMessage = _clientFirstMessageBare + "," + serverFirstMessage + "," + clientFinalMessageWithoutProof;
@@ -384,7 +384,7 @@
         byte[] serverKey = computeHmac(saltedPassword, "Server Key", hmacName);
         _serverSignature = computeHmac(serverKey, authMessage, hmacName);
         String finalMessageWithProof = clientFinalMessageWithoutProof
-                                       + ",p=" + DatatypeConverter.printBase64Binary(clientProof);
+                                       + ",p=" + Base64.getEncoder().encodeToString(clientProof);
         return finalMessageWithProof.getBytes();
     }
 
@@ -460,4 +460,4 @@
                                           Collections.<String, String>emptyMap());
         return configuredObject;
     }
-}
\ No newline at end of file
+}
diff --git a/broker-core/src/test/java/org/apache/qpid/server/transport/TCPandSSLTransportTest.java b/broker-core/src/test/java/org/apache/qpid/server/transport/TCPandSSLTransportTest.java
index 53d81f5..5c61df4 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/transport/TCPandSSLTransportTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/transport/TCPandSSLTransportTest.java
@@ -35,6 +35,7 @@
 import java.net.SocketAddress;
 import java.security.KeyStore;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.HashSet;
 import java.util.List;
 
@@ -43,7 +44,6 @@
 import javax.net.ssl.SSLHandshakeException;
 import javax.net.ssl.SSLSocket;
 import javax.net.ssl.TrustManagerFactory;
-import javax.xml.bind.DatatypeConverter;
 
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -143,7 +143,7 @@
     private void checkSSLExcluded(String clientProtocol, final Transport... transports) throws Exception
     {
         KeyStore keyStore = KeyStore.getInstance("JKS");
-        keyStore.load(new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(keystoreString)), "password".toCharArray());
+        keyStore.load(new ByteArrayInputStream(Base64.getDecoder().decode(keystoreString)), "password".toCharArray());
 
 
         final SSLContext sslContext = SSLContext.getInstance("TLS");
diff --git a/broker-core/src/test/java/org/apache/qpid/server/transport/network/security/ssl/SSLUtilTest.java b/broker-core/src/test/java/org/apache/qpid/server/transport/network/security/ssl/SSLUtilTest.java
index 85833c0..7498b6a 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/transport/network/security/ssl/SSLUtilTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/transport/network/security/ssl/SSLUtilTest.java
@@ -36,6 +36,7 @@
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
@@ -45,7 +46,6 @@
 import javax.net.ssl.SSLEngine;
 import javax.net.ssl.SSLEngineResult;
 import javax.net.ssl.TrustManagerFactory;
-import javax.xml.bind.DatatypeConverter;
 
 import org.junit.Test;
 
@@ -382,376 +382,376 @@
         return clientEngine;
     }
 
-    private static byte[] TRUSTSTORE = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAANAAAAAgAPa2V5c3RvcmUyLWFsaWFzAAABVutBZIkABVguNTA5AAAGHzCCBhsw"
-                                                                           +"ggQDoAMCAQICCQCrOvhXap7bYTANBgkqhkiG9w0BAQUFADBcMQswCQYDVQQGEwJVUzEQMA4GA1UE"
-                                                                           +"CBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxGTAXBgNVBAMTEGFt"
-                                                                           +"cXAuZXhhbXBsZS5jb20wHhcNMTYwOTAyMTQxNTE1WhcNMjYwNzEyMTQxNTE1WjBcMQswCQYDVQQG"
-                                                                           +"EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
-                                                                           +"GTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC"
-                                                                           +"AQCwc7RdXSWaFrtNp7RQ1YEh0n2S8VjtBosY5FB6BoNe2B14LyIVQqA/bmbgZJAfn2RTKnEcxyHL"
-                                                                           +"qM1PZThj2lyb9/mtvt2k4gRviP4/ZYbcrtByParZPERu7gmxe7eaJn7ghpqVY5zaJ96XQFSiSzNK"
-                                                                           +"6jBNswx2zMhMnLEzegXFbLL125K8B/++1dJNK2gB3o/M9692mygrJSvGwuPmDYcWQnzsyLPTYx0/"
-                                                                           +"Y+eNtnaBx+4NjsSLCvlp9G7pKqHiKb4agatLHNPyMubt600eV56xWeZ4ujvZgPuPmNhO0ogtZpFW"
-                                                                           +"tF7NrPSCbEXEMVhSgh9mrR1dyR5amEFWCvs23kSDtQZl895Z5CXm2GRAc10HYu5NJym4UE1utsAP"
-                                                                           +"nRhcJ7lOl/lnMfXG+rbn0fnBbh5zoXi32UcCkldNLbXn9fBSn17hRZ5TmXmGOpBxa7By8k+GRkGD"
-                                                                           +"ntQrWHIJdalI73c5Jne4W9NOkWKvTw5wKOUB9HGispvbrOXH9/Qfx/techw9qlK6WL3v7h9VE5w0"
-                                                                           +"+DXiDy4CGq19g9L+XAQq73AvROOTruiDFsPg5rqi4cZVEAhZbHAfe+s59ZOzGIgU5BXVtsmIyiK3"
-                                                                           +"wqQxOlsi6NNpdpv6FM8pQaOnq3tQr67R2xFmRQX6VBD+8X5xrpHNXVUR5VUJC3bc8d98J6Khi3RK"
-                                                                           +"uQIDAQABo4HfMIHcMB0GA1UdDgQWBBQdgOTsHaTNceb+faB5aBhus4mDyDCBjgYDVR0jBIGGMIGD"
-                                                                           +"gBQdgOTsHaTNceb+faB5aBhus4mDyKFgpF4wXDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZh"
-                                                                           +"dGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRkwFwYDVQQDExBhbXFwLmV4YW1w"
-                                                                           +"bGUuY29tggkAqzr4V2qe22EwDAYDVR0TBAUwAwEB/zAcBgNVHREEFTATghFhbXFwMS5leGFtcGxl"
-                                                                           +"LmNvbTANBgkqhkiG9w0BAQUFAAOCAgEAMR8mKY7ml9KrhnSMbvTauvuXNXT5hp0NRpmQc6Wt/Vyw"
-                                                                           +"V4BPVAPOz/KCmMj0tkz/LOSk5MbLxXfDDhQHA1zKPxYLM4DfObUhbJcsNo+HlC2EQ8vN4srqgNFv"
-                                                                           +"rY8yvfIgTILDUv02381njrz+GOLClSbLB7hcXvrIILENb72BwMv4QTIvXxYaJRa++s89I1OWe4f6"
-                                                                           +"CzseEIBQ2ezMsU4Qjgv6tfvgsn6K4tfpVLT4jeJkv7xZ6WAW6XKgEcDreVGm8E0/7B0E5IBFgfA3"
-                                                                           +"VOs78s5BGDccz/EFcnh5Knkhnj666Cbn4rhvI/CB+TMj5Qae18Qr3cV6j7pMpCNYwwHUT2/Aoygq"
-                                                                           +"/BxrKgDX0b8xlyiDqEgy4vHYdb1980FOkdK23z5Q2xVeTeCJDFNPa7oNwHj4d3znbR6QRGBIQHKU"
-                                                                           +"v7iKcWNdmtVjYV9MQvMM9BVcYxbg3KDpV9GWXpz19ZWYchfZJBGUCENPE55YKh7iyj9yAZ7opPDx"
-                                                                           +"JlyvDcEwwyl/N9I6KlhqubuI1i8arsFY+ouAaNNfElBMPeoU7ws8cq3C9+ek+vs8BT4p6Dkj7cx9"
-                                                                           +"kwugSW4mDKdlLwLDyfzEpIEpg/rjBtSE2DRLNfpr05MKcXsZX5RB33g0IpXVCBGLqRWFHLgNnUkv"
-                                                                           +"tT+ptmkwvMXQehAbwvWtelKQWr6tft8AAAACABBrZXlzdG9yZTEyLWFsaWFzAAABVutBb3EABVgu"
-                                                                           +"NTA5AAAF5DCCBeAwggPIoAMCAQICCQD5mUaCZSGVOzANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQG"
-                                                                           +"EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
-                                                                           +"EDAOBgNVBAMUByouKi5vcmcwHhcNMTYwOTAyMTQxNTQyWhcNMjYwNzEyMTQxNTQyWjBTMQswCQYD"
-                                                                           +"VQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNp"
-                                                                           +"dHkxEDAOBgNVBAMUByouKi5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNP8p1"
-                                                                           +"69NWypvWS5mwSYsEHL4ITE7p8Ym26bZTUT66yoY1gxH/sXE0VTSs0wea1Jf+VUrxk6hsMjtu9Z77"
-                                                                           +"0zXGrqpBS0KLrJcgAnLRatd8ZAGxakNeESXEIrVBly9MK4NrMtyDXlo/vZdsyTMMMyllPjTGvFcV"
-                                                                           +"4zZdH3MGo0Zh6pZjnXPlvDCII5w0m6oairCVpH73LmO6CfcIncYRgx94dQNLMR0tuxCuTZyvwyjd"
-                                                                           +"y2c/KQbNt+FIKQZJBozwyXPnSEEO7L3r8FqFw/fK1dWpyo5sc6M3tGjgNfCSpTJXy4qxiJPDi8RE"
-                                                                           +"87oEeQ97VEdzmsooMhLMnlCagJxO3nMtM28S/ahc5fjUQd9Gsw74G8bMAWvv5Dkt3QTRbHlQ4Mdl"
-                                                                           +"AMPF0117o4THujZpkSm0rCdvKCGFv7lZIyf+0p4HL5JwKjBZjHc8uXKp7CQtPh3UnZyHcqey48E6"
-                                                                           +"mQm3uv3YHPIzUTcWYDCEAyPchZnWoYZE2N5B5bzuPrRyckgTS3pOS7WiYUgUVE77stOgYcOsA/qJ"
-                                                                           +"44xqEXzPCR3OXPRLMCacRsnB/At+SnlZxzz5Gx9QOZPCibW7Q0kEHpf/Ct10aq2wLzNgqDx93xTx"
-                                                                           +"fcNc1glgH0ao+6lUyxX9q8jFJTtqzx00p/0yApFAVz/9/nKpHGLF7KqNgFhcHQiqIs1b5QIDAQAB"
-                                                                           +"o4G2MIGzMB0GA1UdDgQWBBRuPq5dd25CnI+IGzefyksqvejPEDCBgwYDVR0jBHwweoAUbj6uXXdu"
-                                                                           +"QpyPiBs3n8pLKr3ozxChV6RVMFMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYD"
-                                                                           +"VQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEQMA4GA1UEAxQHKi4qLm9yZ4IJAPmZRoJlIZU7"
-                                                                           +"MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggIBAIpiGjC1weE8zVxaSWLVc5yu+YZuGSvI"
-                                                                           +"NOJJRsyfotWVPMBBNmwYscTiYyjiweNqfHYTK/nNxmdm4qPeoyMpI8U11MUILTt6AL+JM6sR16qY"
-                                                                           +"Ij9PbXzOCJB8mLyZVFygKftPivfCM4xGsOvsH22uHCKYBbtQJJLjP9yIxeI6YAURz1goEivLzk9o"
-                                                                           +"dzFyxkOKe4uGzwEBqgU6fHrOC9WFIk4/pa/52o1dKly+ls14Nbq3wiGPOVZVVnbJGaQMNvibCUPv"
-                                                                           +"vHq2yeqNScpPzcoZyNeKdVXA75TIG/PltkS0k/KPX2fCSD99CnD98g2L+bGU9PFXG8MYaTOCnnKc"
-                                                                           +"Qp0j1Z9lYtQiXATfkfGr+IAnbLTBfvwzPlPT0j+4lBBjBwuLgZCYHVRs4JAVx92SUuLDoDl9akN5"
-                                                                           +"usuuhuh+thokwaDWRITAWX+r9aLLqyUmEydTL9RUe5WBWklO992cKack1UhQJzeNmVO1na5y/BIy"
-                                                                           +"O5touRVxmKDW39eXZ8vwmzTTSjqeqlMPGRe1Ll+L/LVVT9SD4XSVthJsUBAlhdW+a73iCGEJ+BZR"
-                                                                           +"o5CeE9V7GpSF6rrMN1o+4jZt3VCuOasUbvsRvKSuHiuyKoeG+OeNrINE8gOyPp6n+t1KQx5fRpQR"
-                                                                           +"s9naYIz5fC7sKye7N88QnVvWpA8Jq1S0nj9eur6RcUmrAAAAAgAPa2V5c3RvcmU0LWFsaWFzAAAB"
-                                                                           +"VutBZqYABVguNTA5AAAGLjCCBiowggQSoAMCAQICCQDb5QsXfWUWdDANBgkqhkiG9w0BAQUFADBc"
-                                                                           +"MQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNV"
-                                                                           +"BAoTBGNpdHkxGTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb20wHhcNMTYwOTAyMTQxNTIwWhcNMjYw"
-                                                                           +"NzEyMTQxNTIwWjBcMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJv"
-                                                                           +"dmluY2UxDTALBgNVBAoTBGNpdHkxGTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb20wggIiMA0GCSqG"
-                                                                           +"SIb3DQEBAQUAA4ICDwAwggIKAoICAQDFvK1eaYndkaHMzGeSfJ+Q8kI0yoh7hFWaQ7DaGBZuRQsi"
-                                                                           +"mcesWBcV6bPnMnnpDVgM73GlcP54NmghNa7jZXInLF4/HVrr4uYbeeN5idU4bm39FdctffxTQVnN"
-                                                                           +"qxUOOBkH3hIhTJvIuTJS11P3x7U6FhnkTkkS38pNtqLaedX+fGHte/J0K1YTDcjE27pp0rIVf/to"
-                                                                           +"9q3PEsjcRGUWx+aENml9ldLSzTn5PJZnnoPGljeaR2zvTIhh8OiOTDlXXwtuQvP8EYQvtV1KJn0w"
-                                                                           +"qYPaepOyDub0dlWRQ7RO73rsgktfdSEad4bKOvAyViGtaXSIS5TQ9UExWRFb54xFfW4Szjp8TBDE"
-                                                                           +"zrEJHzzUSMJ3PY9wGKtYqDHi5W3ic28dIus17uBuUSvcRka0cpYeWAeR8imI56AFsiCom/VmJZs0"
-                                                                           +"IbCMZghWKNnCiUPzfuRrS5rB7ph0iMzfZfoNW/UCN/xLbZfNQtYqyWexee23q03hhIgTkh27vgH9"
-                                                                           +"qWJFRYb2GeusIkRBif1Ih1SsG6+f4KHqcf0OnYVP0kInq11CzXAMZeuafhlnUy0ofQ1L0Bqz7g+b"
-                                                                           +"LhZg3NYhio1U+en5bRJPy8cavazeXmK52DVyqwByOcV9sM/myujtnUapVFwtFytBd3jnUWtpv3B/"
-                                                                           +"DqDKX0/Sl781QHBBIhc8laSQ278gnQIDAQABo4HuMIHrMB0GA1UdDgQWBBRiaZMkFmQQvhV94s8p"
-                                                                           +"gfTqTYkwjzCBjgYDVR0jBIGGMIGDgBRiaZMkFmQQvhV94s8pgfTqTYkwj6FgpF4wXDELMAkGA1UE"
-                                                                           +"BhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5"
-                                                                           +"MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUuY29tggkA2+ULF31lFnQwDAYDVR0TBAUwAwEB/zArBgNV"
-                                                                           +"HREEJDAighFhbXFwMS5leGFtcGxlLmNvbYINKi5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQUFAAOC"
-                                                                           +"AgEAqa2GUD8L6P2roEoE1R0y8EzmIjjqQOLrHG89PFIRjj9jJbzSNKqVP9T8qUUepIF8Df2PLCKB"
-                                                                           +"jhCV/t1+q8nVBV1gX/x8Mz905Vda1XdxKTYJp88OuoRl1FFDpXZBskaH4X9ynKx6GKifqofR/7RD"
-                                                                           +"r7swguZN2xDVnPVMZnTSI5eYGnrYJH8c9Kbmz40KJbF8Codk/L/3i3uhjGgLVp/TqYSYoTCn0zxa"
-                                                                           +"5rHFMq2HaWPyoj7ms9Be9v8DmoQ4n4bsSLMEVaXIPfuBYChZwblT+qp8bGCJGFBXf41Ng5/CNYqB"
-                                                                           +"Uo8ZrhU5tvAGl5hd6AlhtUEN/ldZFGqp9OipdEqfOeT3Akm3xot0EHOhqzf1ckWV3nUa4aPVtetm"
-                                                                           +"sFN2LHsy8xq/PPH2hFjZw2OUiycI+BQdM77r4dGWPNolFzKsTOBre1lTWKxoO+oZicZ1HfQbftvJ"
-                                                                           +"Z+c3iXzQwoEC6eKkWriJbn2VKzrqx3an3hWk9YFCid3HgM/FbFMcJ2yW7YRDVmosNNmIEbeUebXW"
-                                                                           +"ds6EnQ95X3R8a9zQJYQ3XwKtzFpV87yhrwIGIW5EYC6PQHF1yKlYZASFdHVpdt92LpZSfITTyYMj"
-                                                                           +"gPYmC82HAaT9qnwHK96pa1nMhAmKpE6VIwhW2rNa5HvJ6xY6/D1GNbp0FW3Pgs67rDnEoFwnX+N/"
-                                                                           +"lQIAAAACABBrZXlzdG9yZTEwLWFsaWFzAAABVutBbSUABVguNTA5AAAF+DCCBfQwggPcoAMCAQIC"
-                                                                           +"CQCnthdI64QDMjANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0"
-                                                                           +"ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxFjAUBgNVBAMUDSouZXhhbXBsZS5v"
-                                                                           +"cmcwHhcNMTYwOTAyMTQxNTM2WhcNMjYwNzEyMTQxNTM2WjBZMQswCQYDVQQGEwJVUzEQMA4GA1UE"
-                                                                           +"CBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxFjAUBgNVBAMUDSou"
-                                                                           +"ZXhhbXBsZS5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDHZRqoukGFLZeBPhr0"
-                                                                           +"G2i8SVCN9d5j6/p6nRFb5CW3/+zgs5+mC5aSKV3v+P7tztDLdePK3iGe/koR6F3olRmi1KZEJS9K"
-                                                                           +"E1fYuI5bd+vLIcOCfPSyjmYdXI/lD0p8Ii+lHlaZOG4wYAWwrnsLKCEm9+jR3Ba+qt5ubuW5gWlL"
-                                                                           +"pJxfAljQ2MDCMYXRWAgYgmhAiA6LiFEU/2vK9pfCIgMQuCnI/qDlyxUtllcgRrdUCSTPJldogoTk"
-                                                                           +"S3eDrT1sDqabA//EOWF8NCcSExAkVnw3+SumcOg3PevmIx5ul5F8re4kclmHzUOlTO0Tax+nDNmx"
-                                                                           +"mbYqUe9w23/FD2edzS/6Wrv6fAqexyblkXiIc/sMhts3chdAi51PsmQ6xaokrWrFpK1MTaUnH/jD"
-                                                                           +"ylpG3gxnvqjZDrpV3+feap2LHVQAHfXYkMUamyxCQ8P14BjfHbhwQeCr2g/Z4vxelQgcj14iej+B"
-                                                                           +"G5yRWMhSMAbNQJ0CpRBf7Y1bO1Fbu+FLHiwjygtxTQyNT3mPoVPQHys73HYl2pI2us72AzBAgFTb"
-                                                                           +"6qqzvbwhGuv/CXPI1P7kcM8x/fh5BE8ZQ0ixCIJMM4MP2Nnx6hxZFuGH8GP2sg1C8Kz3HK9DRF5N"
-                                                                           +"V6dH2OYIx7I3aQYVucW/IGJ9/zW7mkZS8Tb9WsLa6N6uo/PEVGh6nXZpgwIDAQABo4G+MIG7MB0G"
-                                                                           +"A1UdDgQWBBTssUOh+PFW+dL0Eh1THwBmZ4FvYDCBiwYDVR0jBIGDMIGAgBTssUOh+PFW+dL0Eh1T"
-                                                                           +"HwBmZ4FvYKFdpFswWTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHBy"
-                                                                           +"b3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRYwFAYDVQQDFA0qLmV4YW1wbGUub3JnggkAp7YXSOuEAzIw"
-                                                                           +"DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAgEAxk80rlNZiOk/p7bDW+DyMIz5HBQU1WqJ"
-                                                                           +"71eskKs8uccQ9tlFMuehd7GBw8ums5FIBWw/tCMHMhR1gcLvmQ8GX4iWHQwec8W6KXYzS/1Punje"
-                                                                           +"2D6Akiv1UjwWBYjUDr1tWpAAqdy647PhK4k1I+FELba1x9JB3yQTunjTyVTrzy2lGs41ImKloe5C"
-                                                                           +"fYh4rQLPP/jjeNYbgfUaXhufwv2qq6k/WnjmM3S67boC53P9vNgdz5EtizNusnhx4D83ecQ5SS8I"
-                                                                           +"G8PQZmN75jUg+xKaBtxr03AblGQRDoJQZdVyDGvjyX9cgOJ0lDzP77Ca6bmOj7qB6a6X2NWiF/pr"
-                                                                           +"Wc9fWF9Qehjs5xPmUxKfctTOZ2PEPvPGb7GrHK82arHCSnSu4/nL5b7mBPInp1gsb0mbo+gdwrwb"
-                                                                           +"6iBXTynXil1Y/fqGFGbNwOyteaqueEbRCdINyi4hCcatQSTLv8oAU6GEzXCelkP+iTx0Y9CEp1Rn"
-                                                                           +"qTOTiW++vBDTDxXp4XLmQuX2viU1fwpsb6hE2F2d3uqTBbYnVxA5T7VvMDL4B2r9wKzzXUfMsC1q"
-                                                                           +"m4hquq1YOmF0lQy5kFZvHePhFMWoMxuNM/PfScotvr0YoiZD4hKw2l3bqxSukbG9fEXZ1kM+3pXx"
-                                                                           +"hAZ6Tjt6B7GIub89FYqvCryWvKE2JE7v2MrjaiKY/UAAAAACAA9rZXlzdG9yZTYtYWxpYXMAAAFW"
-                                                                           +"60FoywAFWC41MDkAAAYPMIIGCzCCA/OgAwIBAgIJAPtyzK3J1z5DMA0GCSqGSIb3DQEBBQUAMFwx"
-                                                                           +"CzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UE"
-                                                                           +"ChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxlLmNvbTAeFw0xNjA5MDIxNDE1MjRaFw0yNjA3"
-                                                                           +"MTIxNDE1MjRaMFwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92"
-                                                                           +"aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxlLmNvbTCCAiIwDQYJKoZI"
-                                                                           +"hvcNAQEBBQADggIPADCCAgoCggIBAMP/qhHCCKyIF76WM0sFip5BvbJmZ0Tpxec9B4myGPT6TVBY"
-                                                                           +"X7zJhnBMYKwCdorwh93yL8Y7LakiVM1svbtlgO+blRewSQri0yv0bLSeTy0KDnQBVXzW4QA8o3jL"
-                                                                           +"CjFPFr9jP4dpr/pWGrBpgsF2/MYeVd9z6K0knSbGzb0tTjivYpffsKG68tmjmNyuB/8Cw5YyHKeU"
-                                                                           +"eIQNNygEekKF1Z/2D96NjcZSBVvImY/nSDcPa1joihhRWb0e7Tw8j0v5VMY8J6NDp9ShP9Z+ilGf"
-                                                                           +"SrzPkNrnyt+I+ULv07JS8b0Z2lr8WXsOEWt/38vO/58Rk0H4izE5T8LHs4fhwgyz0b79LOZO6NaJ"
-                                                                           +"ZVmYk2GeTFEcC0Bgdv0oJT957l6LwTHb59CczaXIQTAytp7QgqQGKiM7JmMFUJAUWj9bosp/Xjkq"
-                                                                           +"T/fiHv96nIXVCWex04vW44HsvS8V0Ylm6oZb1mghRx/3m1LLUvsG9UPaV2v4CeMLqhn7yENpCuot"
-                                                                           +"Pd6yofUyrKhj0vemVFIK0MAinaeAr2b13WRFZGM31eM5pccmBBjXiApCtfeONY+FZGcAl3RiQ3aR"
-                                                                           +"qqEWcMyMtc3gLU9AL9yJN5zQTggl/RtCuIWw7lIRwgANDBgrMNcEMfL61Z3y0Yvtzk2jT6Xj1epp"
-                                                                           +"dgREYpDcdtuxRX458bpYsIgAikZBAgMBAAGjgc8wgcwwHQYDVR0OBBYEFP72SKdmLnfWkWklsgZh"
-                                                                           +"f8M3R63UMIGOBgNVHSMEgYYwgYOAFP72SKdmLnfWkWklsgZhf8M3R63UoWCkXjBcMQswCQYDVQQG"
-                                                                           +"EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
-                                                                           +"GTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb22CCQD7csytydc+QzAMBgNVHRMEBTADAQH/MAwGA1Ud"
-                                                                           +"EQQFMAOCASowDQYJKoZIhvcNAQEFBQADggIBAERcEnWfm4Hkgptqoxityf41rzhhXVZx9wkx+rEA"
-                                                                           +"eAPBbtgNMlkahAvAEmEKCVziFAMCWtxCLKXE62Jq/VSfzuUI3ZoNAlnrplnZ17KQBq7eXcVA/jzH"
-                                                                           +"XM54KigkHSr5rAJPWDmLBdmr8dIzt3m+DSA5cFOfeiMadXWppP+hcWTtiKuPXSIRj5UKG05p5PnZ"
-                                                                           +"F4jaJJKS1++wNYswIw+SXPvC95kfi7deWyu7JnTLdj+C3wP51yWY8anOQEjR+ZEtegxsOOb/Lh3c"
-                                                                           +"/tQyO2tnqZyNG8emuO+zBPBhcIlRq64B0O+5QhMCEZYSov49ru/gCSQlEZX22zA++TcqLMkSAy2S"
-                                                                           +"7cfRPl0DxLJR0OKQZk0PVK2f78ZkhEArwg/ucO+3QE6GAAnYWO8PLdc8bh4BhmucJ5zOcsfYptMC"
-                                                                           +"CZA9aCDA+Vu1rpn84+JaOeLisNJkWha24ij7AMzzwu8uspPdujFthQbZ84cxaQtPZc3UN+X4EAVV"
-                                                                           +"RciN6++j9q1UXKjwvpv+3Fb5w6tjccaONGaMMAtxD6NsAC7r6qmomuTW9kqOlvcUV4Q5TM4/JJfW"
-                                                                           +"mQxixhMEGv9O08cGafCvOa+mlIyhQsxyAP9d+iEWwvMt/2m2uJDM2sLEQv8rIPf2nVfvewBT4Qik"
-                                                                           +"AGdK43vRq8eGXpJnCRCue4jBbxDGhY63ktsxAAAAAgAPa2V5c3RvcmU4LWFsaWFzAAABVutBavYA"
-                                                                           +"BVguNTA5AAAF+zCCBfcwggPfoAMCAQICCQDnwtsZrUgpuzANBgkqhkiG9w0BAQUFADBNMQswCQYD"
-                                                                           +"VQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNp"
-                                                                           +"dHkxCjAIBgNVBAMUASowHhcNMTYwOTAyMTQxNTMyWhcNMjYwNzEyMTQxNTMyWjBNMQswCQYDVQQG"
-                                                                           +"EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
-                                                                           +"CjAIBgNVBAMUASowggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpeguzUe0G+A/9FDCk"
-                                                                           +"TmxiDCkaiczYuIdXYXI9+llRwzR1UCYWYb7oVkcVsEPmx5+egDR4ceLDNPWiVK3OCPm6mlMIsFTL"
-                                                                           +"Wqn51q2bFOSR515ON3PmltpaLyWOjsCS3JxUemSDO+R30koavTIJU6x7UI1/jBJCHadx40oCxgh/"
-                                                                           +"kwz6FafUXxzEwOmeOT9xc4fY9cMhHXDtmH5VXoFOp3HkEmRvIrWvnnf/2Py5+hX9CtrkZLLmS7YD"
-                                                                           +"ZkYTKfyIK4WzKFA/pN1tUzWovC6P2HtpQ1mgDAJ1+xV/k2FC/ZKwBoz4bpr/aEBt3q2C1J8lMMQW"
-                                                                           +"YtyZSRnZMYilU5CITwhpFPJiDv8expe/JTwpFOMoZyj/pK8ZOzE+/XqdeE0VlFLtlqLc/wumc3KX"
-                                                                           +"xTtt8EFRdr8VxhrHn8Mt4eVBZJuU7Kw2rynRq6V+Cj8iQfyDUO4LJ1+aTQ42y+q8QwF15ISLP78g"
-                                                                           +"5vu82jB4A9Y/8+qdbU2jvG8vbraMJg380dbCqmDyc957UVH5CrbjYI9ji6romUtCXHzDdAkXTTKJ"
-                                                                           +"yXvjSgzFlPj3jkdY0TdLGiLpGmIU+1wznDN+UgufXEkUP+aoA9SF68jhaVHmZbQn2n45QgBbNkKf"
-                                                                           +"qREptcdEBPdu9527LlUmMTjCrY6Fcll2WcGgjS7Q/aAkjcS58Nouu5X9PwIDAQABo4HZMIHWMB0G"
-                                                                           +"A1UdDgQWBBTsWSVhrBtavY0Ssr4c7P0rNeSuFzB9BgNVHSMEdjB0gBTsWSVhrBtavY0Ssr4c7P0r"
-                                                                           +"NeSuF6FRpE8wTTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3Zp"
-                                                                           +"bmNlMQ0wCwYDVQQKEwRjaXR5MQowCAYDVQQDFAEqggkA58LbGa1IKbswDAYDVR0TBAUwAwEB/zAo"
-                                                                           +"BgNVHREEITAfghBhbXFwLmV4YW1wbGUub3JnggtleGFtcGxlLm9yZzANBgkqhkiG9w0BAQUFAAOC"
-                                                                           +"AgEAVkYBfdIAD9TmCTcV0FBTngsqNsZyl2RJ7wDeJddsY+4+MqHQgorq6a8m0XhVlFnEqFs0erbS"
-                                                                           +"o/RC/4KLkfb+QyUp5/c26tGDmi8iAvfxMGU1d15S+tApVjVCd6BUqxJCY1ol/YUBkdtWFg1kXSzk"
-                                                                           +"ukbFsoOVfDtfz4j7frv3xFxSTbn9QH63cQfEaEEaLPl1hW3BE6JcL6na3m15okQE0Is4nvedCfd/"
-                                                                           +"hY+30YTFy3T/DFv4AwX2/WQqI+VRA/me9Tq/orEmU0K+VrkSCxsLAqQh/1Ue81NPY0VeEFAwEjlU"
-                                                                           +"wOdaFm3oMOKxOxodS/Bt62ge/eDHvBAlh+d99n9qg6TQpH2FJHmxfX5ZEj9uclES5F0Yjih5tg+Z"
-                                                                           +"E6U/bjkx2ChwhmuPYXObLs/iUgic54snKotMBA9H3nX6f4yZS7sZmhHmjhatB8WOEtuX6wv8Eqqi"
-                                                                           +"O6pYoOth1wFKGNpmFm3xYSLriVApnHzrToxiaPS2N+bzguNrXveb3lLgku3w6Z/j2Inhi9kMS1/o"
-                                                                           +"lOIUCHYJb7vfDr0D4ELmS6LF/3Q4j3Pjf/InaoSSCr44N/MR4zJvWvZYBz3FuoT7Ov5sekgihisv"
-                                                                           +"Io5s7kRSnWkCHxV7b3i1HuyBhCWvtsr5PwlRu62aGHDx/zcFO45CHhA7nTg/H4LNYUKCXexuui6w"
-                                                                           +"tVQAAAACAA9rZXlzdG9yZTEtYWxpYXMAAAFW60FjggAFWC41MDkAAAYeMIIGGjCCBAKgAwIBAgIJ"
-                                                                           +"AN3n6RoioRdnMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRl"
-                                                                           +"MREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxl"
-                                                                           +"LmNvbTAeFw0xNjA5MDIxNDE1MTNaFw0yNjA3MTIxNDE1MTNaMFwxCzAJBgNVBAYTAlVTMRAwDgYD"
-                                                                           +"VQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQ"
-                                                                           +"YW1xcC5leGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKBCPc++0AiG"
-                                                                           +"TX01xBv7qh7o7XP9BGpmFJbduuCul5J4/5XyPVQTsUSQtPfi1uvoLDEyi/04OyGFqSbthWRxidUC"
-                                                                           +"BjWFANJeA/TPASPqsRH3NVNU1VtZq3B4Re87uP5jlFI07lsGnJcE93SKOP9LDsD8VwsbWgbn9BMz"
-                                                                           +"w++oKfb4640cqSTe/5ta628JKJ5jnrb4j/UndpQX2lBVyaYZ4yzgu/a5DZqPSO15fFUNK7kJfFuB"
-                                                                           +"LqMzIOcQwIe130Zh0lgbclIrHHuo1TC6LJg0HUCDdPjjEnRUqARV8NokawcXEGgknkiVHkm/FSfr"
-                                                                           +"UjK9GC3uKDkCpWw/2+r4uh1FFzhv0WUJV6byMXmsStaRW2Nwfe07vE/m9VpuKF+UVlXmJ5JlSInm"
-                                                                           +"PdaW2IzFUucOc5LMcjpCeYspKmQceSZgwKxM51ilc95FLmJgzKXsN63dwn8KPZh9QIRPy0p875C6"
-                                                                           +"o7ZjZb+K0kq9isS9avltSriojmDqe46LJASyxu9N++sAENVjUD+4FpZi72o4R8iDv1prIQULYyhw"
-                                                                           +"sWh/sfKdie5r7/wj3SJhiKYVE3veEvA/hevMJZn0byF1P/x0ofAKvcpl/sR3iAngDcV0L5NfH147"
-                                                                           +"hvsskxsOfy4YZXR7GB0H0zCETeGuKftTGLipQDRNegIIT5l570bQHAb4GoejWJdXAgMBAAGjgd4w"
-                                                                           +"gdswHQYDVR0OBBYEFIfno5y3gDsCxSLnZmJRxxGqds3pMIGOBgNVHSMEgYYwgYOAFIfno5y3gDsC"
-                                                                           +"xSLnZmJRxxGqds3poWCkXjBcMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UE"
-                                                                           +"BxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxGTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb22CCQDd"
-                                                                           +"5+kaIqEXZzAMBgNVHRMEBTADAQH/MBsGA1UdEQQUMBKCEGFtcXAuZXhhbXBsZS5jb20wDQYJKoZI"
-                                                                           +"hvcNAQEFBQADggIBAD2ZOIJPqaNQsobtSqB7oUTExHTJgMKaybjhiWfUYU/pv4EaDWckRFbo+fmz"
-                                                                           +"Dsi6Bmg8kWfPrbBBk3w0dVVtXK2mKGm3gv8URLmrpXMpbNcFqDNjNIbeM/VO5xgTQ1zJi1UtbBUC"
-                                                                           +"zA86E+ABm2PdssFqDz+TvsNt8gEqrSFfnmXGp2tohpoRvWN9gPK8BD1u/D3Jpj/TqG/MrZHF0ZDd"
-                                                                           +"WmtnCoQJq3j6kIEgHm87nrMABkrpUV8dB1Qw6/5pA2R9azjqa6/O/7AP8txBWVJpgdkMgpfqXMki"
-                                                                           +"UNiJUhxXxWnLNGNsJk2cFDR8haQGVmcG3B/dmk7G2N7XuEFq8jwstDXlRUDbTc/yieGdee5PYULr"
-                                                                           +"9cfdd9ljXQLYi/3uDdIOgBQArp4tPNqa/fgViJRRrtecJ6UEIt/FtFRapKyXLyiHEJgLIeT02dea"
-                                                                           +"v/DfecIPgQ9oS9SuAiRPWWh1MbY5I/QLa5P8kwDf4V5Dz0yU2vOkF37xBQmky/0gw0mRc4+RsxCO"
-                                                                           +"mc2oChaKxr4c1wqKChjEX/wOFeQM50JyGI37ln+2ma5ymSOc3nYTqJMBNApoctHKeGTMzT0xMCi7"
-                                                                           +"+j+F/sje6VtiEnpY6jMNtwDjSHjoigjhNeBAcJBm3YL53u+j8Nlj1l/pVCrTEwIkUzWDEXxseHaJ"
-                                                                           +"Pw3DC7mJ5QTzSRmgAAAAAgAQa2V5c3RvcmUxMS1hbGlhcwAAAVbrQW5UAAVYLjUwOQAABd4wggXa"
-                                                                           +"MIIDwqADAgECAgkA9QTGOPFAnvkwDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCVVMxEDAOBgNV"
-                                                                           +"BAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MQ4wDAYDVQQDFAUq"
-                                                                           +"Lm9yZzAeFw0xNjA5MDIxNDE1MzlaFw0yNjA3MTIxNDE1MzlaMFExCzAJBgNVBAYTAlVTMRAwDgYD"
-                                                                           +"VQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEOMAwGA1UEAxQF"
-                                                                           +"Ki5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCtKNS3OeXHsVOdxdgsRoY0QcrK"
-                                                                           +"O6AdzYrlRaiU+i1CzV25o/5Km9gAzleDUxLhZ4tVEn0DK5WQA5OB3qChnp6nujcRw4hd3hpjoIk9"
-                                                                           +"+GFFFsq4nmsG9dYU7wgOpd1nYADPlu3GXjep/Vnvk0OgsPtyQFQJcTb6nnKE3gen/L+XZplE4USo"
-                                                                           +"83RPwwMJZSE0JMLzyjS3FuKMbjOyeBeO3C2kRT/NB/KuFLsL/7iwEnnC5UAKynOJUNLvbMGHp2h6"
-                                                                           +"l9jHRw6Sa6pYIDy5nsvqN6LPcYNLH/UXz/ZzqqXeL5jBz3cVIdcweccTSpRI3+KWNYrPq8rkorJv"
-                                                                           +"iRUSXDHDMCmFop0YiJEtvDtgWz+ORNGtkdHuaqenkIfaPmVzikpTOvDWwOYrEuJ1IDETmDa7+MWl"
-                                                                           +"ikuScAbi8Ch/5cQ8Va7M5Zgr3sypsAjrrF51v4/ClP2bJ5ixQXqwFdJdKyNSnGIrX8CniwqqQ6FQ"
-                                                                           +"KPSve8LbTyW4AEGfvzR2TpqDztWGp9Ae1Jc5mHeOOn+6LE6f00CFyv1spdYtqBvfYeGeMXNXL1eU"
-                                                                           +"4ax3d4ODjgO8zow+fxsfhmmyQS1rvABF+NpuRS+B7ML7txOBgF+Ge2znHA/xawntGeEOz6Lqh3/V"
-                                                                           +"PLNvIq3ORDlc5baZ55oe0l4JIPBl3kUjy3Is1idGcKJXWV5D7wIDAQABo4G0MIGxMB0GA1UdDgQW"
-                                                                           +"BBQ6FKLROz5fTG10zxsxEzocTqGwPDCBgQYDVR0jBHoweIAUOhSi0Ts+X0xtdM8bMRM6HE6hsDyh"
-                                                                           +"VaRTMFExCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTEN"
-                                                                           +"MAsGA1UEChMEY2l0eTEOMAwGA1UEAxQFKi5vcmeCCQD1BMY48UCe+TAMBgNVHRMEBTADAQH/MA0G"
-                                                                           +"CSqGSIb3DQEBBQUAA4ICAQAvTuj+4fDSofGF/3puBhWPQfOn+HPL4IqYxzMsTfQ8o/k3SjMSQox4"
-                                                                           +"XvL13TxZNeZInrC+1NEUyPt+FtiVF/9XkHL1emActL7J4hyp/yTKi49+O5k+3Jl2kkXQHZQqrbTj"
-                                                                           +"Ja01muFFY+yZfakUHpDys7SKSC4xwrL8zVVoZ9gAy1fpTz8ERchdLe+B9QYLbeCYmX5jrP2NdtzG"
-                                                                           +"jPs3P1p+VhD+ankIgDgQksKuwfRHWsxK4/Yy2nM3Aj1Uxwa9xWT1abrF+q5zEiA8/uB4m9dM1+Un"
-                                                                           +"DNfh4TOdPvPrt8wE4uURTW+Jy2ahIIEx3V/vq5MFaO2IaHOoM94L51vbBS7ubg0z5HDXDVcKLoY+"
-                                                                           +"1Rfor7A8LNDbPB51N0539PiQfl8ilqxamSmFbpLLkMdum8rW1GXv05Z4boyjlCfUkNJGBPXLA/sf"
-                                                                           +"Kl7S1kBm4p2cl3H+b2QHaphKTNGSqq+5teSpebrh2L7F+FXjKxxwW0mfZNxWS1a7UKElD2Ova/Vn"
-                                                                           +"JNTjOJyCUjKx264PYbWmDW3pLYHlCD+crja6+yevgU1A+mndEL3tlhMAyVjewtu6fbtaZ3Dh9F8U"
-                                                                           +"ed5O4y1x/6I0OTC3a8AxEMsJDVb2PVJ2brqRw+faUdhMGG6VyhUbGa2PsTMfUQv30o+VFwai2bz7"
-                                                                           +"hoFWQqkbwhx4Z+eJcABwhAAAAAIAD2tleXN0b3JlNy1hbGlhcwAAAVbrQWneAAVYLjUwOQAABhQw"
-                                                                           +"ggYQMIID+KADAgECAgkA1F2rvQSQ7cwwDQYJKoZIhvcNAQEFBQAwTTELMAkGA1UEBhMCVVMxEDAO"
-                                                                           +"BgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MQowCAYDVQQD"
-                                                                           +"FAEqMB4XDTE2MDkwMjE0MTUyN1oXDTI2MDcxMjE0MTUyN1owTTELMAkGA1UEBhMCVVMxEDAOBgNV"
-                                                                           +"BAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MQowCAYDVQQDFAEq"
-                                                                           +"MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyHvSXxGgaT6RxGJ6hitvXcdFFrKVYB3G"
-                                                                           +"ad9kJ+yYEdDyDzZj6ONLWKGoMDWHinFTDBv5VE7+/WGhJ/MamVV8q3ri1D+QIOT2EI05d8dw+2KX"
-                                                                           +"qlFThGOdX5wgJ6mf+Kk+/stDzVGyH7DOGmSPyFF8hs0d+3kYlKiPxxu00SrYBCisuCTohKBYZ9O/"
-                                                                           +"YlKOBeW8+fzxxHb3RrcqEvJchf6gGD6/786iHnbMae5m3QM/bILNtiOPAtmFQRSlHscl4HDzp59w"
-                                                                           +"Xh8l1nrfTzFpWRbro330cQqLdNAUoWCdQT3dnGTCuYjGdtIDiYrIkn2rM36/8rNkWJ7xauXKtaft"
-                                                                           +"LVAzzEcGEyh2bpUY1em3hdvt02BPpAj6DndE2Df3MsI+UNXO8VF3Ixo8xtw895j5iDFRfdn3NJdJ"
-                                                                           +"Shvvb+HO2WxOVBlOFI3jVE58MBOqXwf9VrDL69CU5gTlLu0IHAzZQS3+la6/lh0CMxHl5GRCaU6w"
-                                                                           +"xj42Dy2iNktYDN4h7C5bp/a4V791uep0Hf68ZHujQ1AELeuwo+m7y2xW9jiPaPZeGc3BCIGStD53"
-                                                                           +"wiqPJ6OYbnKOyu7UePkfmukX1oqHsVWF6bJuOXOiTPUDZ5x/xXckMHTO2sPZVslfALuzSJX2Xzy5"
-                                                                           +"ce1azOxeUWPdI5JTEecFn6TVFUaSdnmEv4chG9/SHiUCAwEAAaOB8jCB7zAdBgNVHQ4EFgQUktNt"
-                                                                           +"P40v3mCli8ZwjCPKA8xqtIswfQYDVR0jBHYwdIAUktNtP40v3mCli8ZwjCPKA8xqtIuhUaRPME0x"
-                                                                           +"CzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UE"
-                                                                           +"ChMEY2l0eTEKMAgGA1UEAxQBKoIJANRdq70EkO3MMAwGA1UdEwQFMAMBAf8wQQYDVR0RBDowOIIQ"
-                                                                           +"YW1xcC5leGFtcGxlLm9yZ4IRYW1xcDEuZXhhbXBsZS5vcmeCEWFtcXAyLmV4YW1wbGUub3JnMA0G"
-                                                                           +"CSqGSIb3DQEBBQUAA4ICAQBIzOZuOHYdlFTfe3PePMgMZ80FSws/7MDmrpsgDKa07ocN3PY0D84y"
-                                                                           +"0W6rXsD1kACqg7y5+gw2qz81kU8rYGtKRoB+1oFPz0Dpi/pIYq+nzyT/k3gRa68ef/CyX9BIa1xu"
-                                                                           +"zzMAaIEvgvjAhwmIdrkBaE5MHgxCYRQy6/M6zwONelZHyCNs2ryPsE61FuYHbgRFr9kZuT6cRlDM"
-                                                                           +"EJOzvbHX5iJCRJixSt+/yvdKtXkz/nSEGS+SHLrjggK3fKzIoYTRpQWDKXAHZUyebk8eShhpumEA"
-                                                                           +"UPGZNnYiiyJdfcpkFAzAZVzIrnvB/FiyFkfof56DhV4Gnq0r33n2eK1mJ6J1MCRyaMtEjVvujemr"
-                                                                           +"KmD16x4nZUI3zUtMHrbORuzjbmxl3apXdp96UyJKfbifnvoJ4N2yppiByWsHDkkmC/gbzmugaN4p"
-                                                                           +"v4QYQrMIBauAY8+QKoBRy25EkfZZ5hOqZQV0Odb4COfnhvUM2oBvGTz7xID8L0RyqfEdZ7gEgNOa"
-                                                                           +"C7EyzztJT8lXdu0Mm17JaisueFak9kt4aXYCUKM+GNniwj7Zu9njffzwmgCMiRZ/33hysih5iElN"
-                                                                           +"PNoN1OU5NHyqp3Z/YIbqp9TWTMEbs1BUEsnyDu5iTbVvvlLhfnHBipPAUdzL6aGIlfNMQ7U9wHaM"
-                                                                           +"0EtQgZ7nnQL7eQoW/I2/WwAAAAIAD2tleXN0b3JlMy1hbGlhcwAAAVbrQWWRAAVYLjUwOQAABjIw"
-                                                                           +"ggYuMIIEFqADAgECAgkAkXA0Ujw8haYwDQYJKoZIhvcNAQEFBQAwXDELMAkGA1UEBhMCVVMxEDAO"
-                                                                           +"BgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRkwFwYDVQQD"
-                                                                           +"ExBhbXFwLmV4YW1wbGUuY29tMB4XDTE2MDkwMjE0MTUxOFoXDTI2MDcxMjE0MTUxOFowXDELMAkG"
-                                                                           +"A1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRj"
-                                                                           +"aXR5MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC"
-                                                                           +"CgKCAgEAz4LAVVvnf2ViPH9rqe2t5IpfmDRlERi0qsvR7nFQtQO2KBVp/8xSAujZeMA0H9RHLeWZ"
-                                                                           +"PnfuCLDPJyLoPofGHnI2O5Dr9+ru+Lw+5KxgAr6ZWcHVNtfwbGCvjYIDmuChNUuV2PEJBZmmgdTB"
-                                                                           +"iOyrVKPNV30TOkqFkTviOgDfwFcAUC7RNO9GEmZa8s7emyJkWmogeDlcHoCAtydqLy/1nA7tq8f6"
-                                                                           +"KowrwxFftU9CsvmchQaqQiFtBFClZu/GVT2s7mKdI1VBzmY1NPxelzlc1GNxzQh8Ckj91n9dXz00"
-                                                                           +"MFhMI8OnvEWdKue5zfteoV+pmObwX5e6W24MjA42Urco6S8JoaOFuOsFAhara4Xr7JiKzMH8AEyz"
-                                                                           +"CnBQj+FOOIfEkEn0gpWsJMts83w+9EFkMNgNziG3icLt0//kZaUuE2qms5OYN+GebqVbaa6KhKon"
-                                                                           +"hOgDgS9uPxz2xTpU53k27kI7ZJe60YwcJb7jr+lmIeUjpwLFd6oCMfdjvYBCiUYXhzTuv1CKQByv"
-                                                                           +"iLgRT+6OYZzUk27rsqxR96KVIB1cW+7HBAfYmBUhA/s3jawKxGCb4XTramN53ONfWxOJaWjQ5B5z"
-                                                                           +"u9xtwY3451xtMW7jfjL6ggAkJks+AyZ4XXVdJTfgJiaTFOeiPq4Q++ioWwLVQVxv2ZXQKts1cpFz"
-                                                                           +"t7LJhYcCAwEAAaOB8jCB7zAdBgNVHQ4EFgQUvCJ0sdBYkSRtfVkttqS2baHLgtMwgY4GA1UdIwSB"
-                                                                           +"hjCBg4AUvCJ0sdBYkSRtfVkttqS2baHLgtOhYKReMFwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdw"
-                                                                           +"cml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5l"
-                                                                           +"eGFtcGxlLmNvbYIJAJFwNFI8PIWmMAwGA1UdEwQFMAMBAf8wLwYDVR0RBCgwJoIRYW1xcDEuZXhh"
-                                                                           +"bXBsZS5jb22CEWFtcXAyLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBBQUAA4ICAQAfMx8vAkjnLQFc"
-                                                                           +"GePtafiI57+M/arx3Me2upoNuaAYK/WMkxvWksqF2+rOjPIvXp95O9gakKlqhvOuFUHzPv5QQzOp"
-                                                                           +"wKIicsXnztNoSwBM9WGTe2uyxNqbStUX2VND21GvrjmsB8dU9ZyShkHfNlMY8HXLeWKA5nvv14wK"
-                                                                           +"ymg6MWQbIiR9yqdhxTv/KKX0ryT/uLabM+2zImCjhSRfYR+8YrSxf89otmPKoS29XJ47gMEtQveL"
-                                                                           +"rA8k/5l1DAGoDx04lsnbT486Hbj6cSaKdtJOQQwLLA9xEnwcReeXJ5eigyvKIreQ4bnwG04CQ35k"
-                                                                           +"efdtcOYCS44IeA4AwJLDukoiFu84NH1CegNbQModa8heVN3wOos0LMijmpKYfUf8by8C7V3Yq3B0"
-                                                                           +"OSo3NkzTHpuhpkiMSutpGaNRBRmGvHbSzuf6WWKxPNChyTtIjQ4Z5Y2ogBvoqL1atE+Zhwu5mPHo"
-                                                                           +"DvZTd8G46k8PFTTDYQ7MKBGgRdIVffBOEy0Xn31mqkgjSGwJuHB2pkYVRZ8mB8Y8mDgchmYtbhY/"
-                                                                           +"fyiXYKX/HYzAVqbZm4OzxsfwkhavdTSbynt7/hP0dT8gC0XxqHSeWg8wvYYXzb20ennUEcovf3YH"
-                                                                           +"8J73vbfSXjm36P3vs/dqKUhazXpsAIujkhRrk+EMAdi024AKvpHQr4T5UQpWuwAAAAIAEGtleXN0"
-                                                                           +"b3JlMTMtYWxpYXMAAAFW60FwnQAFWC41MDkAAAXRMIIFzTCCA7WgAwIBAgIJAK0AE8CfFEluMA0G"
-                                                                           +"CSqGSIb3DQEBBQUAME0xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhw"
-                                                                           +"cm92aW5jZTENMAsGA1UEChMEY2l0eTEKMAgGA1UEAxQBKjAeFw0xNjA5MDIxNDE1NDVaFw0yNjA3"
-                                                                           +"MTIxNDE1NDVaME0xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92"
-                                                                           +"aW5jZTENMAsGA1UEChMEY2l0eTEKMAgGA1UEAxQBKjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC"
-                                                                           +"AgoCggIBALJfiVCXHtyDg+yTZVp/x4FnGvDCAIEBzq3WnziCUF6paMyWlHWctM57Xab63v+A2A68"
-                                                                           +"ey6K1RNhQX38ESU3rdmG+Kq+nNaMRnynkbEFN26XSq5xV2sRq4KH/cEosfU76RsNUXdPDx+XPjG/"
-                                                                           +"itr6kuHUCKMGSXlDqiyU3uH+v2e67JM4+Fu/RY8pHLCTO5IrSjDAkHPSvItN2WEz9xqHqTzZQ8ob"
-                                                                           +"97UMCQsK5xCF897vrQfX0rS5izk1Hsd5Psz0vtotIMzi3R2A8JVaoKryjaoCndxc6IswX96W3Bez"
-                                                                           +"pUTUIIpiAfXDeNfvYSHfKHr83WCIsU5+Gu62YuQbZMJX9dDdmlAOFRdfla8oePTkiO2+5xwt6412"
-                                                                           +"E1K7P4guoDA191qwXj/UIIwoA4hFnmPtCkOEf5HPytxvGdP3ssZ+Wx+ZFx3vaBAw2HtBaDrUW1Wf"
-                                                                           +"BgOGtOYjivDho7Vkt8Ap3mToIGqkJrwWc+oEOu9926KZFKaMzE7ve0fIpAXKhYMIZZGOmr/wi1v2"
-                                                                           +"eqD5H4gXS+XYoKjKV/39NsvL7nJnSxaqrqvW8Ja/SbN4ps+nRvpDQC2/rLG8ZUN5J0IcYSGdXsyx"
-                                                                           +"9yvYGicS78vzdYjwyJzCJuINhfFRJDVXitgSpD2AjJHlrb3XSJ4ypj3auZ6KIUXhdq7cS+XNABwu"
-                                                                           +"rIodnQU7AgMBAAGjga8wgawwHQYDVR0OBBYEFDUXFvr89Rzmep0MGf81gNIXINXyMH0GA1UdIwR2"
-                                                                           +"MHSAFDUXFvr89Rzmep0MGf81gNIXINXyoVGkTzBNMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJp"
-                                                                           +"dmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxCjAIBgNVBAMUASqCCQCtABPA"
-                                                                           +"nxRJbjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBlkCIxCpbTRfoo7u49oduXCj6f"
-                                                                           +"gtEo1H7U8hkwxrh9SvH58D8kRb9Siw6UW/zfF4kSlCETEVTegtH8KDGcyWN7Ef6zMVFK5ZpPpTtE"
-                                                                           +"rGlDyXw4Sasy1xNuYeHAFOWo8haCUybFXrykatkJf6p8KX6dfEA+p6nWSoCPY4Bh5gKFLxvTNc/B"
-                                                                           +"FtsfZQsIZKWQxL/qYGrn/TlmsDgyaSt5OMZQr4FQLEVGZ2Z0NN7AlTPDydUH58y7lbJv21sddK+S"
-                                                                           +"OUBIGErWjV83bFx4DX4FPHpOtK89/CYOSQccqmYLswmRPSjCINJ4UybxW118DnGp9v47kKx6+bna"
-                                                                           +"zOo4te//kjl0nv3ka0dMlH7gG/Q22fb7zL0aEI/HjHUsNoEtw9kQxW+V3Vx/ZdW8NI4cdRF4v/av"
-                                                                           +"5p1qM1/TVW93Vm2VnO+lSRB4MXE9jpc9AxSVSNX1Knyuso/rKxbwFmJkxy1gcfSCQnfP3LvNdgVV"
-                                                                           +"voq40bbRd1P28RSrGTOGSgILNGk7MGE7Fki2SL6RP9SRLE/5vdUyDHg8XUmpR+PlkN/MQvUdANZ2"
-                                                                           +"LyDObsKUdN4JvQarugCZ1vYicd4VjPY2IBHRRCIFlkeqgQ2PBR3NwJ4ppkby/384ojyEK9T/rcix"
-                                                                           +"pBPpDEQroikXliqWNGggU6kPPNLoUsoGUttt/fuDoao2JVU6uwAAAAIAD2tleXN0b3JlOS1hbGlh"
-                                                                           +"cwAAAVbrQWwDAAVYLjUwOQAABgEwggX9MIID5aADAgECAgkA/fDYO6N4ERQwDQYJKoZIhvcNAQEF"
-                                                                           +"BQAwXDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0w"
-                                                                           +"CwYDVQQKEwRjaXR5MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUub3JnMB4XDTE2MDkwMjE0MTUzNVoX"
-                                                                           +"DTI2MDcxMjE0MTUzNVowXDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcT"
-                                                                           +"CHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUub3JnMIICIjAN"
-                                                                           +"BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0BRKztgdwAfnvwCarRJA1jPCL7VE7HKAvH+efmT4"
-                                                                           +"7/kqCptnPpPOcm7wRDgtNSA+IGqgxKhxLbCnl0cv58YCu1a9MJQLIqvDApSdKpPtCCCPQ8VYRCTm"
-                                                                           +"pY14m4EemKPbkSV+WluFK6tEQoYLz1yM5lAOP0A3q7sKxDv+IMOWKu4felcxo/gI3GWg50azh665"
-                                                                           +"O/mJobF/0RX0pxVziqbxJrmkQpHeYrBJlwqkhQQWFq1RtTCVYCn370An2w0ylhz8Z7J1RKOIV+Q8"
-                                                                           +"CDyFSPwV4Jy7PIDNvklJDPUDhuXW7xGdcaJuGTzq8LJywUhN8UAOK/mNkxVZDnmBJ806uhmhUglm"
-                                                                           +"9zIH0xt7G55EAk8gCTkMCn1iAK5DdK3KrgE64xjrb55MQZp2K+zgdGQFNGDSCPCTc2PDieTU4Y01"
-                                                                           +"AAAP6Ih86RRDuitCI7dsSIRnt7/aUAAm65dz1IwZX9AK+plSxpWuZ5ByZVEz2v7jqoAhV4zy9uqz"
-                                                                           +"FuyPC/JeSZMWtIZ0ZJ4QjOjle8RRDsdKcXsDa+Xy9we5OFK13k0azm4lT6uBE0OQcKLUG2HP6rWi"
-                                                                           +"C8DwPKo6RqkjFhkFd+9OGdsKgb5tSIkIfR/DIqDIyhr+LGnwRzHXnMNZXHgmKdiUXXpR60ZRilPq"
-                                                                           +"QEyFp0VBM8hukq5GJ6suZNcPdKL5iyJByFECAwEAAaOBwTCBvjAdBgNVHQ4EFgQU6xXwdAL2OYyF"
-                                                                           +"GNI8gvEFQ8xAIgswgY4GA1UdIwSBhjCBg4AU6xXwdAL2OYyFGNI8gvEFQ8xAIguhYKReMFwxCzAJ"
-                                                                           +"BgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChME"
-                                                                           +"Y2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxlLm9yZ4IJAP3w2DujeBEUMAwGA1UdEwQFMAMBAf8w"
-                                                                           +"DQYJKoZIhvcNAQEFBQADggIBAGrk/bfEx5v4bkAtwLrajrI2ZUfM7pe3FOdxdtuWqCUgOuHovhmc"
-                                                                           +"AhPcitgBexMaGRySYi2XZFhCw3gAt/eGgb6J/DeEU7QaYU29QiVJKV7xi31OIuld8ZWYIIrUYpem"
-                                                                           +"L5QKYPi9Rp4TyJM2NOaxGmmQyMlRfSh8KgzGfd990z8Ebqv31bIGAVGKCZZzHNLok1xFF5qRclri"
-                                                                           +"twBqaID8yTFGxxQ9BJNN0cX0FjzAg6ZvpGYE7BDSS2suQT5aO5rGKfY/sGbm+lzCis2V2ggwQSSw"
-                                                                           +"cNkCuSNgytaHc6BD7n5l7wm0m9ZoAM9AG9/iWBD8NwW/fDKfiAxXNdvxeGpLrJwZmyvf+YziagWg"
-                                                                           +"U/R+Q2/pxVVWxT5ON3vpOcv4YA/DCXbppiEAHx59h2cI+z4BUUlRmyFwSJZPD1oYWT2Y+wJjbIqK"
-                                                                           +"ixGm5YpaFzOa7og0IzlZICn4Kea/r1Y2no4ZGHL6IcIjftgAPbF7XGZqrDMdte9veA8Cc9T+U60v"
-                                                                           +"TMyUvyolIJsBtztyICj8WaZWdmd0iCHA3IefepwdW9zG5qcIxBhWuVTrYjloSl/fdoKCSZkQYxph"
-                                                                           +"TVK4ngqvl9Z5N96/rIjmTKwTmJ2XV/Slp3OKrpp7gGv47G0C05umNvrEoAoOPY6GJNdD/uJahuH7"
-                                                                           +"dC6g1c2tRd3UU1D5VjvP4Td2AAAAAgAPa2V5c3RvcmU1LWFsaWFzAAABVutBZ7YABVguNTA5AAAG"
-                                                                           +"HTCCBhkwggQBoAMCAQICCQC6gQnNeaWpszANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJVUzEQ"
-                                                                           +"MA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxFjAUBgNV"
-                                                                           +"BAMUDSouZXhhbXBsZS5jb20wHhcNMTYwOTAyMTQxNTIxWhcNMjYwNzEyMTQxNTIxWjBZMQswCQYD"
-                                                                           +"VQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNp"
-                                                                           +"dHkxFjAUBgNVBAMUDSouZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC"
-                                                                           +"AQDJQHx065CB4RrCR4ivSxdoIswDTQ2MFdcsP9wYZeMyUB23qsvRhNtmX02CPeYqOZsTJSOWjg/x"
-                                                                           +"e1XP8QsO939b7vqhS3w1JJQdCTlYTuPSoUhAnkUjkSpruukM/IzB2dPl3x5ZVwYHCqHFDnXNYjhm"
-                                                                           +"kCH9Dgsge7h1MnsSOIoSyamJl61Cfj5M7VZMAXyZchZbfc6MPXEsaxDnzVb7n/r6NuaPRpmgs8O2"
-                                                                           +"WrjQ5/BaPTHkF5/7dsQH1j6v/XurwF5/yPYBzvzHFBEZwwiZCXXXi24EeUqjS3MBK2k55qVZwEn8"
-                                                                           +"UWOHPksAN/dp/LT2QKNQAG30nLFlJ7XtBbEVpDqEhpAmTfzP/ri8XfTBBiG7xGrTay1cLeeudSWl"
-                                                                           +"CgU+hjQWkGeGu41oW6G/2mi4TIZw91pI+F0+8P7cufW/tK0nXVHLseCXPXW54455ieH7Z4SkdD0m"
-                                                                           +"6ykrOXpRTBlKmAWEGHHAQmmtTWZkHWqrFR8wiwYi3dvrIXqbcPe85+wxh6o8fW/v3JhkLnH25A4r"
-                                                                           +"TFl8xh+zzMxcmD9WEXItS3AAsUnQ8ALBv6D3gkGt8UZSc3IyrJZu5gRpW/e7QFEzhySot9WUDlG0"
-                                                                           +"TdeKIxJm8gm1GDuwNCVFYmBXpFeplwPGZHZQORuAe7HolPqmTkdJ8qdN6UevSDghM6Jk9CwjljV5"
-                                                                           +"ZwIDAQABo4HjMIHgMB0GA1UdDgQWBBRISQpA420Ivhyq/i5TI+wAWPPvZjCBiwYDVR0jBIGDMIGA"
-                                                                           +"gBRISQpA420Ivhyq/i5TI+wAWPPvZqFdpFswWTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZh"
-                                                                           +"dGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRYwFAYDVQQDFA0qLmV4YW1wbGUu"
-                                                                           +"Y29tggkAuoEJzXmlqbMwDAYDVR0TBAUwAwEB/zAjBgNVHREEHDAaghFhbXFwMS5leGFtcGxlLm5l"
-                                                                           +"dIIFKi5vcmcwDQYJKoZIhvcNAQEFBQADggIBAKurURdQkpsdKaijtUZQPCz/YrpDiHocSseJ9jwj"
-                                                                           +"iHS2pkT4fweK2gVP9S52fzNyA03pBdXUg96nWQo8EKaRjV3pT53Yx7zW85QBYqfwd2qvVSKJhJYY"
-                                                                           +"Qvjx3lZa9wGksb4rkhms60hCL2A3Lf7x/tWhoAuyYrSCC8JjXVKEWJ5zNq/iKG7DJz0YcY9qgh6a"
-                                                                           +"qacTm9SapdyFxjyjRF2/GhC3U4OZPajThOYS5o441ShHrJO/I2IvY5C0Of+uWqCG6Qiw/Ob0zCjh"
-                                                                           +"/xNKzgj8IInVKC6YGj+Jonnn46/q3JvQmg6vhKqDZjJ+ias8vjHHYncNzxIs992+hW6XQwH2cZ4p"
-                                                                           +"TUwf7gBYdgti0w1+u/IEezEHH2O0+3GT5MaoEO51Zn9jyMqLbhqwqTlHNF2bCnX7cET3NS03fjf2"
-                                                                           +"NZZ5K9vEmhlMktNxdpuF1ld8Vbpj0I5jVKgWj5HHgdp0kB+8TEmF/kqiWWSLDR7xnzOs5A1V+9N7"
-                                                                           +"JRCNrWM8veSG/hQT74pBufplXlmBo2yJgl3DlS/R8IYsT0O6mY2MWISvFn1ALuKyl7ZPhNIooQ5p"
-                                                                           +"Dt+NVSxHZy1cXtvviEjF6AeKv1uldyyuwHaeTUsLb7IlHKu1Vjm9AMVGvsP2YPjU3HKlqBrWSRIx"
-                                                                           +"OkWni+D4VHu4dmpXokhHLRVDJmEMsf+hfdV3LJlvrOsAMkijCJBQWanfjR2IriY="
-                                                                          );
+    private static byte[] TRUSTSTORE = Base64.getDecoder().decode("/u3+7QAAAAIAAAANAAAAAgAPa2V5c3RvcmUyLWFsaWFzAAABVutBZIkABVguNTA5AAAGHzCCBhsw"
+                                                                  + "ggQDoAMCAQICCQCrOvhXap7bYTANBgkqhkiG9w0BAQUFADBcMQswCQYDVQQGEwJVUzEQMA4GA1UE"
+                                                                  + "CBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxGTAXBgNVBAMTEGFt"
+                                                                  + "cXAuZXhhbXBsZS5jb20wHhcNMTYwOTAyMTQxNTE1WhcNMjYwNzEyMTQxNTE1WjBcMQswCQYDVQQG"
+                                                                  + "EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
+                                                                  + "GTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC"
+                                                                  + "AQCwc7RdXSWaFrtNp7RQ1YEh0n2S8VjtBosY5FB6BoNe2B14LyIVQqA/bmbgZJAfn2RTKnEcxyHL"
+                                                                  + "qM1PZThj2lyb9/mtvt2k4gRviP4/ZYbcrtByParZPERu7gmxe7eaJn7ghpqVY5zaJ96XQFSiSzNK"
+                                                                  + "6jBNswx2zMhMnLEzegXFbLL125K8B/++1dJNK2gB3o/M9692mygrJSvGwuPmDYcWQnzsyLPTYx0/"
+                                                                  + "Y+eNtnaBx+4NjsSLCvlp9G7pKqHiKb4agatLHNPyMubt600eV56xWeZ4ujvZgPuPmNhO0ogtZpFW"
+                                                                  + "tF7NrPSCbEXEMVhSgh9mrR1dyR5amEFWCvs23kSDtQZl895Z5CXm2GRAc10HYu5NJym4UE1utsAP"
+                                                                  + "nRhcJ7lOl/lnMfXG+rbn0fnBbh5zoXi32UcCkldNLbXn9fBSn17hRZ5TmXmGOpBxa7By8k+GRkGD"
+                                                                  + "ntQrWHIJdalI73c5Jne4W9NOkWKvTw5wKOUB9HGispvbrOXH9/Qfx/techw9qlK6WL3v7h9VE5w0"
+                                                                  + "+DXiDy4CGq19g9L+XAQq73AvROOTruiDFsPg5rqi4cZVEAhZbHAfe+s59ZOzGIgU5BXVtsmIyiK3"
+                                                                  + "wqQxOlsi6NNpdpv6FM8pQaOnq3tQr67R2xFmRQX6VBD+8X5xrpHNXVUR5VUJC3bc8d98J6Khi3RK"
+                                                                  + "uQIDAQABo4HfMIHcMB0GA1UdDgQWBBQdgOTsHaTNceb+faB5aBhus4mDyDCBjgYDVR0jBIGGMIGD"
+                                                                  + "gBQdgOTsHaTNceb+faB5aBhus4mDyKFgpF4wXDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZh"
+                                                                  + "dGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRkwFwYDVQQDExBhbXFwLmV4YW1w"
+                                                                  + "bGUuY29tggkAqzr4V2qe22EwDAYDVR0TBAUwAwEB/zAcBgNVHREEFTATghFhbXFwMS5leGFtcGxl"
+                                                                  + "LmNvbTANBgkqhkiG9w0BAQUFAAOCAgEAMR8mKY7ml9KrhnSMbvTauvuXNXT5hp0NRpmQc6Wt/Vyw"
+                                                                  + "V4BPVAPOz/KCmMj0tkz/LOSk5MbLxXfDDhQHA1zKPxYLM4DfObUhbJcsNo+HlC2EQ8vN4srqgNFv"
+                                                                  + "rY8yvfIgTILDUv02381njrz+GOLClSbLB7hcXvrIILENb72BwMv4QTIvXxYaJRa++s89I1OWe4f6"
+                                                                  + "CzseEIBQ2ezMsU4Qjgv6tfvgsn6K4tfpVLT4jeJkv7xZ6WAW6XKgEcDreVGm8E0/7B0E5IBFgfA3"
+                                                                  + "VOs78s5BGDccz/EFcnh5Knkhnj666Cbn4rhvI/CB+TMj5Qae18Qr3cV6j7pMpCNYwwHUT2/Aoygq"
+                                                                  + "/BxrKgDX0b8xlyiDqEgy4vHYdb1980FOkdK23z5Q2xVeTeCJDFNPa7oNwHj4d3znbR6QRGBIQHKU"
+                                                                  + "v7iKcWNdmtVjYV9MQvMM9BVcYxbg3KDpV9GWXpz19ZWYchfZJBGUCENPE55YKh7iyj9yAZ7opPDx"
+                                                                  + "JlyvDcEwwyl/N9I6KlhqubuI1i8arsFY+ouAaNNfElBMPeoU7ws8cq3C9+ek+vs8BT4p6Dkj7cx9"
+                                                                  + "kwugSW4mDKdlLwLDyfzEpIEpg/rjBtSE2DRLNfpr05MKcXsZX5RB33g0IpXVCBGLqRWFHLgNnUkv"
+                                                                  + "tT+ptmkwvMXQehAbwvWtelKQWr6tft8AAAACABBrZXlzdG9yZTEyLWFsaWFzAAABVutBb3EABVgu"
+                                                                  + "NTA5AAAF5DCCBeAwggPIoAMCAQICCQD5mUaCZSGVOzANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQG"
+                                                                  + "EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
+                                                                  + "EDAOBgNVBAMUByouKi5vcmcwHhcNMTYwOTAyMTQxNTQyWhcNMjYwNzEyMTQxNTQyWjBTMQswCQYD"
+                                                                  + "VQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNp"
+                                                                  + "dHkxEDAOBgNVBAMUByouKi5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNP8p1"
+                                                                  + "69NWypvWS5mwSYsEHL4ITE7p8Ym26bZTUT66yoY1gxH/sXE0VTSs0wea1Jf+VUrxk6hsMjtu9Z77"
+                                                                  + "0zXGrqpBS0KLrJcgAnLRatd8ZAGxakNeESXEIrVBly9MK4NrMtyDXlo/vZdsyTMMMyllPjTGvFcV"
+                                                                  + "4zZdH3MGo0Zh6pZjnXPlvDCII5w0m6oairCVpH73LmO6CfcIncYRgx94dQNLMR0tuxCuTZyvwyjd"
+                                                                  + "y2c/KQbNt+FIKQZJBozwyXPnSEEO7L3r8FqFw/fK1dWpyo5sc6M3tGjgNfCSpTJXy4qxiJPDi8RE"
+                                                                  + "87oEeQ97VEdzmsooMhLMnlCagJxO3nMtM28S/ahc5fjUQd9Gsw74G8bMAWvv5Dkt3QTRbHlQ4Mdl"
+                                                                  + "AMPF0117o4THujZpkSm0rCdvKCGFv7lZIyf+0p4HL5JwKjBZjHc8uXKp7CQtPh3UnZyHcqey48E6"
+                                                                  + "mQm3uv3YHPIzUTcWYDCEAyPchZnWoYZE2N5B5bzuPrRyckgTS3pOS7WiYUgUVE77stOgYcOsA/qJ"
+                                                                  + "44xqEXzPCR3OXPRLMCacRsnB/At+SnlZxzz5Gx9QOZPCibW7Q0kEHpf/Ct10aq2wLzNgqDx93xTx"
+                                                                  + "fcNc1glgH0ao+6lUyxX9q8jFJTtqzx00p/0yApFAVz/9/nKpHGLF7KqNgFhcHQiqIs1b5QIDAQAB"
+                                                                  + "o4G2MIGzMB0GA1UdDgQWBBRuPq5dd25CnI+IGzefyksqvejPEDCBgwYDVR0jBHwweoAUbj6uXXdu"
+                                                                  + "QpyPiBs3n8pLKr3ozxChV6RVMFMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYD"
+                                                                  + "VQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEQMA4GA1UEAxQHKi4qLm9yZ4IJAPmZRoJlIZU7"
+                                                                  + "MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggIBAIpiGjC1weE8zVxaSWLVc5yu+YZuGSvI"
+                                                                  + "NOJJRsyfotWVPMBBNmwYscTiYyjiweNqfHYTK/nNxmdm4qPeoyMpI8U11MUILTt6AL+JM6sR16qY"
+                                                                  + "Ij9PbXzOCJB8mLyZVFygKftPivfCM4xGsOvsH22uHCKYBbtQJJLjP9yIxeI6YAURz1goEivLzk9o"
+                                                                  + "dzFyxkOKe4uGzwEBqgU6fHrOC9WFIk4/pa/52o1dKly+ls14Nbq3wiGPOVZVVnbJGaQMNvibCUPv"
+                                                                  + "vHq2yeqNScpPzcoZyNeKdVXA75TIG/PltkS0k/KPX2fCSD99CnD98g2L+bGU9PFXG8MYaTOCnnKc"
+                                                                  + "Qp0j1Z9lYtQiXATfkfGr+IAnbLTBfvwzPlPT0j+4lBBjBwuLgZCYHVRs4JAVx92SUuLDoDl9akN5"
+                                                                  + "usuuhuh+thokwaDWRITAWX+r9aLLqyUmEydTL9RUe5WBWklO992cKack1UhQJzeNmVO1na5y/BIy"
+                                                                  + "O5touRVxmKDW39eXZ8vwmzTTSjqeqlMPGRe1Ll+L/LVVT9SD4XSVthJsUBAlhdW+a73iCGEJ+BZR"
+                                                                  + "o5CeE9V7GpSF6rrMN1o+4jZt3VCuOasUbvsRvKSuHiuyKoeG+OeNrINE8gOyPp6n+t1KQx5fRpQR"
+                                                                  + "s9naYIz5fC7sKye7N88QnVvWpA8Jq1S0nj9eur6RcUmrAAAAAgAPa2V5c3RvcmU0LWFsaWFzAAAB"
+                                                                  + "VutBZqYABVguNTA5AAAGLjCCBiowggQSoAMCAQICCQDb5QsXfWUWdDANBgkqhkiG9w0BAQUFADBc"
+                                                                  + "MQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNV"
+                                                                  + "BAoTBGNpdHkxGTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb20wHhcNMTYwOTAyMTQxNTIwWhcNMjYw"
+                                                                  + "NzEyMTQxNTIwWjBcMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJv"
+                                                                  + "dmluY2UxDTALBgNVBAoTBGNpdHkxGTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb20wggIiMA0GCSqG"
+                                                                  + "SIb3DQEBAQUAA4ICDwAwggIKAoICAQDFvK1eaYndkaHMzGeSfJ+Q8kI0yoh7hFWaQ7DaGBZuRQsi"
+                                                                  + "mcesWBcV6bPnMnnpDVgM73GlcP54NmghNa7jZXInLF4/HVrr4uYbeeN5idU4bm39FdctffxTQVnN"
+                                                                  + "qxUOOBkH3hIhTJvIuTJS11P3x7U6FhnkTkkS38pNtqLaedX+fGHte/J0K1YTDcjE27pp0rIVf/to"
+                                                                  + "9q3PEsjcRGUWx+aENml9ldLSzTn5PJZnnoPGljeaR2zvTIhh8OiOTDlXXwtuQvP8EYQvtV1KJn0w"
+                                                                  + "qYPaepOyDub0dlWRQ7RO73rsgktfdSEad4bKOvAyViGtaXSIS5TQ9UExWRFb54xFfW4Szjp8TBDE"
+                                                                  + "zrEJHzzUSMJ3PY9wGKtYqDHi5W3ic28dIus17uBuUSvcRka0cpYeWAeR8imI56AFsiCom/VmJZs0"
+                                                                  + "IbCMZghWKNnCiUPzfuRrS5rB7ph0iMzfZfoNW/UCN/xLbZfNQtYqyWexee23q03hhIgTkh27vgH9"
+                                                                  + "qWJFRYb2GeusIkRBif1Ih1SsG6+f4KHqcf0OnYVP0kInq11CzXAMZeuafhlnUy0ofQ1L0Bqz7g+b"
+                                                                  + "LhZg3NYhio1U+en5bRJPy8cavazeXmK52DVyqwByOcV9sM/myujtnUapVFwtFytBd3jnUWtpv3B/"
+                                                                  + "DqDKX0/Sl781QHBBIhc8laSQ278gnQIDAQABo4HuMIHrMB0GA1UdDgQWBBRiaZMkFmQQvhV94s8p"
+                                                                  + "gfTqTYkwjzCBjgYDVR0jBIGGMIGDgBRiaZMkFmQQvhV94s8pgfTqTYkwj6FgpF4wXDELMAkGA1UE"
+                                                                  + "BhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5"
+                                                                  + "MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUuY29tggkA2+ULF31lFnQwDAYDVR0TBAUwAwEB/zArBgNV"
+                                                                  + "HREEJDAighFhbXFwMS5leGFtcGxlLmNvbYINKi5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQUFAAOC"
+                                                                  + "AgEAqa2GUD8L6P2roEoE1R0y8EzmIjjqQOLrHG89PFIRjj9jJbzSNKqVP9T8qUUepIF8Df2PLCKB"
+                                                                  + "jhCV/t1+q8nVBV1gX/x8Mz905Vda1XdxKTYJp88OuoRl1FFDpXZBskaH4X9ynKx6GKifqofR/7RD"
+                                                                  + "r7swguZN2xDVnPVMZnTSI5eYGnrYJH8c9Kbmz40KJbF8Codk/L/3i3uhjGgLVp/TqYSYoTCn0zxa"
+                                                                  + "5rHFMq2HaWPyoj7ms9Be9v8DmoQ4n4bsSLMEVaXIPfuBYChZwblT+qp8bGCJGFBXf41Ng5/CNYqB"
+                                                                  + "Uo8ZrhU5tvAGl5hd6AlhtUEN/ldZFGqp9OipdEqfOeT3Akm3xot0EHOhqzf1ckWV3nUa4aPVtetm"
+                                                                  + "sFN2LHsy8xq/PPH2hFjZw2OUiycI+BQdM77r4dGWPNolFzKsTOBre1lTWKxoO+oZicZ1HfQbftvJ"
+                                                                  + "Z+c3iXzQwoEC6eKkWriJbn2VKzrqx3an3hWk9YFCid3HgM/FbFMcJ2yW7YRDVmosNNmIEbeUebXW"
+                                                                  + "ds6EnQ95X3R8a9zQJYQ3XwKtzFpV87yhrwIGIW5EYC6PQHF1yKlYZASFdHVpdt92LpZSfITTyYMj"
+                                                                  + "gPYmC82HAaT9qnwHK96pa1nMhAmKpE6VIwhW2rNa5HvJ6xY6/D1GNbp0FW3Pgs67rDnEoFwnX+N/"
+                                                                  + "lQIAAAACABBrZXlzdG9yZTEwLWFsaWFzAAABVutBbSUABVguNTA5AAAF+DCCBfQwggPcoAMCAQIC"
+                                                                  + "CQCnthdI64QDMjANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0"
+                                                                  + "ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxFjAUBgNVBAMUDSouZXhhbXBsZS5v"
+                                                                  + "cmcwHhcNMTYwOTAyMTQxNTM2WhcNMjYwNzEyMTQxNTM2WjBZMQswCQYDVQQGEwJVUzEQMA4GA1UE"
+                                                                  + "CBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxFjAUBgNVBAMUDSou"
+                                                                  + "ZXhhbXBsZS5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDHZRqoukGFLZeBPhr0"
+                                                                  + "G2i8SVCN9d5j6/p6nRFb5CW3/+zgs5+mC5aSKV3v+P7tztDLdePK3iGe/koR6F3olRmi1KZEJS9K"
+                                                                  + "E1fYuI5bd+vLIcOCfPSyjmYdXI/lD0p8Ii+lHlaZOG4wYAWwrnsLKCEm9+jR3Ba+qt5ubuW5gWlL"
+                                                                  + "pJxfAljQ2MDCMYXRWAgYgmhAiA6LiFEU/2vK9pfCIgMQuCnI/qDlyxUtllcgRrdUCSTPJldogoTk"
+                                                                  + "S3eDrT1sDqabA//EOWF8NCcSExAkVnw3+SumcOg3PevmIx5ul5F8re4kclmHzUOlTO0Tax+nDNmx"
+                                                                  + "mbYqUe9w23/FD2edzS/6Wrv6fAqexyblkXiIc/sMhts3chdAi51PsmQ6xaokrWrFpK1MTaUnH/jD"
+                                                                  + "ylpG3gxnvqjZDrpV3+feap2LHVQAHfXYkMUamyxCQ8P14BjfHbhwQeCr2g/Z4vxelQgcj14iej+B"
+                                                                  + "G5yRWMhSMAbNQJ0CpRBf7Y1bO1Fbu+FLHiwjygtxTQyNT3mPoVPQHys73HYl2pI2us72AzBAgFTb"
+                                                                  + "6qqzvbwhGuv/CXPI1P7kcM8x/fh5BE8ZQ0ixCIJMM4MP2Nnx6hxZFuGH8GP2sg1C8Kz3HK9DRF5N"
+                                                                  + "V6dH2OYIx7I3aQYVucW/IGJ9/zW7mkZS8Tb9WsLa6N6uo/PEVGh6nXZpgwIDAQABo4G+MIG7MB0G"
+                                                                  + "A1UdDgQWBBTssUOh+PFW+dL0Eh1THwBmZ4FvYDCBiwYDVR0jBIGDMIGAgBTssUOh+PFW+dL0Eh1T"
+                                                                  + "HwBmZ4FvYKFdpFswWTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHBy"
+                                                                  + "b3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRYwFAYDVQQDFA0qLmV4YW1wbGUub3JnggkAp7YXSOuEAzIw"
+                                                                  + "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAgEAxk80rlNZiOk/p7bDW+DyMIz5HBQU1WqJ"
+                                                                  + "71eskKs8uccQ9tlFMuehd7GBw8ums5FIBWw/tCMHMhR1gcLvmQ8GX4iWHQwec8W6KXYzS/1Punje"
+                                                                  + "2D6Akiv1UjwWBYjUDr1tWpAAqdy647PhK4k1I+FELba1x9JB3yQTunjTyVTrzy2lGs41ImKloe5C"
+                                                                  + "fYh4rQLPP/jjeNYbgfUaXhufwv2qq6k/WnjmM3S67boC53P9vNgdz5EtizNusnhx4D83ecQ5SS8I"
+                                                                  + "G8PQZmN75jUg+xKaBtxr03AblGQRDoJQZdVyDGvjyX9cgOJ0lDzP77Ca6bmOj7qB6a6X2NWiF/pr"
+                                                                  + "Wc9fWF9Qehjs5xPmUxKfctTOZ2PEPvPGb7GrHK82arHCSnSu4/nL5b7mBPInp1gsb0mbo+gdwrwb"
+                                                                  + "6iBXTynXil1Y/fqGFGbNwOyteaqueEbRCdINyi4hCcatQSTLv8oAU6GEzXCelkP+iTx0Y9CEp1Rn"
+                                                                  + "qTOTiW++vBDTDxXp4XLmQuX2viU1fwpsb6hE2F2d3uqTBbYnVxA5T7VvMDL4B2r9wKzzXUfMsC1q"
+                                                                  + "m4hquq1YOmF0lQy5kFZvHePhFMWoMxuNM/PfScotvr0YoiZD4hKw2l3bqxSukbG9fEXZ1kM+3pXx"
+                                                                  + "hAZ6Tjt6B7GIub89FYqvCryWvKE2JE7v2MrjaiKY/UAAAAACAA9rZXlzdG9yZTYtYWxpYXMAAAFW"
+                                                                  + "60FoywAFWC41MDkAAAYPMIIGCzCCA/OgAwIBAgIJAPtyzK3J1z5DMA0GCSqGSIb3DQEBBQUAMFwx"
+                                                                  + "CzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UE"
+                                                                  + "ChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxlLmNvbTAeFw0xNjA5MDIxNDE1MjRaFw0yNjA3"
+                                                                  + "MTIxNDE1MjRaMFwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92"
+                                                                  + "aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxlLmNvbTCCAiIwDQYJKoZI"
+                                                                  + "hvcNAQEBBQADggIPADCCAgoCggIBAMP/qhHCCKyIF76WM0sFip5BvbJmZ0Tpxec9B4myGPT6TVBY"
+                                                                  + "X7zJhnBMYKwCdorwh93yL8Y7LakiVM1svbtlgO+blRewSQri0yv0bLSeTy0KDnQBVXzW4QA8o3jL"
+                                                                  + "CjFPFr9jP4dpr/pWGrBpgsF2/MYeVd9z6K0knSbGzb0tTjivYpffsKG68tmjmNyuB/8Cw5YyHKeU"
+                                                                  + "eIQNNygEekKF1Z/2D96NjcZSBVvImY/nSDcPa1joihhRWb0e7Tw8j0v5VMY8J6NDp9ShP9Z+ilGf"
+                                                                  + "SrzPkNrnyt+I+ULv07JS8b0Z2lr8WXsOEWt/38vO/58Rk0H4izE5T8LHs4fhwgyz0b79LOZO6NaJ"
+                                                                  + "ZVmYk2GeTFEcC0Bgdv0oJT957l6LwTHb59CczaXIQTAytp7QgqQGKiM7JmMFUJAUWj9bosp/Xjkq"
+                                                                  + "T/fiHv96nIXVCWex04vW44HsvS8V0Ylm6oZb1mghRx/3m1LLUvsG9UPaV2v4CeMLqhn7yENpCuot"
+                                                                  + "Pd6yofUyrKhj0vemVFIK0MAinaeAr2b13WRFZGM31eM5pccmBBjXiApCtfeONY+FZGcAl3RiQ3aR"
+                                                                  + "qqEWcMyMtc3gLU9AL9yJN5zQTggl/RtCuIWw7lIRwgANDBgrMNcEMfL61Z3y0Yvtzk2jT6Xj1epp"
+                                                                  + "dgREYpDcdtuxRX458bpYsIgAikZBAgMBAAGjgc8wgcwwHQYDVR0OBBYEFP72SKdmLnfWkWklsgZh"
+                                                                  + "f8M3R63UMIGOBgNVHSMEgYYwgYOAFP72SKdmLnfWkWklsgZhf8M3R63UoWCkXjBcMQswCQYDVQQG"
+                                                                  + "EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
+                                                                  + "GTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb22CCQD7csytydc+QzAMBgNVHRMEBTADAQH/MAwGA1Ud"
+                                                                  + "EQQFMAOCASowDQYJKoZIhvcNAQEFBQADggIBAERcEnWfm4Hkgptqoxityf41rzhhXVZx9wkx+rEA"
+                                                                  + "eAPBbtgNMlkahAvAEmEKCVziFAMCWtxCLKXE62Jq/VSfzuUI3ZoNAlnrplnZ17KQBq7eXcVA/jzH"
+                                                                  + "XM54KigkHSr5rAJPWDmLBdmr8dIzt3m+DSA5cFOfeiMadXWppP+hcWTtiKuPXSIRj5UKG05p5PnZ"
+                                                                  + "F4jaJJKS1++wNYswIw+SXPvC95kfi7deWyu7JnTLdj+C3wP51yWY8anOQEjR+ZEtegxsOOb/Lh3c"
+                                                                  + "/tQyO2tnqZyNG8emuO+zBPBhcIlRq64B0O+5QhMCEZYSov49ru/gCSQlEZX22zA++TcqLMkSAy2S"
+                                                                  + "7cfRPl0DxLJR0OKQZk0PVK2f78ZkhEArwg/ucO+3QE6GAAnYWO8PLdc8bh4BhmucJ5zOcsfYptMC"
+                                                                  + "CZA9aCDA+Vu1rpn84+JaOeLisNJkWha24ij7AMzzwu8uspPdujFthQbZ84cxaQtPZc3UN+X4EAVV"
+                                                                  + "RciN6++j9q1UXKjwvpv+3Fb5w6tjccaONGaMMAtxD6NsAC7r6qmomuTW9kqOlvcUV4Q5TM4/JJfW"
+                                                                  + "mQxixhMEGv9O08cGafCvOa+mlIyhQsxyAP9d+iEWwvMt/2m2uJDM2sLEQv8rIPf2nVfvewBT4Qik"
+                                                                  + "AGdK43vRq8eGXpJnCRCue4jBbxDGhY63ktsxAAAAAgAPa2V5c3RvcmU4LWFsaWFzAAABVutBavYA"
+                                                                  + "BVguNTA5AAAF+zCCBfcwggPfoAMCAQICCQDnwtsZrUgpuzANBgkqhkiG9w0BAQUFADBNMQswCQYD"
+                                                                  + "VQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNp"
+                                                                  + "dHkxCjAIBgNVBAMUASowHhcNMTYwOTAyMTQxNTMyWhcNMjYwNzEyMTQxNTMyWjBNMQswCQYDVQQG"
+                                                                  + "EwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkx"
+                                                                  + "CjAIBgNVBAMUASowggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpeguzUe0G+A/9FDCk"
+                                                                  + "TmxiDCkaiczYuIdXYXI9+llRwzR1UCYWYb7oVkcVsEPmx5+egDR4ceLDNPWiVK3OCPm6mlMIsFTL"
+                                                                  + "Wqn51q2bFOSR515ON3PmltpaLyWOjsCS3JxUemSDO+R30koavTIJU6x7UI1/jBJCHadx40oCxgh/"
+                                                                  + "kwz6FafUXxzEwOmeOT9xc4fY9cMhHXDtmH5VXoFOp3HkEmRvIrWvnnf/2Py5+hX9CtrkZLLmS7YD"
+                                                                  + "ZkYTKfyIK4WzKFA/pN1tUzWovC6P2HtpQ1mgDAJ1+xV/k2FC/ZKwBoz4bpr/aEBt3q2C1J8lMMQW"
+                                                                  + "YtyZSRnZMYilU5CITwhpFPJiDv8expe/JTwpFOMoZyj/pK8ZOzE+/XqdeE0VlFLtlqLc/wumc3KX"
+                                                                  + "xTtt8EFRdr8VxhrHn8Mt4eVBZJuU7Kw2rynRq6V+Cj8iQfyDUO4LJ1+aTQ42y+q8QwF15ISLP78g"
+                                                                  + "5vu82jB4A9Y/8+qdbU2jvG8vbraMJg380dbCqmDyc957UVH5CrbjYI9ji6romUtCXHzDdAkXTTKJ"
+                                                                  + "yXvjSgzFlPj3jkdY0TdLGiLpGmIU+1wznDN+UgufXEkUP+aoA9SF68jhaVHmZbQn2n45QgBbNkKf"
+                                                                  + "qREptcdEBPdu9527LlUmMTjCrY6Fcll2WcGgjS7Q/aAkjcS58Nouu5X9PwIDAQABo4HZMIHWMB0G"
+                                                                  + "A1UdDgQWBBTsWSVhrBtavY0Ssr4c7P0rNeSuFzB9BgNVHSMEdjB0gBTsWSVhrBtavY0Ssr4c7P0r"
+                                                                  + "NeSuF6FRpE8wTTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3Zp"
+                                                                  + "bmNlMQ0wCwYDVQQKEwRjaXR5MQowCAYDVQQDFAEqggkA58LbGa1IKbswDAYDVR0TBAUwAwEB/zAo"
+                                                                  + "BgNVHREEITAfghBhbXFwLmV4YW1wbGUub3JnggtleGFtcGxlLm9yZzANBgkqhkiG9w0BAQUFAAOC"
+                                                                  + "AgEAVkYBfdIAD9TmCTcV0FBTngsqNsZyl2RJ7wDeJddsY+4+MqHQgorq6a8m0XhVlFnEqFs0erbS"
+                                                                  + "o/RC/4KLkfb+QyUp5/c26tGDmi8iAvfxMGU1d15S+tApVjVCd6BUqxJCY1ol/YUBkdtWFg1kXSzk"
+                                                                  + "ukbFsoOVfDtfz4j7frv3xFxSTbn9QH63cQfEaEEaLPl1hW3BE6JcL6na3m15okQE0Is4nvedCfd/"
+                                                                  + "hY+30YTFy3T/DFv4AwX2/WQqI+VRA/me9Tq/orEmU0K+VrkSCxsLAqQh/1Ue81NPY0VeEFAwEjlU"
+                                                                  + "wOdaFm3oMOKxOxodS/Bt62ge/eDHvBAlh+d99n9qg6TQpH2FJHmxfX5ZEj9uclES5F0Yjih5tg+Z"
+                                                                  + "E6U/bjkx2ChwhmuPYXObLs/iUgic54snKotMBA9H3nX6f4yZS7sZmhHmjhatB8WOEtuX6wv8Eqqi"
+                                                                  + "O6pYoOth1wFKGNpmFm3xYSLriVApnHzrToxiaPS2N+bzguNrXveb3lLgku3w6Z/j2Inhi9kMS1/o"
+                                                                  + "lOIUCHYJb7vfDr0D4ELmS6LF/3Q4j3Pjf/InaoSSCr44N/MR4zJvWvZYBz3FuoT7Ov5sekgihisv"
+                                                                  + "Io5s7kRSnWkCHxV7b3i1HuyBhCWvtsr5PwlRu62aGHDx/zcFO45CHhA7nTg/H4LNYUKCXexuui6w"
+                                                                  + "tVQAAAACAA9rZXlzdG9yZTEtYWxpYXMAAAFW60FjggAFWC41MDkAAAYeMIIGGjCCBAKgAwIBAgIJ"
+                                                                  + "AN3n6RoioRdnMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRl"
+                                                                  + "MREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxl"
+                                                                  + "LmNvbTAeFw0xNjA5MDIxNDE1MTNaFw0yNjA3MTIxNDE1MTNaMFwxCzAJBgNVBAYTAlVTMRAwDgYD"
+                                                                  + "VQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQ"
+                                                                  + "YW1xcC5leGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKBCPc++0AiG"
+                                                                  + "TX01xBv7qh7o7XP9BGpmFJbduuCul5J4/5XyPVQTsUSQtPfi1uvoLDEyi/04OyGFqSbthWRxidUC"
+                                                                  + "BjWFANJeA/TPASPqsRH3NVNU1VtZq3B4Re87uP5jlFI07lsGnJcE93SKOP9LDsD8VwsbWgbn9BMz"
+                                                                  + "w++oKfb4640cqSTe/5ta628JKJ5jnrb4j/UndpQX2lBVyaYZ4yzgu/a5DZqPSO15fFUNK7kJfFuB"
+                                                                  + "LqMzIOcQwIe130Zh0lgbclIrHHuo1TC6LJg0HUCDdPjjEnRUqARV8NokawcXEGgknkiVHkm/FSfr"
+                                                                  + "UjK9GC3uKDkCpWw/2+r4uh1FFzhv0WUJV6byMXmsStaRW2Nwfe07vE/m9VpuKF+UVlXmJ5JlSInm"
+                                                                  + "PdaW2IzFUucOc5LMcjpCeYspKmQceSZgwKxM51ilc95FLmJgzKXsN63dwn8KPZh9QIRPy0p875C6"
+                                                                  + "o7ZjZb+K0kq9isS9avltSriojmDqe46LJASyxu9N++sAENVjUD+4FpZi72o4R8iDv1prIQULYyhw"
+                                                                  + "sWh/sfKdie5r7/wj3SJhiKYVE3veEvA/hevMJZn0byF1P/x0ofAKvcpl/sR3iAngDcV0L5NfH147"
+                                                                  + "hvsskxsOfy4YZXR7GB0H0zCETeGuKftTGLipQDRNegIIT5l570bQHAb4GoejWJdXAgMBAAGjgd4w"
+                                                                  + "gdswHQYDVR0OBBYEFIfno5y3gDsCxSLnZmJRxxGqds3pMIGOBgNVHSMEgYYwgYOAFIfno5y3gDsC"
+                                                                  + "xSLnZmJRxxGqds3poWCkXjBcMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UE"
+                                                                  + "BxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxGTAXBgNVBAMTEGFtcXAuZXhhbXBsZS5jb22CCQDd"
+                                                                  + "5+kaIqEXZzAMBgNVHRMEBTADAQH/MBsGA1UdEQQUMBKCEGFtcXAuZXhhbXBsZS5jb20wDQYJKoZI"
+                                                                  + "hvcNAQEFBQADggIBAD2ZOIJPqaNQsobtSqB7oUTExHTJgMKaybjhiWfUYU/pv4EaDWckRFbo+fmz"
+                                                                  + "Dsi6Bmg8kWfPrbBBk3w0dVVtXK2mKGm3gv8URLmrpXMpbNcFqDNjNIbeM/VO5xgTQ1zJi1UtbBUC"
+                                                                  + "zA86E+ABm2PdssFqDz+TvsNt8gEqrSFfnmXGp2tohpoRvWN9gPK8BD1u/D3Jpj/TqG/MrZHF0ZDd"
+                                                                  + "WmtnCoQJq3j6kIEgHm87nrMABkrpUV8dB1Qw6/5pA2R9azjqa6/O/7AP8txBWVJpgdkMgpfqXMki"
+                                                                  + "UNiJUhxXxWnLNGNsJk2cFDR8haQGVmcG3B/dmk7G2N7XuEFq8jwstDXlRUDbTc/yieGdee5PYULr"
+                                                                  + "9cfdd9ljXQLYi/3uDdIOgBQArp4tPNqa/fgViJRRrtecJ6UEIt/FtFRapKyXLyiHEJgLIeT02dea"
+                                                                  + "v/DfecIPgQ9oS9SuAiRPWWh1MbY5I/QLa5P8kwDf4V5Dz0yU2vOkF37xBQmky/0gw0mRc4+RsxCO"
+                                                                  + "mc2oChaKxr4c1wqKChjEX/wOFeQM50JyGI37ln+2ma5ymSOc3nYTqJMBNApoctHKeGTMzT0xMCi7"
+                                                                  + "+j+F/sje6VtiEnpY6jMNtwDjSHjoigjhNeBAcJBm3YL53u+j8Nlj1l/pVCrTEwIkUzWDEXxseHaJ"
+                                                                  + "Pw3DC7mJ5QTzSRmgAAAAAgAQa2V5c3RvcmUxMS1hbGlhcwAAAVbrQW5UAAVYLjUwOQAABd4wggXa"
+                                                                  + "MIIDwqADAgECAgkA9QTGOPFAnvkwDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCVVMxEDAOBgNV"
+                                                                  + "BAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MQ4wDAYDVQQDFAUq"
+                                                                  + "Lm9yZzAeFw0xNjA5MDIxNDE1MzlaFw0yNjA3MTIxNDE1MzlaMFExCzAJBgNVBAYTAlVTMRAwDgYD"
+                                                                  + "VQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEOMAwGA1UEAxQF"
+                                                                  + "Ki5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCtKNS3OeXHsVOdxdgsRoY0QcrK"
+                                                                  + "O6AdzYrlRaiU+i1CzV25o/5Km9gAzleDUxLhZ4tVEn0DK5WQA5OB3qChnp6nujcRw4hd3hpjoIk9"
+                                                                  + "+GFFFsq4nmsG9dYU7wgOpd1nYADPlu3GXjep/Vnvk0OgsPtyQFQJcTb6nnKE3gen/L+XZplE4USo"
+                                                                  + "83RPwwMJZSE0JMLzyjS3FuKMbjOyeBeO3C2kRT/NB/KuFLsL/7iwEnnC5UAKynOJUNLvbMGHp2h6"
+                                                                  + "l9jHRw6Sa6pYIDy5nsvqN6LPcYNLH/UXz/ZzqqXeL5jBz3cVIdcweccTSpRI3+KWNYrPq8rkorJv"
+                                                                  + "iRUSXDHDMCmFop0YiJEtvDtgWz+ORNGtkdHuaqenkIfaPmVzikpTOvDWwOYrEuJ1IDETmDa7+MWl"
+                                                                  + "ikuScAbi8Ch/5cQ8Va7M5Zgr3sypsAjrrF51v4/ClP2bJ5ixQXqwFdJdKyNSnGIrX8CniwqqQ6FQ"
+                                                                  + "KPSve8LbTyW4AEGfvzR2TpqDztWGp9Ae1Jc5mHeOOn+6LE6f00CFyv1spdYtqBvfYeGeMXNXL1eU"
+                                                                  + "4ax3d4ODjgO8zow+fxsfhmmyQS1rvABF+NpuRS+B7ML7txOBgF+Ge2znHA/xawntGeEOz6Lqh3/V"
+                                                                  + "PLNvIq3ORDlc5baZ55oe0l4JIPBl3kUjy3Is1idGcKJXWV5D7wIDAQABo4G0MIGxMB0GA1UdDgQW"
+                                                                  + "BBQ6FKLROz5fTG10zxsxEzocTqGwPDCBgQYDVR0jBHoweIAUOhSi0Ts+X0xtdM8bMRM6HE6hsDyh"
+                                                                  + "VaRTMFExCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTEN"
+                                                                  + "MAsGA1UEChMEY2l0eTEOMAwGA1UEAxQFKi5vcmeCCQD1BMY48UCe+TAMBgNVHRMEBTADAQH/MA0G"
+                                                                  + "CSqGSIb3DQEBBQUAA4ICAQAvTuj+4fDSofGF/3puBhWPQfOn+HPL4IqYxzMsTfQ8o/k3SjMSQox4"
+                                                                  + "XvL13TxZNeZInrC+1NEUyPt+FtiVF/9XkHL1emActL7J4hyp/yTKi49+O5k+3Jl2kkXQHZQqrbTj"
+                                                                  + "Ja01muFFY+yZfakUHpDys7SKSC4xwrL8zVVoZ9gAy1fpTz8ERchdLe+B9QYLbeCYmX5jrP2NdtzG"
+                                                                  + "jPs3P1p+VhD+ankIgDgQksKuwfRHWsxK4/Yy2nM3Aj1Uxwa9xWT1abrF+q5zEiA8/uB4m9dM1+Un"
+                                                                  + "DNfh4TOdPvPrt8wE4uURTW+Jy2ahIIEx3V/vq5MFaO2IaHOoM94L51vbBS7ubg0z5HDXDVcKLoY+"
+                                                                  + "1Rfor7A8LNDbPB51N0539PiQfl8ilqxamSmFbpLLkMdum8rW1GXv05Z4boyjlCfUkNJGBPXLA/sf"
+                                                                  + "Kl7S1kBm4p2cl3H+b2QHaphKTNGSqq+5teSpebrh2L7F+FXjKxxwW0mfZNxWS1a7UKElD2Ova/Vn"
+                                                                  + "JNTjOJyCUjKx264PYbWmDW3pLYHlCD+crja6+yevgU1A+mndEL3tlhMAyVjewtu6fbtaZ3Dh9F8U"
+                                                                  + "ed5O4y1x/6I0OTC3a8AxEMsJDVb2PVJ2brqRw+faUdhMGG6VyhUbGa2PsTMfUQv30o+VFwai2bz7"
+                                                                  + "hoFWQqkbwhx4Z+eJcABwhAAAAAIAD2tleXN0b3JlNy1hbGlhcwAAAVbrQWneAAVYLjUwOQAABhQw"
+                                                                  + "ggYQMIID+KADAgECAgkA1F2rvQSQ7cwwDQYJKoZIhvcNAQEFBQAwTTELMAkGA1UEBhMCVVMxEDAO"
+                                                                  + "BgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MQowCAYDVQQD"
+                                                                  + "FAEqMB4XDTE2MDkwMjE0MTUyN1oXDTI2MDcxMjE0MTUyN1owTTELMAkGA1UEBhMCVVMxEDAOBgNV"
+                                                                  + "BAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MQowCAYDVQQDFAEq"
+                                                                  + "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyHvSXxGgaT6RxGJ6hitvXcdFFrKVYB3G"
+                                                                  + "ad9kJ+yYEdDyDzZj6ONLWKGoMDWHinFTDBv5VE7+/WGhJ/MamVV8q3ri1D+QIOT2EI05d8dw+2KX"
+                                                                  + "qlFThGOdX5wgJ6mf+Kk+/stDzVGyH7DOGmSPyFF8hs0d+3kYlKiPxxu00SrYBCisuCTohKBYZ9O/"
+                                                                  + "YlKOBeW8+fzxxHb3RrcqEvJchf6gGD6/786iHnbMae5m3QM/bILNtiOPAtmFQRSlHscl4HDzp59w"
+                                                                  + "Xh8l1nrfTzFpWRbro330cQqLdNAUoWCdQT3dnGTCuYjGdtIDiYrIkn2rM36/8rNkWJ7xauXKtaft"
+                                                                  + "LVAzzEcGEyh2bpUY1em3hdvt02BPpAj6DndE2Df3MsI+UNXO8VF3Ixo8xtw895j5iDFRfdn3NJdJ"
+                                                                  + "Shvvb+HO2WxOVBlOFI3jVE58MBOqXwf9VrDL69CU5gTlLu0IHAzZQS3+la6/lh0CMxHl5GRCaU6w"
+                                                                  + "xj42Dy2iNktYDN4h7C5bp/a4V791uep0Hf68ZHujQ1AELeuwo+m7y2xW9jiPaPZeGc3BCIGStD53"
+                                                                  + "wiqPJ6OYbnKOyu7UePkfmukX1oqHsVWF6bJuOXOiTPUDZ5x/xXckMHTO2sPZVslfALuzSJX2Xzy5"
+                                                                  + "ce1azOxeUWPdI5JTEecFn6TVFUaSdnmEv4chG9/SHiUCAwEAAaOB8jCB7zAdBgNVHQ4EFgQUktNt"
+                                                                  + "P40v3mCli8ZwjCPKA8xqtIswfQYDVR0jBHYwdIAUktNtP40v3mCli8ZwjCPKA8xqtIuhUaRPME0x"
+                                                                  + "CzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UE"
+                                                                  + "ChMEY2l0eTEKMAgGA1UEAxQBKoIJANRdq70EkO3MMAwGA1UdEwQFMAMBAf8wQQYDVR0RBDowOIIQ"
+                                                                  + "YW1xcC5leGFtcGxlLm9yZ4IRYW1xcDEuZXhhbXBsZS5vcmeCEWFtcXAyLmV4YW1wbGUub3JnMA0G"
+                                                                  + "CSqGSIb3DQEBBQUAA4ICAQBIzOZuOHYdlFTfe3PePMgMZ80FSws/7MDmrpsgDKa07ocN3PY0D84y"
+                                                                  + "0W6rXsD1kACqg7y5+gw2qz81kU8rYGtKRoB+1oFPz0Dpi/pIYq+nzyT/k3gRa68ef/CyX9BIa1xu"
+                                                                  + "zzMAaIEvgvjAhwmIdrkBaE5MHgxCYRQy6/M6zwONelZHyCNs2ryPsE61FuYHbgRFr9kZuT6cRlDM"
+                                                                  + "EJOzvbHX5iJCRJixSt+/yvdKtXkz/nSEGS+SHLrjggK3fKzIoYTRpQWDKXAHZUyebk8eShhpumEA"
+                                                                  + "UPGZNnYiiyJdfcpkFAzAZVzIrnvB/FiyFkfof56DhV4Gnq0r33n2eK1mJ6J1MCRyaMtEjVvujemr"
+                                                                  + "KmD16x4nZUI3zUtMHrbORuzjbmxl3apXdp96UyJKfbifnvoJ4N2yppiByWsHDkkmC/gbzmugaN4p"
+                                                                  + "v4QYQrMIBauAY8+QKoBRy25EkfZZ5hOqZQV0Odb4COfnhvUM2oBvGTz7xID8L0RyqfEdZ7gEgNOa"
+                                                                  + "C7EyzztJT8lXdu0Mm17JaisueFak9kt4aXYCUKM+GNniwj7Zu9njffzwmgCMiRZ/33hysih5iElN"
+                                                                  + "PNoN1OU5NHyqp3Z/YIbqp9TWTMEbs1BUEsnyDu5iTbVvvlLhfnHBipPAUdzL6aGIlfNMQ7U9wHaM"
+                                                                  + "0EtQgZ7nnQL7eQoW/I2/WwAAAAIAD2tleXN0b3JlMy1hbGlhcwAAAVbrQWWRAAVYLjUwOQAABjIw"
+                                                                  + "ggYuMIIEFqADAgECAgkAkXA0Ujw8haYwDQYJKoZIhvcNAQEFBQAwXDELMAkGA1UEBhMCVVMxEDAO"
+                                                                  + "BgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRkwFwYDVQQD"
+                                                                  + "ExBhbXFwLmV4YW1wbGUuY29tMB4XDTE2MDkwMjE0MTUxOFoXDTI2MDcxMjE0MTUxOFowXDELMAkG"
+                                                                  + "A1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRj"
+                                                                  + "aXR5MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC"
+                                                                  + "CgKCAgEAz4LAVVvnf2ViPH9rqe2t5IpfmDRlERi0qsvR7nFQtQO2KBVp/8xSAujZeMA0H9RHLeWZ"
+                                                                  + "PnfuCLDPJyLoPofGHnI2O5Dr9+ru+Lw+5KxgAr6ZWcHVNtfwbGCvjYIDmuChNUuV2PEJBZmmgdTB"
+                                                                  + "iOyrVKPNV30TOkqFkTviOgDfwFcAUC7RNO9GEmZa8s7emyJkWmogeDlcHoCAtydqLy/1nA7tq8f6"
+                                                                  + "KowrwxFftU9CsvmchQaqQiFtBFClZu/GVT2s7mKdI1VBzmY1NPxelzlc1GNxzQh8Ckj91n9dXz00"
+                                                                  + "MFhMI8OnvEWdKue5zfteoV+pmObwX5e6W24MjA42Urco6S8JoaOFuOsFAhara4Xr7JiKzMH8AEyz"
+                                                                  + "CnBQj+FOOIfEkEn0gpWsJMts83w+9EFkMNgNziG3icLt0//kZaUuE2qms5OYN+GebqVbaa6KhKon"
+                                                                  + "hOgDgS9uPxz2xTpU53k27kI7ZJe60YwcJb7jr+lmIeUjpwLFd6oCMfdjvYBCiUYXhzTuv1CKQByv"
+                                                                  + "iLgRT+6OYZzUk27rsqxR96KVIB1cW+7HBAfYmBUhA/s3jawKxGCb4XTramN53ONfWxOJaWjQ5B5z"
+                                                                  + "u9xtwY3451xtMW7jfjL6ggAkJks+AyZ4XXVdJTfgJiaTFOeiPq4Q++ioWwLVQVxv2ZXQKts1cpFz"
+                                                                  + "t7LJhYcCAwEAAaOB8jCB7zAdBgNVHQ4EFgQUvCJ0sdBYkSRtfVkttqS2baHLgtMwgY4GA1UdIwSB"
+                                                                  + "hjCBg4AUvCJ0sdBYkSRtfVkttqS2baHLgtOhYKReMFwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdw"
+                                                                  + "cml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChMEY2l0eTEZMBcGA1UEAxMQYW1xcC5l"
+                                                                  + "eGFtcGxlLmNvbYIJAJFwNFI8PIWmMAwGA1UdEwQFMAMBAf8wLwYDVR0RBCgwJoIRYW1xcDEuZXhh"
+                                                                  + "bXBsZS5jb22CEWFtcXAyLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBBQUAA4ICAQAfMx8vAkjnLQFc"
+                                                                  + "GePtafiI57+M/arx3Me2upoNuaAYK/WMkxvWksqF2+rOjPIvXp95O9gakKlqhvOuFUHzPv5QQzOp"
+                                                                  + "wKIicsXnztNoSwBM9WGTe2uyxNqbStUX2VND21GvrjmsB8dU9ZyShkHfNlMY8HXLeWKA5nvv14wK"
+                                                                  + "ymg6MWQbIiR9yqdhxTv/KKX0ryT/uLabM+2zImCjhSRfYR+8YrSxf89otmPKoS29XJ47gMEtQveL"
+                                                                  + "rA8k/5l1DAGoDx04lsnbT486Hbj6cSaKdtJOQQwLLA9xEnwcReeXJ5eigyvKIreQ4bnwG04CQ35k"
+                                                                  + "efdtcOYCS44IeA4AwJLDukoiFu84NH1CegNbQModa8heVN3wOos0LMijmpKYfUf8by8C7V3Yq3B0"
+                                                                  + "OSo3NkzTHpuhpkiMSutpGaNRBRmGvHbSzuf6WWKxPNChyTtIjQ4Z5Y2ogBvoqL1atE+Zhwu5mPHo"
+                                                                  + "DvZTd8G46k8PFTTDYQ7MKBGgRdIVffBOEy0Xn31mqkgjSGwJuHB2pkYVRZ8mB8Y8mDgchmYtbhY/"
+                                                                  + "fyiXYKX/HYzAVqbZm4OzxsfwkhavdTSbynt7/hP0dT8gC0XxqHSeWg8wvYYXzb20ennUEcovf3YH"
+                                                                  + "8J73vbfSXjm36P3vs/dqKUhazXpsAIujkhRrk+EMAdi024AKvpHQr4T5UQpWuwAAAAIAEGtleXN0"
+                                                                  + "b3JlMTMtYWxpYXMAAAFW60FwnQAFWC41MDkAAAXRMIIFzTCCA7WgAwIBAgIJAK0AE8CfFEluMA0G"
+                                                                  + "CSqGSIb3DQEBBQUAME0xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhw"
+                                                                  + "cm92aW5jZTENMAsGA1UEChMEY2l0eTEKMAgGA1UEAxQBKjAeFw0xNjA5MDIxNDE1NDVaFw0yNjA3"
+                                                                  + "MTIxNDE1NDVaME0xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92"
+                                                                  + "aW5jZTENMAsGA1UEChMEY2l0eTEKMAgGA1UEAxQBKjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC"
+                                                                  + "AgoCggIBALJfiVCXHtyDg+yTZVp/x4FnGvDCAIEBzq3WnziCUF6paMyWlHWctM57Xab63v+A2A68"
+                                                                  + "ey6K1RNhQX38ESU3rdmG+Kq+nNaMRnynkbEFN26XSq5xV2sRq4KH/cEosfU76RsNUXdPDx+XPjG/"
+                                                                  + "itr6kuHUCKMGSXlDqiyU3uH+v2e67JM4+Fu/RY8pHLCTO5IrSjDAkHPSvItN2WEz9xqHqTzZQ8ob"
+                                                                  + "97UMCQsK5xCF897vrQfX0rS5izk1Hsd5Psz0vtotIMzi3R2A8JVaoKryjaoCndxc6IswX96W3Bez"
+                                                                  + "pUTUIIpiAfXDeNfvYSHfKHr83WCIsU5+Gu62YuQbZMJX9dDdmlAOFRdfla8oePTkiO2+5xwt6412"
+                                                                  + "E1K7P4guoDA191qwXj/UIIwoA4hFnmPtCkOEf5HPytxvGdP3ssZ+Wx+ZFx3vaBAw2HtBaDrUW1Wf"
+                                                                  + "BgOGtOYjivDho7Vkt8Ap3mToIGqkJrwWc+oEOu9926KZFKaMzE7ve0fIpAXKhYMIZZGOmr/wi1v2"
+                                                                  + "eqD5H4gXS+XYoKjKV/39NsvL7nJnSxaqrqvW8Ja/SbN4ps+nRvpDQC2/rLG8ZUN5J0IcYSGdXsyx"
+                                                                  + "9yvYGicS78vzdYjwyJzCJuINhfFRJDVXitgSpD2AjJHlrb3XSJ4ypj3auZ6KIUXhdq7cS+XNABwu"
+                                                                  + "rIodnQU7AgMBAAGjga8wgawwHQYDVR0OBBYEFDUXFvr89Rzmep0MGf81gNIXINXyMH0GA1UdIwR2"
+                                                                  + "MHSAFDUXFvr89Rzmep0MGf81gNIXINXyoVGkTzBNMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHcHJp"
+                                                                  + "dmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxCjAIBgNVBAMUASqCCQCtABPA"
+                                                                  + "nxRJbjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBlkCIxCpbTRfoo7u49oduXCj6f"
+                                                                  + "gtEo1H7U8hkwxrh9SvH58D8kRb9Siw6UW/zfF4kSlCETEVTegtH8KDGcyWN7Ef6zMVFK5ZpPpTtE"
+                                                                  + "rGlDyXw4Sasy1xNuYeHAFOWo8haCUybFXrykatkJf6p8KX6dfEA+p6nWSoCPY4Bh5gKFLxvTNc/B"
+                                                                  + "FtsfZQsIZKWQxL/qYGrn/TlmsDgyaSt5OMZQr4FQLEVGZ2Z0NN7AlTPDydUH58y7lbJv21sddK+S"
+                                                                  + "OUBIGErWjV83bFx4DX4FPHpOtK89/CYOSQccqmYLswmRPSjCINJ4UybxW118DnGp9v47kKx6+bna"
+                                                                  + "zOo4te//kjl0nv3ka0dMlH7gG/Q22fb7zL0aEI/HjHUsNoEtw9kQxW+V3Vx/ZdW8NI4cdRF4v/av"
+                                                                  + "5p1qM1/TVW93Vm2VnO+lSRB4MXE9jpc9AxSVSNX1Knyuso/rKxbwFmJkxy1gcfSCQnfP3LvNdgVV"
+                                                                  + "voq40bbRd1P28RSrGTOGSgILNGk7MGE7Fki2SL6RP9SRLE/5vdUyDHg8XUmpR+PlkN/MQvUdANZ2"
+                                                                  + "LyDObsKUdN4JvQarugCZ1vYicd4VjPY2IBHRRCIFlkeqgQ2PBR3NwJ4ppkby/384ojyEK9T/rcix"
+                                                                  + "pBPpDEQroikXliqWNGggU6kPPNLoUsoGUttt/fuDoao2JVU6uwAAAAIAD2tleXN0b3JlOS1hbGlh"
+                                                                  + "cwAAAVbrQWwDAAVYLjUwOQAABgEwggX9MIID5aADAgECAgkA/fDYO6N4ERQwDQYJKoZIhvcNAQEF"
+                                                                  + "BQAwXDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0w"
+                                                                  + "CwYDVQQKEwRjaXR5MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUub3JnMB4XDTE2MDkwMjE0MTUzNVoX"
+                                                                  + "DTI2MDcxMjE0MTUzNVowXDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZhdGUxETAPBgNVBAcT"
+                                                                  + "CHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRkwFwYDVQQDExBhbXFwLmV4YW1wbGUub3JnMIICIjAN"
+                                                                  + "BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0BRKztgdwAfnvwCarRJA1jPCL7VE7HKAvH+efmT4"
+                                                                  + "7/kqCptnPpPOcm7wRDgtNSA+IGqgxKhxLbCnl0cv58YCu1a9MJQLIqvDApSdKpPtCCCPQ8VYRCTm"
+                                                                  + "pY14m4EemKPbkSV+WluFK6tEQoYLz1yM5lAOP0A3q7sKxDv+IMOWKu4felcxo/gI3GWg50azh665"
+                                                                  + "O/mJobF/0RX0pxVziqbxJrmkQpHeYrBJlwqkhQQWFq1RtTCVYCn370An2w0ylhz8Z7J1RKOIV+Q8"
+                                                                  + "CDyFSPwV4Jy7PIDNvklJDPUDhuXW7xGdcaJuGTzq8LJywUhN8UAOK/mNkxVZDnmBJ806uhmhUglm"
+                                                                  + "9zIH0xt7G55EAk8gCTkMCn1iAK5DdK3KrgE64xjrb55MQZp2K+zgdGQFNGDSCPCTc2PDieTU4Y01"
+                                                                  + "AAAP6Ih86RRDuitCI7dsSIRnt7/aUAAm65dz1IwZX9AK+plSxpWuZ5ByZVEz2v7jqoAhV4zy9uqz"
+                                                                  + "FuyPC/JeSZMWtIZ0ZJ4QjOjle8RRDsdKcXsDa+Xy9we5OFK13k0azm4lT6uBE0OQcKLUG2HP6rWi"
+                                                                  + "C8DwPKo6RqkjFhkFd+9OGdsKgb5tSIkIfR/DIqDIyhr+LGnwRzHXnMNZXHgmKdiUXXpR60ZRilPq"
+                                                                  + "QEyFp0VBM8hukq5GJ6suZNcPdKL5iyJByFECAwEAAaOBwTCBvjAdBgNVHQ4EFgQU6xXwdAL2OYyF"
+                                                                  + "GNI8gvEFQ8xAIgswgY4GA1UdIwSBhjCBg4AU6xXwdAL2OYyFGNI8gvEFQ8xAIguhYKReMFwxCzAJ"
+                                                                  + "BgNVBAYTAlVTMRAwDgYDVQQIEwdwcml2YXRlMREwDwYDVQQHEwhwcm92aW5jZTENMAsGA1UEChME"
+                                                                  + "Y2l0eTEZMBcGA1UEAxMQYW1xcC5leGFtcGxlLm9yZ4IJAP3w2DujeBEUMAwGA1UdEwQFMAMBAf8w"
+                                                                  + "DQYJKoZIhvcNAQEFBQADggIBAGrk/bfEx5v4bkAtwLrajrI2ZUfM7pe3FOdxdtuWqCUgOuHovhmc"
+                                                                  + "AhPcitgBexMaGRySYi2XZFhCw3gAt/eGgb6J/DeEU7QaYU29QiVJKV7xi31OIuld8ZWYIIrUYpem"
+                                                                  + "L5QKYPi9Rp4TyJM2NOaxGmmQyMlRfSh8KgzGfd990z8Ebqv31bIGAVGKCZZzHNLok1xFF5qRclri"
+                                                                  + "twBqaID8yTFGxxQ9BJNN0cX0FjzAg6ZvpGYE7BDSS2suQT5aO5rGKfY/sGbm+lzCis2V2ggwQSSw"
+                                                                  + "cNkCuSNgytaHc6BD7n5l7wm0m9ZoAM9AG9/iWBD8NwW/fDKfiAxXNdvxeGpLrJwZmyvf+YziagWg"
+                                                                  + "U/R+Q2/pxVVWxT5ON3vpOcv4YA/DCXbppiEAHx59h2cI+z4BUUlRmyFwSJZPD1oYWT2Y+wJjbIqK"
+                                                                  + "ixGm5YpaFzOa7og0IzlZICn4Kea/r1Y2no4ZGHL6IcIjftgAPbF7XGZqrDMdte9veA8Cc9T+U60v"
+                                                                  + "TMyUvyolIJsBtztyICj8WaZWdmd0iCHA3IefepwdW9zG5qcIxBhWuVTrYjloSl/fdoKCSZkQYxph"
+                                                                  + "TVK4ngqvl9Z5N96/rIjmTKwTmJ2XV/Slp3OKrpp7gGv47G0C05umNvrEoAoOPY6GJNdD/uJahuH7"
+                                                                  + "dC6g1c2tRd3UU1D5VjvP4Td2AAAAAgAPa2V5c3RvcmU1LWFsaWFzAAABVutBZ7YABVguNTA5AAAG"
+                                                                  + "HTCCBhkwggQBoAMCAQICCQC6gQnNeaWpszANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJVUzEQ"
+                                                                  + "MA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNpdHkxFjAUBgNV"
+                                                                  + "BAMUDSouZXhhbXBsZS5jb20wHhcNMTYwOTAyMTQxNTIxWhcNMjYwNzEyMTQxNTIxWjBZMQswCQYD"
+                                                                  + "VQQGEwJVUzEQMA4GA1UECBMHcHJpdmF0ZTERMA8GA1UEBxMIcHJvdmluY2UxDTALBgNVBAoTBGNp"
+                                                                  + "dHkxFjAUBgNVBAMUDSouZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC"
+                                                                  + "AQDJQHx065CB4RrCR4ivSxdoIswDTQ2MFdcsP9wYZeMyUB23qsvRhNtmX02CPeYqOZsTJSOWjg/x"
+                                                                  + "e1XP8QsO939b7vqhS3w1JJQdCTlYTuPSoUhAnkUjkSpruukM/IzB2dPl3x5ZVwYHCqHFDnXNYjhm"
+                                                                  + "kCH9Dgsge7h1MnsSOIoSyamJl61Cfj5M7VZMAXyZchZbfc6MPXEsaxDnzVb7n/r6NuaPRpmgs8O2"
+                                                                  + "WrjQ5/BaPTHkF5/7dsQH1j6v/XurwF5/yPYBzvzHFBEZwwiZCXXXi24EeUqjS3MBK2k55qVZwEn8"
+                                                                  + "UWOHPksAN/dp/LT2QKNQAG30nLFlJ7XtBbEVpDqEhpAmTfzP/ri8XfTBBiG7xGrTay1cLeeudSWl"
+                                                                  + "CgU+hjQWkGeGu41oW6G/2mi4TIZw91pI+F0+8P7cufW/tK0nXVHLseCXPXW54455ieH7Z4SkdD0m"
+                                                                  + "6ykrOXpRTBlKmAWEGHHAQmmtTWZkHWqrFR8wiwYi3dvrIXqbcPe85+wxh6o8fW/v3JhkLnH25A4r"
+                                                                  + "TFl8xh+zzMxcmD9WEXItS3AAsUnQ8ALBv6D3gkGt8UZSc3IyrJZu5gRpW/e7QFEzhySot9WUDlG0"
+                                                                  + "TdeKIxJm8gm1GDuwNCVFYmBXpFeplwPGZHZQORuAe7HolPqmTkdJ8qdN6UevSDghM6Jk9CwjljV5"
+                                                                  + "ZwIDAQABo4HjMIHgMB0GA1UdDgQWBBRISQpA420Ivhyq/i5TI+wAWPPvZjCBiwYDVR0jBIGDMIGA"
+                                                                  + "gBRISQpA420Ivhyq/i5TI+wAWPPvZqFdpFswWTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB3ByaXZh"
+                                                                  + "dGUxETAPBgNVBAcTCHByb3ZpbmNlMQ0wCwYDVQQKEwRjaXR5MRYwFAYDVQQDFA0qLmV4YW1wbGUu"
+                                                                  + "Y29tggkAuoEJzXmlqbMwDAYDVR0TBAUwAwEB/zAjBgNVHREEHDAaghFhbXFwMS5leGFtcGxlLm5l"
+                                                                  + "dIIFKi5vcmcwDQYJKoZIhvcNAQEFBQADggIBAKurURdQkpsdKaijtUZQPCz/YrpDiHocSseJ9jwj"
+                                                                  + "iHS2pkT4fweK2gVP9S52fzNyA03pBdXUg96nWQo8EKaRjV3pT53Yx7zW85QBYqfwd2qvVSKJhJYY"
+                                                                  + "Qvjx3lZa9wGksb4rkhms60hCL2A3Lf7x/tWhoAuyYrSCC8JjXVKEWJ5zNq/iKG7DJz0YcY9qgh6a"
+                                                                  + "qacTm9SapdyFxjyjRF2/GhC3U4OZPajThOYS5o441ShHrJO/I2IvY5C0Of+uWqCG6Qiw/Ob0zCjh"
+                                                                  + "/xNKzgj8IInVKC6YGj+Jonnn46/q3JvQmg6vhKqDZjJ+ias8vjHHYncNzxIs992+hW6XQwH2cZ4p"
+                                                                  + "TUwf7gBYdgti0w1+u/IEezEHH2O0+3GT5MaoEO51Zn9jyMqLbhqwqTlHNF2bCnX7cET3NS03fjf2"
+                                                                  + "NZZ5K9vEmhlMktNxdpuF1ld8Vbpj0I5jVKgWj5HHgdp0kB+8TEmF/kqiWWSLDR7xnzOs5A1V+9N7"
+                                                                  + "JRCNrWM8veSG/hQT74pBufplXlmBo2yJgl3DlS/R8IYsT0O6mY2MWISvFn1ALuKyl7ZPhNIooQ5p"
+                                                                  + "Dt+NVSxHZy1cXtvviEjF6AeKv1uldyyuwHaeTUsLb7IlHKu1Vjm9AMVGvsP2YPjU3HKlqBrWSRIx"
+                                                                  + "OkWni+D4VHu4dmpXokhHLRVDJmEMsf+hfdV3LJlvrOsAMkijCJBQWanfjR2IriY="
+                                                                 );
 
 
     //        Subject: C=US, ST=private, L=province, O=city, CN=amqp.example.com
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp.example.com
 
-    private static byte[] KEYSTORE_1 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQOSYAAAJhjCCCYIwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_1 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQOSYAAAJhjCCCYIwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJbpiFtanggVFjHUoiw5SBLNdnZpIbHao5oqJ6X7ra2IYE5pAYc8lA00P8GAt8ZfVFU/r1"
                                                                            +"iSj26gWQzbnOqgICfLEe1UNPzMmutxCKHUkZIqlXgvc/Ga7eNhZFxLYoJcjSHcH3rXjfiLihR7fi"
                                                                            +"ig7OavC88c3qnZld9SHcVSGquUQf65UlMDcLz5ro4JCWojxP0HqmaysTfVW0qGNSeGZcLM4F8siO"
@@ -828,7 +828,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=amqp.example.com
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp1.example.com
-    private static byte[] KEYSTORE_2 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQOxJAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_2 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQOxJAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJb7B1Wn+7tr/UMY9U5S1jldHUBVs55D+bq9mEnI+15JSYH0HOgTeG2GHUMFg5s+P9sMX6"
                                                                            +"OQL5awZrIrj/IBm3H1JGYvQ90tGNZpbIyPxx912QRfM9qwx4x9q8/EX4C4HqUYzHPrwhtdauGuM7"
                                                                            +"0v2QMKG6ZKTb9f8VSXhhrntVA0V3hmHpFozpIm1vFjFHQvKwOk0H/ig0ZBCPEBGT447lSn8DyM42"
@@ -906,7 +906,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=amqp.example.com
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp1.example.com, DNS:amqp2.example.com
-    private static byte[] KEYSTORE_3 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQPpoAAAJiDCCCYQwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_3 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQPpoAAAJiDCCCYQwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJcMesQe4dg1MYgHKVJCEUzCTpgJu3iTGwbnLOOhraGFn02YXh0Axbwws2hD0SH8XYF4h3"
                                                                            +"pVI+YbXCWHiQzzn0/5mbSEAQcNBqPR+UTQULdDpI5jGWlf3oPRdqRLP/zAXzgb5N2bmbtdLQ02NK"
                                                                            +"pvhRHNnLWmTBUokkBRUkh8kiUH3Xu8qIaJbK7ge0yglerFOK6kzic1PZwfvdzsoBxgb0CTHfzOK2"
@@ -985,7 +985,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=amqp.example.com
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp1.example.com, DNS:*.example.com
-    private static byte[] KEYSTORE_4 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQP7OAAAJiDCCCYQwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_4 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQP7OAAAJiDCCCYQwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJcM11nToM9HiebwkA/+F9HTYV7bjlRO04+J09z8yiaerv82Iik4bIZjsl2V8IPIjUACxM"
                                                                            +"7ToGh+WiELoTTDtcjTrfAxk8CM1buiugzN8do8/VwTHpIyDmKQoEY+54Ma2S1r52mqpl5B4sJT3U"
                                                                            +"25g1ahx23Ytwti9TNKf5NGDLuKrVzbidoYNc2p8yFQe7gaktKVSmIyaZOjRrwm9quoopKNdB/73k"
@@ -1064,7 +1064,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=*.example.com
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp1.example.net, DNS:*.org
-    private static byte[] KEYSTORE_5 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQQX7AAAJhjCCCYIwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_5 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQQX7AAAJhjCCCYIwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJbhJZvU/boEm92Z+W8kebBumXt/3K9qwGBIntSvmLduW4HIVcQ6+W3Q5Kbd7JiQbAut7b"
                                                                            +"jicmydwnibrk7DimQAfCGsqud2ywj6eZwkXXa5ZNbuQKUQxP0me82awrQHYBkSaHJv2kwSdTQU7O"
                                                                            +"la3CoRhtps1pInt00GjVbBEtBERcUrCVG7GtLbxKaOnDEaixK/ewS+7FnG83SfjEKCc5yso/aKaG"
@@ -1142,7 +1142,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=amqp.example.com
     //            X509v3 Subject Alternative Name:
     //                DNS:*
-    private static byte[] KEYSTORE_6 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQQ/fAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_6 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQQ/fAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJb3fs2zcPchqg7CgqHGxwNehB9UogWD1nbgdXd5RtWrIg8Gifp05miLKUjPxQp1/L0D36"
                                                                            +"XVyqVO7hINZZE3wb9p7PR+bzo7DWMuPZ7+2YzcX2fSLRLcT2h88L3wHjblYH19Bk19/H44JI6j2H"
                                                                            +"NwVXbAJRAR/6gQJWDewRmkDmSwbiLZ+0pYGz6P5lucXWFt8T2h+pAqz0Ui400RxrpM49AadvCK6v"
@@ -1219,7 +1219,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=*
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp.example.org, DNS:amqp1.example.org, DNS:amqp2.example.org
-    private static byte[] KEYSTORE_7 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQRyQAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_7 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQRyQAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJb+vOaA9ERF3UR5QStjyDSVyHQneIIdOijZfbIxzvUHqZLXOZ6g03xiRs0mJ/RPgPPXo2"
                                                                            +"EzR8U19YIljUdVw37yro4LpsH1buo+tzPC5p6PhLS28jaMCsLWKpnabAQfWptCgjSoOvKJ26XdxB"
                                                                            +"NVJVPrBBscwP+ytgcwJ1wsAkkvOGazygincn7MJiBUNkd7HpJ2VjueeqgttwMKFKFifFdE390Has"
@@ -1296,7 +1296,7 @@
     //        Subject: C=US, ST=private, L=province, O=city, CN=*
     //            X509v3 Subject Alternative Name:
     //                DNS:amqp.example.org, DNS:example.org
-    private static byte[] KEYSTORE_8 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQTD+AAAJhjCCCYIwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_8 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQTD+AAAJhjCCCYIwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJbjpQpyUW3ZmF8P1gwRce6uQCTe3hN+4Mft8FrnZRnv4kx0YW1cMRfyig89HYONM8KsS0"
                                                                            +"BMoqT3xa5iCQ/oHBymb82OC4YWSAomHFNT2JoDWelNQfnMqjGt3UETBP7g06+ulDjEA5+DAsdcxy"
                                                                            +"Jtt3Tpfjpe0s0I5jY3blGPV8yQDCNkahhqET6Jvg3PJYsHBE3ssPkTNKI5rMjzbt36pai/HlmjdU"
@@ -1370,7 +1370,7 @@
                                                                           );
 
     //        Subject: C=US, ST=private, L=province, O=city, CN=amqp.example.org
-    private static byte[] KEYSTORE_9 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQTqYAAAJhjCCCYIwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_9 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQTqYAAAJhjCCCYIwDgYKKwYBBAEqAhEB"
                                                                            +"AQUABIIJbnd59Bys8FgK8FREpm5Vsbq0uIbSE3nZFBNRVaYostRXeNA1fJok01wXBqrf05NfelKj"
                                                                            +"+ttyFHwE8AKzLfF6vDusoEH4r3HUaQWoWMiOfCzljxjtrr/eQQFx92dX5+Z17BH4+92HZUzVPbSg"
                                                                            +"31eoaZ24lTO7X8XXq0a43mnC/m3Vs9K590oCfXSDRsx8Ucr0VbUjR8jyLMxE6f4/cxBIhg2PTzCi"
@@ -1445,7 +1445,7 @@
                                                                           );
 
     //        Subject: C=US, ST=private, L=province, O=city, CN=*.example.org
-    private static byte[] KEYSTORE_10 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQT/DAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_10 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQT/DAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
                                                                             +"AQUABIIJb5zVRh9eulhVb9JI6dbHdLyWN/AwqIfERSIFCr/n0jn7MvWHPiMYQtYtzv+z7bkNVTv+"
                                                                             +"Uec6wagRxHGu4bjcVuIs6zX2lUrO0L5rN3Jwcbu6bpMIxw7sAPw4/k7Kgvf1ddSOIn4WGiHrJf8G"
                                                                             +"WvMy3rs9dnxSe8Z+TvUBn3yfFemMRpwnfGn6TuJsdBfzU/bm9dX8RBjMmwQgyHqVgzuvJtAkaQb8"
@@ -1519,7 +1519,7 @@
                                                                            );
 
     //        Subject: C=US, ST=private, L=province, O=city, CN=*.org
-    private static byte[] KEYSTORE_11 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQUx1AAAJhjCCCYIwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_11 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQUx1AAAJhjCCCYIwDgYKKwYBBAEqAhEB"
                                                                             +"AQUABIIJbuNPa7B2d1Mjkq6EBTzELi9V6XgirTYklPyKB3sQ5DUjlK+KoAsUI4oqAGOYPJDzHteq"
                                                                             +"ocv5Dj2+741/Pi5Y6DDvls+6fHrmlJk3QOuVJT4yaI5vo9FJ3FUCUyDohvYrRfpA6gfTfO+QU6DI"
                                                                             +"9G+D4+6gZtz2k4tdoFymtLQRzBS7+L3pFzl5uP7FA1UVWRZlHwsFyLmEmQhZlZcecYtCdTr018iV"
@@ -1593,7 +1593,7 @@
                                                                            );
 
     //        Subject: C=US, ST=private, L=province, O=city, CN=*.*.org
-    private static byte[] KEYSTORE_12 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQVfLAAAJhjCCCYIwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_12 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQVfLAAAJhjCCCYIwDgYKKwYBBAEqAhEB"
                                                                             +"AQUABIIJbrIYGAiHi9UXY3+A7AqtiNSK6KUzH4bilTLdy875582mryHmiv7372P049JZ2NtA0FXk"
                                                                             +"z/Idna6VGQmQfC7V/RWYpcCiiDcNFwpwCrnplPZw/6ItTDFaZQruZjIrgT3joyWGHvDvnzrTOGwt"
                                                                             +"l/yAc3DPnOThuqRogsUHUHpCAxii7/a3fsy4bPvZowSn2s0xJKAt0wBtSEAywahpzbax2pHWFwff"
@@ -1667,7 +1667,7 @@
                                                                            );
 
     //        Subject: C=US, ST=private, L=province, O=city, CN=*
-    private static byte[] KEYSTORE_13 = DatatypeConverter.parseBase64Binary("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQWJoAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
+    private static byte[] KEYSTORE_13 = Base64.getDecoder().decode("/u3+7QAAAAIAAAABAAAAAQAKc2VsZnNpZ25lZAAAAVbrQWJoAAAJhzCCCYMwDgYKKwYBBAEqAhEB"
                                                                             +"AQUABIIJb2KqIXFhF34E/cZLKwQIiZncYFYOrfP3HUNTvAXWuX1F2prq4VIiq8zrsLpFB07UrfdL"
                                                                             +"7+xfuC9WJJ09455608neFGtH7K6V5ntULLicLOEkz/jH0WgHBsZjUFXhAl+DivFI880OT7z2FC2E"
                                                                             +"odYUp35Un/cSbfyxjYBQtu64X+u5g+05UW5GhxHCUrHik/5sJYimER/ZrM3SV1ctnllqtJeZx6sn"
diff --git a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java
index 6d442a8..543e7df 100644
--- a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java
+++ b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/ServletConnectionPrincipal.java
@@ -26,10 +26,10 @@
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.Base64;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import javax.xml.bind.DatatypeConverter;
 
 import org.apache.qpid.server.management.plugin.HttpManagementUtil;
 import org.apache.qpid.server.model.Port;
@@ -66,7 +66,7 @@
                 throw new RuntimeException("Cannot create SHA-256 hash", e);
             }
             byte[] digest = md.digest();
-            _sessionId = DatatypeConverter.printBase64Binary(digest).substring(0, HASH_TRUNCATION_LENGTH);
+            _sessionId = Base64.getEncoder().encodeToString(digest).substring(0, HASH_TRUNCATION_LENGTH);
         }
         else
         {
diff --git a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
index 85e3a34..de8eb5a 100644
--- a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
+++ b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
@@ -20,6 +20,18 @@
  */
 package org.apache.qpid.server.management.plugin.servlet.query;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.chrono.IsoChronology;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.format.DateTimeParseException;
+import java.time.temporal.ChronoField;
+import java.time.temporal.TemporalAccessor;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
@@ -31,7 +43,6 @@
 import java.util.Set;
 import java.util.TimeZone;
 
-import javax.xml.bind.DatatypeConverter;
 import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.datatype.Duration;
@@ -48,6 +59,22 @@
     private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
     private static final DatatypeFactory DATATYPE_FACTORY;
 
+    private static final DateTimeFormatter ISO_DATE_TIME_FORMAT =  new DateTimeFormatterBuilder()
+            .parseCaseInsensitive()
+            .append(DateTimeFormatter.ISO_LOCAL_DATE)
+            .optionalStart()
+            .appendLiteral('T')
+            .append(DateTimeFormatter.ISO_LOCAL_TIME)
+            .optionalStart()
+            .appendOffsetId()
+            .optionalStart()
+            .appendLiteral('[')
+            .parseCaseSensitive()
+            .appendZoneRegionId()
+            .appendLiteral(']')
+            .toFormatter()
+            .withChronology(IsoChronology.INSTANCE);
+
     static
     {
         try
@@ -122,13 +149,28 @@
                         }
                         try
                         {
-                            final Calendar calendar = DatatypeConverter.parseDateTime((String) dateTime);
-                            return calendar.getTime();
+
+                            return DateTimeFormatter.ISO_ZONED_DATE_TIME.parse((String)dateTime)
+                                    .query(this::convertToDate);
                         }
-                        catch (IllegalArgumentException e)
+                        catch (DateTimeParseException e1)
                         {
-                            throw new IllegalArgumentException(TO_DATE + " requires an ISO-8601 format date or date/time.", e);
+                            throw new IllegalArgumentException(TO_DATE
+                                                               + " requires an ISO-8601 format date or date/time.",
+                                                               e1);
                         }
+
+                    }
+
+                    private Date convertToDate(TemporalAccessor t)
+                    {
+                        if(!t.isSupported(ChronoField.INSTANT_SECONDS))
+                        {
+                            t = LocalDateTime.of(LocalDate.from(t), LocalTime.MIN).atOffset(ZoneOffset.UTC);
+                        }
+                        return new Date((t.getLong(ChronoField.INSTANT_SECONDS) * 1000L)
+                                        + t.getLong(ChronoField.MILLI_OF_SECOND));
+                        
                     }
                 };
             }
@@ -199,7 +241,7 @@
                             cal.setTime((Date) obj);
                             if (format == null)
                             {
-                                return DatatypeConverter.printDateTime(cal);
+                                return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(cal.toInstant().atZone(ZoneId.of(timezoneName == null ? "UTC" : (String)timezoneName)));
                             }
                             else
                             {
diff --git a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
index 8d10ec4..102062d 100644
--- a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
+++ b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
@@ -24,6 +24,7 @@
 import java.security.AccessController;
 import java.security.Principal;
 import java.security.SecureRandom;
+import java.util.Base64;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +35,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
-import javax.xml.bind.DatatypeConverter;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -254,7 +254,7 @@
                 HttpManagementUtil.saveAuthorisedSubject(request, subject);
                 if(challenge != null && challenge.length != 0)
                 {
-                    outputObject.put("additionalData", DatatypeConverter.printBase64Binary(challenge));
+                    outputObject.put("additionalData", Base64.getEncoder().encodeToString(challenge));
                 }
                 responseStatus = HttpServletResponse.SC_OK;
             }
@@ -279,7 +279,7 @@
                                                    session, request);
 
             outputObject.put("id", id);
-            outputObject.put("challenge", DatatypeConverter.printBase64Binary(challenge));
+            outputObject.put("challenge", Base64.getEncoder().encodeToString(challenge));
             responseStatus = HttpServletResponse.SC_OK;
         }
         else
diff --git a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/GunzipOutputStreamTest.java b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/GunzipOutputStreamTest.java
index 3711d1c..6a6301e 100644
--- a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/GunzipOutputStreamTest.java
+++ b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/GunzipOutputStreamTest.java
@@ -25,8 +25,7 @@
 
 import java.io.ByteArrayOutputStream;
 import java.nio.ByteBuffer;
-
-import javax.xml.bind.DatatypeConverter;
+import java.util.Base64;
 
 import org.junit.Test;
 
@@ -64,7 +63,7 @@
     @Test
     public void testDecompressingWithEmbeddedFileName() throws Exception
     {
-        byte[] data = DatatypeConverter.parseBase64Binary(GZIP_CONTENT_WITH_EMBEDDED_FILE_NAME);
+        byte[] data = Base64.getDecoder().decode(GZIP_CONTENT_WITH_EMBEDDED_FILE_NAME);
 
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         GunzipOutputStream guos = new GunzipOutputStream(outputStream);
@@ -77,7 +76,7 @@
     @Test
     public void testDecompressingMultipleMembers() throws Exception
     {
-        byte[] data = DatatypeConverter.parseBase64Binary(GZIP_CONTENT_WITH_MULTIPLE_MEMBERS);
+        byte[] data = Base64.getDecoder().decode(GZIP_CONTENT_WITH_MULTIPLE_MEMBERS);
 
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         GunzipOutputStream guos = new GunzipOutputStream(outputStream);
diff --git a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
index 670bad8..a0a56d0 100644
--- a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
+++ b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
@@ -25,8 +25,13 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -36,8 +41,6 @@
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
-import javax.xml.bind.DatatypeConverter;
-
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.junit.Test;
@@ -316,9 +319,9 @@
     public void testQuery_DateEquality()
     {
         final long now = System.currentTimeMillis();
-        final Calendar calendar = Calendar.getInstance();
-        calendar.setTimeInMillis(now);
-        String nowIso8601Str = DatatypeConverter.printDateTime(calendar);
+
+        final ZonedDateTime zonedDateTime = Instant.ofEpochMilli(now).atZone(ZoneId.systemDefault());
+        String nowIso8601Str = DateTimeFormatter.ISO_ZONED_DATE_TIME.format(zonedDateTime);
 
         final UUID objectUuid = UUID.randomUUID();
 
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
index 45f4abc..4f9183b 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
@@ -39,7 +39,8 @@
 import javax.jms.ObjectMessage;
 import javax.jms.StreamMessage;
 import javax.jms.TextMessage;
-import javax.xml.bind.DatatypeConverter;
+
+import org.apache.qpid.server.util.StringUtil;
 
 public class MessageVerifier
 {
@@ -257,12 +258,12 @@
             {
                 final byte[] expectedValueAsBytes = (byte[]) expectedValue;
                 final byte[] actualValueAsBytes = (byte[]) actualValue;
-                String expectedValueAsString = DatatypeConverter.printHexBinary(expectedValueAsBytes);
+                String expectedValueAsString = StringUtil.toHex(expectedValueAsBytes);
                 if (expectedValueAsString.length() > 20)
                 {
                     expectedValueAsString = expectedValueAsString.substring(0, 20) + "...";
                 }
-                String actualValueAsString = DatatypeConverter.printHexBinary(actualValueAsBytes);
+                String actualValueAsString = StringUtil.toHex(actualValueAsBytes);
                 if (actualValueAsString.length() > 20)
                 {
                     actualValueAsString = actualValueAsString.substring(0, 20) + "...";
diff --git a/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/SaslUtils.java b/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/SaslUtils.java
index 5833599..2659fd3 100644
--- a/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/SaslUtils.java
+++ b/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/SaslUtils.java
@@ -23,10 +23,20 @@
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
-import javax.xml.bind.DatatypeConverter;
 
 public class SaslUtils
 {
+    private static final char[] HEX = "0123456789abcdef".toCharArray();
+
+    private static String toHex(byte[] bin)
+    {
+        StringBuilder result = new StringBuilder(2 * bin.length);
+        for (byte b : bin) {
+            result.append(HEX[(b >> 4) & 0xF]);
+            result.append(HEX[(b & 0xF)]);
+        }
+        return result.toString();
+    }
     public static byte[] generateCramMD5ClientResponse(String userName, String userPassword, byte[] challengeBytes)
             throws Exception
     {
@@ -34,8 +44,7 @@
         Mac mac = Mac.getInstance(macAlgorithm);
         mac.init(new SecretKeySpec(userPassword.getBytes(StandardCharsets.UTF_8), macAlgorithm));
         final byte[] messageAuthenticationCode = mac.doFinal(challengeBytes);
-        String responseAsString = userName + " " + DatatypeConverter.printHexBinary(messageAuthenticationCode)
-                                                                    .toLowerCase();
+        String responseAsString = userName + " " + toHex(messageAuthenticationCode);
         return responseAsString.getBytes();
     }
 }
diff --git a/systests/qpid-systests-http-management/src/main/java/org/apache/qpid/tests/http/HttpTestHelper.java b/systests/qpid-systests-http-management/src/main/java/org/apache/qpid/tests/http/HttpTestHelper.java
index 7421aa9..04bb288 100644
--- a/systests/qpid-systests-http-management/src/main/java/org/apache/qpid/tests/http/HttpTestHelper.java
+++ b/systests/qpid-systests-http-management/src/main/java/org/apache/qpid/tests/http/HttpTestHelper.java
@@ -34,6 +34,7 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.UnrecoverableKeyException;
 import java.security.cert.X509Certificate;
+import java.util.Base64;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -46,7 +47,6 @@
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.DatatypeConverter;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -170,7 +170,7 @@
 
         if(_username != null)
         {
-            String encoded = DatatypeConverter.printBase64Binary((_username + ":" + _password).getBytes(UTF_8));
+            String encoded = Base64.getEncoder().encodeToString((_username + ":" + _password).getBytes(UTF_8));
             httpCon.setRequestProperty("Authorization", "Basic " + encoded);
         }
 
diff --git a/systests/qpid-systests-http-management/src/test/java/org/apache/qpid/tests/http/authentication/SaslTest.java b/systests/qpid-systests-http-management/src/test/java/org/apache/qpid/tests/http/authentication/SaslTest.java
index 9201793..7977cec 100644
--- a/systests/qpid-systests-http-management/src/test/java/org/apache/qpid/tests/http/authentication/SaslTest.java
+++ b/systests/qpid-systests-http-management/src/test/java/org/apache/qpid/tests/http/authentication/SaslTest.java
@@ -33,12 +33,11 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.util.Base64;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import javax.xml.bind.DatatypeConverter;
-
 import org.junit.Before;
 import org.junit.Test;
 
@@ -116,7 +115,7 @@
     public void plainSASLAuthenticationWithMalformedInitialResponse() throws Exception
     {
         byte[] responseBytes = "null".getBytes();
-        String responseData = DatatypeConverter.printBase64Binary(responseBytes);
+        String responseData = Base64.getEncoder().encodeToString(responseBytes);
         String parameters = String.format("mechanism=%s&response=%s", PlainNegotiator.MECHANISM, responseData);
 
         HttpURLConnection connection = getHelper().openManagementConnection(SASL_SERVICE, "POST");
@@ -221,7 +220,7 @@
 
             List<String> cookies = connection.getHeaderFields().get(SET_COOKIE_HEADER);
 
-            String responseData = DatatypeConverter.printBase64Binary("null".getBytes());
+            String responseData = Base64.getEncoder().encodeToString("null".getBytes());
             String requestParameters = String.format("id=%s&response=%s", response.get("id"), responseData);
 
             postResponse(cookies, requestParameters, SC_UNAUTHORIZED);
@@ -246,10 +245,10 @@
 
             List<String> cookies = connection.getHeaderFields().get(SET_COOKIE_HEADER);
 
-            byte[] challengeBytes = DatatypeConverter.parseBase64Binary(challenge);
+            byte[] challengeBytes = Base64.getDecoder().decode(challenge);
             byte[] responseBytes =
                     generateClientResponse(CramMd5Negotiator.MECHANISM, _userName, _userPassword, challengeBytes);
-            String responseData = DatatypeConverter.printBase64Binary(responseBytes);
+            String responseData = Base64.getEncoder().encodeToString(responseBytes);
             String requestParameters = (String.format("id=%s&response=%s", UUID.randomUUID().toString(), responseData));
 
             postResponse(cookies, requestParameters, SC_EXPECTATION_FAILED);
@@ -267,7 +266,7 @@
                                                                     final int expectedResponseCode) throws Exception
     {
         byte[] responseBytes = generatePlainClientResponse(userName, userPassword);
-        String responseData = DatatypeConverter.printBase64Binary(responseBytes);
+        String responseData = Base64.getEncoder().encodeToString(responseBytes);
         String parameters = String.format("mechanism=%s&response=%s", PlainNegotiator.MECHANISM, responseData);
 
         HttpURLConnection connection = getHelper().openManagementConnection(SASL_SERVICE, "POST");
@@ -318,9 +317,9 @@
         String challenge = (String) response.get("challenge");
         assertNotNull("Challenge is not found", challenge);
 
-        byte[] challengeBytes = DatatypeConverter.parseBase64Binary(challenge);
+        byte[] challengeBytes = Base64.getDecoder().decode(challenge);
         byte[] responseBytes = generateClientResponse(mechanism, userName, userPassword, challengeBytes);
-        String responseData = DatatypeConverter.printBase64Binary(responseBytes);
+        String responseData = Base64.getEncoder().encodeToString(responseBytes);
         String requestParameters = (String.format("id=%s&response=%s", response.get("id"), responseData));
 
         postResponse(requestChallengeConnection.getHeaderFields().get(SET_COOKIE_HEADER),
diff --git a/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/tls/TlsTest.java b/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/tls/TlsTest.java
index 7d7e1a1..7f61e4f 100644
--- a/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/tls/TlsTest.java
+++ b/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/tls/TlsTest.java
@@ -43,6 +43,7 @@
 import java.nio.file.Files;
 import java.security.Key;
 import java.security.cert.Certificate;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -51,7 +52,6 @@
 import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.Session;
-import javax.xml.bind.DatatypeConverter;
 
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -685,7 +685,7 @@
         {
             Key pvt = ks.getKey(TestSSLConstants.CERT_ALIAS_APP1, KEYSTORE_PASSWORD.toCharArray());
             kos.write("-----BEGIN PRIVATE KEY-----\n".getBytes());
-            String base64encoded = DatatypeConverter.printBase64Binary(pvt.getEncoded());
+            String base64encoded = Base64.getEncoder().encodeToString(pvt.getEncoded());
             while (base64encoded.length() > 76)
             {
                 kos.write(base64encoded.substring(0, 76).getBytes());
@@ -705,7 +705,7 @@
             for (Certificate pub : chain)
             {
                 cos.write("-----BEGIN CERTIFICATE-----\n".getBytes());
-                String base64encoded = DatatypeConverter.printBase64Binary(pub.getEncoded());
+                String base64encoded = Base64.getEncoder().encodeToString(pub.getEncoded());
                 while (base64encoded.length() > 76)
                 {
                     cos.write(base64encoded.substring(0, 76).getBytes());
@@ -739,7 +739,7 @@
             {
                 Certificate pub = ks.getCertificate(alias);
                 cos.write("-----BEGIN CERTIFICATE-----\n".getBytes());
-                String base64encoded = DatatypeConverter.printBase64Binary(pub.getEncoded());
+                String base64encoded = Base64.getEncoder().encodeToString(pub.getEncoded());
                 while (base64encoded.length() > 76)
                 {
                     cos.write(base64encoded.substring(0, 76).getBytes());
diff --git a/tools/src/main/java/org/apache/qpid/tools/RestStressTestClient.java b/tools/src/main/java/org/apache/qpid/tools/RestStressTestClient.java
index 4beac5f..7242a65 100644
--- a/tools/src/main/java/org/apache/qpid/tools/RestStressTestClient.java
+++ b/tools/src/main/java/org/apache/qpid/tools/RestStressTestClient.java
@@ -34,6 +34,7 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.X509Certificate;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -49,7 +50,6 @@
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
-import javax.xml.bind.DatatypeConverter;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -282,7 +282,7 @@
 
             if (saslMechanism == null)
             {
-                _authorizationHeader = "Basic " + DatatypeConverter.printBase64Binary((_username + ":" + _password).getBytes(UTF_8));
+                _authorizationHeader = "Basic " + Base64.getEncoder().encodeToString((_username + ":" + _password).getBytes(UTF_8));
             }
             else
             {
@@ -530,7 +530,7 @@
                 final byte[] messageAuthenticationCode = mac.doFinal(challengeBytes);
                 String responseAsString = username + " " + toHex(messageAuthenticationCode);
                 byte[] responseBytes = responseAsString.getBytes(UTF_8);
-                return DatatypeConverter.printBase64Binary(responseBytes);
+                return Base64.getEncoder().encodeToString(responseBytes);
             }
             catch (Exception e)
             {
@@ -546,7 +546,7 @@
                 throw new IllegalArgumentException("Cannot convert string '"+ base64String+ "'to a byte[] - it does not appear to be base64 data");
             }
 
-            return DatatypeConverter.parseBase64Binary(base64String);
+            return Base64.getDecoder().decode(base64String);
         }
 
         private String toHex(byte[] data)